summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorWallace Wang <r59996@freescale.com>2009-03-12 16:02:34 +0800
committerRob Herring <ra7055@ra7055-linux.sigmatel.com>2009-03-24 06:00:05 -0500
commitdde3a2d0a65114c20511ff9883e728830920f129 (patch)
tree2d62cd788d4e390d31866343d28741547f8d0fb0 /drivers/i2c
parent6445a92657cf167bdd1aa681000a54353c483726 (diff)
ENGR00109285 SD/MMC: The SD card interrupt can't be detected after system resume
The suspend/resume sequence is class.suspend/bus.suspend/disable_irq/ bus.suspend_late -> ...-> bus.resume_early/enable_irq/bus.resume/ class.resume MX35 platform: SD card interrupt is pseudo irq generated by mcu while mcu is controlled through I2C interface. Now I2C suspend is before disable_irq and I2C resume is after enable_irq. When SD card is inserted in suspend state, after system resume, the card detect interrupt will be handled by mcu interrupt handler before I2C driver resume. That will cause i2c error and can't get correct card status. Changing I2C driver suspend/resume to suspend_late/resume_early can make I2C resume before enable_irq. Remove ENGR00098769 fix, That card detection issue is also caused by missed interrupt Signed-off-by: Wallace Wang <r59996@freescale.com>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/mxc_i2c.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/i2c/busses/mxc_i2c.c b/drivers/i2c/busses/mxc_i2c.c
index fe5c29ee5ee5..54dd0f1dec65 100644
--- a/drivers/i2c/busses/mxc_i2c.c
+++ b/drivers/i2c/busses/mxc_i2c.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2008 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/*
@@ -758,8 +758,8 @@ static struct platform_driver mxci2c_driver = {
},
.probe = mxci2c_probe,
.remove = mxci2c_remove,
- .suspend = mxci2c_suspend,
- .resume = mxci2c_resume,
+ .suspend_late = mxci2c_suspend,
+ .resume_early = mxci2c_resume,
};
/*!