public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] i2c-davinci: Fix timeout handling
@ 2009-02-23 14:05 Jean Delvare
       [not found] ` <20090223150554.203437b3-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Jean Delvare @ 2009-02-23 14:05 UTC (permalink / raw)
  To: Linux I2C; +Cc: Troy Kisky, Kevin Hilman

Properly set the adapter timeout value in jiffies, and then use that
value in the driver, rather than a hard-coded constant.

Signed-off-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
Cc: Troy Kisky <troy.kisky-Q5RJGjKts06CY9SHAMCTRUEOCMrvLtNR@public.gmane.org>
Cc: Kevin Hilman <khilman-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
---
Troy, Kevin, can either of you please review, build test and run test
this patch? Thanks.

 drivers/i2c/busses/i2c-davinci.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

--- linux-2.6.29-rc6.orig/drivers/i2c/busses/i2c-davinci.c	2009-02-23 08:50:47.000000000 +0100
+++ linux-2.6.29-rc6/drivers/i2c/busses/i2c-davinci.c	2009-02-23 14:56:17.000000000 +0100
@@ -216,7 +216,7 @@ static int i2c_davinci_wait_bus_not_busy
 {
 	unsigned long timeout;
 
-	timeout = jiffies + DAVINCI_I2C_TIMEOUT;
+	timeout = jiffies + dev->adapter.timeout;
 	while (davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG)
 	       & DAVINCI_I2C_STR_BB) {
 		if (time_after(jiffies, timeout)) {
@@ -289,7 +289,7 @@ i2c_davinci_xfer_msg(struct i2c_adapter
 	davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, flag);
 
 	r = wait_for_completion_interruptible_timeout(&dev->cmd_complete,
-						      DAVINCI_I2C_TIMEOUT);
+						      dev->adapter.timeout);
 	if (r == 0) {
 		dev_err(dev->dev, "controller timed out\n");
 		i2c_davinci_init(dev);
@@ -546,9 +546,7 @@ static int davinci_i2c_probe(struct plat
 	strlcpy(adap->name, "DaVinci I2C adapter", sizeof(adap->name));
 	adap->algo = &i2c_davinci_algo;
 	adap->dev.parent = &pdev->dev;
-
-	/* FIXME */
-	adap->timeout = 1;
+	adap->timeout = DAVINCI_I2C_TIMEOUT;
 
 	adap->nr = pdev->id;
 	r = i2c_add_numbered_adapter(adap);

-- 
Jean Delvare

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

* Re: [PATCH] i2c-davinci: Fix timeout handling
       [not found] ` <20090223150554.203437b3-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
@ 2009-02-24 18:49   ` Troy Kisky
  0 siblings, 0 replies; 2+ messages in thread
From: Troy Kisky @ 2009-02-24 18:49 UTC (permalink / raw)
  To: Jean Delvare; +Cc: Linux I2C, Kevin Hilman

Jean Delvare wrote:
> Properly set the adapter timeout value in jiffies, and then use that
> value in the driver, rather than a hard-coded constant.
> 
> Signed-off-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
> Cc: Troy Kisky <troy.kisky-Q5RJGjKts06CY9SHAMCTRUEOCMrvLtNR@public.gmane.org>
> Cc: Kevin Hilman <khilman-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
> ---
> Troy, Kevin, can either of you please review, build test and run test
> this patch? Thanks.
> 
>  drivers/i2c/busses/i2c-davinci.c |    8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
> 
> --- linux-2.6.29-rc6.orig/drivers/i2c/busses/i2c-davinci.c	2009-02-23 08:50:47.000000000 +0100
> +++ linux-2.6.29-rc6/drivers/i2c/busses/i2c-davinci.c	2009-02-23 14:56:17.000000000 +0100
> @@ -216,7 +216,7 @@ static int i2c_davinci_wait_bus_not_busy
>  {
>  	unsigned long timeout;
>  
> -	timeout = jiffies + DAVINCI_I2C_TIMEOUT;
> +	timeout = jiffies + dev->adapter.timeout;
>  	while (davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG)
>  	       & DAVINCI_I2C_STR_BB) {
>  		if (time_after(jiffies, timeout)) {
> @@ -289,7 +289,7 @@ i2c_davinci_xfer_msg(struct i2c_adapter
>  	davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, flag);
>  
>  	r = wait_for_completion_interruptible_timeout(&dev->cmd_complete,
> -						      DAVINCI_I2C_TIMEOUT);
> +						      dev->adapter.timeout);
>  	if (r == 0) {
>  		dev_err(dev->dev, "controller timed out\n");
>  		i2c_davinci_init(dev);
> @@ -546,9 +546,7 @@ static int davinci_i2c_probe(struct plat
>  	strlcpy(adap->name, "DaVinci I2C adapter", sizeof(adap->name));
>  	adap->algo = &i2c_davinci_algo;
>  	adap->dev.parent = &pdev->dev;
> -
> -	/* FIXME */
> -	adap->timeout = 1;
> +	adap->timeout = DAVINCI_I2C_TIMEOUT;
>  
>  	adap->nr = pdev->id;
>  	r = i2c_add_numbered_adapter(adap);
> 
I tested this without issues.

Thanks
Troy

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

end of thread, other threads:[~2009-02-24 18:49 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-23 14:05 [PATCH] i2c-davinci: Fix timeout handling Jean Delvare
     [not found] ` <20090223150554.203437b3-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2009-02-24 18:49   ` Troy Kisky

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