01.02.2019 22:37, Sowjanya Komatineni пишет: > >>> BYTES_PER_FIFO_WORD 4 >>> >>> #define I2C_CNFG 0x000 >>> @@ -893,8 +892,9 @@ static int tegra_i2c_issue_bus_clear(struct >>> tegra_i2c_dev *i2c_dev) >>> i2c_writel(i2c_dev, reg, I2C_BUS_CLEAR_CNFG); >>> tegra_i2c_unmask_irq(i2c_dev, I2C_INT_BUS_CLR_DONE); >>> >>> - time_left = wait_for_completion_timeout(&i2c_dev->msg_complete, >>> - TEGRA_I2C_TIMEOUT); >>> + time_left = wait_for_completion_timeout( >>> + &i2c_dev->msg_complete, >>> + msecs_to_jiffies(1000)); >> >> So potentially tegra_i2c_xfer_msg() could take more than 1 second and then >> fail with -EAGAIN, correct? In that case we should set adapter.timeout in >> probe to a larger value: >> > Bus clear pulse threshold we are setting is 9 (default as per spec) so bus > clear should happen after finishing sending of 9 pulses. > So 1sec is very long time for bus to get released and in case of ARB LOST > whole transfer to return EAGAIN will be much less then 1sec
Okay, thank you very much for the clarification. What about to set the timeout to a shorter value then? Maybe 10ms.

