As Qualcomm is also using the eUSB2 IP, the approach taken here is to rename the driver so that it can be used by other SoC vendors as well while keeping compatibles SoC-vendor prefixed (different vendors have different implementations of the IP with different register maps), add support for exynos2200 in it and introduce a new USBCON phy driver, modelled to take phandles to eUSB2 (and in the future, USBDP). A new USBDP driver will be added later on, so that pipe3 and super-speed can be configured. The USBCON binding includes a header from the clocks [1] patchset. Bindings have been tested: $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 dt_binding_check DT_SCHEMA_FILES="Documentation/devicetree/bindings/phy/samsung,exynos2200-usbcon-phy.yaml" SCHEMA Documentation/devicetree/bindings/processed-schema.json /home/ivaylo/linux-devices/s22/linux/for-upstream/linux-next/Documentation/devicetree/bindings/iio/light/brcm,apds9160.yaml: ps-cancellation-current-picoamp: missing type definition CHKDT ./Documentation/devicetree/bindings LINT ./Documentation/devicetree/bindings DTEX Documentation/devicetree/bindings/phy/samsung,exynos2200-usbcon-phy.example.dts DTC [C] Documentation/devicetree/bindings/phy/samsung,exynos2200-usbcon-phy.example.dtb ivaylo@ivaylo-T580:~/linux-devices/s22/linux/for-upstream/linux-next$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 dt_binding_check DT_SCHEMA_FILES="Documentation/devicetree/bindings/phy/snps,eusb2-phy.yaml" CHKDT ./Documentation/devicetree/bindings LINT ./Documentation/devicetree/bindings DTC [C] Documentation/devicetree/bindings/phy/snps,eusb2-phy.example.dtb Best regards, Ivaylo Changes in v2: USBCON changes: - drop unused header includes - sanitize the binding - proper init and exit power management - shorten some variables - unrelax reads and writes - update commit description - remodel to take other phys - drop specified regulators as these are for the repeater - make the kconfig description better - general cleanup EUSB2 changes: - merge the previous separate driver into the qualcomm one - drop the previous model of taking usbcon phandle [1] https://lore.kernel.org/all/20250223115601.723886-1-ivo.ivanov.ivanov1@xxxxxxxxx/ Ivaylo Ivanov (8): dt-bindings: phy: rename qcom,snps-eusb2-phy binding to snps,eusb2-phy dt-bindings: phy: snps-eusb2: add exynos2200 support dt-bindings: phy: add samsung,exynos2200-usbcon-phy schema file phy: move phy-qcom-snps-eusb2 out of its vendor sub-directory phy: phy-snps-eusb2: make repeater optional phy: phy-snps-eusb2: make reset control optional phy: phy-snps-eusb2: add support for exynos2200 phy: samsung: add Exynos2200 usb phy controller .../phy/samsung,exynos2200-usbcon-phy.yaml | 76 ++ ...nps-eusb2-phy.yaml => snps,eusb2-phy.yaml} | 70 +- drivers/phy/Kconfig | 8 + drivers/phy/Makefile | 1 + drivers/phy/phy-snps-eusb2.c | 677 ++++++++++++++++++ drivers/phy/qualcomm/Kconfig | 9 - drivers/phy/qualcomm/Makefile | 1 - drivers/phy/qualcomm/phy-qcom-snps-eusb2.c | 442 ------------ drivers/phy/samsung/Kconfig | 12 + drivers/phy/samsung/Makefile | 1 + drivers/phy/samsung/phy-exynos2200-usbcon.c | 250 +++++++ 11 files changed, 1085 insertions(+), 462 deletions(-) create mode 100644 Documentation/devicetree/bindings/phy/samsung,exynos2200-usbcon-phy.yaml rename Documentation/devicetree/bindings/phy/{qcom,snps-eusb2-phy.yaml => snps,eusb2-phy.yaml} (57%) create mode 100644 drivers/phy/phy-snps-eusb2.c delete mode 100644 drivers/phy/qualcomm/phy-qcom-snps-eusb2.c create mode 100644 drivers/phy/samsung/phy-exynos2200-usbcon.c -- 2.43.0