]> git.baikalelectronics.ru Git - kernel.git/commit
i2c: designware: do not disable adapter after transfer
authorLucas De Marchi <lucas.demarchi@intel.com>
Tue, 23 Aug 2016 22:18:56 +0000 (19:18 -0300)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 25 Aug 2016 22:42:16 +0000 (00:42 +0200)
commit1aa5930a82365ddfa3cb9f7b7d98cfeb8f1e12a6
tree3fb8e409c228e367a131a3d93bf27164b9d9dbfc
parentf50a7d6a96d1d9b451e6ecf665fb472cee8bbff6
i2c: designware: do not disable adapter after transfer

Disabling the adapter after each transfer adds additional delays
for each I2C transfer. Even if we don't wait for it to be disabled
anymore, on next transfer we will need to if we have several transfers
in a row.

Now during the transfer init we check if IC_TAR can be changed
dynamically, the status register for no activity and TX buffer being
empty. In this case we don't need to disable it

When a transfer fails the adapter will still be disabled - this is a
conservative approach. When transfers succeed, the adapter is left
enabled and it's configured so to disable interrupts.

Alternating register reads on 2 slaves:
perf stat -r4 chrt -f 10 ./i2c-test /dev/i2c-1 25000 0x40 0x6 0x1e 0x00

Before:
8.638705161 seconds time elapsed                  ( +-  5.90% )
After:
7.516821591 seconds time elapsed                  ( +-  0.11% )

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Tested-by: Christian Ruppert <christian.ruppert@alitech.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-designware-core.c