Re: [PATCH] lib: utils/regmap: Fix reg_stride calculation in syscon regmap
Anup Patel <[email protected]>
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <CAK9=C2W7V=fuBXn5CUJoJTZiOTDfmW0mB+58A1+8812X=qQKyA@mail.gmail.com> |
On Sat, Apr 4, 2026 at 1:59 AM David E. Garcia Porras <[email protected]> wrote: > > 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. > > Signed-off-by: David E. Garcia Porras <[email protected]> Fixes tag is missing but I will add this at the time of merging. Reviewed-by: Anup Patel <[email protected]> Applied this patch to the riscv/opensbi repo. Thanks, Anup > --- > lib/utils/regmap/fdt_regmap_syscon.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > 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) { > -- > 2.43.0 > > > -- > opensbi mailing list > [email protected] > http://lists.infradead.org/mailman/listinfo/opensbi -- opensbi mailing list [email protected] http://lists.infradead.org/mailman/listinfo/opensbi