From 32e0ba4e796ccbc14f1fd55023069d26f170113e Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Wed, 15 Jul 2020 15:14:02 +0800 Subject: [PATCH] arm64: dts: imx8-ss-conn: apply changes for upstream Cadence USB3 driver Change board dts as well to avoid bisect break, the main changes are as belows: - Add iommus phandle for core device - delete core device node for xen dts - Support mek board by adding Type-C support Reviewed-by: Jun Li Signed-off-by: Peter Chen --- .../boot/dts/freescale/imx8-ss-conn.dtsi | 49 +++++++++++++------ .../boot/dts/freescale/imx8qm-mek-domu.dts | 5 ++ .../boot/dts/freescale/imx8qm-mek-inmate.dts | 4 ++ arch/arm64/boot/dts/freescale/imx8qm-mek.dts | 20 +++++++- .../boot/dts/freescale/imx8qm-ss-conn.dtsi | 4 ++ arch/arm64/boot/dts/freescale/imx8qm-xen.dtsi | 4 ++ .../boot/dts/freescale/imx8qxp-mek-rpmsg.dts | 6 +++ arch/arm64/boot/dts/freescale/imx8qxp-mek.dts | 20 +++++++- 8 files changed, 94 insertions(+), 18 deletions(-) diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi b/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi index fe4af9a31dc5..c1807ed8ae2c 100644 --- a/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi @@ -166,23 +166,22 @@ conn_subsys: bus@5b000000 { status = "disabled"; }; - usb3phynop1: usb3-phy { - compatible = "usb-nop-xceiv"; + usb3_phy: usb-phy@5b160000 { + compatible = "nxp,salvo-phy"; + reg = <0x5B160000 0x40000>; clocks = <&usb3_lpcg 4>; - clock-names = "main_clk"; + clock-names = "salvo_phy_clk"; power-domains = <&pd IMX_SC_R_USB_2_PHY>; + #phy-cells = <0>; status = "disabled"; - }; + }; - usbotg3: usb3@5b110000 { - compatible = "Cadence,usb3"; - reg = <0x5B110000 0x10000>, - <0x5B130000 0x10000>, - <0x5B140000 0x10000>, - <0x5B160000 0x40000>, - <0x5B120000 0x10000>; - interrupt-parent = <&gic>; - interrupts = ; + usbotg3: usb@5b110000 { + compatible = "fsl,imx8qm-usb3"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + reg = <0x5B110000 0x10000>; clocks = <&usb3_lpcg 1>, <&usb3_lpcg 0>, <&usb3_lpcg 5>, @@ -190,9 +189,31 @@ conn_subsys: bus@5b000000 { <&usb3_lpcg 3>; clock-names = "usb3_lpm_clk", "usb3_bus_clk", "usb3_aclk", "usb3_ipg_clk", "usb3_core_pclk"; + assigned-clocks = <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_PER>, + <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MISC>, + <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MST_BUS>; + assigned-clock-rates = <125000000>, <12000000>, <250000000>; power-domains = <&pd IMX_SC_R_USB_2>; - cdns3,usbphy = <&usb3phynop1>; status = "disabled"; + + usbotg3_cdns3: usb@5b120000 { + compatible = "cdns,usb3"; + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&gic>; + interrupts = , + , + , + ; + interrupt-names = "host", "peripheral", "otg", "wakeup"; + reg = <0x5B130000 0x10000>, /* memory area for HOST registers */ + <0x5B140000 0x10000>, /* memory area for DEVICE registers */ + <0x5B120000 0x10000>; /* memory area for OTG/DRD registers */ + reg-names = "xhci", "dev", "otg"; + phys = <&usb3_phy>; + phy-names = "cdns3,usb3-phy"; + status = "disabled"; + }; }; /* LPCG clocks */ diff --git a/arch/arm64/boot/dts/freescale/imx8qm-mek-domu.dts b/arch/arm64/boot/dts/freescale/imx8qm-mek-domu.dts index f24b204615f2..476d1a04dbfc 100644 --- a/arch/arm64/boot/dts/freescale/imx8qm-mek-domu.dts +++ b/arch/arm64/boot/dts/freescale/imx8qm-mek-domu.dts @@ -469,3 +469,8 @@ /delete-property/ iommus; status = "disabled"; }; + +&usbotg3_cdns3 { + /delete-property/ iommus; + status = "disabled"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx8qm-mek-inmate.dts b/arch/arm64/boot/dts/freescale/imx8qm-mek-inmate.dts index 3567d67e4b58..edf8a532f69e 100644 --- a/arch/arm64/boot/dts/freescale/imx8qm-mek-inmate.dts +++ b/arch/arm64/boot/dts/freescale/imx8qm-mek-inmate.dts @@ -231,6 +231,10 @@ /delete-property/ iommus; }; +&usbotg3_cdns3 { + /delete-property/ iommus; +}; + &iomuxc { pinctrl_lpuart2: lpuart2grp { fsl,pins = < diff --git a/arch/arm64/boot/dts/freescale/imx8qm-mek.dts b/arch/arm64/boot/dts/freescale/imx8qm-mek.dts index d73cfa92fe10..dd3fe5de55cd 100755 --- a/arch/arm64/boot/dts/freescale/imx8qm-mek.dts +++ b/arch/arm64/boot/dts/freescale/imx8qm-mek.dts @@ -912,14 +912,24 @@ status = "okay"; }; -&usb3phynop1 { +&usb3_phy { status = "okay"; }; &usbotg3 { + status = "okay"; +}; + +&usbotg3_cdns3 { dr_mode = "otg"; - extcon = <&ptn5110>; + usb-role-switch; status = "okay"; + + port { + usb3_drd_sw: endpoint { + remote-endpoint = <&typec_dr_sw>; + }; + }; }; &usdhc1 { @@ -1000,6 +1010,12 @@ interrupts = <26 IRQ_TYPE_LEVEL_LOW>; status = "okay"; + port { + typec_dr_sw: endpoint { + remote-endpoint = <&usb3_drd_sw>; + }; + }; + usb_con1: connector { compatible = "usb-c-connector"; label = "USB-C"; diff --git a/arch/arm64/boot/dts/freescale/imx8qm-ss-conn.dtsi b/arch/arm64/boot/dts/freescale/imx8qm-ss-conn.dtsi index 00ebdc6fc875..c8b64a823388 100644 --- a/arch/arm64/boot/dts/freescale/imx8qm-ss-conn.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8qm-ss-conn.dtsi @@ -32,3 +32,7 @@ &usbotg3 { iommus = <&smmu 0x4 0x7f80>; }; + +&usbotg3_cdns3 { + iommus = <&smmu 0x4 0x7f80>; +}; diff --git a/arch/arm64/boot/dts/freescale/imx8qm-xen.dtsi b/arch/arm64/boot/dts/freescale/imx8qm-xen.dtsi index 96656584b53b..46be6f9dbd4b 100644 --- a/arch/arm64/boot/dts/freescale/imx8qm-xen.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8qm-xen.dtsi @@ -35,6 +35,10 @@ /delete-property/ iommus; }; +&usbotg3_cdns3 { + /delete-property/ iommus; +}; + &smmu { /* xen only supports legacy bindings for now */ #iommu-cells = <0>; diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-mek-rpmsg.dts b/arch/arm64/boot/dts/freescale/imx8qxp-mek-rpmsg.dts index 3e3ba0ab5b7b..36af4064b928 100755 --- a/arch/arm64/boot/dts/freescale/imx8qxp-mek-rpmsg.dts +++ b/arch/arm64/boot/dts/freescale/imx8qxp-mek-rpmsg.dts @@ -26,6 +26,12 @@ interrupts = <3 IRQ_TYPE_LEVEL_LOW>; status = "okay"; + port { + typec_dr_sw: endpoint { + remote-endpoint = <&usb3_drd_sw>; + }; + }; + usb_con1: connector { compatible = "usb-c-connector"; label = "USB-C"; diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts index d38754c626dc..4fd64531da1b 100755 --- a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts +++ b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts @@ -843,6 +843,12 @@ interrupts = <3 IRQ_TYPE_LEVEL_LOW>; status = "okay"; + port { + typec_dr_sw: endpoint { + remote-endpoint = <&usb3_drd_sw>; + }; + }; + usb_con1: connector { compatible = "usb-c-connector"; label = "USB-C"; @@ -933,14 +939,24 @@ status = "okay"; }; -&usb3phynop1 { +&usb3_phy { status = "okay"; }; &usbotg3 { + status = "okay"; +}; + +&usbotg3_cdns3 { dr_mode = "otg"; - extcon = <&ptn5110>; + usb-role-switch; status = "okay"; + + port { + usb3_drd_sw: endpoint { + remote-endpoint = <&typec_dr_sw>; + }; + }; }; &usdhc1 { -- 2.17.1