Re: [PATCH v2] gpio: visconti: Fix fwnode of GPIO IRQ

From: Bartosz Golaszewski
Date: Thu May 05 2022 - 08:39:54 EST


On Thu, Apr 21, 2022 at 11:42 AM Nobuhiro Iwamatsu
<nobuhiro1.iwamatsu@xxxxxxxxxxxxx> wrote:
>
> The fwnode of GPIO IRQ must be set to its own fwnode, not the fwnode of the
> parent IRQ. Therefore, this sets own fwnode instead of the parent IRQ fwnode to
> GPIO IRQ's.
>
> Fixes: 2ad74f40dacc ("gpio: visconti: Add Toshiba Visconti GPIO support")
> Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@xxxxxxxxxxxxx>
> ---
>
> v2: Add Fixes tag.
>
> drivers/gpio/gpio-visconti.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpio/gpio-visconti.c b/drivers/gpio/gpio-visconti.c
> index 47455810bdb9..e6534ea1eaa7 100644
> --- a/drivers/gpio/gpio-visconti.c
> +++ b/drivers/gpio/gpio-visconti.c
> @@ -130,7 +130,6 @@ static int visconti_gpio_probe(struct platform_device *pdev)
> struct gpio_irq_chip *girq;
> struct irq_domain *parent;
> struct device_node *irq_parent;
> - struct fwnode_handle *fwnode;
> int ret;
>
> priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> @@ -150,14 +149,12 @@ static int visconti_gpio_probe(struct platform_device *pdev)
> }
>
> parent = irq_find_host(irq_parent);
> + of_node_put(irq_parent);
> if (!parent) {
> dev_err(dev, "No IRQ parent domain\n");
> return -ENODEV;
> }
>
> - fwnode = of_node_to_fwnode(irq_parent);
> - of_node_put(irq_parent);
> -
> ret = bgpio_init(&priv->gpio_chip, dev, 4,
> priv->base + GPIO_IDATA,
> priv->base + GPIO_OSET,
> @@ -180,7 +177,7 @@ static int visconti_gpio_probe(struct platform_device *pdev)
>
> girq = &priv->gpio_chip.irq;
> girq->chip = irq_chip;
> - girq->fwnode = fwnode;
> + girq->fwnode = of_node_to_fwnode(dev->of_node);
> girq->parent_domain = parent;
> girq->child_to_parent_hwirq = visconti_gpio_child_to_parent_hwirq;
> girq->populate_parent_alloc_arg = visconti_gpio_populate_parent_fwspec;
> --
> 2.34.1
>
>

Queued for fixes, thanks!

Bart