i2c: mux: Use __i2c_transfer() instead of calling parent's master_xfer()
Subsystems (3)
PATCH 1/2 i2c: mux: Use __i2c_transfer() instead of calling parent's master_xfer()
Newly introduced quirks infrastructure doesn't work for the devices behind MUXes because MUX's master_xfer() calls parent's master_xfer() directly without checking the quirks. Instead of duplicating check code in MUX just call __i2c_transfer() instead. This has a side effect on tracing (messages will appear on both MUX bus and parent bus), but maybe that's not bad at the end.
--- drivers/i2c/i2c-mux.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/i2c/i2c-mux.c +1 -1
@@ -51,7 +51,7 @@ static int i2c_mux_master_xfer(struct i2c_adapter *adap, ret = priv->select (parent, priv->mux_priv, priv->chan_id);if (ret >=0 ) - ret = parent->algo->master_xfer (parent, msgs, num); + ret =__i2c_transfer (parent, msgs, num);if (priv->deselect) priv->deselect (parent, priv->mux_priv, priv->chan_id);
Wolfram Sang
AppliedQuoted 9 lines · Alexander Sverdlin
Newly introduced quirks infrastructure doesn't work for the devices behind MUXes because MUX's
master_xfer()calls parent'smaster_xfer()directly without checking the quirks. Instead of duplicating check code in MUX just call__i2c_transfer()instead. This has a side effect on tracing (messages will appear on both MUX bus and parent bus), but maybe that's not bad at the end.Signed-off-by Alexander Sverdlin <[email protected]>Tested-by Łukasz Gemborowski <[email protected]>
Applied to for-next with stable added, thanks!