diff options
| author | Jean Delvare <khali@linux-fr.org> | 2009-02-24 19:19:49 +0100 | 
|---|---|---|
| committer | Jean Delvare <khali@linux-fr.org> | 2009-02-24 19:19:49 +0100 | 
| commit | cd97f39b7cdf1c8a9c9f52865eec795b7f0c811d (patch) | |
| tree | 010cd2255376a95120da810a1600bbd8d4d7d1c3 | |
| parent | a746b578d8406b2db0e9f0d040061bc1f78433cf (diff) | |
| download | olio-linux-3.10-cd97f39b7cdf1c8a9c9f52865eec795b7f0c811d.tar.xz olio-linux-3.10-cd97f39b7cdf1c8a9c9f52865eec795b7f0c811d.zip  | |
i2c-dev: Clarify the unit of ioctl I2C_TIMEOUT
The unit in which user-space can set the bus timeout value is jiffies
for historical reasons (back when HZ was always 100.) This is however
not good because user-space doesn't know how long a jiffy lasts. The
timeout value should instead be set in a fixed time unit. Given the
original value of HZ, this unit should be 10 ms, for compatibility.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
| -rw-r--r-- | drivers/i2c/i2c-dev.c | 6 | ||||
| -rw-r--r-- | include/linux/i2c-dev.h | 2 | ||||
| -rw-r--r-- | include/linux/i2c.h | 2 | 
3 files changed, 7 insertions, 3 deletions
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c index c171988a9f5..7e13d2df9af 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c @@ -35,6 +35,7 @@  #include <linux/i2c.h>  #include <linux/i2c-dev.h>  #include <linux/smp_lock.h> +#include <linux/jiffies.h>  #include <asm/uaccess.h>  static struct i2c_driver i2cdev_driver; @@ -422,7 +423,10 @@ static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		client->adapter->retries = arg;  		break;  	case I2C_TIMEOUT: -		client->adapter->timeout = arg; +		/* For historical reasons, user-space sets the timeout +		 * value in units of 10 ms. +		 */ +		client->adapter->timeout = msecs_to_jiffies(arg * 10);  		break;  	default:  		/* NOTE:  returning a fault code here could cause trouble diff --git a/include/linux/i2c-dev.h b/include/linux/i2c-dev.h index 311315b56b6..fd53bfd2647 100644 --- a/include/linux/i2c-dev.h +++ b/include/linux/i2c-dev.h @@ -33,7 +33,7 @@   */  #define I2C_RETRIES	0x0701	/* number of times a device address should  				   be polled when not acknowledging */ -#define I2C_TIMEOUT	0x0702	/* set timeout in jiffies - call with int */ +#define I2C_TIMEOUT	0x0702	/* set timeout in units of 10 ms */  /* NOTE: Slave address is 7 or 10 bits, but 10-bit addresses   * are NOT supported! (due to code brokenness) diff --git a/include/linux/i2c.h b/include/linux/i2c.h index fcfbfea3af7..c86c3b07604 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -361,7 +361,7 @@ struct i2c_adapter {  	struct mutex bus_lock;  	struct mutex clist_lock; -	int timeout; +	int timeout;			/* in jiffies */  	int retries;  	struct device dev;		/* the adapter device */  |