summaryrefslogtreecommitdiffstats
path: root/drivers/bus
diff options
context:
space:
mode:
authorJosef Ahmad2013-04-19 18:28:10 +0200
committerWolfram Sang2013-05-17 10:33:11 +0200
commite6f34cea56f5b95498070eaa9f4aa3ba4a9e4f62 (patch)
treee3b50a4ea7df97b564811788585759b2ae410dec /drivers/bus
parentLinux 3.10-rc1 (diff)
downloadkernel-qcow2-linux-e6f34cea56f5b95498070eaa9f4aa3ba4a9e4f62.tar.gz
kernel-qcow2-linux-e6f34cea56f5b95498070eaa9f4aa3ba4a9e4f62.tar.xz
kernel-qcow2-linux-e6f34cea56f5b95498070eaa9f4aa3ba4a9e4f62.zip
i2c: designware: fix RX FIFO overrun
i2c_dw_xfer_msg() pushes a number of bytes to transmit/receive to/from the bus into the TX FIFO. For master-rx transactions, the maximum amount of data that can be received is calculated depending solely on TX and RX FIFO load. This is racy - TX FIFO may contain master-rx data yet to be processed, which will eventually land into the RX FIFO. This data is not taken into account and the function may request more data than the controller is actually capable of storing. This patch ensures the driver takes into account the outstanding master-rx data in TX FIFO to prevent RX FIFO overrun. Signed-off-by: Josef Ahmad <josef.ahmad@linux.intel.com> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Cc: stable@kernel.org
Diffstat (limited to 'drivers/bus')
0 files changed, 0 insertions, 0 deletions