Re: [PATCH] gpio: max732x: Use irqchip template

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus,

On Fri, 17 Jul 2020 at 17:19, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
>
> This makes the driver use the irqchip template to assign
> properties to the gpio_irq_chip instead of using the
> explicit calls to gpiochip_irqchip_add_nested() and
> gpiochip_set_nested_irqchip(). The irqchip is instead
> added while adding the gpiochip.
>
> Cc: Sam Protsenko <semen.protsenko@xxxxxxxxxx>
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> ---

I can test it on my MAX7325 board with BeagleBone Black in a day or
two. Do you want me to verify your patch on top of linux-mainline or
linux-next? Also, is there any specific stuff you want me to look at,
or making sure there are no regressions w.r.t. IRQ from the chip is
enough?

Thanks!

>  drivers/gpio/gpio-max732x.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpio/gpio-max732x.c b/drivers/gpio/gpio-max732x.c
> index 63472f308857..347415344a20 100644
> --- a/drivers/gpio/gpio-max732x.c
> +++ b/drivers/gpio/gpio-max732x.c
> @@ -503,6 +503,8 @@ static int max732x_irq_setup(struct max732x_chip *chip,
>
>         if (((pdata && pdata->irq_base) || client->irq)
>                         && has_irq != INT_NONE) {
> +               struct gpio_irq_chip *girq;
> +
>                 if (pdata)
>                         irq_base = pdata->irq_base;
>                 chip->irq_features = has_irq;
> @@ -517,19 +519,17 @@ static int max732x_irq_setup(struct max732x_chip *chip,
>                                 client->irq);
>                         return ret;
>                 }
> -               ret =  gpiochip_irqchip_add_nested(&chip->gpio_chip,
> -                                                  &max732x_irq_chip,
> -                                                  irq_base,
> -                                                  handle_simple_irq,
> -                                                  IRQ_TYPE_NONE);
> -               if (ret) {
> -                       dev_err(&client->dev,
> -                               "could not connect irqchip to gpiochip\n");
> -                       return ret;
> -               }
> -               gpiochip_set_nested_irqchip(&chip->gpio_chip,
> -                                           &max732x_irq_chip,
> -                                           client->irq);
> +
> +               girq = &chip->gpio_chip.irq;
> +               girq->chip = &max732x_irq_chip;
> +               /* This will let us handle the parent IRQ in the driver */
> +               girq->parent_handler = NULL;
> +               girq->num_parents = 0;
> +               girq->parents = NULL;
> +               girq->default_type = IRQ_TYPE_NONE;
> +               girq->handler = handle_simple_irq;
> +               girq->threaded = true;
> +               girq->first = irq_base; /* FIXME: get rid of this */
>         }
>
>         return 0;
> --
> 2.26.2
>



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux