[1/5] regmap: Add better support for devices without readback support
diff mbox

Message ID 1436783208-1529-1-git-send-email-lars@metafoo.de
State New
Headers show

Commit Message

Lars-Peter Clausen July 13, 2015, 10:26 a.m. UTC
Currently regmap requires that a reg_read callback is supplied, otherwise a
warning is emitted each time regmap_read() is called. This means a device
or bus without readback support needs to supply dummy reg_read callback.
Apart from that regmap_read() will still work fine if a cache is used.

Remove the warning and let regmap_readable() return false if not reg_read
callback is supplied. This means a device no longer has to supply a dummy
callback if it does not support readback and it also doesn't have to have a
readable_reg callback that always returns false since this is now implicit.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/base/regmap/regmap.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Mark Brown July 13, 2015, 10:50 a.m. UTC | #1
On Mon, Jul 13, 2015 at 12:26:44PM +0200, Lars-Peter Clausen wrote:
> Currently regmap requires that a reg_read callback is supplied, otherwise a
> warning is emitted each time regmap_read() is called. This means a device
> or bus without readback support needs to supply dummy reg_read callback.
> Apart from that regmap_read() will still work fine if a cache is used.

This really shouldn't be in the same series as the uda138x stuff,
there's no real interdependency.

Patch
diff mbox

diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index dd63bcb..8acc837 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -93,6 +93,9 @@  bool regmap_writeable(struct regmap *map, unsigned int reg)
 
 bool regmap_readable(struct regmap *map, unsigned int reg)
 {
+	if (!map->reg_read)
+		return false;
+
 	if (map->max_register && reg > map->max_register)
 		return false;
 
@@ -2109,8 +2112,6 @@  static int _regmap_read(struct regmap *map, unsigned int reg,
 	int ret;
 	void *context = _regmap_map_get_context(map);
 
-	WARN_ON(!map->reg_read);
-
 	if (!map->cache_bypass) {
 		ret = regcache_read(map, reg, val);
 		if (ret == 0)