Commit c5c0714e authored by Claudiu Beznea's avatar Claudiu Beznea Committed by Paolo Abeni

net: ravb: Assert/de-assert reset on suspend/resume

RZ/G3S can go to deep sleep states where power to most of the SoC parts is
off. When resuming from such a state, the Ethernet controller needs to be
reinitialized. De-asserting the reset signal for it should also be done.
Thus, add reset assert/de-assert on suspend/resume functions.

On the resume function, the de-assert was not reverted in case of failures
to give the user a chance to restore the interface (e.g., bringing down/up
the interface) in case suspend/resume failed.
Signed-off-by: default avatarClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 7493bb4c
......@@ -2978,7 +2978,7 @@ static int ravb_suspend(struct device *dev)
int ret;
if (!netif_running(ndev))
return 0;
goto reset_assert;
netif_device_detach(ndev);
......@@ -2990,7 +2990,11 @@ static int ravb_suspend(struct device *dev)
if (priv->info->ccc_gac)
ravb_ptp_stop(ndev);
return ret;
if (priv->wol_enabled)
return ret;
reset_assert:
return reset_control_assert(priv->rstc);
}
static int ravb_resume(struct device *dev)
......@@ -2998,7 +3002,11 @@ static int ravb_resume(struct device *dev)
struct net_device *ndev = dev_get_drvdata(dev);
struct ravb_private *priv = netdev_priv(ndev);
const struct ravb_hw_info *info = priv->info;
int ret = 0;
int ret;
ret = reset_control_deassert(priv->rstc);
if (ret)
return ret;
/* If WoL is enabled set reset mode to rearm the WoL logic */
if (priv->wol_enabled) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment