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: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
7493bb4c40
commit
c5c0714e29
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user