• Guoying Zhang's avatar
    i2c: sirf: tune the divider to make i2c bus freq more accurate · d64d45cb
    Guoying Zhang authored
    In prima2 and atlas7, due to some hardware design issue. we
    need to adjust the divider ratio a little according to i2c
    bus frequency ranges.
    Since i2c is open drain interface that allows the slave to
    stall the transaction by holding the SCL line at '0', the RTL
    implementation is waiting for SCL feedback from the pin after
    setting it to High-Z ('1'). This wait adds to the high-time
    interval counter few cycles of the input synchronization
    (depending on the SCL_FILTER_REG field), and also the time it
    takes for the board pull-up resistor to rise the SCL line.
    For slow SCL settings these additions are negligible, but they
    start to affect the speed when clock is set to faster frequencies.
    This patch is based on the actual tests, and it makes SCL more
    accurate.
    Signed-off-by: default avatarGuoying Zhang <Guoying.Zhang@csr.com>
    Signed-off-by: default avatarBarry Song <Baohua.Song@csr.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    d64d45cb
i2c-sirf.c 13.1 KB