diff options
author | Dong Aisheng <b29396@freescale.com> | 2015-02-11 15:12:44 +0800 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2015-09-17 09:21:40 -0500 |
commit | d976d7c9d408c1275075d5870ccf6cb425720434 (patch) | |
tree | 7b4bf7fb2d1410f50a10e704623feeb9b2fa0ec1 /drivers/net | |
parent | 69ed078813bac665c557ac8a9e0fb81e685ee40a (diff) |
MLK-10211 can: flexcan: fix resume failed issue
We can observe the following error during system resume.
dpm_run_callback(): platform_pm_resume+0x0/0x4c returns -110
PM: Device 2090000.can failed to resume: error -110
It is caused by the flexcan is in disable state and the clock is disabled
by default while the CAN is not up. During resume, the calling of
flexcan_chip_enable will obviously fail due to no clock.
The issue only happened when CAN device is not up. If CAN is up, clock is there
and no issue will happen.
Because the CAN is always in disabled state by default if it's not up.
We don't have to disable it again during suspend and enable it after resume.
This patch simply the suspend/resume to only enter/exit disabled mode if CAN
is up.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/can/flexcan.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index 69b32010b522..8de484b85595 100644 --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c @@ -1338,8 +1338,6 @@ static int flexcan_suspend(struct device *device) } else { err = flexcan_chip_disable(priv); } - } else { - err = flexcan_chip_disable(priv); } priv->can.state = CAN_STATE_SLEEPING; @@ -1363,8 +1361,6 @@ static int flexcan_resume(struct device *device) } else { err = flexcan_chip_enable(priv); } - } else { - err = flexcan_chip_enable(priv); } return err; |