Re: [PATCH 17/23] gpio: nomadik: handle variadic GPIO count
From: Bartosz Golaszewski <hidden>
Date: 2024-02-19 16:18:04
Also in:
linux-devicetree, linux-gpio, linux-mips, lkml
On Wed, Feb 14, 2024 at 5:24 PM Théo Lebrun [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Read the "ngpios" device-tree property to determine the number of GPIOs for a bank. If not available, fallback to NMK_GPIO_PER_CHIP ie 32 ie the current behavior. The IP block always supports 32 GPIOs, but platforms can expose a lesser amount. The Mobileye EyeQ5 is in this case; one bank is 29 GPIOs and the other is 23. Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> --- drivers/gpio/gpio-nomadik.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c index 5b1e3b3efcff..02b53c58adf7 100644 --- a/drivers/gpio/gpio-nomadik.c +++ b/drivers/gpio/gpio-nomadik.c@@ -490,7 +490,7 @@ struct nmk_gpio_chip *nmk_gpio_populate_chip(struct device_node *np, struct resource *res; struct clk *clk; void __iomem *base; - u32 id; + u32 id, ngpio; gpio_pdev = of_find_device_by_node(np); if (!gpio_pdev) {@@ -518,10 +518,15 @@ struct nmk_gpio_chip *nmk_gpio_populate_chip(struct device_node *np, return ERR_PTR(-ENOMEM); } + if (of_property_read_u32(np, "ngpios", &ngpio)) {
As commented elsewhere - please try to use device_property_read_u32(). Bart
+ ngpio = NMK_GPIO_PER_CHIP;
+ dev_dbg(&pdev->dev, "populate: using default ngpio (%d)\n", ngpio);
+ }
+
nmk_chip->bank = id;
chip = &nmk_chip->chip;
chip->base = -1;
- chip->ngpio = NMK_GPIO_PER_CHIP;
+ chip->ngpio = ngpio;
chip->label = dev_name(&gpio_pdev->dev);
chip->parent = &gpio_pdev->dev;
--
2.43.1_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel