public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set
@ 2025-04-03 22:21 Michael Grzeschik
  2025-04-07 12:52 ` Heikki Krogerus
  0 siblings, 1 reply; 2+ messages in thread
From: Michael Grzeschik @ 2025-04-03 22:21 UTC (permalink / raw)
  To: Heikki Krogerus, Greg Kroah-Hartman
  Cc: linux-usb, linux-kernel, kernel, Michael Grzeschik

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>
---
 drivers/usb/typec/mux.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/typec/mux.c b/drivers/usb/typec/mux.c
index 49926d6e72c71..182c902c42f61 100644
--- a/drivers/usb/typec/mux.c
+++ b/drivers/usb/typec/mux.c
@@ -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;
 	}
 

---
base-commit: a1b5bd45d4ee58af4f56e49497b8c3db96d8f8a3
change-id: 20250404-ml-topic-typec-mux-5b9b014f1dbd

Best regards,
-- 
Michael Grzeschik <m.grzeschik@pengutronix.de>


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set
  2025-04-03 22:21 [PATCH] usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set Michael Grzeschik
@ 2025-04-07 12:52 ` Heikki Krogerus
  0 siblings, 0 replies; 2+ messages in thread
From: Heikki Krogerus @ 2025-04-07 12:52 UTC (permalink / raw)
  To: Michael Grzeschik; +Cc: Greg Kroah-Hartman, linux-usb, linux-kernel, kernel

On Fri, Apr 04, 2025 at 12:21:01AM +0200, Michael Grzeschik wrote:
> 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>

> ---
>  drivers/usb/typec/mux.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/typec/mux.c b/drivers/usb/typec/mux.c
> index 49926d6e72c71..182c902c42f61 100644
> --- a/drivers/usb/typec/mux.c
> +++ b/drivers/usb/typec/mux.c
> @@ -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;
>  	}

thanks,

-- 
heikki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-04-07 12:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-03 22:21 [PATCH] usb: typec: mux: do not return on EOPNOTSUPP in {mux, switch}_set Michael Grzeschik
2025-04-07 12:52 ` Heikki Krogerus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox