On 15/02/2025 10:24, Krzysztof Kozlowski wrote: > On 14/02/2025 20:30, Marek Szyprowski wrote: >> On 06.12.2024 17:31, André Draszik wrote: >>> gs101's SS phy needs to be configured differently based on the >>> connector orientation, as the SS link can only be established if the >>> mux is configured correctly. >>> >>> The code to handle programming of the mux is in place already, this commit >>> now adds the missing pieces to subscribe to the Type-C orientation >>> switch event. >>> >>> Note that for this all to work we rely on the USB controller >>> re-initialising us. It should invoke our .exit() upon cable unplug, and >>> during cable plug we'll receive the orientation event after which we >>> expect our .init() to be called. >>> >>> Above reinitialisation happens if the DWC3 controller can enter runtime >>> suspend automatically. For the DWC3 driver, this is an opt-in: >>> echo auto > /sys/devices/.../11110000.usb/power/control >>> Once done, things work as long as the UDC is not bound as otherwise it >>> stays busy because it doesn't cancel / stop outstanding TRBs. For now >>> we have to manually unbind the UDC in that case: >>> echo "" > sys/kernel/config/usb_gadget/.../UDC >>> >>> Note that if the orientation-switch property is missing from the DT, >>> the code will behave as before this commit (meaning for gs101 it will >>> work in SS mode in one orientation only). Other platforms are not >>> affected either way. >>> >>> Signed-off-by: André Draszik <andre.draszik@xxxxxxxxxx> >>> >>> --- >>> v3: >>> * drop init to -1 of phy_drd->orientation (Vinod) >>> * avoid #ifdef and switch to normal conditional IS_ENABLED() for >>> CONFIG_TYPEC >>> >>> v2: >>> * move #include typec_mux.h from parent patch into this one (Peter) >>> --- >>> drivers/phy/samsung/Kconfig | 1 + >>> drivers/phy/samsung/phy-exynos5-usbdrd.c | 56 ++++++++++++++++++++++++++++++++ >>> 2 files changed, 57 insertions(+) >>> >>> diff --git a/drivers/phy/samsung/Kconfig b/drivers/phy/samsung/Kconfig >>> index f10afa3d7ff5..fc7bd1088576 100644 >>> --- a/drivers/phy/samsung/Kconfig >>> +++ b/drivers/phy/samsung/Kconfig >>> @@ -80,6 +80,7 @@ config PHY_EXYNOS5_USBDRD >>> tristate "Exynos5 SoC series USB DRD PHY driver" >>> depends on (ARCH_EXYNOS && OF) || COMPILE_TEST >>> depends on HAS_IOMEM >>> + depends on TYPEC || (TYPEC=n && COMPILE_TEST) >>> depends on USB_DWC3_EXYNOS >>> select GENERIC_PHY >>> select MFD_SYSCON > > > So that explains why on recent next some of my boards don't boot. I was > about to dig over the weekend. > >> >> I've just noticed that the above disables Exynos DRD PHY driver in the >> default exynos_defconfig for arm 32bit. Enabling CONFIG_TYPEC is >> exynos_defconfig probably is the easiest way to fix this. I will send a >> patch then. > > No, it's just wrong. Nothing here depends on typec and ARMv7 does not > have Typec. > I'll send a fix for this. Best regards, Krzysztof