• A
    i2c: omap: don't reset controller if Arbitration Lost detected · b76911d2
    Alexander Kochetkov 提交于
    Arbitration Lost is an expected situation in a multimaster
    environment. I2C controller (IP) correctly detect and report AL.
    
    The only one visible reason for resetting IP in the AL case is
    to avoid advisory 1.94 (omap3) and errata i595 (omap4): "I2C:
    After an Arbitration is Lost the Module Incorrectly Starts
    the Next Transfer".
    
    Errata workaround states: "The MST and STT bits inside I2C_CON
    should be set to 1 at the same moment (avoid setting the MST bit
    to 1 while STT = 0)." The driver never set MST and STT bits
    separately and doesn't create condition for errata. So the reset
    is not necessary.
    
    Also corrected return value for AL to -EAGAIN.
    
    Tested on Beagleboard XM C.
    Tested on BBB and AM437x Starter Kit by Felipe Balbi.
    Signed-off-by: NAlexander Kochetkov <al.kochet@gmail.com>
    Tested-by: NFelipe Balbi <balbi@ti.com>
    Reviewed-by: NFelipe Balbi <balbi@ti.com>
    Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
    b76911d2
i2c-omap.c 38.1 KB