* [PATCH v2 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation
@ 2026-08-26 9:53 Fabrice Gasnier
2026-08-26 9:53 ` [PATCH v2 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier
2026-08-26 9:53 ` [PATCH v2 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier
0 siblings, 2 replies; 4+ messages in thread
From: Fabrice Gasnier @ 2026-08-26 9:53 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,
Conor Dooley, 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/
---
Changes in v2:
- Added Conor's Acked-by
- Fix new driver issues introduced in v1 as reported by Sashiko, on
a possible race during probe and a possible glitch upon enable.
- Link to v1: https://patch.msgid.link/20260825-usb-fusb340-v1-v1-0-2191179b0661@foss.st.com
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: linux-usb@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
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 | 14 +++++++++++---
2 files changed, 12 insertions(+), 3 deletions(-)
---
base-commit: 8d3ae59288f1e7d58d76558a6ee96d533bc5019f
change-id: 20260825-usb-fusb340-v1-f060a5f84d3c
Best regards,
--
Fabrice Gasnier <fabrice.gasnier@foss.st.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340
2026-08-26 9:53 [PATCH v2 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation Fabrice Gasnier
@ 2026-08-26 9:53 ` Fabrice Gasnier
2026-08-26 9:53 ` [PATCH v2 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier
1 sibling, 0 replies; 4+ messages in thread
From: Fabrice Gasnier @ 2026-08-26 9:53 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,
Conor Dooley, 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>
Acked-by: Conor Dooley <conor.dooley@microchip.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] 4+ messages in thread
* [PATCH v2 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation
2026-08-26 9:53 [PATCH v2 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation Fabrice Gasnier
2026-08-26 9:53 ` [PATCH v2 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier
@ 2026-08-26 9:53 ` Fabrice Gasnier
2026-08-26 10:02 ` Fabrice Gasnier
1 sibling, 1 reply; 4+ messages in thread
From: Fabrice Gasnier @ 2026-08-26 9:53 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.
Move enable GPIO configuration after the swapped configuration has
been done, to avoid possible glitches in case both signals are changed.
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
---
Changes in v2
- fix issues reported by Sashiko: probe mode-switch property before
registering Type-C switch, to avoid possible race. Configure enable
GPIO after swapp GPIO has been configured, in case both transition.
---
drivers/usb/typec/mux/gpio-sbu-mux.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/typec/mux/gpio-sbu-mux.c b/drivers/usb/typec/mux/gpio-sbu-mux.c
index 1834f1a2dd9d..120f1ab5dbcb 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,19 +41,24 @@ 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;
}
- if (enabled != sbu_mux->enabled)
- gpiod_set_value_cansleep(sbu_mux->enable_gpio, enabled);
-
if (swapped != sbu_mux->swapped)
gpiod_set_value_cansleep(sbu_mux->select_gpio, swapped);
+ /* If both enabled and swapped transition, set enable GPIO after to avoid glitches */
+ if (enabled != sbu_mux->enabled)
+ gpiod_set_value_cansleep(sbu_mux->enable_gpio, enabled);
+
sbu_mux->enabled = enabled;
sbu_mux->swapped = swapped;
@@ -125,6 +131,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] 4+ messages in thread
* Re: [PATCH v2 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation
2026-08-26 9:53 ` [PATCH v2 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier
@ 2026-08-26 10:02 ` Fabrice Gasnier
0 siblings, 0 replies; 4+ messages in thread
From: Fabrice Gasnier @ 2026-08-26 10:02 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
On 8/26/26 11:53, 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.
> Move enable GPIO configuration after the swapped configuration has
> been done, to avoid possible glitches in case both signals are changed.
>
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
> ---
> Changes in v2
> - fix issues reported by Sashiko: probe mode-switch property before
> registering Type-C switch, to avoid possible race. Configure enable
> GPIO after swapp GPIO has been configured, in case both transition.
> ---
> drivers/usb/typec/mux/gpio-sbu-mux.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/typec/mux/gpio-sbu-mux.c b/drivers/usb/typec/mux/gpio-sbu-mux.c
[...]
>
> @@ -125,6 +131,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");
> +
I've missed to update that, I'll send a V3.
Sorry for the noise,
BR,
Fabrice
> mux_desc.drvdata = sbu_mux;
> mux_desc.fwnode = dev_fwnode(dev);
> mux_desc.set = gpio_sbu_mux_set;
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-26 10:02 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-26 9:53 [PATCH v2 0/2] usb: gpio-sbu-mux: add FUSB340 and enable option for orientation Fabrice Gasnier
2026-08-26 9:53 ` [PATCH v2 1/2] dt-bindings: usb: gpio-sbu-mux: Add compatible for FUSB340 Fabrice Gasnier
2026-08-26 9:53 ` [PATCH v2 2/2] usb: typec: mux: gpio-sbu: enable when only used for orientation Fabrice Gasnier
2026-08-26 10:02 ` Fabrice Gasnier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox