]> git.itanic.dy.fi Git - linux-stable/commitdiff
regmap: add regmap_might_sleep()
authorMichael Walle <michael@walle.cc>
Mon, 21 Nov 2022 15:08:42 +0000 (16:08 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 22 Nov 2022 12:23:17 +0000 (12:23 +0000)
With the dawn of MMIO gpio-regmap users, it is desirable to let
gpio-regmap ask the regmap if it might sleep during an access so
it can pass that information to gpiochip. Add a new regmap_might_sleep()
to query the regmap.

Signed-off-by: Michael Walle <michael@walle.cc>
Link: https://lore.kernel.org/r/20221121150843.1562603-1-michael@walle.cc
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap.c
include/linux/regmap.h

index c6d6d53e8cd3fc776567db2b70f5e6790c15f7ff..d12d669157f2447a864d8bb1388c81c5a77bf1d3 100644 (file)
@@ -3486,6 +3486,19 @@ int regmap_get_reg_stride(struct regmap *map)
 }
 EXPORT_SYMBOL_GPL(regmap_get_reg_stride);
 
+/**
+ * regmap_might_sleep() - Returns whether a regmap access might sleep.
+ *
+ * @map: Register map to operate on.
+ *
+ * Returns true if an access to the register might sleep, else false.
+ */
+bool regmap_might_sleep(struct regmap *map)
+{
+       return map->can_sleep;
+}
+EXPORT_SYMBOL_GPL(regmap_might_sleep);
+
 int regmap_parse_val(struct regmap *map, const void *buf,
                        unsigned int *val)
 {
index ca3434dca3a06a7281dbf39b357961f8ac889a7c..3faf5d5dbb26d89eabdfeee63da394ddff6bfc59 100644 (file)
@@ -1219,6 +1219,7 @@ static inline int regmap_write_bits(struct regmap *map, unsigned int reg,
 int regmap_get_val_bytes(struct regmap *map);
 int regmap_get_max_register(struct regmap *map);
 int regmap_get_reg_stride(struct regmap *map);
+bool regmap_might_sleep(struct regmap *map);
 int regmap_async_complete(struct regmap *map);
 bool regmap_can_raw_write(struct regmap *map);
 size_t regmap_get_raw_read_max(struct regmap *map);
@@ -1905,6 +1906,12 @@ static inline int regmap_get_reg_stride(struct regmap *map)
        return -EINVAL;
 }
 
+static inline bool regmap_might_sleep(struct regmap *map)
+{
+       WARN_ONCE(1, "regmap API is disabled");
+       return true;
+}
+
 static inline int regcache_sync(struct regmap *map)
 {
        WARN_ONCE(1, "regmap API is disabled");