projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
i2c: mux: demux-pinctrl: invalidate properly when switching fails
[cascardo/linux.git]
/
drivers
/
i2c
/
muxes
/
i2c-demux-pinctrl.c
diff --git
a/drivers/i2c/muxes/i2c-demux-pinctrl.c
b/drivers/i2c/muxes/i2c-demux-pinctrl.c
index
8de073a
..
b6b9d25
100644
(file)
--- a/
drivers/i2c/muxes/i2c-demux-pinctrl.c
+++ b/
drivers/i2c/muxes/i2c-demux-pinctrl.c
@@
-68,7
+68,7
@@
static int i2c_demux_activate_master(struct i2c_demux_pinctrl_priv *priv, u32 ne
adap = of_find_i2c_adapter_by_node(priv->chan[new_chan].parent_np);
if (!adap) {
ret = -ENODEV;
adap = of_find_i2c_adapter_by_node(priv->chan[new_chan].parent_np);
if (!adap) {
ret = -ENODEV;
- goto err;
+ goto err
_with_revert
;
}
p = devm_pinctrl_get_select(adap->dev.parent, priv->bus_name);
}
p = devm_pinctrl_get_select(adap->dev.parent, priv->bus_name);
@@
-103,8
+103,11
@@
static int i2c_demux_activate_master(struct i2c_demux_pinctrl_priv *priv, u32 ne
err_with_put:
i2c_put_adapter(adap);
err_with_put:
i2c_put_adapter(adap);
+ err_with_revert:
+ of_changeset_revert(&priv->chan[new_chan].chgset);
err:
dev_err(priv->dev, "failed to setup demux-adapter %d (%d)\n", new_chan, ret);
err:
dev_err(priv->dev, "failed to setup demux-adapter %d (%d)\n", new_chan, ret);
+ priv->cur_chan = -EINVAL;
return ret;
}
return ret;
}