ret is still -1, if during the polling read_byte() returns at once with I2C_PCA_CON_SI set. So ret > 0 would lead i2c_pca_pf_waitforcompletion() to return 0, in spite of the proper behavior. That's why only ret should be returned. Signed-off-by: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> Index: b/drivers/i2c/busses/i2c-pca-platform.c =================================================================== --- a/drivers/i2c/busses/i2c-pca-platform.c 2010-08-27 01:47:12.000000000 +0200 +++ b/drivers/i2c/busses/i2c-pca-platform.c 2010-09-20 10:21:05.000000000 +0200 @@ -96,7 +96,7 @@ udelay(100); } - return ret > 0; + return ret; } static void i2c_pca_pf_dummyreset(void *pd) -- 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