• F
    i2c: imx: fix the i2c bus hang issue when do repeat restart · 054b62d9
    Fugang Duan 提交于
    Test i2c device Maxim max44009, datasheet is located at:
    http://www.maximintegrated.com/datasheet/index.mvp/id/7175
    
    The max44009 support repeat operation like:
    read -> repeat restart -> read/write
    
    The current i2c imx host controller driver don't support this
    operation that causes i2c bus hang due to "MTX" is cleared in
    .i2c_imx_read(). If "read" is the last message there have no problem,
    so the current driver supports all SMbus operation like:
    write -> repeat restart -> read/write
    
    IMX i2c controller for master receiver has some limitation:
    - If it is the last byte for one operation, it must generate STOP
      signal before read I2DR to prevent controller from generating another
      clock cycle.
    - If it is the last byte in the read, and then do repeat restart, it must
      set "MTX" before read I2DR to prevent controller from generating another
      extra clock cycle.
    
    The patch is to fix the issue.
    Signed-off-by: NFugang Duan <B38611@freescale.com>
    Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
    054b62d9
i2c-imx.c 22.8 KB