> On 09/21/2021 7:19 AM Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> wrote: > > > If the driver was not opened, rcar_can_suspend() should not call > clk_disable() because the clock was not enabled. > > Fixes: fd1159318e55 ("can: add Renesas R-Car CAN driver") > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > Tested-by: Ayumi Nakamichi <ayumi.nakamichi.kf@xxxxxxxxxxx> > --- > drivers/net/can/rcar/rcar_can.c | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/can/rcar/rcar_can.c b/drivers/net/can/rcar/rcar_can.c > index 00e4533c8bdd..6b4eefb03044 100644 > --- a/drivers/net/can/rcar/rcar_can.c > +++ b/drivers/net/can/rcar/rcar_can.c > @@ -846,10 +846,12 @@ static int __maybe_unused rcar_can_suspend(struct device *dev) > struct rcar_can_priv *priv = netdev_priv(ndev); > u16 ctlr; > > - if (netif_running(ndev)) { > - netif_stop_queue(ndev); > - netif_device_detach(ndev); > - } > + if (!netif_running(ndev)) > + return 0; > + > + netif_stop_queue(ndev); > + netif_device_detach(ndev); > + > ctlr = readw(&priv->regs->ctlr); > ctlr |= RCAR_CAN_CTLR_CANM_HALT; > writew(ctlr, &priv->regs->ctlr); > @@ -858,6 +860,7 @@ static int __maybe_unused rcar_can_suspend(struct device *dev) > priv->can.state = CAN_STATE_SLEEPING; > > clk_disable(priv->clk); > + > return 0; > } > > @@ -868,6 +871,9 @@ static int __maybe_unused rcar_can_resume(struct device *dev) > u16 ctlr; > int err; > > + if (!netif_running(ndev)) > + return 0; > + > err = clk_enable(priv->clk); > if (err) { > netdev_err(ndev, "clk_enable() failed, error %d\n", err); > @@ -881,10 +887,9 @@ static int __maybe_unused rcar_can_resume(struct device *dev) > writew(ctlr, &priv->regs->ctlr); > priv->can.state = CAN_STATE_ERROR_ACTIVE; > > - if (netif_running(ndev)) { > - netif_device_attach(ndev); > - netif_start_queue(ndev); > - } > + netif_device_attach(ndev); > + netif_start_queue(ndev); > + > return 0; > } > > -- > 2.25.1 Reviewed-by: Ulrich Hecht <uli+renesas@xxxxxxxx> CU Uli