[PATCH] i2c: Adapter timeout is in jiffies [TEST RESEND]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jean Delvare <khali@xxxxxxxxxxxx>
Subject: i2c: Adapter timeout is in jiffies

i2c_adapter.timeout is in jiffies. Fix all drivers which thought
otherwise. It didn't really matter as long as the value was only used
inside the driver, but soon i2c-core will use it too so it must have
the proper unit.

Note: for the i2c-mpc driver, this fixes a bug in polling mode.
Timeout would trigger after 1 jiffy, which is most probably not what
the author wanted.

Signed-off-by: Jean Delvare <khali@xxxxxxxxxxxx>
Cc: Clifford Wolf <clifford@xxxxxxxxxxx>
Cc: Sean MacLennan <smaclennan@xxxxxxxxxxxx>
Cc: Stefan Roese <sr@xxxxxxx>
Cc: Lennert Buytenhek <kernel@xxxxxxxxxxxxxx>
Cc: Dan Williams <dan.j.williams@xxxxxxxxx>
Cc: Grant Likely <grant.likely@xxxxxxxxxxxx>
Cc: Mark A. Greer <mgreer@xxxxxxxxxx>
Cc: Wolfram Sang <w.sang@xxxxxxxxxxxxxx>
---
 drivers/i2c/busses/i2c-ibm_iic.c |    6 +++---
 drivers/i2c/busses/i2c-iop3xx.c  |    2 +-
 drivers/i2c/busses/i2c-mpc.c     |    4 ++--
 drivers/i2c/busses/i2c-mv64xxx.c |    7 +++----
 drivers/i2c/busses/i2c-pca-isa.c |    2 +-
 5 files changed, 10 insertions(+), 11 deletions(-)

--- linux-2.6.29-rc5.orig/drivers/i2c/busses/i2c-mpc.c	2009-02-22 14:29:17.000000000 +0100
+++ linux-2.6.29-rc5/drivers/i2c/busses/i2c-mpc.c	2009-02-22 14:34:56.000000000 +0100
@@ -116,7 +116,7 @@ static int i2c_wait(struct mpc_i2c *i2c,
 	} else {
 		/* Interrupt mode */
 		result = wait_event_interruptible_timeout(i2c->queue,
-			(i2c->interrupt & CSR_MIF), timeout * HZ);
+			(i2c->interrupt & CSR_MIF), timeout);
 
 		if (unlikely(result < 0)) {
 			pr_debug("I2C: wait interrupted\n");
@@ -311,7 +311,7 @@ static struct i2c_adapter mpc_ops = {
 	.owner = THIS_MODULE,
 	.name = "MPC adapter",
 	.algo = &mpc_algo,
-	.timeout = 1,
+	.timeout = HZ,
 };
 
 static int __devinit fsl_i2c_probe(struct of_device *op, const struct of_device_id *match)
--- linux-2.6.29-rc5.orig/drivers/i2c/busses/i2c-mv64xxx.c	2009-02-22 14:29:17.000000000 +0100
+++ linux-2.6.29-rc5/drivers/i2c/busses/i2c-mv64xxx.c	2009-02-22 14:29:56.000000000 +0100
@@ -358,7 +358,7 @@ mv64xxx_i2c_wait_for_completion(struct m
 	char		abort = 0;
 
 	time_left = wait_event_interruptible_timeout(drv_data->waitq,
-		!drv_data->block, msecs_to_jiffies(drv_data->adapter.timeout));
+		!drv_data->block, drv_data->adapter.timeout);
 
 	spin_lock_irqsave(&drv_data->lock, flags);
 	if (!time_left) { /* Timed out */
@@ -374,8 +374,7 @@ mv64xxx_i2c_wait_for_completion(struct m
 		spin_unlock_irqrestore(&drv_data->lock, flags);
 
 		time_left = wait_event_timeout(drv_data->waitq,
-			!drv_data->block,
-			msecs_to_jiffies(drv_data->adapter.timeout));
+			!drv_data->block, drv_data->adapter.timeout);
 
 		if ((time_left <= 0) && drv_data->block) {
 			drv_data->state = MV64XXX_I2C_STATE_IDLE;
@@ -530,7 +529,7 @@ mv64xxx_i2c_probe(struct platform_device
 	drv_data->adapter.algo = &mv64xxx_i2c_algo;
 	drv_data->adapter.owner = THIS_MODULE;
 	drv_data->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
-	drv_data->adapter.timeout = pdata->timeout;
+	drv_data->adapter.timeout = msecs_to_jiffies(pdata->timeout);
 	drv_data->adapter.nr = pd->id;
 	platform_set_drvdata(pd, drv_data);
 	i2c_set_adapdata(&drv_data->adapter, drv_data);
--- linux-2.6.29-rc5.orig/drivers/i2c/busses/i2c-ibm_iic.c	2009-02-22 14:29:17.000000000 +0100
+++ linux-2.6.29-rc5/drivers/i2c/busses/i2c-ibm_iic.c	2009-02-22 14:43:31.000000000 +0100
@@ -415,7 +415,7 @@ static int iic_wait_for_tc(struct ibm_ii
 	if (dev->irq >= 0){
 		/* Interrupt mode */
 		ret = wait_event_interruptible_timeout(dev->wq,
-			!(in_8(&iic->sts) & STS_PT), dev->adap.timeout * HZ);
+			!(in_8(&iic->sts) & STS_PT), dev->adap.timeout);
 
 		if (unlikely(ret < 0))
 			DBG("%d: wait interrupted\n", dev->idx);
@@ -426,7 +426,7 @@ static int iic_wait_for_tc(struct ibm_ii
 	}
 	else {
 		/* Polling mode */
-		unsigned long x = jiffies + dev->adap.timeout * HZ;
+		unsigned long x = jiffies + dev->adap.timeout;
 
 		while (in_8(&iic->sts) & STS_PT){
 			if (unlikely(time_after(jiffies, x))){
@@ -748,7 +748,7 @@ static int __devinit iic_probe(struct of
 	i2c_set_adapdata(adap, dev);
 	adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
 	adap->algo = &iic_algo;
-	adap->timeout = 1;
+	adap->timeout = HZ;
 
 	ret = i2c_add_adapter(adap);
 	if (ret  < 0) {
--- linux-2.6.29-rc5.orig/drivers/i2c/busses/i2c-iop3xx.c	2009-02-22 14:29:17.000000000 +0100
+++ linux-2.6.29-rc5/drivers/i2c/busses/i2c-iop3xx.c	2009-02-22 14:47:58.000000000 +0100
@@ -488,7 +488,7 @@ iop3xx_i2c_probe(struct platform_device
 	/*
 	 * Default values...should these come in from board code?
 	 */
-	new_adapter->timeout = 100;	
+	new_adapter->timeout = HZ;
 	new_adapter->algo = &iop3xx_i2c_algo;
 
 	init_waitqueue_head(&adapter_data->waitq);
--- linux-2.6.29-rc5.orig/drivers/i2c/busses/i2c-pca-isa.c	2009-02-22 14:29:17.000000000 +0100
+++ linux-2.6.29-rc5/drivers/i2c/busses/i2c-pca-isa.c	2009-02-22 14:48:34.000000000 +0100
@@ -103,7 +103,7 @@ static struct i2c_adapter pca_isa_ops =
 	.owner          = THIS_MODULE,
 	.algo_data	= &pca_isa_data,
 	.name		= "PCA9564 ISA Adapter",
-	.timeout	= 100,
+	.timeout	= HZ,
 };
 
 static int __devinit pca_isa_match(struct device *dev, unsigned int id)


-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux