Message ID | 20231120084606.4083194-13-claudiu.beznea.uj@bp.renesas.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: ravb: Add suspend to RAM and runtime PM support for RZ/G3S | expand |
On 11/20/23 11:46 AM, Claudiu wrote: > From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> > > RZ/G3S can go to deep sleep states where power to most of the SoC parts > is off. When resumming from such state the Ethernet controller needs to be Resuming. > reinitialized. Deasserting the reset signal for it should also be done. > Thus add reset assert/deassert on suspend/resume functions. Firefox' spell checker trips over deassert[ing] and you have |de-assert" below: > On resume function the de-assert was not reverted in case of failures to > give user a chance to restore the interface (e.g. bringing down/up the > interface) in case suspend/resume fails. I'm not seeing us reverting anything on the resume failure... > Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> [...] MBR, Sergey
On 11/21/23 10:13 PM, Sergey Shtylyov wrote: [...] >> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> [...] >> reinitialized. Deasserting the reset signal for it should also be done. >> Thus add reset assert/deassert on suspend/resume functions. > > Firefox' spell checker trips over deassert[ing] and you have |de-assert" s/Firefox/Thunderbird/. :-) [...] MBR, Sergey
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index a93b3d6b1863..f4634ac0c972 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2972,7 +2972,10 @@ static int ravb_suspend(struct device *dev) if (priv->info->ccc_gac) ravb_ptp_stop(ndev); - return ret; + if (priv->wol_enabled) + return ret; + + return reset_control_assert(priv->rstc); } static int ravb_resume(struct device *dev) @@ -2980,7 +2983,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)