• Neil Brown's avatar
    I2C: OMAP: Fix timeout problem during suspend. · b4fde5e7
    Neil Brown authored
    On a board with OMAP3 processor and TWL4030 Power management,
    we need to talk to the TWL4030 during late suspend but cannot
    because the I2C interrupt is disabled (as late suspend disables
    interrupt).
    
    e.g. I get messages like:
    
    [   62.161102] musb-omap2430 musb-omap2430: LATE power domain suspend
    [   63.167205] omap_i2c omap_i2c.1: controller timed out
    [   63.183044] twl: i2c_read failed to transfer all messages
    [   64.182861] omap_i2c omap_i2c.1: controller timed out
    [   64.198455] twl: i2c_write failed to transfer all messages
    [   65.198455] omap_i2c omap_i2c.1: controller timed out
    [   65.203765] twl: i2c_write failed to transfer all messages
    
    The stack shows omap2430_runtime_suspend calling twl4030_set_suspend
    which tries to power-down the USB PHY (twl4030_phy_suspend ->
    twl4030_phy_power -> __twl4030_phy_power which as a nice WARN_ON
    that helps).
    
    Then we get the same in resume:
    
    [   69.603912] musb-omap2430 musb-omap2430: EARLY power domain resume
    [   70.610473] omap_i2c omap_i2c.1: controller timed out
    [   70.626129] twl: i2c_write failed to transfer all messages
    etc.
    
    So don't disable interrupts for I2C.
    Acked-by: default avatarKevin Hilman <khilman@ti.com>
    Tested-by: default avatarKevin Hilman <khilman@ti.com>
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    Signed-off-by: default avatarShubhrajyoti D <shubhrajyoti@ti.com>
    Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
    b4fde5e7
i2c-omap.c 32.9 KB