summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDong Aisheng <b29396@freescale.com>2015-02-11 15:12:44 +0800
committerDong Aisheng <b29396@freescale.com>2015-03-06 11:00:20 +0800
commit34b7539ee70453e1fe18f723b24520c1e5121e00 (patch)
tree8e315675929fe1694dabaaf52dfe6036c72e719d
parentf6ab40182ff07ecd8e9b2662b4efee0797d7d48d (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> (cherry picked from commit 1a8a68cb11ce2de085efb05aa0262a7eca07aba6)
-rw-r--r--drivers/net/can/flexcan.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 4e9023aa5e94..0647af8354ab 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1333,8 +1333,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;
@@ -1358,8 +1356,6 @@ static int flexcan_resume(struct device *device)
} else {
err = flexcan_chip_enable(priv);
}
- } else {
- err = flexcan_chip_enable(priv);
}
return err;