summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPeter Rosin <peda@axentia.se>2016-09-14 15:24:12 +0200
committerWolfram Sang <wsa@the-dreams.de>2016-09-21 23:10:21 +0200
commit463e8f845cbf1c01e4cc8aeef1703212991d8e1e (patch)
treedfa5cfe2776a77298702dc819d83a5d623e0138f /drivers
parent371a015344b6e270e7e3632107d9554ec6d27a6b (diff)
downloadlinux-0-day-463e8f845cbf1c01e4cc8aeef1703212991d8e1e.tar.gz
linux-0-day-463e8f845cbf1c01e4cc8aeef1703212991d8e1e.tar.xz
i2c: mux: pca954x: retry updating the mux selection on failure
The cached value of the last selected channel prevents retries on the next call, even on failure to update the selected channel. Fix that. Signed-off-by: Peter Rosin <peda@axentia.se> Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Cc: stable@kernel.org
Diffstat (limited to 'drivers')
-rw-r--r--drivers/i2c/muxes/i2c-mux-pca954x.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
index 528e755c468f3..3278ebf1cc5cc 100644
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c
@@ -164,7 +164,7 @@ static int pca954x_select_chan(struct i2c_mux_core *muxc, u32 chan)
/* Only select the channel if its different from the last channel */
if (data->last_chan != regval) {
ret = pca954x_reg_write(muxc->parent, client, regval);
- data->last_chan = regval;
+ data->last_chan = ret ? 0 : regval;
}
return ret;