mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 20:53:07 -04:00
Merge patch series "can: flexcan: only change CAN state when link up in system PM"
In this series Haibo Chen fixes several shortcomings of the suspend and resume functions of the flexcan driver. Link: https://patch.msgid.link/20250314110145.899179-1-haibo.chen@nxp.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
@@ -2260,14 +2260,19 @@ static int __maybe_unused flexcan_suspend(struct device *device)
|
||||
|
||||
flexcan_chip_interrupts_disable(dev);
|
||||
|
||||
err = flexcan_transceiver_disable(priv);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = pinctrl_pm_select_sleep_state(device);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
netif_stop_queue(dev);
|
||||
netif_device_detach(dev);
|
||||
|
||||
priv->can.state = CAN_STATE_SLEEPING;
|
||||
}
|
||||
priv->can.state = CAN_STATE_SLEEPING;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2278,7 +2283,6 @@ static int __maybe_unused flexcan_resume(struct device *device)
|
||||
struct flexcan_priv *priv = netdev_priv(dev);
|
||||
int err;
|
||||
|
||||
priv->can.state = CAN_STATE_ERROR_ACTIVE;
|
||||
if (netif_running(dev)) {
|
||||
netif_device_attach(dev);
|
||||
netif_start_queue(dev);
|
||||
@@ -2292,12 +2296,20 @@ static int __maybe_unused flexcan_resume(struct device *device)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = flexcan_chip_start(dev);
|
||||
err = flexcan_transceiver_enable(priv);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = flexcan_chip_start(dev);
|
||||
if (err) {
|
||||
flexcan_transceiver_disable(priv);
|
||||
return err;
|
||||
}
|
||||
|
||||
flexcan_chip_interrupts_enable(dev);
|
||||
}
|
||||
|
||||
priv->can.state = CAN_STATE_ERROR_ACTIVE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user