On Fri, Jul 08, 2022 at 09:55:10PM +0200, Horatiu Vultur wrote: > The blamed commit changed to use regmaps instead of __iomem. But it > didn't update the register offsets to be at word offset, so it uses byte > offset. > Another issue with the same commit is that it a limit of 32 registers > which is incorrect. The sparx5 has 64 while lan966x has 77. > > Fixes: 076d9e71bcf8 ("pinctrl: ocelot: convert pinctrl to regmap") > Signed-off-by: Horatiu Vultur <horatiu.vultur@xxxxxxxxxxxxx> > --- > drivers/pinctrl/pinctrl-ocelot.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c > index 10787056c5c7..d88d6af71e46 100644 > --- a/drivers/pinctrl/pinctrl-ocelot.c > +++ b/drivers/pinctrl/pinctrl-ocelot.c > @@ -1334,7 +1334,9 @@ static int ocelot_hw_get_value(struct ocelot_pinctrl *info, > if (info->pincfg) { > u32 regcfg; > > - ret = regmap_read(info->pincfg, pin, ®cfg); > + ret = regmap_read(info->pincfg, > + pin * regmap_get_reg_stride(info->pincfg), > + ®cfg); > if (ret) > return ret; > > @@ -1368,14 +1370,18 @@ static int ocelot_pincfg_clrsetbits(struct ocelot_pinctrl *info, u32 regaddr, > u32 val; > int ret; > > - ret = regmap_read(info->pincfg, regaddr, &val); > + ret = regmap_read(info->pincfg, > + regaddr * regmap_get_reg_stride(info->pincfg), > + &val); > if (ret) > return ret; > > val &= ~clrbits; > val |= setbits; > > - ret = regmap_write(info->pincfg, regaddr, val); > + ret = regmap_write(info->pincfg, > + regaddr * regmap_get_reg_stride(info->pincfg), > + val); > > return ret; > } > @@ -1944,7 +1950,6 @@ static struct regmap *ocelot_pinctrl_create_pincfg(struct platform_device *pdev) > .reg_bits = 32, > .val_bits = 32, > .reg_stride = 4, > - .max_register = 32, What happens in /sys/kernel/debug/regmap/*-pincfg/{range,registers} when there's no max register? Should it be this? struct regmap_config regmap_config = { ... }; regmap_config.max_register = info->desc->npins * regmap_config.reg_stride; > .name = "pincfg", > }; > > -- > 2.33.0 >