Nicolas Chauvet <kwizart@xxxxxxxxx> writes: > Hi, > > I'm trying to report an issue to the pxa_gpio maintainer. > The issue is described here: > https://bugzilla.kernel.org/show_bug.cgi?id=200905 > > Basically, the pxa_gpio driver got registered on unrelated hw (here a > tegra20 device). > This lead to issue, specially on suspend. Hi Nicolas, Okay, I have a patch I'll submit for that in [1], which you can test. Yet it is abnormal you have compiled in the gpio-pxa driver, as it depends on either CONFIG_ARCH_PXA or CONFIG_ARCH_MMP, which are not selected for tegra devices. Could you reply with your .config attached please ? Cheers. -- Robert [1] Patch ---8>--- >From 7284ed6256e75c49532d1b7867af1b3a10e0a569 Mon Sep 17 00:00:00 2001 From: Robert Jarzmik <robert.jarzmik@xxxxxxx> Date: Thu, 23 Aug 2018 21:14:44 +0200 Subject: [PATCH] gpio: pxa: handle corner case of unprobed device In the corner case where the gpio driver probe fails, for whatever reason, the suspend and resume handlers will still be called as they have to be registered as syscore operations. Therefore, add a failsafe in these function, and test if a proper probe succeeded and the driver is functional. Signed-off-by: Robert Jarzmik <robert.jarzmik@xxxxxxx> --- drivers/gpio/gpio-pxa.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c index c18712dabf93..2d09be799ab6 100644 --- a/drivers/gpio/gpio-pxa.c +++ b/drivers/gpio/gpio-pxa.c @@ -776,6 +776,9 @@ static int pxa_gpio_suspend(void) struct pxa_gpio_bank *c; int gpio; + if (!pchip) + return 0; + for_each_gpio_bank(gpio, c, pchip) { c->saved_gplr = readl_relaxed(c->regbase + GPLR_OFFSET); c->saved_gpdr = readl_relaxed(c->regbase + GPDR_OFFSET); @@ -794,6 +797,9 @@ static void pxa_gpio_resume(void) struct pxa_gpio_bank *c; int gpio; + if (!pchip) + return 0; + for_each_gpio_bank(gpio, c, pchip) { /* restore level with set/clear */ writel_relaxed(c->saved_gplr, c->regbase + GPSR_OFFSET); -- 2.11.0