From: grygorii.strashko@ti.com (Grygorii Strashko)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] gpio: omap: make gpio numbering deterministical by using of aliases
Date: Tue, 14 Jun 2016 14:18:08 +0300 [thread overview]
Message-ID: <575FE7F0.6090200@ti.com> (raw)
In-Reply-To: <1465898604-16294-1-git-send-email-u.kleine-koenig@pengutronix.de>
Hi Uwe,
On 06/14/2016 01:03 PM, Uwe Kleine-K?nig wrote:
> Traditionally the n-th gpio device probed by the omap gpio driver got
> the gpio number range [n*32 .. n*32+31].
> When order of the devices probed by the driver changes (which can happen
> already now when some devices have a pinctrl and so the first probe
> attempt returns -ENODEV) the numbering changes.
>
> To ensure a deterministical numbering use of_alias_get_id to determine
> the number base for a given device. If no respective alias exists fall
> back to the traditional numbering.
>
> For the unusual case where only a part of the gpio devices have a
> matching alias some of them might fail to probe. But if none of them has
> an alias or all, there is no conflict which should be good enough to
> maintain backward compatibility.
>
> Signed-off-by: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
> ---
> Hello,
>
> if you're happy with this patch I can follow up and add the respective
> aliases to the device trees.
>
Thanks for the patch.
I have no objection to the idea of the patch, but there are some comments.
>
> drivers/gpio/gpio-omap.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index b98ede78c9d8..6814245a54aa 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -1034,6 +1034,7 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)
> static int gpio;
> int irq_base = 0;
> int ret;
> + int gpio_alias_id;
>
> /*
> * REVISIT eventually switch from OMAP-specific gpio structs
> @@ -1056,6 +1057,17 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc)
> bank->chip.label = "gpio";
> bank->chip.base = gpio;
I think, the gpio base correction should be done here
> }
> +
> + /*
> + * Traditionally the base is given out in first-come-first-serve order.
> + * This might shuffle the numbering of gpios if the probe order changes.
> + * So make the base deterministical if the device tree specifies alias
> + * ids.
> + */
> + gpio_alias_id = of_alias_get_id(bank->chip.of_node, "gpio");
> + if (gpio_alias_id >= 0)
> + bank->chip.base = bank->width * gpio_alias_id;
> +
Unfortunately, this driver is still used by non-DT platforms, so above code will
break build if !OF && !OF_GPIO
I think, right way would be to get alias_id in .probe(), then calc base and save it
in struct gpio_bank. Then use it here to fixup GPIO base if positive.
> bank->chip.ngpio = bank->width;
>
> ret = gpiochip_add_data(&bank->chip, bank);
>
--
regards,
-grygorii
next prev parent reply other threads:[~2016-06-14 11:18 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-14 10:03 [PATCH] gpio: omap: make gpio numbering deterministical by using of aliases Uwe Kleine-König
2016-06-14 11:18 ` Grygorii Strashko [this message]
2016-06-14 12:01 ` Uwe Kleine-König
2016-06-14 15:10 ` Grygorii Strashko
2016-06-15 0:00 ` kbuild test robot
2016-06-15 6:56 ` Linus Walleij
2016-06-15 7:24 ` Uwe Kleine-König
2016-06-15 8:27 ` Tony Lindgren
2016-06-15 9:56 ` Grygorii Strashko
2016-06-18 8:30 ` Linus Walleij
2016-06-18 8:29 ` Linus Walleij
2016-06-18 8:25 ` Linus Walleij
2016-06-19 1:08 ` Uwe Kleine-König
2016-06-22 16:16 ` Mark Rutland
2016-06-23 9:04 ` Linus Walleij
2016-06-23 9:38 ` Grygorii Strashko
2016-06-23 12:08 ` Linus Walleij
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=575FE7F0.6090200@ti.com \
--to=grygorii.strashko@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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).