diff mbox series

[1/2] gpio: vf610: add support to DT 'ngpios' property

Message ID 20240111131904.1491496-2-hector.palacios@digi.com
State Superseded
Headers show
Series support i.MX93 truly available GPIO pins | expand

Commit Message

Hector Palacios Jan. 11, 2024, 1:19 p.m. UTC
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(-)

Comments

Linus Walleij Jan. 11, 2024, 2:22 p.m. UTC | #1
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 mbox series

Patch

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;