linux-i2c.vger.kernel.org archive mirror
 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
       [not found] ` <1337152826-9850-1-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
  2012-05-24  9:17 ` Sonic Zhang
  0 siblings, 2 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
     [not found] ` <1337152826-9850-1-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-16  7:20   ` [PATCH 2/8] i2c: i2c-bfin-twi: Stop receiving operation immediately in last rx interrupt sonic.zhang-OyLXuOCK7orQT0dZR+AlfA
2012-05-24  9:18     ` Sonic Zhang
     [not found]     ` <1337152826-9850-2-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-3-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-17  5:20       ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2csTziLb0niCTj6oW9G=BPa2VWN58rW2jF-A1VJKXwNfCQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-17  5:23           ` Mike Frysinger
     [not found]             ` <CAMjpGUf-AQHigrpBhxmOGJZgjfqfCWvRa29wURpGkVuj58suPg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-17 10:51               ` Shubhrajyoti Datta
2012-06-11 16:30     ` Wolfram Sang
     [not found]       ` <20120611163044.GD3887-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-4-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-17 11:30       ` Shubhrajyoti Datta
2012-05-18  2:41         ` Zhang, Sonic
     [not found]           ` <DB904C5425BA6F4E8424B3B51A1414D16F64F8527E-6SXM3jaLOct7xzP2fcxY8GoKb0G9Rp+C@public.gmane.org>
2012-05-18  6:22             ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2cta_a2XcOLoOnnUUjZOpj1phUH99xfgZnh4nhxG8QX3-Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
2012-05-16  7:20   ` [PATCH 6/8] i2c:i2c-bfin-twi: include twi head file sonic.zhang-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-6-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-7-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
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-OyLXuOCK7orQT0dZR+AlfA
     [not found]     ` <1337152826-9850-8-git-send-email-sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
2012-05-24  9:19       ` Sonic Zhang
2012-05-25  9:48       ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2csSuQ3R9U=XKwj9F0xijTxx_ULperAiQYD_X3a5GKVjFg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-25  9:54           ` Zhang, Sonic
     [not found]             ` <DB904C5425BA6F4E8424B3B51A1414D170230E5ADF-6SXM3jaLOct7xzP2fcxY8GoKb0G9Rp+C@public.gmane.org>
2012-05-25 10:10               ` Shubhrajyoti Datta
2012-05-25 10:12                 ` Zhang, Sonic
     [not found]                   ` <DB904C5425BA6F4E8424B3B51A1414D170230E5AF6-6SXM3jaLOct7xzP2fcxY8GoKb0G9Rp+C@public.gmane.org>
2012-05-25 10:16                     ` Shubhrajyoti Datta
2012-06-11 16:36                       ` Wolfram Sang
2012-06-11 16:24   ` [PATCH 1/8] i2c: i2c-bfin-twi: Illegal i2c bus lock upon certain transfer scenarios Wolfram Sang
2012-05-24  9:17 ` Sonic Zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).