linux/drivers/i2c
Jarkko Nikula 171e23e150 i2c: designware: Avoid aborted transfers with fast reacting I2C slaves
I2C DesignWare may abort transfer with arbitration lost if I2C slave pulls
SDA down quickly after falling edge of SCL. Reason for this is unknown but
after trial and error it was found this can be avoided by enabling non-zero
SDA RX hold time for the receiver.

By the specification SDA RX hold time extends incoming SDA low to high
transition by n * ic_clk cycles but only when SCL is high. However it
seems to help avoid above faulty arbitration lost error.

Bits 23:16 in IC_SDA_HOLD register define the SDA RX hold time for the
receiver. Be conservative and enable 1 ic_clk cycle long hold time in
case boot firmware hasn't set it up.

Reported-by: Jukka Laitinen <jukka.laitinen@intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Tested-by: Jukka Laitinen <jukka.laitinen@intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
2016-10-25 12:09:09 +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: Avoid aborted transfers with fast reacting I2C slaves 2016-10-25 12:09:09 +02:00
muxes Merge branch 'i2c/for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2016-10-07 14:12:21 -07: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
i2c-boardinfo.c i2c: remove __init from i2c_register_board_info() 2016-06-19 14:13:50 +02:00
i2c-core.c i2c: mark device nodes only in case of successful instantiation 2016-10-25 11:48:48 +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: move locking operations to their own struct 2016-08-30 22:56: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