In the deepest low-power modes, the pinctrl configuration is lost and is never restored if the interface is down. This commit ensures that the pinctrl state is set in all cases. Signed-off-by: Christophe Roullier --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 11150bddd8726..26ac1cdc561c2 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -8150,8 +8150,11 @@ int stmmac_suspend(struct device *dev) struct stmmac_priv *priv = netdev_priv(ndev); u8 chan; - if (!ndev || !netif_running(ndev)) + if (!ndev || !netif_running(ndev)) { + /* Select sleep pin state */ + pinctrl_pm_select_sleep_state(dev); goto suspend_bsp; + } mutex_lock(&priv->lock); @@ -8252,8 +8255,11 @@ int stmmac_resume(struct device *dev) return ret; } - if (!netif_running(ndev)) + if (!netif_running(ndev)) { + /* Select default pin state */ + pinctrl_pm_select_default_state(priv->device); return 0; + } /* Power Down bit, into the PM register, is cleared * automatically as soon as a magic packet or a Wake-up frame -- 2.43.0