diff options
Diffstat (limited to 'drivers/net/ethernet/renesas/ravb_main.c')
-rw-r--r-- | drivers/net/ethernet/renesas/ravb_main.c | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 2b962d349f5f..009780df664b 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c | |||
@@ -2308,32 +2308,9 @@ static int __maybe_unused ravb_resume(struct device *dev) | |||
2308 | struct ravb_private *priv = netdev_priv(ndev); | 2308 | struct ravb_private *priv = netdev_priv(ndev); |
2309 | int ret = 0; | 2309 | int ret = 0; |
2310 | 2310 | ||
2311 | if (priv->wol_enabled) { | 2311 | /* If WoL is enabled set reset mode to rearm the WoL logic */ |
2312 | /* Reduce the usecount of the clock to zero and then | 2312 | if (priv->wol_enabled) |
2313 | * restore it to its original value. This is done to force | ||
2314 | * the clock to be re-enabled which is a workaround | ||
2315 | * for renesas-cpg-mssr driver which do not enable clocks | ||
2316 | * when resuming from PSCI suspend/resume. | ||
2317 | * | ||
2318 | * Without this workaround the driver fails to communicate | ||
2319 | * with the hardware if WoL was enabled when the system | ||
2320 | * entered PSCI suspend. This is due to that if WoL is enabled | ||
2321 | * we explicitly keep the clock from being turned off when | ||
2322 | * suspending, but in PSCI sleep power is cut so the clock | ||
2323 | * is disabled anyhow, the clock driver is not aware of this | ||
2324 | * so the clock is not turned back on when resuming. | ||
2325 | * | ||
2326 | * TODO: once the renesas-cpg-mssr suspend/resume is working | ||
2327 | * this clock dance should be removed. | ||
2328 | */ | ||
2329 | clk_disable(priv->clk); | ||
2330 | clk_disable(priv->clk); | ||
2331 | clk_enable(priv->clk); | ||
2332 | clk_enable(priv->clk); | ||
2333 | |||
2334 | /* Set reset mode to rearm the WoL logic */ | ||
2335 | ravb_write(ndev, CCC_OPC_RESET, CCC); | 2313 | ravb_write(ndev, CCC_OPC_RESET, CCC); |
2336 | } | ||
2337 | 2314 | ||
2338 | /* All register have been reset to default values. | 2315 | /* All register have been reset to default values. |
2339 | * Restore all registers which where setup at probe time and | 2316 | * Restore all registers which where setup at probe time and |