[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACRpkdaojLe3UTc0=66b5J2yrSOo7t8o5bAY=WRscL+met3iWQ@mail.gmail.com>
Date: Wed, 14 Aug 2019 10:09:20 +0200
From: Linus Walleij <linus.walleij@...aro.org>
To: Hongwei Zhang <hongweiz@....com>
Cc: Andrew Jeffery <andrew@...id.au>,
"open list:GPIO SUBSYSTEM" <linux-gpio@...r.kernel.org>,
Joel Stanley <joel@....id.au>,
linux-aspeed <linux-aspeed@...ts.ozlabs.org>,
Bartosz Golaszewski <bgolaszewski@...libre.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Linux ARM <linux-arm-kernel@...ts.infradead.org>
Subject: Re: [v7 2/2] gpio: aspeed: Add SGPIO driver
Hi Hongwei,
thanks for your patch!
I have now merged the bindings so you only need to respin
this patch.
On Wed, Jul 31, 2019 at 10:02 PM Hongwei Zhang <hongweiz@....com> wrote:
> Add SGPIO driver support for Aspeed AST2500 SoC.
>
> Signed-off-by: Hongwei Zhang <hongweiz@....com>
> Reviewed-by: Andrew Jeffery <andrew@...id.au>
I guess I need to go with this, there are some minor things
I still want to be fixed:
> +static void __aspeed_sgpio_set(struct gpio_chip *gc, unsigned int offset, int val)
I don't like __underscore_functions because their semantic
is ambiguous.
Rename this something like aspeed_sgpio_commit() or
whatever best fits the actual use.
> +static int aspeed_sgpio_setup_irqs(struct aspeed_sgpio *gpio,
> + struct platform_device *pdev)
> +{
(...)
> + rc = gpiochip_irqchip_add(&gpio->chip, &aspeed_sgpio_irqchip,
> + 0, handle_bad_irq, IRQ_TYPE_NONE);
(...)
> + gpiochip_set_chained_irqchip(&gpio->chip, &aspeed_sgpio_irqchip,
> + gpio->irq, aspeed_sgpio_irq_handler);
We do not set up chained irqchips like this anymore, sorry.
I am currently rewriting all existing chained drivers to pass
an initialized irqchip when registering the whole gpio chip.
See drivers/gpio/TODO.
Here are examples:
https://lore.kernel.org/linux-gpio/20190811080539.15647-1-linus.walleij@linaro.org/
https://lore.kernel.org/linux-gpio/20190812132554.18313-1-linus.walleij@linaro.org/
> + /* set all SGPIO pins as input (1). */
> + memset(gpio->dir_in, 0xff, sizeof(gpio->dir_in));
Do the irqchip set-up here, before adding the gpio_chip.
> + rc = devm_gpiochip_add_data(&pdev->dev, &gpio->chip, gpio);
> + if (rc < 0)
> + return rc;
> +
> + return aspeed_sgpio_setup_irqs(gpio, pdev);
Yours,
Linus Walleij
Powered by blists - more mailing lists