summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid E. Garcia Porras <[email protected]>2026-04-03 14:29:03 -0600
committerAnup Patel <[email protected]>2026-05-11 11:49:59 +0530
commit8536a351fd3af50e5eba571e562a33247b99870d (patch)
tree031e267432fd5da819e88e25e17e8fc4ccfcbc97
parent65bb705f7b59d8f2a5683160f31db15b4e2c64d7 (diff)
lib: utils/regmap: Fix reg_stride calculation in syscon regmap
The reg_stride field represents the address stride in bytes between consecutive registers. The Linux kernel regmap framework validates register accesses using IS_ALIGNED(reg, map->reg_stride) as an address alignment check (drivers/base/regmap/regmap.c). The Linux kernel syscon driver (drivers/mfd/syscon.c) sets reg_stride directly to reg_io_width: syscon_config.reg_stride = reg_io_width; The current OpenSBI code incorrectly multiplies reg_io_width by 8, converting a byte value to bits. Fix this by using reg_io_width directly as the stride value, consistent with the Linux kernel. Fixes: f21d8f7d5911 ("lib: utils/regmap: Add simple FDT based syscon regmap driver") Signed-off-by: David E. Garcia Porras <[email protected]> Reviewed-by: Anup Patel <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Anup Patel <[email protected]>
-rw-r--r--lib/utils/regmap/fdt_regmap_syscon.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/utils/regmap/fdt_regmap_syscon.c b/lib/utils/regmap/fdt_regmap_syscon.c
index 1309a55c..59cd5ee5 100644
--- a/lib/utils/regmap/fdt_regmap_syscon.c
+++ b/lib/utils/regmap/fdt_regmap_syscon.c
@@ -190,7 +190,7 @@ static int regmap_syscon_init(const void *fdt, int nodeoff,
srm->rmap.id = nodeoff;
srm->rmap.reg_shift = 0;
- srm->rmap.reg_stride = srm->reg_io_width * 8;
+ srm->rmap.reg_stride = srm->reg_io_width;
srm->rmap.reg_base = 0;
srm->rmap.reg_max = size / srm->reg_io_width;
switch (srm->reg_io_width) {