From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grygorii Strashko Subject: Re: [PATCH 1/2 v2] gpio: omap: make gpio numbering deterministical by using of aliases Date: Tue, 21 Jun 2016 20:01:36 +0300 Message-ID: <576972F0.7090207@ti.com> References: <1465930632-18941-1-git-send-email-u.kleine-koenig@pengutronix.de> <1465930632-18941-2-git-send-email-u.kleine-koenig@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1465930632-18941-2-git-send-email-u.kleine-koenig@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: =?UTF-8?Q?Uwe_Kleine-K=c3=b6nig?= , Santosh Shilimkar , Kevin Hilman , Linus Walleij , Alexandre Courbot Cc: linux-gpio@vger.kernel.org, linux-omap@vger.kernel.org, kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org List-Id: linux-gpio@vger.kernel.org T24gMDYvMTQvMjAxNiAwOTo1NyBQTSwgVXdlIEtsZWluZS1Lw7ZuaWcgd3JvdGU6Cj4gVHJhZGl0 aW9uYWxseSB0aGUgbi10aCBncGlvIGRldmljZSBwcm9iZWQgYnkgdGhlIG9tYXAgZ3BpbyBkcml2 ZXIgZ290Cj4gdGhlIGdwaW8gbnVtYmVyIHJhbmdlIFtuKjMyIC4uIG4qMzIrMzFdLgo+IFdoZW4g b3JkZXIgb2YgdGhlIGRldmljZXMgcHJvYmVkIGJ5IHRoZSBkcml2ZXIgY2hhbmdlcyAod2hpY2gg Y2FuIGhhcHBlbgo+IGFscmVhZHkgbm93IHdoZW4gc29tZSBkZXZpY2VzIGhhdmUgYSBwaW5jdHJs IGFuZCBzbyB0aGUgZmlyc3QgcHJvYmUKPiBhdHRlbXB0IHJldHVybnMgLUVOT0RFVikgdGhlIG51 bWJlcmluZyBjaGFuZ2VzLgo+Cj4gVG8gZW5zdXJlIGEgZGV0ZXJtaW5pc3RpY2FsIG51bWJlcmlu ZyB1c2Ugb2ZfYWxpYXNfZ2V0X2lkIHRvIGRldGVybWluZQo+IHRoZSBiYXNlIGZvciBhIGdpdmVu IGRldmljZS4gSWYgbm8gcmVzcGVjdGl2ZSBhbGlhcyBleGlzdHMgZmFsbCBiYWNrIHRvCj4gdGhl IHRyYWRpdGlvbmFsIG51bWJlcmluZy4KPgo+IEZvciB0aGUgdW51c3VhbCBjYXNlIHdoZXJlIG9u bHkgYSBwYXJ0IG9mIHRoZSBncGlvIGRldmljZXMgaGF2ZSBhCj4gbWF0Y2hpbmcgYWxpYXMgc29t ZSBvZiB0aGVtIG1pZ2h0IGZhaWwgdG8gcHJvYmUuIEJ1dCBpZiBub25lIG9mIHRoZW0gaGFzCj4g YW4gYWxpYXMgb3IgYWxsLCB0aGVyZSBpcyBubyBjb25mbGljdCB3aGljaCBzaG91bGQgYmUgZ29v ZCBlbm91Z2ggdG8KPiBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lgo+Cj4gU2lnbmVk LW9mZi1ieTogVXdlIEtsZWluZS1Lw7ZuaWcgPHUua2xlaW5lLWtvZW5pZ0BwZW5ndXRyb25peC5k ZT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3Bpby9ncGlvLW9tYXAuYyB8IDE5ICsrKysrKysrKysrKysr KysrKy0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8tb21hcC5jIGIvZHJpdmVycy9ncGlv L2dwaW8tb21hcC5jCj4gaW5kZXggYjk4ZWRlNzhjOWQ4Li40ZDkxNzkyZTcyNjYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncGlvL2dwaW8tb21hcC5jCj4gKysrIGIvZHJpdmVycy9ncGlvL2dwaW8t b21hcC5jCj4gQEAgLTEwNTMsOSArMTA1MywyNiBAQCBzdGF0aWMgaW50IG9tYXBfZ3Bpb19jaGlw X2luaXQoc3RydWN0IGdwaW9fYmFuayAqYmFuaywgc3RydWN0IGlycV9jaGlwICppcnFjKQo+ICAg CQkJYmFuay0+Y2hpcC5wYXJlbnQgPSAmb21hcF9tcHVpb19kZXZpY2UuZGV2Owo+ICAgCQliYW5r LT5jaGlwLmJhc2UgPSBPTUFQX01QVUlPKDApOwo+ICAgCX0gZWxzZSB7Cj4gKwkJaW50IGdwaW9f YWxpYXNfaWQgX19tYXliZV91bnVzZWQ7Cj4gKwo+ICAgCQliYW5rLT5jaGlwLmxhYmVsID0gImdw aW8iOwo+IC0JCWJhbmstPmNoaXAuYmFzZSA9IGdwaW87Cj4gKwo+ICsjaWYgZGVmaW5lZChDT05G SUdfT0ZfR1BJTykKPiArCQkvKgo+ICsJCSAqIFRyYWRpdGlvbmFsbHkgdGhlIGJhc2UgaXMgZ2l2 ZW4gb3V0IGluIGZpcnN0LWNvbWUtZmlyc3Qtc2VydmUKPiArCQkgKiBvcmRlci4gIFRoaXMgbWln aHQgc2h1ZmZsZSB0aGUgbnVtYmVyaW5nIG9mIGdwaW9zIGlmIHRoZQo+ICsJCSAqIHByb2JlIG9y ZGVyIGNoYW5nZXMuICBTbyBtYWtlIHRoZSBiYXNlIGRldGVybWluaXN0aWNhbCBpZiB0aGUKPiAr CQkgKiBkZXZpY2UgdHJlZSBzcGVjaWZpZXMgYWxpYXMgaWRzLgo+ICsJCSAqLwo+ICsJCWdwaW9f YWxpYXNfaWQgPSBvZl9hbGlhc19nZXRfaWQoYmFuay0+Y2hpcC5vZl9ub2RlLCAiZ3BpbyIpOwo+ ICsJCWlmIChncGlvX2FsaWFzX2lkID49IDApCj4gKwkJCWJhbmstPmNoaXAuYmFzZSA9IGJhbmst PndpZHRoICogZ3Bpb19hbGlhc19pZDsKPiArCQllbHNlCj4gKyNlbmRpZgo+ICsJCQliYW5rLT5j aGlwLmJhc2UgPSBncGlvOwo+ICAgCX0KPiArCj4gKwo+ICAgCWJhbmstPmNoaXAubmdwaW8gPSBi YW5rLT53aWR0aDsKPgo+ICAgCXJldCA9IGdwaW9jaGlwX2FkZF9kYXRhKCZiYW5rLT5jaGlwLCBi YW5rKTsKPgoKUmV2aWV3ZWQtYnk6IEdyeWdvcmlpIFN0cmFzaGtvIDxncnlnb3JpaS5zdHJhc2hr b0B0aS5jb20+CgotLSAKcmVnYXJkcywKLWdyeWdvcmlpCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: grygorii.strashko@ti.com (Grygorii Strashko) Date: Tue, 21 Jun 2016 20:01:36 +0300 Subject: [PATCH 1/2 v2] gpio: omap: make gpio numbering deterministical by using of aliases In-Reply-To: <1465930632-18941-2-git-send-email-u.kleine-koenig@pengutronix.de> References: <1465930632-18941-1-git-send-email-u.kleine-koenig@pengutronix.de> <1465930632-18941-2-git-send-email-u.kleine-koenig@pengutronix.de> Message-ID: <576972F0.7090207@ti.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 06/14/2016 09:57 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 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 > --- > drivers/gpio/gpio-omap.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c > index b98ede78c9d8..4d91792e7266 100644 > --- a/drivers/gpio/gpio-omap.c > +++ b/drivers/gpio/gpio-omap.c > @@ -1053,9 +1053,26 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) > bank->chip.parent = &omap_mpuio_device.dev; > bank->chip.base = OMAP_MPUIO(0); > } else { > + int gpio_alias_id __maybe_unused; > + > bank->chip.label = "gpio"; > - bank->chip.base = gpio; > + > +#if defined(CONFIG_OF_GPIO) > + /* > + * 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; > + else > +#endif > + bank->chip.base = gpio; > } > + > + > bank->chip.ngpio = bank->width; > > ret = gpiochip_add_data(&bank->chip, bank); > Reviewed-by: Grygorii Strashko -- regards, -grygorii