]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
regmap: Add one flag to indicate if a hwlock should be used
authorBaolin Wang <baolin.wang@linaro.org>
Mon, 25 Dec 2017 06:37:09 +0000 (14:37 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 27 Dec 2017 10:37:03 +0000 (10:37 +0000)
Since the hwlock id 0 is valid for hardware spinlock core, but now id 0
is treated as one invalid value for regmap. Thus we should add one extra
flag for regmap config to indicate if a hardware spinlock should be used,
then id 0 can be valid for regmap to request.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap.c
include/linux/regmap.h

index f25ab18ca0571600ae04a0cfa7d6b90d09212cad..d23a5c99b639bcd45451dbf9118459cbb60c7819 100644 (file)
@@ -671,7 +671,7 @@ struct regmap *__regmap_init(struct device *dev,
                map->lock = config->lock;
                map->unlock = config->unlock;
                map->lock_arg = config->lock_arg;
-       } else if (config->hwlock_id) {
+       } else if (config->use_hwlock) {
                map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
                if (!map->hwlock) {
                        ret = -ENXIO;
index 15eddc1353bae3a272f6bbae881abe97981c0a6b..c78e0057df66472280e2afea7e2b5d774d9041c2 100644 (file)
@@ -317,6 +317,7 @@ typedef void (*regmap_unlock)(void *);
  *
  * @ranges: Array of configuration entries for virtual address ranges.
  * @num_ranges: Number of range configuration entries.
+ * @use_hwlock: Indicate if a hardware spinlock should be used.
  * @hwlock_id: Specify the hardware spinlock id.
  * @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
  *              HWLOCK_IRQ or 0.
@@ -365,6 +366,7 @@ struct regmap_config {
        const struct regmap_range_cfg *ranges;
        unsigned int num_ranges;
 
+       bool use_hwlock;
        unsigned int hwlock_id;
        unsigned int hwlock_mode;
 };