On Tue, Nov 10, 2020 at 3:11 PM Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > > On Tue, Nov 10, 2020 at 2:35 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote: > > ... > > > struct exar_gpio_chip { > > struct gpio_chip gpio_chip; > > - struct mutex lock; > > > + struct regmap *regs; > > Leaving the same name is a call for potential troubles. > > > int index; > > - void __iomem *regs; > > char name[20]; > > unsigned int first_pin; > > }; > > ... > > > +static const struct regmap_config exar_regmap_config = { > > + .name = "exar-gpio", > > + .reg_bits = 8, > > + .val_bits = 8, > > +}; > > Looking at the crash, are you sure this is a comprehensive description? > Maybe it requires something like stride or so? > This is what I'm looking at ATM. Looking at the datasheet[1], there are no breaks in the registers so the default stride of 1 should be fine as is the value bits width of 8. I think that I got the address width wrong though. Should be 16 bits probably. Jan: could you change reg_bits to 16 and try again? Bartosz [1] https://www.maxlinear.com/ds/xr17v352.pdf