| From foo@baz Mon Sep 17 12:33:31 CEST 2018 |
| From: Dmitry Osipenko <digetx@gmail.com> |
| Date: Thu, 2 Aug 2018 14:11:44 +0300 |
| Subject: gpio: tegra: Move driver registration to subsys_init level |
| |
| From: Dmitry Osipenko <digetx@gmail.com> |
| |
| [ Upstream commit 40b25bce0adbe641a744d1291bc0e51fb7f3c3d8 ] |
| |
| There is a bug in regards to deferred probing within the drivers core |
| that causes GPIO-driver to suspend after its users. The bug appears if |
| GPIO-driver probe is getting deferred, which happens after introducing |
| dependency on PINCTRL-driver for the GPIO-driver by defining "gpio-ranges" |
| property in device-tree. The bug in the drivers core is old (more than 4 |
| years now) and is well known, unfortunately there is no easy fix for it. |
| The good news is that we can workaround the deferred probe issue by |
| changing GPIO / PINCTRL drivers registration order and hence by moving |
| PINCTRL driver registration to the arch_init level and GPIO to the |
| subsys_init. |
| |
| Signed-off-by: Dmitry Osipenko <digetx@gmail.com> |
| Acked-by: Stefan Agner <stefan@agner.ch> |
| Signed-off-by: Linus Walleij <linus.walleij@linaro.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/gpio/gpio-tegra.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/gpio/gpio-tegra.c |
| +++ b/drivers/gpio/gpio-tegra.c |
| @@ -728,4 +728,4 @@ static int __init tegra_gpio_init(void) |
| { |
| return platform_driver_register(&tegra_gpio_driver); |
| } |
| -postcore_initcall(tegra_gpio_init); |
| +subsys_initcall(tegra_gpio_init); |