diff mbox

i2c: i2c-mux-pca954x: retry updating the mux selection on failure

Message ID 1473859452-8069-1-git-send-email-peda@axentia.se
State Accepted
Headers show

Commit Message

Peter Rosin Sept. 14, 2016, 1:24 p.m. UTC
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>
---
 drivers/i2c/muxes/i2c-mux-pca954x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Wolfram Sang Sept. 15, 2016, 7:52 p.m. UTC | #1
On Wed, Sep 14, 2016 at 03:24:12PM +0200, Peter Rosin wrote:
> 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>

Looks good. Is this 4.8 material or rather 4.9?
Peter Rosin Sept. 16, 2016, 7:01 a.m. UTC | #2
[Resend, with lists added back...]

On 2016-09-15 21:52, Wolfram Sang wrote:
> On Wed, Sep 14, 2016 at 03:24:12PM +0200, Peter Rosin wrote:
>> 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>
> 
> Looks good. Is this 4.8 material or rather 4.9?

I have no real-world event or report backing the change, but it is
simple enough and fixes problems that are potentially very hard to
detect/reproduce. Certainly fodder for 4.8 and probably stable as
well (if you care). But no biggie, so personally I don't mind if
you wait until 4.9, but then again I don't depend on the driver...

Cheers,
Peter


--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Wolfram Sang Sept. 21, 2016, 9:11 p.m. UTC | #3
On Wed, Sep 14, 2016 at 03:24:12PM +0200, Peter Rosin wrote:
> 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>

Applied to for-current and added stable, thanks!
diff mbox

Patch

diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
index 528e755c468f..3278ebf1cc5c 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;