]> git.baikalelectronics.ru Git - kernel.git/commitdiff
pinctrl: stm32: use valid pin identifier in stm32_pinctrl_resume()
authorFabien Dessenne <fabien.dessenne@foss.st.com>
Fri, 8 Oct 2021 12:25:17 +0000 (14:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Oct 2021 07:54:30 +0000 (09:54 +0200)
commit c370bb474016ab9edfdabd7c08a88dd13a71ddbd upstream.

When resuming from low power, the driver attempts to restore the
configuration of some pins. This is done by a call to:
  stm32_pinctrl_restore_gpio_regs(struct stm32_pinctrl *pctl, u32 pin)
where 'pin' must be a valid pin value (i.e. matching some 'groups->pin').
Fix the current implementation which uses some wrong 'pin' value.

Fixes: ea7a013e78a8 ("pinctrl: stm32: add suspend/resume management")
Signed-off-by: Fabien Dessenne <fabien.dessenne@foss.st.com>
Link: https://lore.kernel.org/r/20211008122517.617633-1-fabien.dessenne@foss.st.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pinctrl/stm32/pinctrl-stm32.c

index bac1d040bacab85defc63d594eed0c39424ef58a..138cbc012cd89c0fdd3629592ece9aa4188061ba 100644 (file)
@@ -1554,8 +1554,8 @@ int __maybe_unused stm32_pinctrl_resume(struct device *dev)
        struct stm32_pinctrl_group *g = pctl->groups;
        int i;
 
-       for (i = g->pin; i < g->pin + pctl->ngroups; i++)
-               stm32_pinctrl_restore_gpio_regs(pctl, i);
+       for (i = 0; i < pctl->ngroups; i++, g++)
+               stm32_pinctrl_restore_gpio_regs(pctl, g->pin);
 
        return 0;
 }