Re: [PATCH v4 6/7] phy: exynos5-usbdrd: subscribe to orientation notifier if required
From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2025-02-15 09:34:51
Also in:
linux-arm-kernel, linux-phy, linux-samsung-soc, lkml
On 15/02/2025 10:24, Krzysztof Kozlowski wrote:
On 14/02/2025 20:30, Marek Szyprowski wrote:quoted
On 06.12.2024 17:31, André Draszik wrote:quoted
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@linaro.org> --- 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_SYSCONSo that explains why on recent next some of my boards don't boot. I was about to dig over the weekend.quoted
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