Skip to contentSkip to conversation

i2c: mux: Use __i2c_transfer() instead of calling parent's master_xfer()

PATCH Applied Alexander Sverdlin 2 participants 2 messages Jun 12, 2015 – Jun 17, 2015 1 message not in the archive

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

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
index 06cc1ff..98dd5d4 100644
@@ -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);

A message that is not in the archive (sent off-list or not yet received): [email protected]

Applied
#2 lore raw
Quoted 9 lines · Alexander Sverdlin

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.

Applied to for-next with stable added, thanks!