* [PATCH 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation
@ 2026-08-25 12:54 Fabrice Gasnier
2026-08-25 12:54 ` [PATCH 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier
2026-08-25 12:54 ` [PATCH 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier
0 siblings, 2 replies; 5+ messages in thread
From: Fabrice Gasnier @ 2026-08-25 12:54 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Heikki Krogerus
Cc: Marek Vasut, linux-usb, devicetree, linux-kernel, linux-stm32,
Fabrice Gasnier
Add a new compatible for FUSB340. Also mange the enable GPIO, when used as
orientation-switch only.
It is used on STM32MP25 DK boards, as orientation-switch only for
USB SuperSpeed lines on the Type-C connector, the enable GPIO being
connected to the SoC.
- - - - SoC - - - - - - - - - - board - - - - -
| USB-C
+------+ +----------+ | +-+
| |--| USB2PHY |<-----------------HS->|*|
| |--| HS |<-----------------HS->|*|
| | +----------+ | | |
| | | ________ | |
+ dwc3 | +----------+ | / |<-SS->|*|
| | | |<--->/ |<-SS->|*|
| |--| ComboPHY |<---> FUSB340 | | |
| | | SS | | \ __ |<-SS->|*|
+------+ +----------+ | \_en__sw_|<-SS->|*|
| ^ ^ | |
+----------+ | | | ...
[ GPIO ]--------+ |
[ GPIO ]------------+
+----------+ |
- - - - - - - - - - - - - - - - - - - - - - --
This is a subset of STM32MP25 Type-C support [1].
[1] https://lore.kernel.org/all/20260821-ucpd-host-fusb340-v7-2-rfc-v1-0-c5e27cbc0795@foss.st.com/
---
Fabrice Gasnier (2):
dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340
usb: typec: mux: gpio-sbu: enable when only used for orientation
Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml | 1 +
drivers/usb/typec/mux/gpio-sbu-mux.c | 7 +++++++
2 files changed, 8 insertions(+)
---
base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f
change-id: 20260825-usb-fusb340-v1-f060a5f84d3c
Best regards,
--
Fabrice Gasnier <fabrice.gasnier@foss.st.com>
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 2026-08-25 12:54 [PATCH 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation Fabrice Gasnier @ 2026-08-25 12:54 ` Fabrice Gasnier 2026-08-25 16:49 ` Conor Dooley 2026-08-25 12:54 ` [PATCH 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier 1 sibling, 1 reply; 5+ messages in thread From: Fabrice Gasnier @ 2026-08-25 12:54 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Heikki Krogerus Cc: Marek Vasut, linux-usb, devicetree, linux-kernel, linux-stm32, Fabrice Gasnier Add a compatible for the FUSB340 GPIO-based 2:1 SuperSpeed switch with enable-gpios and select-gpios controls. The switch can be used in Type-C applications where a reversible cable requires a switch. Suggested-by: Marek Vasut <marex@nabladev.com> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> --- Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml b/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml index 793662f6f3bf..c0e60848d8ab 100644 --- a/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml +++ b/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml @@ -22,6 +22,7 @@ properties: - nxp,cbdtu02043 - onnn,fsusb42 - onnn,fsusb43l10x + - onnn,fusb340 - pericom,pi3usb102 - ti,tmuxhs4212 - const: gpio-sbu-mux -- 2.43.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 2026-08-25 12:54 ` [PATCH 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier @ 2026-08-25 16:49 ` Conor Dooley 0 siblings, 0 replies; 5+ messages in thread From: Conor Dooley @ 2026-08-25 16:49 UTC (permalink / raw) To: Fabrice Gasnier Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Heikki Krogerus, Marek Vasut, linux-usb, devicetree, linux-kernel, linux-stm32 [-- Attachment #1: Type: text/plain, Size: 75 bytes --] Acked-by: Conor Dooley <conor.dooley@microchip.com> pw-bot: not-applicable [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation 2026-08-25 12:54 [PATCH 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation Fabrice Gasnier 2026-08-25 12:54 ` [PATCH 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier @ 2026-08-25 12:54 ` Fabrice Gasnier 2026-08-31 10:07 ` Heikki Krogerus 1 sibling, 1 reply; 5+ messages in thread From: Fabrice Gasnier @ 2026-08-25 12:54 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Heikki Krogerus Cc: Marek Vasut, linux-usb, devicetree, linux-kernel, linux-stm32, Fabrice Gasnier When used as orientation-switch only (no mode-switch, e.g. no altmode), the optional enable gpio remains disabled. Enable it from the switch_set() routine, in this case, when the orientation is set and the enable-gpios property has been provided. Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> --- drivers/usb/typec/mux/gpio-sbu-mux.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/usb/typec/mux/gpio-sbu-mux.c b/drivers/usb/typec/mux/gpio-sbu-mux.c index 1834f1a2dd9d..4151d78e3b8d 100644 --- a/drivers/usb/typec/mux/gpio-sbu-mux.c +++ b/drivers/usb/typec/mux/gpio-sbu-mux.c @@ -17,6 +17,7 @@ struct gpio_sbu_mux { struct typec_switch_dev *sw; struct typec_mux_dev *mux; + bool mode_switch; struct mutex lock; /* protect enabled and swapped */ bool enabled; @@ -40,9 +41,13 @@ static int gpio_sbu_switch_set(struct typec_switch_dev *sw, enabled = false; break; case TYPEC_ORIENTATION_NORMAL: + if (!sbu_mux->mode_switch) + enabled = true; swapped = false; break; case TYPEC_ORIENTATION_REVERSE: + if (!sbu_mux->mode_switch) + enabled = true; swapped = true; break; } @@ -125,6 +130,8 @@ static int gpio_sbu_mux_probe(struct platform_device *pdev) return dev_err_probe(dev, PTR_ERR(sbu_mux->sw), "failed to register typec switch\n"); + sbu_mux->mode_switch = device_property_read_bool(dev, "mode-switch"); + mux_desc.drvdata = sbu_mux; mux_desc.fwnode = dev_fwnode(dev); mux_desc.set = gpio_sbu_mux_set; -- 2.43.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation 2026-08-25 12:54 ` [PATCH 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier @ 2026-08-31 10:07 ` Heikki Krogerus 0 siblings, 0 replies; 5+ messages in thread From: Heikki Krogerus @ 2026-08-31 10:07 UTC (permalink / raw) To: Fabrice Gasnier Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Marek Vasut, linux-usb, devicetree, linux-kernel, linux-stm32 On Tue, Aug 25, 2026 at 02:54:24PM +0200, Fabrice Gasnier wrote: > When used as orientation-switch only (no mode-switch, e.g. no altmode), > the optional enable gpio remains disabled. > Enable it from the switch_set() routine, in this case, when the > orientation is set and the enable-gpios property has been provided. > > Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/mux/gpio-sbu-mux.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/usb/typec/mux/gpio-sbu-mux.c b/drivers/usb/typec/mux/gpio-sbu-mux.c > index 1834f1a2dd9d..4151d78e3b8d 100644 > --- a/drivers/usb/typec/mux/gpio-sbu-mux.c > +++ b/drivers/usb/typec/mux/gpio-sbu-mux.c > @@ -17,6 +17,7 @@ struct gpio_sbu_mux { > > struct typec_switch_dev *sw; > struct typec_mux_dev *mux; > + bool mode_switch; > > struct mutex lock; /* protect enabled and swapped */ > bool enabled; > @@ -40,9 +41,13 @@ static int gpio_sbu_switch_set(struct typec_switch_dev *sw, > enabled = false; > break; > case TYPEC_ORIENTATION_NORMAL: > + if (!sbu_mux->mode_switch) > + enabled = true; > swapped = false; > break; > case TYPEC_ORIENTATION_REVERSE: > + if (!sbu_mux->mode_switch) > + enabled = true; > swapped = true; > break; > } > @@ -125,6 +130,8 @@ static int gpio_sbu_mux_probe(struct platform_device *pdev) > return dev_err_probe(dev, PTR_ERR(sbu_mux->sw), > "failed to register typec switch\n"); > > + sbu_mux->mode_switch = device_property_read_bool(dev, "mode-switch"); > + > mux_desc.drvdata = sbu_mux; > mux_desc.fwnode = dev_fwnode(dev); > mux_desc.set = gpio_sbu_mux_set; > > -- > 2.43.0 -- heikki ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-31 10:08 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-25 12:54 [PATCH 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation Fabrice Gasnier 2026-08-25 12:54 ` [PATCH 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier 2026-08-25 16:49 ` Conor Dooley 2026-08-25 12:54 ` [PATCH 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier 2026-08-31 10:07 ` Heikki Krogerus
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox