From: Rob Herring <robh+dt@kernel.org>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexander Shiyan <shc_work@mail.ru>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
devicetree@vger.kernel.org,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>
Subject: Re: [PATCH] ARM/gpio/dt-bindings: Clean out gpio alias from CLPS711X
Date: Wed, 10 Mar 2021 11:11:57 -0700 [thread overview]
Message-ID: <CAL_JsqJbCPstpx_Q_JUF2UDtMaNz6-VGf+oDP374t0CfEYqtyg@mail.gmail.com> (raw)
In-Reply-To: <20210309142000.3034451-1-linus.walleij@linaro.org>
On Tue, Mar 9, 2021 at 7:20 AM Linus Walleij <linus.walleij@linaro.org> wrote:
>
> This removes the use of GPIO alias from the CLPS711X GPIO
> driver.
>
> This driver only use it to add quirks to two GPIO blocks
> for which we can reuse the standard property "ngpios" and
> define a new Cirrus quirk to do it properly and get rid
> of the alias.
>
> The patch changes the driver, the one DTS file and the
> bindings in one go: my apologies but this is a lockstep
> solution to avoid any unclarities or inbetween states.
in between
I don't think a single patch really buys anything, but okay.
>
> Old device trees with aliases are supported but will
> produce a warning in dmesg and new properties will take
> precedence.
>
> Cc: devicetree@vger.kernel.org
> Cc: linux-gpio@vger.kernel.org
> Cc: Rob Herring <robh+dt@kernel.org>
> Link: https://lore.kernel.org/linux-gpio/CACRpkda8+Lvz+c=ohXsEDkNSQ63hPo613P4p_90fvKyC_kQ_GA@mail.gmail.com/T/#t
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> This is a result of a discussion with Rob about whether
> we can get rid of GPIO aliases. I think we can at least
> get rid of this one.
> ---
> .../bindings/gpio/gpio-clps711x.txt | 10 +++---
> arch/arm/boot/dts/ep7209.dtsi | 8 ++---
> drivers/gpio/gpio-clps711x.c | 36 +++++++++----------
> 3 files changed, 26 insertions(+), 28 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt b/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt
> index 0a304ad29d81..c1ff20107607 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt
> @@ -11,15 +11,13 @@ Required properties:
> 0 = active high
> 1 = active low
>
> -Note: Each GPIO port should have an alias correctly numbered in "aliases"
> -node.
> +Optional properties:
> +- cirrus,inverted-polarity: The polarity of the GPIO lines is
> + inverted in hardware.
> +- ngpios: Number of available GPIO lines 0..n-1, see gpio.txt
>
> Example:
>
> -aliases {
> - gpio0 = &porta;
> -};
> -
> porta: gpio@80000000 {
> compatible = "cirrus,ep7312-gpio","cirrus,ep7209-gpio";
> reg = <0x80000000 0x1>, <0x80000040 0x1>;
> diff --git a/arch/arm/boot/dts/ep7209.dtsi b/arch/arm/boot/dts/ep7209.dtsi
> index 365931f8b48d..7d0f04959fdd 100644
> --- a/arch/arm/boot/dts/ep7209.dtsi
> +++ b/arch/arm/boot/dts/ep7209.dtsi
> @@ -11,10 +11,6 @@ / {
> compatible = "cirrus,ep7209";
>
> aliases {
> - gpio0 = &porta;
> - gpio1 = &portb;
> - gpio3 = &portd;
> - gpio4 = &porte;
> serial0 = &uart1;
> serial1 = &uart2;
> spi0 = &spi;
> @@ -72,6 +68,8 @@ portd: gpio@80000003 {
> reg = <0x80000003 0x1 0x80000043 0x1>;
> gpio-controller;
> #gpio-cells = <2>;
> + /* This bank have all lines polarity inverted */
> + cirrus,inverted-polarity;
> };
>
> porte: gpio@80000083 {
> @@ -79,6 +77,8 @@ porte: gpio@80000083 {
> reg = <0x80000083 0x1 0x800000c3 0x1>;
> gpio-controller;
> #gpio-cells = <2>;
> + /* Only 3 GPIOs available on this bank */
> + ngpios = <3>;
> };
>
> syscon1: syscon@80000100 {
> diff --git a/drivers/gpio/gpio-clps711x.c b/drivers/gpio/gpio-clps711x.c
> index 75f6f8d4323e..d2a20dc8f5d9 100644
> --- a/drivers/gpio/gpio-clps711x.c
> +++ b/drivers/gpio/gpio-clps711x.c
> @@ -16,14 +16,11 @@ static int clps711x_gpio_probe(struct platform_device *pdev)
> void __iomem *dat, *dir;
> struct gpio_chip *gc;
> int err, id;
> + u32 ngpios;
>
> if (!np)
> return -ENODEV;
>
> - id = of_alias_get_id(np, "gpio");
> - if ((id < 0) || (id > 4))
> - return -ENODEV;
> -
> gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
> if (!gc)
> return -ENOMEM;
> @@ -36,29 +33,32 @@ static int clps711x_gpio_probe(struct platform_device *pdev)
> if (IS_ERR(dir))
> return PTR_ERR(dir);
>
> - switch (id) {
> - case 3:
> + /* This ID will be negative if there is no alias node */
> + id = of_alias_get_id(np, "gpio");
> +
> + if (id >= 0)
> + dev_info(&pdev->dev,
> + "DT is using deprecated alias, please remove this and "
> + "replace with proper node attributes\n");
> +
> + if (of_property_read_bool(np, "cirrus,inverted-polarity") ||
> + id == 3)
> /* PORTD is inverted logic for direction register */
> err = bgpio_init(gc, &pdev->dev, 1, dat, NULL, NULL,
> NULL, dir, 0);
> - break;
> - default:
> + else
> err = bgpio_init(gc, &pdev->dev, 1, dat, NULL, NULL,
> dir, NULL, 0);
> - break;
> - }
> -
> if (err)
> return err;
>
> - switch (id) {
> - case 4:
> - /* PORTE is 3 lines only */
> + if (id == 4)
> + /* This is just for compatibility with older device trees */
> gc->ngpio = 3;
> - break;
> - default:
> - break;
> - }
> +
> + if (!of_property_read_u32(np, "ngpios", &ngpios))
> + /* PORTE is 3 lines only */
> + gc->ngpio = ngpios;
Just this should work:
of_property_read_u32(np, "ngpios", &gc->ngpio);
The variable won't be touched on error.
Rob
prev parent reply other threads:[~2021-03-10 18:12 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-09 14:20 [PATCH] ARM/gpio/dt-bindings: Clean out gpio alias from CLPS711X Linus Walleij
2021-03-10 18:11 ` Rob Herring [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAL_JsqJbCPstpx_Q_JUF2UDtMaNz6-VGf+oDP374t0CfEYqtyg@mail.gmail.com \
--to=robh+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=shc_work@mail.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).