i2c: sirf: tune the divider to make i2c bus freq more accurate
authorGuoying Zhang <Guoying.Zhang@csr.com>
Wed, 9 Sep 2015 10:30:32 +0000 (10:30 +0000)
committerWolfram Sang <wsa@the-dreams.de>
Fri, 23 Oct 2015 20:48:45 +0000 (22:48 +0200)
commitd64d45cb95e6f9edf58fab49cfc5a7a60ff1a122
tree7d3d95f3ea4edfc07c5189b3211b242f6f5d61a7
parent4c0657ae432398f729c1d402bab935505a5255b5
i2c: sirf: tune the divider to make i2c bus freq more accurate

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: Guoying Zhang <Guoying.Zhang@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-sirf.c