• Noralf Trønnes's avatar
    i2c: bcm2835: Add support for Repeated Start Condition · ee05fea2
    Noralf Trønnes authored
    Documentation/i2c/i2c-protocol states that Combined transactions should
    separate messages with a Start bit and end the whole transaction with a
    Stop bit. This patch adds support for issuing only a Start between
    messages instead of a Stop followed by a Start.
    
    This implementation differs from downstream i2c-bcm2708 in 2 respects:
    - it uses an interrupt to detect that the transfer is active instead
      of using polling. There is no interrupt for Transfer Active, but by
      not prefilling the FIFO it's possible to use the TXW interrupt.
    - when resetting/disabling the controller between transfers it writes
      CLEAR to the control register instead of just zero.
      Using just zero gave many errors. This might be the reason why
      downstream had to disable this feature and make it available with a
      module parameter.
    
    I have run thousands of transfers to a DS1307 (rtc), MMA8451 (accel)
    and AT24C32 (eeprom) in parallel without problems.
    Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
    Acked-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    ee05fea2
i2c-bcm2835.c 10.4 KB