On Sat, Dec 17, 2016 at 12:10:56PM +0000, Russell King wrote: > smbus functions return -ve on error, 0 on success. However, > __i2c_transfer() have a different return signature - -ve on error, or > number of buffers transferred (which may be zero or greater.) > > The upshot of this is that the sense of the test is reversed when using > the mux on a bus supporting the master_xfer method: we cache the value > and never retry if we fail to transfer any buffers, but if we succeed, > we clear the cached value. > > Fix this by making pca954x_reg_write() return a negative error code for > all failure cases. > > Fixes: 463e8f845cbf ("i2c: mux: pca954x: retry updating the mux selection on failure") > Acked-by: Peter Rosin > Signed-off-by: Russell King Applied to for-current, thanks!