Re: [PATCH] pinctrl: intel: Pass irqchip when adding gpiochip

From: Mika Westerberg
Date: Mon Dec 30 2019 - 05:20:28 EST


On Sun, Dec 29, 2019 at 02:30:59AM +0100, Linus Walleij wrote:
> We need to convert all old gpio irqchips to pass the irqchip
> setup along when adding the gpio_chip. For more info see
> drivers/gpio/TODO.
>
> Set up the pin ranges using the new callback.

Maybe have this one split as a separate patch? Same what we do for
Baytrail and Cherryview.

> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> ---
> drivers/pinctrl/intel/pinctrl-intel.c | 61 +++++++++++++++------------
> 1 file changed, 35 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
> index 4860bc9a4e48..ffacd77861f7 100644
> --- a/drivers/pinctrl/intel/pinctrl-intel.c
> +++ b/drivers/pinctrl/intel/pinctrl-intel.c
> @@ -1160,8 +1160,8 @@ static irqreturn_t intel_gpio_irq(int irq, void *data)
> return ret;
> }
>
> -static int intel_gpio_add_pin_ranges(struct intel_pinctrl *pctrl,
> - const struct intel_community *community)
> +static int intel_gpio_add_community_ranges(struct intel_pinctrl *pctrl,
> + const struct intel_community *community)
> {
> int ret = 0, i;
>
> @@ -1181,6 +1181,24 @@ static int intel_gpio_add_pin_ranges(struct intel_pinctrl *pctrl,
> return ret;
> }
>
> +static int intel_gpio_add_pin_ranges(struct gpio_chip *gc)
> +{
> + struct intel_pinctrl *pctrl = gpiochip_get_data(gc);
> + int ret, i;
> +
> + for (i = 0; i < pctrl->ncommunities; i++) {
> + struct intel_community *community = &pctrl->communities[i];
> +
> + ret = intel_gpio_add_community_ranges(pctrl, community);
> + if (ret) {
> + dev_err(pctrl->dev, "failed to add GPIO pin range\n");
> + return ret;
> + }
> + }
> +
> + return 0;
> +}
> +
> static unsigned int intel_gpio_ngpio(const struct intel_pinctrl *pctrl)
> {
> const struct intel_community *community;
> @@ -1205,7 +1223,8 @@ static unsigned int intel_gpio_ngpio(const struct intel_pinctrl *pctrl)
>
> static int intel_gpio_probe(struct intel_pinctrl *pctrl, int irq)
> {
> - int ret, i;
> + int ret;
> + struct gpio_irq_chip *girq;

Nit:

Can you order these in "reverse christmas tree" like,

struct gpio_irq_chip *girq;
int ret;

Otherwise looks good to me, thanks!