summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorJarkko Nikula <jarkko.nikula@linux.intel.com>2016-09-29 16:04:59 +0300
committerWolfram Sang <wsa@the-dreams.de>2016-10-25 12:09:09 +0200
commit171e23e150acfb285f1772cedf04d35694af740b (patch)
tree23c371ef09eb7faa351aa55c455745eaa85007ae /mm
parentba9ad2af7019956b990ad654c56da5bac1e8b71b (diff)
downloadop-kernel-dev-171e23e150acfb285f1772cedf04d35694af740b.zip
op-kernel-dev-171e23e150acfb285f1772cedf04d35694af740b.tar.gz
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>
Diffstat (limited to 'mm')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud