diff options
Diffstat (limited to 'drivers/net/can/flexcan.c')
| -rw-r--r-- | drivers/net/can/flexcan.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index 41c0fc9f3b14..16f7cadda5c3 100644 --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c @@ -1268,11 +1268,10 @@ static int __maybe_unused flexcan_suspend(struct device *device)  	struct flexcan_priv *priv = netdev_priv(dev);  	int err; -	err = flexcan_chip_disable(priv); -	if (err) -		return err; -  	if (netif_running(dev)) { +		err = flexcan_chip_disable(priv); +		if (err) +			return err;  		netif_stop_queue(dev);  		netif_device_detach(dev);  	} @@ -1285,13 +1284,17 @@ static int __maybe_unused flexcan_resume(struct device *device)  {  	struct net_device *dev = dev_get_drvdata(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); +		err = flexcan_chip_enable(priv); +		if (err) +			return err;  	} -	return flexcan_chip_enable(priv); +	return 0;  }  static SIMPLE_DEV_PM_OPS(flexcan_pm_ops, flexcan_suspend, flexcan_resume);  | 
