Message ID | 20240111131904.1491496-2-hector.palacios@digi.com |
---|---|
State | Superseded |
Headers | show |
Series | support i.MX93 truly available GPIO pins | expand |
On Thu, Jan 11, 2024 at 2:20 PM Hector Palacios <hector.palacios@digi.com> wrote: > Default to hardcoded VF610_GPIO_PER_PORT (32 pins) but allow optional > generic 'ngpios' property to be specified from the device tree. > > Signed-off-by: Hector Palacios <hector.palacios@digi.com> Looks correct to me. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> NB: this only makes sense when you use GPIOs 0...n where n < 31. We also have the .valid_mask and .init_valid_mask() callback if you want to mask out GPIOs in the middle or beginning or so. Yours, Linus Walleij Yours, Linus Walleij
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c index 07e5e6323e86..4abdf75e9a0a 100644 --- a/drivers/gpio/gpio-vf610.c +++ b/drivers/gpio/gpio-vf610.c @@ -276,6 +276,7 @@ static int vf610_gpio_probe(struct platform_device *pdev) struct vf610_gpio_port *port; struct gpio_chip *gc; struct gpio_irq_chip *girq; + u32 ngpios; int i; int ret; bool dual_base; @@ -353,7 +354,11 @@ static int vf610_gpio_probe(struct platform_device *pdev) gc = &port->gc; gc->parent = dev; gc->label = dev_name(dev); - gc->ngpio = VF610_GPIO_PER_PORT; + ret = device_property_read_u32(dev, "ngpios", &ngpios); + if (ret || ngpios > VF610_GPIO_PER_PORT) + gc->ngpio = VF610_GPIO_PER_PORT; + else + gc->ngpio = (u16)ngpios; gc->base = -1; gc->request = gpiochip_generic_request;
Default to hardcoded VF610_GPIO_PER_PORT (32 pins) but allow optional generic 'ngpios' property to be specified from the device tree. Signed-off-by: Hector Palacios <hector.palacios@digi.com> --- drivers/gpio/gpio-vf610.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)