From mboxrd@z Thu Jan 1 00:00:00 1970 From: Troy Kisky Subject: Re: [PATCH] i2c-davinci: Fix timeout handling Date: Tue, 24 Feb 2009 11:49:40 -0700 Message-ID: <49A44144.8000803@boundarydevices.com> References: <20090223150554.203437b3@hyperion.delvare> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20090223150554.203437b3-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org> Sender: linux-i2c-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Jean Delvare Cc: Linux I2C , Kevin Hilman List-Id: linux-i2c@vger.kernel.org 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 > Cc: Troy Kisky > Cc: Kevin Hilman > --- > 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