Messages in this thread Patch in this message | | | From | Mark Brown <> | Date | Fri, 24 Mar 2023 22:58:42 +0000 | Subject | [PATCH] regmap: Support paging for buses with reg_read()/reg_write() |
| |
We don't currently support paging for regmaps where the I/O happens through bus provided reg_read() and reg_write() operatons, we simply ignore the range since nothing is wired up properly. Wire things up.
Signed-off-by: Mark Brown <broonie@kernel.org> --- drivers/base/regmap/regmap.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index d2a54eb0efd9..7960e80edb79 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -1941,6 +1941,15 @@ static int _regmap_bus_reg_write(void *context, unsigned int reg, unsigned int val) { struct regmap *map = context; + struct regmap_range_node *range; + int ret; + + range = _regmap_range_lookup(map, reg); + if (range) { + ret = _regmap_select_page(map, ®, range, 1); + if (ret != 0) + return ret; + } reg += map->reg_base; reg >>= map->format.reg_downshift; @@ -2841,6 +2850,15 @@ static int _regmap_bus_reg_read(void *context, unsigned int reg, unsigned int *val) { struct regmap *map = context; + struct regmap_range_node *range; + int ret; + + range = _regmap_range_lookup(map, reg); + if (range) { + ret = _regmap_select_page(map, ®, range, 1); + if (ret != 0) + return ret; + } reg += map->reg_base; reg >>= map->format.reg_downshift; --- base-commit: e8d018dd0257f744ca50a729e3d042cf2ec9da65 change-id: 20230324-regmap-reg-read-write-page-b9b05512e8f4 Best regards, -- Mark Brown <broonie@kernel.org>
| |