arm64: dts: qcom: sdm630: add USB QMP PHY support
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tue, 16 Jan 2024 01:10:57 +0000 (03:10 +0200)
committerBjorn Andersson <andersson@kernel.org>
Tue, 30 Jan 2024 21:35:53 +0000 (15:35 -0600)
Define USB3 QMP PHY presend on the SDM630 / SDM660 platforms. Enable it by
default in the USB3 host, but (for compatibility), force USB 2.0 mode
for all defined boards. The boards should opt-in to enable USB 3.0
support.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20240116-sdm660-usb3-support-v1-3-2fbd683aea77@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
arch/arm64/boot/dts/qcom/sdm630.dtsi
arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts

index 2ed39d4..21fae79 100644 (file)
 };
 
 &usb3 {
+       qcom,select-utmi-as-pipe-clk;
+
        status = "okay";
 };
 
 &usb3_dwc3 {
+       maximum-speed = "high-speed";
+       phys = <&qusb2phy0>;
+       phy-names = "usb2-phy";
+
        dr_mode = "peripheral";
        extcon = <&extcon_usb>;
 };
index 87d0293..f06a9f0 100644 (file)
 };
 
 &usb3 {
+       qcom,select-utmi-as-pipe-clk;
+
        status = "okay";
 };
 
 &usb3_dwc3 {
+       maximum-speed = "high-speed";
+       phys = <&qusb2phy0>;
+       phy-names = "usb2-phy";
+
        dr_mode = "peripheral";
        extcon = <&extcon_usb>;
 };
index dc7be31..f5921b8 100644 (file)
                                          "ss_phy_irq";
 
                        power-domains = <&gcc USB_30_GDSC>;
-                       qcom,select-utmi-as-pipe-clk;
 
                        resets = <&gcc GCC_USB_30_BCR>;
 
                                snps,dis_u2_susphy_quirk;
                                snps,dis_enblslpm_quirk;
 
-                               /*
-                                * SDM630 technically supports USB3 but I
-                                * haven't seen any devices making use of it.
-                                */
-                               maximum-speed = "high-speed";
-                               phys = <&qusb2phy0>;
-                               phy-names = "usb2-phy";
+                               phys = <&qusb2phy0>, <&usb3_qmpphy>;
+                               phy-names = "usb2-phy", "usb3-phy";
                                snps,hird-threshold = /bits/ 8 <0>;
                        };
                };
 
+               usb3_qmpphy: phy@c010000 {
+                       compatible = "qcom,sdm660-qmp-usb3-phy";
+                       reg = <0x0c010000 0x1000>;
+
+                       clocks = <&gcc GCC_USB3_PHY_AUX_CLK>,
+                                <&gcc GCC_USB3_CLKREF_CLK>,
+                                <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
+                                <&gcc GCC_USB3_PHY_PIPE_CLK>;
+                       clock-names = "aux",
+                                     "ref",
+                                     "cfg_ahb",
+                                     "pipe";
+                       clock-output-names = "usb3_phy_pipe_clk_src";
+                       #clock-cells = <0>;
+                       #phy-cells = <0>;
+
+                       resets = <&gcc GCC_USB3_PHY_BCR>,
+                                <&gcc GCC_USB3PHY_PHY_BCR>;
+                       reset-names = "phy",
+                                     "phy_phy";
+
+                       qcom,tcsr-reg = <&tcsr_regs_1 0x6b244>;
+
+                       status = "disabled";
+               };
+
                qusb2phy0: phy@c012000 {
                        compatible = "qcom,sdm660-qusb2-phy";
                        reg = <0x0c012000 0x180>;
index 3c47410..7167f75 100644 (file)
 };
 
 &usb3 {
+       qcom,select-utmi-as-pipe-clk;
+
        status = "okay";
 };
 
 &usb3_dwc3 {
+       maximum-speed = "high-speed";
+       phys = <&qusb2phy0>;
+       phy-names = "usb2-phy";
+
        dr_mode = "peripheral";
        extcon = <&extcon_usb>;
 };