linux/drivers/i2c
Lucas De Marchi 0317e6c0f1 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>
2016-08-26 00:42:16 +02:00
..
algos i2c: algo-bit: declare i2c_bit_quirk_no_clk_stretch as static 2016-05-11 17:16:30 +02:00
busses i2c: designware: do not disable adapter after transfer 2016-08-26 00:42:16 +02:00
muxes i2c: mux: demux-pinctrl: properly roll back when adding adapter fails 2016-08-15 00:55:07 +02:00
i2c-boardinfo.c i2c: remove __init from i2c_register_board_info() 2016-06-19 14:13:50 +02:00
i2c-core.c i2c: core: Add function for finding the bus speed from ACPI, take 2 2016-08-26 00:42:10 +02:00
i2c-core.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-dev.c i2c-dev: don't get i2c adapter via i2c_dev 2016-07-08 10:29:31 +09:00
i2c-mux.c i2c: add i2c_trylock_bus wrapper, use it 2016-08-25 18:02:14 +02:00
i2c-slave-eeprom.c i2c: Drop owner assignment from i2c_driver 2015-08-10 08:37:35 +02:00
i2c-smbus.c i2c: i2c-smbus: fix i2c_handle_smbus_host_notify documentation 2016-07-18 20:09:54 +02:00
i2c-stub.c i2c: i2c-stub: sort includes 2016-02-20 23:33:39 +01:00
Kconfig i2c: Update the description of I2C_SMBUS 2016-07-18 20:11:08 +02:00
Makefile i2c: slave-eeprom: add eeprom simulator driver 2014-12-11 22:25:54 +01:00