Hello Dmitry, On vendredi 25 octobre 2024 08:39:54 UTC+2 Dmitry Baryshkov wrote: > On Thu, Oct 24, 2024 at 10:54:17AM +0200, Romain Gantois wrote: ... > > + > > +static int tusb1046_mux_set(struct typec_mux_dev *mux, > > + struct typec_mux_state *state) > > +{ > > + struct tusb1046_priv *priv = typec_mux_get_drvdata(mux); > > + struct i2c_client *client = priv->client; > > + struct device *dev = &client->dev; > > + int mode, val, ret = 0; > > + > > + if (state->mode >= TYPEC_STATE_MODAL && > > + state->alt->svid != USB_TYPEC_DP_SID) > > + return -EINVAL; > > + > > + dev_dbg(dev, "mux mode requested: %lu\n", state->mode); > > + > > + mutex_lock(&priv->general_reg_lock); > > + > > + val = i2c_smbus_read_byte_data(client, TUSB1046_REG_GENERAL); > > + if (val < 0) { > > + dev_err(dev, "failed to read ctlsel status, err %d\n", val); > > + ret = val; > > + goto out_unlock; > > + } > > + > > + switch (state->mode) { > > + case TYPEC_STATE_USB: > > + mode = TUSB1046_CTLSEL_USB3; > > + break; > > > + case TYPEC_DP_STATE_C: > These are only valid if you have checked that altmode SVID is a > DisplayPort SVID. I did check it near the beginning of the function didn't I? > > + if (state->mode >= TYPEC_STATE_MODAL && > > + state->alt->svid != USB_TYPEC_DP_SID) > > + return -EINVAL; Or is there something I'm missing? Thanks for the review, -- Romain Gantois, Bootlin Embedded Linux and Kernel engineering https://bootlin.com