aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/regmap/regmap.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2017-11-03 12:38:04 +0100
committerMark Brown <broonie@kernel.org>2017-11-03 12:38:04 +0100
commitf25637a6b89e59eddf79f6df39b23e202753f555 (patch)
tree1a957c0c714a688db42351d73c268449b4a7ffad /drivers/base/regmap/regmap.c
parentregmap: Add hardware spinlock support (diff)
downloadlinux-dev-f25637a6b89e59eddf79f6df39b23e202753f555.tar.xz
linux-dev-f25637a6b89e59eddf79f6df39b23e202753f555.zip
regmap: Add a config option for hwspinlock
Unlike other lock types hwspinlocks are optional and can be built modular so we can't use them unconditionally in regmap so add a config option that drivers that want to use hwspinlocks with regmap can select which will ensure that hwspinlock is built in. Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/base/regmap/regmap.c')
-rw-r--r--drivers/base/regmap/regmap.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 999e981a174a..ff6ef6a579c6 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -414,6 +414,7 @@ static unsigned int regmap_parse_64_native(const void *buf)
}
#endif
+#ifdef REGMAP_HWSPINLOCK
static void regmap_lock_hwlock(void *__map)
{
struct regmap *map = __map;
@@ -456,6 +457,7 @@ static void regmap_unlock_hwlock_irqrestore(void *__map)
hwspin_unlock_irqrestore(map->hwlock, &map->spinlock_flags);
}
+#endif
static void regmap_lock_mutex(void *__map)
{
@@ -672,6 +674,7 @@ struct regmap *__regmap_init(struct device *dev,
map->unlock = config->unlock;
map->lock_arg = config->lock_arg;
} else if (config->hwlock_id) {
+#ifdef REGMAP_HWSPINLOCK
map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
if (!map->hwlock) {
ret = -ENXIO;
@@ -694,6 +697,10 @@ struct regmap *__regmap_init(struct device *dev,
}
map->lock_arg = map;
+#else
+ ret = -EINVAL;
+ goto err;
+#endif
} else {
if ((bus && bus->fast_io) ||
config->fast_io) {