i2c: Set a default timeout value for all adapters
Jean Delvare [Sat, 28 Mar 2009 20:34:43 +0000 (21:34 +0100)]
Setting a default timeout value on a per-algo basis doesn't make any
sense. Move the default value setting to i2c-core. Individual adapter
drivers can specify a different (non-zero) value if they wish.

Also express the timeout value in a way which results in the same
duration regarless of the value of HZ.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>

drivers/i2c/algos/i2c-algo-bit.c
drivers/i2c/algos/i2c-algo-pcf.c
drivers/i2c/i2c-core.c

index eb8f72c..d420cc5 100644 (file)
@@ -604,9 +604,7 @@ static int i2c_bit_prepare_bus(struct i2c_adapter *adap)
 
        /* register new adapter to i2c module... */
        adap->algo = &i2c_bit_algo;
-
-       adap->timeout = 100;    /* default values, should       */
-       adap->retries = 3;      /* be replaced by defines       */
+       adap->retries = 3;
 
        return 0;
 }
index d31147e..7ce7577 100644 (file)
@@ -423,7 +423,6 @@ int i2c_pcf_add_bus(struct i2c_adapter *adap)
 
        /* register new adapter to i2c module... */
        adap->algo = &pcf_algo;
-       adap->timeout = 100;
 
        if ((rval = pcf_init_8584(pcf_adap)))
                return rval;
index 456caa8..e361033 100644 (file)
@@ -459,6 +459,11 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
                pr_debug("I2C adapter driver [%s] forgot to specify "
                         "physical device\n", adap->name);
        }
+
+       /* Set default timeout to 1 second if not already set */
+       if (adap->timeout == 0)
+               adap->timeout = HZ;
+
        dev_set_name(&adap->dev, "i2c-%d", adap->nr);
        adap->dev.release = &i2c_adapter_dev_release;
        adap->dev.class = &i2c_adapter_class;