]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set
authorMichael Grzeschik <m.grzeschik@pengutronix.de>
Thu, 3 Apr 2025 22:21:01 +0000 (00:21 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Apr 2025 14:08:32 +0000 (16:08 +0200)
Since the typec connectors can have many muxes or switches for different
lanes (sbu, usb2, usb3) going into different modal states (usb2, usb3,
audio, debug) all of them will be called on typec_switch_set and
typec_mux_set. But not all of them will be handling the expected mode.

If one of the mux or switch will come back with EOPTNOSUPP this is no
reason to stop running through the next ones. Therefor we skip this
particular error value and continue calling the next.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20250404-ml-topic-typec-mux-v1-1-22c0526381ba@pengutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/mux.c

index 49926d6e72c71b895072ec252e5e1200085f4d4e..182c902c42f61cb421013962172ee5c153ea510b 100644 (file)
@@ -214,7 +214,7 @@ int typec_switch_set(struct typec_switch *sw,
                sw_dev = sw->sw_devs[i];
 
                ret = sw_dev->set(sw_dev, orientation);
-               if (ret)
+               if (ret && ret != -EOPNOTSUPP)
                        return ret;
        }
 
@@ -378,7 +378,7 @@ int typec_mux_set(struct typec_mux *mux, struct typec_mux_state *state)
                mux_dev = mux->mux_devs[i];
 
                ret = mux_dev->set(mux_dev, state);
-               if (ret)
+               if (ret && ret != -EOPNOTSUPP)
                        return ret;
        }