• Lars-Peter Clausen's avatar
    i2c: Revert "i2c: xiic: Do not reset controller before every transfer" · 9656eeeb
    Lars-Peter Clausen authored
    Commit d701667b ("i2c: xiic: Do not reset controller before every
    transfer") removed the reinitialization of the controller before the start
    of each transfer. Apparently this change is not safe to make and the commit
    results in random I2C bus failures.
    
    An easy way to trigger the issue is to run i2cdetect.
    
    Without the patch applied:
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    	 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    	 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 30: -- -- -- -- -- -- -- -- UU UU -- UU 3c -- -- UU
    	 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 70: -- -- -- -- -- -- -- --
    
    With the patch applied every other or so invocation:
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    	 00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
    	 10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
    	 20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
    	 30: -- -- -- -- -- -- -- -- UU UU -- UU 3c -- -- UU
    	 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    	 70: -- -- -- -- -- -- -- --
    
    So revert the commit for now.
    
    Fixes: d701667b ("i2c: xiic: Do not reset controller before every transfer")
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Acked-by: default avatarShubhrajyoti Datta <shubhraj@xilinx.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    9656eeeb
i2c-xiic.c 22.8 KB