Re: [PATCH v2 0/9] arm64: dts: phy: st: usb: Add STM32MP2 USB support
From: Fabrice Gasnier
Date: Mon Aug 17 2026 - 12:41:59 EST
On 8/16/26 23:37, Marek Vasut wrote:
> Add USB support for STM32MP23xx/STM32MP25xx SoCs. This includes USB 2.0
> FEMTO-PHY driver, DWC3 glue code and DT adjustments. Parts of this are
> taken from ST downstream kernel fork, reduced, or rewritten, since not
> all of the content there was useful and bits which might be missing and
> are useful can be added later.
>
> Unlike the downstream implementation, the DWC3 glue code is using plain
> dwc3-generic-plat, the EHCI and OHCI controllers are instantiated as
> plain generic controllers without any wrapper glue driver, and the USB2
> PHY driver is simplified.
>
> Both USB 2.0 Host controller and DWC3 super-speed controller are tested.
Hi Marek,
Regarding dwc3, I've started to test and needed another patch from our
downstream. I've posted it here:
https://lore.kernel.org/linux-usb/20260817163101.6203-1-fabrice.gasnier@xxxxxxxxxxx/
Regarding USBH, there's a dedicated glue on STM32MP2x SoCs for the
EHCI/OHCI controllers, similar to the dwc3. On dwc3, I see it can be
managed.
There are:
- AFMUX signals out of EHCI/OHCI controllers, to manage a Vbus power
switch (with polarity) control.
- AFMUX need pinctrl to be added, and managed during system PM
- On coming MP21 (not supported here), there's address translation control
- Common dedicated interrupt to manage wakeup
Using generic controller drivers, I don't see how to manage it, without
describing it in the DT.
For sure, generic ehci/ochi drivers and bindings can/must be used. What
would be the proper place for this glue to leave ? Why not adding the
glue driver from the downstream ? That's supposed to address this.
Do you wish I send it upstream, so it can be properly reviewed, amended ?
I'd like to sort this glue management out before the DT for the USBH can
land.
Best Regards,
Thanks,
Fabrice
>
> Marek Vasut (6):
> dt-bindings: usb: generic-ehci: Document access-controllers property
> dt-bindings: usb: generic-ohci: Document access-controllers property
> dt-bindings: usb: dwc3: Document ST STM32MP2 DWC3 xHCI USB controller
> usb: dwc3: dwc3-generic-plat: Add ST STM32MP2 DWC3 xHCI USB controller
> glue
> dt-bindings: arm: stm32: Switch st,stm32mp23/25-syscfg into simple-mfd
> arm64: dts: st: Add USB nodes on stm32mp231
>
> Pankaj Dev (3):
> dt-bindings: phy: Document ST STM32MP25 USB2-FEMTO PHY
> phy: stm32: Add support for ST STM32MP25 USB2-FEMTO PHY
> arm64: dts: st: Add USB nodes on stm32mp251
>
> .../bindings/arm/stm32/st,stm32-syscon.yaml | 7 +-
> .../bindings/phy/st,stm32-usb2phy.yaml | 73 ++++
> .../devicetree/bindings/usb/generic-ehci.yaml | 3 +
> .../devicetree/bindings/usb/generic-ohci.yaml | 3 +
> .../bindings/usb/st,stm32mp25-dwc3.yaml | 108 ++++++
> arch/arm64/boot/dts/st/stm32mp231.dtsi | 81 +++-
> arch/arm64/boot/dts/st/stm32mp251.dtsi | 65 +++-
> drivers/phy/st/Kconfig | 10 +
> drivers/phy/st/Makefile | 1 +
> drivers/phy/st/phy-stm32-usb2phy.c | 361 ++++++++++++++++++
> drivers/usb/dwc3/dwc3-generic-plat.c | 44 +++
> 11 files changed, 751 insertions(+), 5 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/phy/st,stm32-usb2phy.yaml
> create mode 100644 Documentation/devicetree/bindings/usb/st,stm32mp25-dwc3.yaml
> create mode 100644 drivers/phy/st/phy-stm32-usb2phy.c
>
> Cc: Alexandre Torgue <alexandre.torgue@xxxxxxxxxxx>
> Cc: Christian Bruel <christian.bruel@xxxxxxxxxxx>
> Cc: Conor Dooley <conor+dt@xxxxxxxxxx>
> Cc: Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Cc: Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>
> Cc: Maxime Coquelin <mcoquelin.stm32@xxxxxxxxx>
> Cc: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
> Cc: Pankaj Dev <pankaj.dev@xxxxxx>
> Cc: Rahul Kumar <rahul.kumar05@xxxxxx>
> Cc: Rob Herring <robh@xxxxxxxxxx>
> Cc: Rosen Penev <rosenp@xxxxxxxxx>
> Cc: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx>
> Cc: Vinod Koul <vkoul@xxxxxxxxxx>
> Cc: devicetree@xxxxxxxxxxxxxxx
> Cc: kernel@xxxxxxxxxxxxxxxxxx
> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Cc: linux-phy@xxxxxxxxxxxxxxxxxxx
> Cc: linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Cc: linux-usb@xxxxxxxxxxxxxxx
>