Message ID | 20221121150843.1562603-1-michael@walle.cc |
---|---|
State | Accepted |
Commit | a6d99022e56e8c1ddc4c75895ed9e3ce5da88453 |
Headers | show |
Series | [1/2] regmap: add regmap_might_sleep() | expand |
On Mon, Nov 21, 2022 at 04:08:42PM +0100, Michael Walle wrote: > 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. The following changes since commit 9abf2313adc1ca1b6180c508c25f22f9395cc780: Linux 6.1-rc1 (2022-10-16 15:36:24 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git tags/regmap-might-sleep for you to fetch changes up to a6d99022e56e8c1ddc4c75895ed9e3ce5da88453: regmap: add regmap_might_sleep() (2022-11-22 12:23:17 +0000) ---------------------------------------------------------------- regmap: Add regmap_might_sleep() Add an interface allowing generic users to determine if a regmap might use sleeping operations. ---------------------------------------------------------------- Michael Walle (1): regmap: add regmap_might_sleep() drivers/base/regmap/regmap.c | 13 +++++++++++++ include/linux/regmap.h | 7 +++++++ 2 files changed, 20 insertions(+)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index c6d6d53e8cd3..d12d669157f2 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -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) { diff --git a/include/linux/regmap.h b/include/linux/regmap.h index ca3434dca3a0..3faf5d5dbb26 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -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");
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> --- drivers/base/regmap/regmap.c | 13 +++++++++++++ include/linux/regmap.h | 7 +++++++ 2 files changed, 20 insertions(+)