Disabling the adapter after each transfer adds additional delaysAcked-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
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@xxxxxxxxx>
Signed-off-by: Josà Roberto de Souza <jose.souza@xxxxxxxxx>
---
drivers/i2c/busses/i2c-designware-core.c | 55 +++++++++++++++++++++-----------
1 file changed, 37 insertions(+), 18 deletions(-)