public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios.
@ 2012-05-16  7:20 sonic.zhang
  2012-05-16  7:20 ` [PATCH 2/8] i2c: i2c-bfin-twi: Stop receiving operation immediately in last rx interrupt sonic.zhang
                   ` (8 more replies)
  0 siblings, 9 replies; 31+ messages in thread
From: sonic.zhang @ 2012-05-16  7:20 UTC (permalink / raw)
  To: Ben Dooks, Wolfram Sang
  Cc: linux-i2c, LKML, uclinux-dist-devel, Michael Hennerich,
	Sonic Zhang

From: Michael Hennerich <michael.hennerich@analog.com>

For transfer counts > 255 bytes i2c-bfin-twi sets the data
transfer counter DCNT to 0xFF indicating unlimited transfers.
It then uses a flag iface->manual_stop to manually issue the STOP
condition, once the required amount of bytes are received.

We found that on I2C receive operation issuing the STOP condition
together with a FULL RCV FIFO (2bytes) will cause SDA and SCL be
constantly driven low.

Temporary workaround until further investigation:
Discard the RCV FIFO before issuing the STOP condition.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>

git-svn-id: svn://localhost/svn/linux-kernel/trunk@9011 526b6c2d-f592-4532-a319-5dd88ccb003d
---
 drivers/i2c/busses/i2c-bfin-twi.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/i2c/busses/i2c-bfin-twi.c b/drivers/i2c/busses/i2c-bfin-twi.c
index cdb59e5..e6dd3c9 100644
--- a/drivers/i2c/busses/i2c-bfin-twi.c
+++ b/drivers/i2c/busses/i2c-bfin-twi.c
@@ -131,6 +131,10 @@ static void bfin_twi_handle_interrupt(struct bfin_twi_iface *iface,
 			iface->transPtr++;
 			iface->readNum--;
 		} else if (iface->manual_stop) {
+			/* Avoid possible bus stall -
+			 * Flush FIFO before issuing the STOP condition
+			 */
+			read_RCV_DATA16(iface);
 			write_MASTER_CTL(iface,
 				read_MASTER_CTL(iface) | STOP);
 		} else if (iface->cur_mode == TWI_I2C_MODE_REPEAT &&
-- 
1.7.0.4



^ permalink raw reply related	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2012-06-13  7:47 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-16  7:20 [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios sonic.zhang
2012-05-16  7:20 ` [PATCH 2/8] i2c: i2c-bfin-twi: Stop receiving operation immediately in last rx interrupt sonic.zhang
2012-05-24  9:18   ` Sonic Zhang
2012-06-11 16:28   ` Wolfram Sang
2012-05-16  7:20 ` [PATCH 3/8] i2c: i2c-bfin-twi: Break dead waiting loop if i2c device misbehaves sonic.zhang
2012-05-17  5:20   ` Shubhrajyoti Datta
2012-05-17  5:23     ` Mike Frysinger
2012-05-17 10:51       ` Shubhrajyoti Datta
2012-06-11 16:30   ` Wolfram Sang
2012-06-13  7:47     ` Zhang, Sonic
2012-05-16  7:20 ` [PATCH 4/8] i2c: i2c-bfin-twi: Tighten condition when failing I2C transfer if MEN bit is reset unexpectedly sonic.zhang
2012-05-17 11:30   ` Shubhrajyoti Datta
2012-05-18  2:41     ` Zhang, Sonic
2012-05-18  6:22       ` Shubhrajyoti Datta
2012-06-11 16:33     ` Wolfram Sang
2012-05-16  7:20 ` [PATCH 5/8] i2c:i2c-bfin-twi: TWI fails to restart next transfer in high system load sonic.zhang
2012-05-16  7:20 ` [PATCH 6/8] i2c:i2c-bfin-twi: include twi head file sonic.zhang
2012-05-24  9:18   ` Sonic Zhang
2012-06-11 16:34   ` Wolfram Sang
2012-05-16  7:20 ` [PATCH 7/8] i2c: i2c-bfin-twi: Move TWI peripheral pin request array to platform data sonic.zhang
2012-06-11 16:35   ` Wolfram Sang
2012-05-16  7:20 ` [PATCH 8/8] i2c: i2c-bfin-twi: Move blackfin TWI register access Macro to head file sonic.zhang
2012-05-24  9:19   ` Sonic Zhang
2012-05-25  9:48   ` Shubhrajyoti Datta
2012-05-25  9:54     ` Zhang, Sonic
2012-05-25 10:10       ` Shubhrajyoti Datta
2012-05-25 10:12         ` Zhang, Sonic
2012-05-25 10:16           ` Shubhrajyoti Datta
2012-06-11 16:36             ` Wolfram Sang
2012-05-24  9:17 ` [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios Sonic Zhang
2012-06-11 16:24 ` Wolfram Sang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox