linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] i2c: sirf: a bundle of fixes for stability
@ 2013-08-13  9:11 Barry Song
       [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Barry Song @ 2013-08-13  9:11 UTC (permalink / raw)
  To: wsa-z923LK4zBo2bacvFa/9K2g, linux-i2c-u79uwXL29TY76Z2rM5mHXA
  Cc: workgroup.linux-kQvG35nSl+M, Barry Song

here it is a bundle of fixes to sirfsoc i2c driver to make the driver stable
in random hardware and connect random i2c clients.

Zhiwu Song (5):
  i2c: sirf: reset i2c controller early after we get a noack
  i2c: sirf: reset i2c controller after resuming
  i2c: sirf: fix the typo for setting bitrate to less than 100k
  i2c: sirfsoc: support reverse direction of address
  i2c: sirf: retry 3 times as sometimes we get random noack and timeout

 drivers/i2c/busses/i2c-sirf.c | 36 ++++++++++++++++++++++++++----------
 1 file changed, 26 insertions(+), 10 deletions(-)

-- 
1.8.2.3

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

* [PATCH 1/5] i2c: sirf: reset i2c controller early after we get a noack
       [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
@ 2013-08-13  9:11   ` Barry Song
       [not found]     ` <1376385091-30597-2-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
  2013-08-13  9:11   ` [PATCH 2/5] i2c: sirf: we need to wait I2C_RESET status in resume Barry Song
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Barry Song @ 2013-08-13  9:11 UTC (permalink / raw)
  To: wsa-z923LK4zBo2bacvFa/9K2g, linux-i2c-u79uwXL29TY76Z2rM5mHXA
  Cc: workgroup.linux-kQvG35nSl+M, Zhiwu Song, Barry Song

From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>

Due to hardware ANOMALY, we need to reset I2C earlier after
we get NOACK while accessing non-existing clients, otherwise
we will get errors even we access existing clients later

Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
---
 drivers/i2c/busses/i2c-sirf.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
index a63c7d5..055210e 100644
--- a/drivers/i2c/busses/i2c-sirf.c
+++ b/drivers/i2c/busses/i2c-sirf.c
@@ -65,6 +65,8 @@
 #define SIRFSOC_I2C_START		BIT(7)
 
 #define SIRFSOC_I2C_DEFAULT_SPEED 100000
+#define SIRFSOC_I2C_ERR_NOACK      1
+#define SIRFSOC_I2C_ERR_TIMEOUT    2
 
 struct sirfsoc_i2c {
 	void __iomem *base;
@@ -143,14 +145,24 @@ static irqreturn_t i2c_sirfsoc_irq(int irq, void *dev_id)
 
 	if (i2c_stat & SIRFSOC_I2C_STAT_ERR) {
 		/* Error conditions */
-		siic->err_status = 1;
+		siic->err_status = SIRFSOC_I2C_ERR_NOACK;
 		writel(SIRFSOC_I2C_STAT_ERR, siic->base + SIRFSOC_I2C_STATUS);
 
 		if (i2c_stat & SIRFSOC_I2C_STAT_NACK)
-			dev_err(&siic->adapter.dev, "ACK not received\n");
+			dev_dbg(&siic->adapter.dev, "ACK not received\n");
 		else
 			dev_err(&siic->adapter.dev, "I2C error\n");
 
+		/*
+		 * Due to hardware ANOMALY, we need to reset I2C earlier after
+		 * we get NOACK while accessing non-existing clients, otherwise
+		 * we will get errors even we access existing clients later
+		 */
+		writel(readl(siic->base + SIRFSOC_I2C_CTRL) | SIRFSOC_I2C_RESET,
+				siic->base + SIRFSOC_I2C_CTRL);
+		while (readl(siic->base + SIRFSOC_I2C_CTRL) & SIRFSOC_I2C_RESET)
+			cpu_relax();
+
 		complete(&siic->done);
 	} else if (i2c_stat & SIRFSOC_I2C_STAT_CMD_DONE) {
 		/* CMD buffer execution complete */
@@ -191,7 +203,6 @@ static int i2c_sirfsoc_xfer_msg(struct sirfsoc_i2c *siic, struct i2c_msg *msg)
 	u32 regval = readl(siic->base + SIRFSOC_I2C_CTRL);
 	/* timeout waiting for the xfer to finish or fail */
 	int timeout = msecs_to_jiffies((msg->len + 1) * 50);
-	int ret = 0;
 
 	i2c_sirfsoc_set_address(siic, msg);
 
@@ -200,7 +211,7 @@ static int i2c_sirfsoc_xfer_msg(struct sirfsoc_i2c *siic, struct i2c_msg *msg)
 	i2c_sirfsoc_queue_cmd(siic);
 
 	if (wait_for_completion_timeout(&siic->done, timeout) == 0) {
-		siic->err_status = 1;
+		siic->err_status = SIRFSOC_I2C_ERR_TIMEOUT;
 		dev_err(&siic->adapter.dev, "Transfer timeout\n");
 	}
 
@@ -208,16 +219,14 @@ static int i2c_sirfsoc_xfer_msg(struct sirfsoc_i2c *siic, struct i2c_msg *msg)
 		siic->base + SIRFSOC_I2C_CTRL);
 	writel(0, siic->base + SIRFSOC_I2C_CMD_START);
 
-	if (siic->err_status) {
+	/* i2c control doesn't response, reset it */
+	if (siic->err_status == SIRFSOC_I2C_ERR_TIMEOUT) {
 		writel(readl(siic->base + SIRFSOC_I2C_CTRL) | SIRFSOC_I2C_RESET,
 			siic->base + SIRFSOC_I2C_CTRL);
 		while (readl(siic->base + SIRFSOC_I2C_CTRL) & SIRFSOC_I2C_RESET)
 			cpu_relax();
-
-		ret = -EIO;
 	}
-
-	return ret;
+	return siic->err_status ? -EIO : 0;
 }
 
 static u32 i2c_sirfsoc_func(struct i2c_adapter *adap)
-- 
1.8.2.3

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

* [PATCH 2/5] i2c: sirf: we need to wait I2C_RESET status in resume
       [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
  2013-08-13  9:11   ` [PATCH 1/5] i2c: sirf: reset i2c controller early after we get a noack Barry Song
@ 2013-08-13  9:11   ` Barry Song
  2013-08-13  9:11   ` [PATCH 3/5] i2c: sirf: fix the typo for setting bitrate to less than 100k Barry Song
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 12+ messages in thread
From: Barry Song @ 2013-08-13  9:11 UTC (permalink / raw)
  To: wsa-z923LK4zBo2bacvFa/9K2g, linux-i2c-u79uwXL29TY76Z2rM5mHXA
  Cc: workgroup.linux-kQvG35nSl+M, Zhiwu Song, Barry Song

From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>

this fixes the issue that we lost to wait the i2c reset finished.

Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
---
 drivers/i2c/busses/i2c-sirf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
index 055210e..45a8881 100644
--- a/drivers/i2c/busses/i2c-sirf.c
+++ b/drivers/i2c/busses/i2c-sirf.c
@@ -425,6 +425,8 @@ static int i2c_sirfsoc_resume(struct device *dev)
 
 	clk_enable(siic->clk);
 	writel(SIRFSOC_I2C_RESET, siic->base + SIRFSOC_I2C_CTRL);
+	while (readl(siic->base + SIRFSOC_I2C_CTRL) & SIRFSOC_I2C_RESET)
+		cpu_relax();
 	writel(SIRFSOC_I2C_CORE_EN | SIRFSOC_I2C_MASTER_MODE,
 		siic->base + SIRFSOC_I2C_CTRL);
 	writel(siic->clk_div, siic->base + SIRFSOC_I2C_CLK_CTRL);
-- 
1.8.2.3

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

* [PATCH 3/5] i2c: sirf: fix the typo for setting bitrate to less than 100k
       [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
  2013-08-13  9:11   ` [PATCH 1/5] i2c: sirf: reset i2c controller early after we get a noack Barry Song
  2013-08-13  9:11   ` [PATCH 2/5] i2c: sirf: we need to wait I2C_RESET status in resume Barry Song
@ 2013-08-13  9:11   ` Barry Song
  2013-08-13  9:11   ` [PATCH 4/5] i2c: sirfsoc: support reverse direction of address Barry Song
  2013-08-13  9:11   ` [PATCH 5/5] i2c: sirf: retry 3 times as sometimes we get random noack and timeout Barry Song
  4 siblings, 0 replies; 12+ messages in thread
From: Barry Song @ 2013-08-13  9:11 UTC (permalink / raw)
  To: wsa-z923LK4zBo2bacvFa/9K2g, linux-i2c-u79uwXL29TY76Z2rM5mHXA
  Cc: workgroup.linux-kQvG35nSl+M, Zhiwu Song, Barry Song

From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>

there is a typo before, it makes the final bitrate wrong, this patch fixes
it.

Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
---
 drivers/i2c/busses/i2c-sirf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
index 45a8881..746388f 100644
--- a/drivers/i2c/busses/i2c-sirf.c
+++ b/drivers/i2c/busses/i2c-sirf.c
@@ -357,7 +357,7 @@ static int i2c_sirfsoc_probe(struct platform_device *pdev)
 
 	if (bitrate < 100000)
 		regval =
-			(2 * ctrl_speed) / (2 * bitrate * 11);
+			(2 * ctrl_speed) / (bitrate * 11);
 	else
 		regval = ctrl_speed / (bitrate * 5);
 
-- 
1.8.2.3

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

* [PATCH 4/5] i2c: sirfsoc: support reverse direction of address
       [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
                     ` (2 preceding siblings ...)
  2013-08-13  9:11   ` [PATCH 3/5] i2c: sirf: fix the typo for setting bitrate to less than 100k Barry Song
@ 2013-08-13  9:11   ` Barry Song
       [not found]     ` <1376385091-30597-5-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
  2013-08-13  9:11   ` [PATCH 5/5] i2c: sirf: retry 3 times as sometimes we get random noack and timeout Barry Song
  4 siblings, 1 reply; 12+ messages in thread
From: Barry Song @ 2013-08-13  9:11 UTC (permalink / raw)
  To: wsa-z923LK4zBo2bacvFa/9K2g, linux-i2c-u79uwXL29TY76Z2rM5mHXA
  Cc: workgroup.linux-kQvG35nSl+M, Zhiwu Song, Rongjun Ying, Barry Song

From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>

if users set I2C_M_REV_DIR_ADDR, revert the direction of address.

Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
Signed-off-by: Rongjun Ying <rongjun.ying-kQvG35nSl+M@public.gmane.org>
Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
---
 drivers/i2c/busses/i2c-sirf.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
index 746388f..d2b7913 100644
--- a/drivers/i2c/busses/i2c-sirf.c
+++ b/drivers/i2c/busses/i2c-sirf.c
@@ -195,6 +195,10 @@ static void i2c_sirfsoc_set_address(struct sirfsoc_i2c *siic,
 	if (msg->flags & I2C_M_RD)
 		addr |= 1;
 
+	/* Reverse direction bit */
+	if (msg->flags & I2C_M_REV_DIR_ADDR)
+		addr ^= 1;
+
 	writel(addr, siic->base + SIRFSOC_I2C_CMD(siic->cmd_ptr++));
 }
 
-- 
1.8.2.3

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

* [PATCH 5/5] i2c: sirf: retry 3 times as sometimes we get random noack and timeout
       [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
                     ` (3 preceding siblings ...)
  2013-08-13  9:11   ` [PATCH 4/5] i2c: sirfsoc: support reverse direction of address Barry Song
@ 2013-08-13  9:11   ` Barry Song
  4 siblings, 0 replies; 12+ messages in thread
From: Barry Song @ 2013-08-13  9:11 UTC (permalink / raw)
  To: wsa-z923LK4zBo2bacvFa/9K2g, linux-i2c-u79uwXL29TY76Z2rM5mHXA
  Cc: workgroup.linux-kQvG35nSl+M, Zhiwu Song, Barry Song

From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>

let i2c core retry 3 times as sometimes we get random noack and timeout
even when we access an existing i2c client.

Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
---
 drivers/i2c/busses/i2c-sirf.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
index d2b7913..90adc2d 100644
--- a/drivers/i2c/busses/i2c-sirf.c
+++ b/drivers/i2c/busses/i2c-sirf.c
@@ -230,7 +230,7 @@ static int i2c_sirfsoc_xfer_msg(struct sirfsoc_i2c *siic, struct i2c_msg *msg)
 		while (readl(siic->base + SIRFSOC_I2C_CTRL) & SIRFSOC_I2C_RESET)
 			cpu_relax();
 	}
-	return siic->err_status ? -EIO : 0;
+	return siic->err_status ? -EAGAIN : 0;
 }
 
 static u32 i2c_sirfsoc_func(struct i2c_adapter *adap)
@@ -334,6 +334,7 @@ static int i2c_sirfsoc_probe(struct platform_device *pdev)
 
 	adap->algo = &i2c_sirfsoc_algo;
 	adap->algo_data = siic;
+	adap->retries = 3;
 
 	adap->dev.of_node = pdev->dev.of_node;
 	adap->dev.parent = &pdev->dev;
-- 
1.8.2.3

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

* Re: [PATCH 1/5] i2c: sirf: reset i2c controller early after we get a noack
       [not found]     ` <1376385091-30597-2-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
@ 2013-08-19 18:05       ` Wolfram Sang
  2013-08-19 22:49         ` Barry Song
  0 siblings, 1 reply; 12+ messages in thread
From: Wolfram Sang @ 2013-08-19 18:05 UTC (permalink / raw)
  To: Barry Song
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, workgroup.linux-kQvG35nSl+M,
	Zhiwu Song, Barry Song

[-- Attachment #1: Type: text/plain, Size: 151 bytes --]


> +		while (readl(siic->base + SIRFSOC_I2C_CTRL) & SIRFSOC_I2C_RESET)
> +			cpu_relax();

Are you sure you want no timeout here? Same for patch 2/5.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [PATCH 4/5] i2c: sirfsoc: support reverse direction of address
       [not found]     ` <1376385091-30597-5-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
@ 2013-08-19 18:06       ` Wolfram Sang
  2013-08-20  2:30         ` Barry Song
  0 siblings, 1 reply; 12+ messages in thread
From: Wolfram Sang @ 2013-08-19 18:06 UTC (permalink / raw)
  To: Barry Song
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, workgroup.linux-kQvG35nSl+M,
	Zhiwu Song, Rongjun Ying, Barry Song

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

On Tue, Aug 13, 2013 at 05:11:30PM +0800, Barry Song wrote:
> From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
> 
> if users set I2C_M_REV_DIR_ADDR, revert the direction of address.
> 
> Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
> Signed-off-by: Rongjun Ying <rongjun.ying-kQvG35nSl+M@public.gmane.org>
> Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>

Hmm, you are not advertising I2C_FUNC_PROTOCOL_MANGLING so users should
not use it. Does the master allow to implement the rest of mangling,
too?


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [PATCH 1/5] i2c: sirf: reset i2c controller early after we get a noack
  2013-08-19 18:05       ` Wolfram Sang
@ 2013-08-19 22:49         ` Barry Song
  0 siblings, 0 replies; 12+ messages in thread
From: Barry Song @ 2013-08-19 22:49 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, DL-SHA-WorkGroupLinux,
	Zhiwu Song, Barry Song

2013/8/20 Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>:
>
>> +             while (readl(siic->base + SIRFSOC_I2C_CTRL) & SIRFSOC_I2C_RESET)
>> +                     cpu_relax();
>
> Are you sure you want no timeout here? Same for patch 2/5.

the real situation is that timeout never happen for resetting the i2c
controller, in pressure test, this loop will always break.

>
-barry

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

* Re: [PATCH 4/5] i2c: sirfsoc: support reverse direction of address
  2013-08-19 18:06       ` Wolfram Sang
@ 2013-08-20  2:30         ` Barry Song
       [not found]           ` <CAGsJ_4xoPCJyWZ=_nN6wZBAy2qMER=cKOqY_t8K_jAX8fZWGmA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Barry Song @ 2013-08-20  2:30 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, DL-SHA-WorkGroupLinux,
	Zhiwu Song, Rongjun Ying, Barry Song

2013/8/20 Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>:
> On Tue, Aug 13, 2013 at 05:11:30PM +0800, Barry Song wrote:
>> From: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
>>
>> if users set I2C_M_REV_DIR_ADDR, revert the direction of address.
>>
>> Signed-off-by: Zhiwu Song <Zhiwu.Song-kQvG35nSl+M@public.gmane.org>
>> Signed-off-by: Rongjun Ying <rongjun.ying-kQvG35nSl+M@public.gmane.org>
>> Signed-off-by: Barry Song <Baohua.Song-kQvG35nSl+M@public.gmane.org>
>
> Hmm, you are not advertising I2C_FUNC_PROTOCOL_MANGLING so users should
> not use it.

Wolfram, good comments. the old codes did miss
I2C_FUNC_PROTOCOL_MANGLING which i will fix in v2.

> Does the master allow to implement the rest of mangling,
> too?
>

i think only I2C_M_REV_DIR_ADDR. i didn't hear I2C_M_NOSTART,
I2C_M_IGNORE_NAK from hardware guys.

-barry

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

* Re: [PATCH 4/5] i2c: sirfsoc: support reverse direction of address
       [not found]           ` <CAGsJ_4xoPCJyWZ=_nN6wZBAy2qMER=cKOqY_t8K_jAX8fZWGmA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2013-08-28  9:41             ` Wolfram Sang
  2013-08-28 12:00               ` Barry Song
  0 siblings, 1 reply; 12+ messages in thread
From: Wolfram Sang @ 2013-08-28  9:41 UTC (permalink / raw)
  To: Barry Song
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, DL-SHA-WorkGroupLinux,
	Zhiwu Song, Rongjun Ying, Barry Song

[-- Attachment #1: Type: text/plain, Size: 596 bytes --]


> > Hmm, you are not advertising I2C_FUNC_PROTOCOL_MANGLING so users should
> > not use it.
> 
> Wolfram, good comments. the old codes did miss
> I2C_FUNC_PROTOCOL_MANGLING which i will fix in v2.
> 
> > Does the master allow to implement the rest of mangling,
> > too?
> >
> 
> i think only I2C_M_REV_DIR_ADDR. i didn't hear I2C_M_NOSTART,
> I2C_M_IGNORE_NAK from hardware guys.

Hmm, since the driver can't support all of MANGLING, it might be wise to
not advertise it. I am undecided how to handle this generally. Until
then, I'll accept this patch (and the series) as is.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [PATCH 4/5] i2c: sirfsoc: support reverse direction of address
  2013-08-28  9:41             ` Wolfram Sang
@ 2013-08-28 12:00               ` Barry Song
  0 siblings, 0 replies; 12+ messages in thread
From: Barry Song @ 2013-08-28 12:00 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, DL-SHA-WorkGroupLinux,
	Zhiwu Song, Rongjun Ying, Barry Song

2013/8/28 Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>:
>
>> > Hmm, you are not advertising I2C_FUNC_PROTOCOL_MANGLING so users should
>> > not use it.
>>
>> Wolfram, good comments. the old codes did miss
>> I2C_FUNC_PROTOCOL_MANGLING which i will fix in v2.
>>
>> > Does the master allow to implement the rest of mangling,
>> > too?
>> >
>>
>> i think only I2C_M_REV_DIR_ADDR. i didn't hear I2C_M_NOSTART,
>> I2C_M_IGNORE_NAK from hardware guys.
>
> Hmm, since the driver can't support all of MANGLING, it might be wise to
> not advertise it. I am undecided how to handle this generally. Until
> then, I'll accept this patch (and the series) as is.

ok, thanks Wolfram. then i will not have v2.
>

-barry

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

end of thread, other threads:[~2013-08-28 12:00 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-13  9:11 [PATCH 0/5] i2c: sirf: a bundle of fixes for stability Barry Song
     [not found] ` <1376385091-30597-1-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
2013-08-13  9:11   ` [PATCH 1/5] i2c: sirf: reset i2c controller early after we get a noack Barry Song
     [not found]     ` <1376385091-30597-2-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
2013-08-19 18:05       ` Wolfram Sang
2013-08-19 22:49         ` Barry Song
2013-08-13  9:11   ` [PATCH 2/5] i2c: sirf: we need to wait I2C_RESET status in resume Barry Song
2013-08-13  9:11   ` [PATCH 3/5] i2c: sirf: fix the typo for setting bitrate to less than 100k Barry Song
2013-08-13  9:11   ` [PATCH 4/5] i2c: sirfsoc: support reverse direction of address Barry Song
     [not found]     ` <1376385091-30597-5-git-send-email-Baohua.Song-kQvG35nSl+M@public.gmane.org>
2013-08-19 18:06       ` Wolfram Sang
2013-08-20  2:30         ` Barry Song
     [not found]           ` <CAGsJ_4xoPCJyWZ=_nN6wZBAy2qMER=cKOqY_t8K_jAX8fZWGmA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-28  9:41             ` Wolfram Sang
2013-08-28 12:00               ` Barry Song
2013-08-13  9:11   ` [PATCH 5/5] i2c: sirf: retry 3 times as sometimes we get random noack and timeout Barry Song

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).