> > > + npins = MLXBF3_GPIO_MAX_PINS_PER_BLOCK; > > > + device_property_read_u32(dev, "npins", &npins); > > > > I don't see DT bindings for this property (being added in this series). Is it > already established one? > > > > Ah that’s my bad. The property should be called "ngpios" like in the DT > documentation. Will fix. > > And why do you need it? What's a corner case that the GPIO library doesn't > handle yet? We have 2 gpiochips, gpiochip 0 supports 32 gpio pins and gpiochip 1 supports only 24 pins. If I remove the logic from gpio-mlxbf3.c, the gpiolib.c logic will correctly set the ngpios = 32 for gpiochip 0 but will wrongly set ngpios=32 for gpiogchip 1: gpiochip_add_data_with_key { [...] ngpios = gc->ngpio; if (ngpios == 0) { ret = device_property_read_u32(&gdev->dev, "ngpios", &ngpios); if (ret == -ENODATA) /* * -ENODATA means that there is no property found and * we want to issue the error message to the user. * Besides that, we want to return different error code * to state that supplied value is not valid. */ ngpios = 0; else if (ret) goto err_free_dev_name; gc->ngpio = ngpios; } [...] } bgpio_init { gc->bgpio_bits = sz * 8; gc->ngpio = gc->bgpio_bits; }