• Peter Rosin's avatar
    i2c: mux: mlxcpld: fix i2c mux selection caching · 649ac63a
    Peter Rosin authored
    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 mlxcpld_mux_reg_write() return a -ve error code for
    all failure cases, just as was done in commit 7f638c1c ("i2c: mux:
    pca954x: fix i2c mux selection caching").
    
    This also aligns the implementations of these two muxes in this area.
    Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
    Acked-by: default avatarVadim Pasternak <vadimp@mellanox.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    649ac63a
i2c-mux-mlxcpld.c 6.83 KB