From: Peter Swain <pswain@xxxxxxxxxx> Make the i2c adapter timeout a module parameter to allow upper-level target device drivers to retry with their own logic before their own timeouts abort operations. For example, at24 eeprom driver retries for 25ms when -EAGAIN indicates that an eeprom has gone unresponsive while committing a newly written page (5ms on typical devices). Signed-off-by: Peter Swain <pswain@xxxxxxxxxx> Signed-off-by: Jan Glauber <jglauber@xxxxxxxxxx> --- drivers/i2c/busses/i2c-octeon.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-octeon.c b/drivers/i2c/busses/i2c-octeon.c index 6041cd7..ef1720f 100644 --- a/drivers/i2c/busses/i2c-octeon.c +++ b/drivers/i2c/busses/i2c-octeon.c @@ -72,6 +72,10 @@ struct octeon_i2c { struct device *dev; }; +static int timeout = 2; +module_param(timeout, int, 0444); +MODULE_PARM_DESC(timeout, "Low-level device timeout (ms)"); + /** * octeon_i2c_write_sw - write an I2C core register * @i2c: The struct octeon_i2c @@ -425,7 +429,6 @@ static struct i2c_adapter octeon_i2c_ops = { .owner = THIS_MODULE, .name = "OCTEON adapter", .algo = &octeon_i2c_algo, - .timeout = HZ / 50, }; /* calculate and set clock divisors */ @@ -561,6 +564,8 @@ static int octeon_i2c_probe(struct platform_device *pdev) octeon_i2c_setclock(i2c); i2c->adap = octeon_i2c_ops; + i2c->adap.timeout = msecs_to_jiffies(timeout); + i2c->adap.retries = 10; i2c->adap.dev.parent = &pdev->dev; i2c->adap.dev.of_node = node; i2c_set_adapdata(&i2c->adap, i2c); -- 1.9.1 -- 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