• Ray Jui's avatar
    i2c: iproc: Support larger TX transfer · 4916eb69
    Ray Jui authored
    The current iProc I2C driver only allows each TX transfer up to 63
    bytes (the TX FIFO has a size of 64 bytes, and one byte is reserved
    for slave address). This patch enhances the driver to support TX
    transfer in each I2C message for up to 65535 bytes (a practical
    maximum, since member 'max_write_len' of 'struct i2c_adapter_quirks is
    of type 'u16')
    
    This works by loading up the I2C TX FIFO and enabling the TX underrun
    interrupt for each burst. After each burst of TX data is finished,
    i.e., when the TX FIFO becomes empty, the TX underrun interrupt will be
    triggered and another burst of TX data can be loaded into the TX FIFO.
    This repeats until all TX data are finished
    Signed-off-by: default avatarRay Jui <rjui@broadcom.com>
    Tested-by: default avatarIcarus Chau <ichau@broadcom.com>
    Reviewed-by: default avatarScott Branden <sbranden@broadcom.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    4916eb69
i2c-bcm-iproc.c 15.4 KB