On Thu Feb 13, 2025 at 8:48 PM CET, Andy Shevchenko wrote: > It appears that regmap GPIO doesn't take into account 'ngpios' property > and requires hard coded values or duplication of the parsing the same > outside of GPIO library. This miniseries addresses that. > > For the record, I have checked all bgpio_init() users and haven't seen > the suspicious code that this series might break, e.g., an equivalent of > something like this: > > static int foo_probe(struct device *dev) > { > struct gpio_chip *gc = devm_kzalloc(...); > struct fwnode_handle *fwnode = ...; // NOT dev_fwnode(dev)! > > ... > gc->parent = dev; > gc->fwnode = fwnode; > > ret = bgpio_init(gc, dev, ...); > ... > } > > Reported-by: Mathieu Dubois-Briand <mathieu.dubois-briand@xxxxxxxxxxx> > > Andy Shevchenko (5): > gpiolib: Extract gpiochip_choose_fwnode() for wider use > gpiolib: Use fwnode instead of device in gpiochip_get_ngpios() > gpio: regmap: Group optional assignments together for better > understanding > gpio: regmap: Move optional assignments down in the code > gpio: regmap: Allow ngpio to be read from the property > > drivers/gpio/gpio-regmap.c | 41 +++++++++++++++++++++---------------- > drivers/gpio/gpiolib.c | 27 ++++++++++++++++-------- > include/linux/gpio/regmap.h | 4 ++-- > 3 files changed, 43 insertions(+), 29 deletions(-) Hi Andy, Thanks, I confirm I tested this series and it does fix my case: I can leave the ngpio field uninitialized and its value will be correctly retrieved from the "ngpios" property. Also the whole series looks good to me. -- Mathieu Dubois-Briand, Bootlin Embedded Linux and Kernel engineering https://bootlin.com