[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20191230102021.GF2628@lahna.fi.intel.com>
Date: Mon, 30 Dec 2019 12:20:21 +0200
From: Mika Westerberg <mika.westerberg@...ux.intel.com>
To: Linus Walleij <linus.walleij@...aro.org>
Cc: linux-kernel@...r.kernel.org, linux-gpio@...r.kernel.org,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Mathias Nyman <mathias.nyman@...ux.intel.com>
Subject: Re: [PATCH] pinctrl: intel: Pass irqchip when adding gpiochip
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@...aro.org>
> ---
> 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!
Powered by blists - more mailing lists