diff options
author | Wallace Wang <r59996@freescale.com> | 2009-03-12 16:02:34 +0800 |
---|---|---|
committer | Rob Herring <ra7055@ra7055-linux.sigmatel.com> | 2009-03-24 06:00:05 -0500 |
commit | dde3a2d0a65114c20511ff9883e728830920f129 (patch) | |
tree | 2d62cd788d4e390d31866343d28741547f8d0fb0 /drivers/i2c | |
parent | 6445a92657cf167bdd1aa681000a54353c483726 (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.c | 6 |
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, }; /*! |