[PATCH 09/10] ARM: dts: qcom: msm8974: add the USB3 controller and its PHYs
Dmitry Baryshkov <[email protected]>
| Newsgroups | org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb |
|---|---|
| Message-ID | <[email protected]> |
The primary USB port of MSM8974 - a Synopsys DWC3 behind the standard Qualcomm wrapper - is not described, so boards can only use the two ChipIdea controllers. Describe the wrapper and the DWC3 core together with both of its QSCRATCH-controlled PHYs: the HS PHY at qscratch + 0x00 and the SuperSpeed PHY at qscratch + 0x30 (compatible with the ipq806x SS PHY). The HS PHY reference is the 60 MHz mock UTMI clock plus an RPM vote keeping the XO alive; the SS PHY takes its reference from the pads, driven by the PMIC differential XO buffer (diff_clk), matching the ref_clk the vendor kernel hands to the DWC3 wrapper. Both PHYs must be described and initialized even for high-speed-only use: leaving the SS PHY dead does not just cap the speed, it confuses the upstream-facing state machine of at least the TUSB8040A hub on the APQ8074 dragonboard, which then connects but never answers enumeration in any speed configuration. Assisted-by: Claude:claude-fable-5 Signed-off-by: Dmitry Baryshkov <[email protected]> --- arch/arm/boot/dts/qcom/qcom-msm8974.dtsi | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi index 06c0af0aa317..bac3c8772e0a 100644 --- a/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi @@ -713,6 +713,53 @@ blsp2_i2c6: i2c@f9968000 { #size-cells = <0>; }; + usb3: usb@f9200000 { + compatible = "qcom,msm8974-dwc3", "qcom,snps-dwc3"; + reg = <0xf9200000 0xfc000>; + interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "dwc_usb3", "pwr_event", + "hs_phy_irq"; + clocks = <&gcc GCC_SYS_NOC_USB3_AXI_CLK>, + <&gcc GCC_USB30_MASTER_CLK>, + <&gcc GCC_USB30_SLEEP_CLK>, + <&gcc GCC_USB30_MOCK_UTMI_CLK>; + clock-names = "cfg_noc", "core", "sleep", "mock_utmi"; + assigned-clocks = <&gcc GCC_USB30_MOCK_UTMI_CLK>, + <&gcc GCC_USB30_MASTER_CLK>; + assigned-clock-rates = <60000000>, <125000000>; + resets = <&gcc GCC_USB_30_BCR>; + phys = <&usb3_hs_phy>, <&usb3_ss_phy>; + phy-names = "usb2-phy", "usb3-phy"; + snps,dis_u2_susphy_quirk; + snps,dis_enblslpm_quirk; + status = "disabled"; + }; + + usb3_hs_phy: phy@f92f8800 { + compatible = "qcom,msm8974-usb-phy-hs"; + reg = <0xf92f8800 0x30>; + clocks = <&gcc GCC_USB30_MOCK_UTMI_CLK>, + <&rpmcc RPM_SMD_XO_CLK_SRC>; + clock-names = "ref", "xo"; + #phy-cells = <0>; + status = "disabled"; + }; + + usb3_ss_phy: phy@f92f8830 { + compatible = "qcom,msm8974-usb-phy-ss", + "qcom,ipq806x-usb-phy-ss"; + reg = <0xf92f8830 0x30>; + clocks = <&gcc GCC_USB30_MASTER_CLK>, + <&rpmcc RPM_SMD_DIFF_CLK>; + clock-names = "ref", "xo"; + #phy-cells = <0>; + qcom,rx-eq = <3>; + qcom,tx-deamp-3_5db = <22>; + status = "disabled"; + }; + usb: usb@f9a55000 { compatible = "qcom,ci-hdrc"; reg = <0xf9a55000 0x200>, -- 2.47.3 -- linux-phy mailing list [email protected] https://lists.infradead.org/mailman/listinfo/linux-phy