diff mbox series

[v3,1/1] arm64: dts: qcom: sc7180: Add USB related nodes

Message ID 1573795421-13989-2-git-send-email-sanm@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series [v3,1/1] arm64: dts: qcom: sc7180: Add USB related nodes | expand

Commit Message

Sandeep Maheswaram Nov. 15, 2019, 5:23 a.m. UTC
Add nodes for DWC3 USB controller, QMP and QUSB PHYs.

Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
---
 arch/arm64/boot/dts/qcom/sc7180-idp.dts |  25 ++++++++
 arch/arm64/boot/dts/qcom/sc7180.dtsi    | 105 ++++++++++++++++++++++++++++++++
 2 files changed, 130 insertions(+)

Comments

Matthias Kaehlcke Nov. 22, 2019, 12:51 a.m. UTC | #1
Hi Sandeep,

On Fri, Nov 15, 2019 at 10:53:41AM +0530, Sandeep Maheswaram wrote:
> Add nodes for DWC3 USB controller, QMP and QUSB PHYs.
> 
> Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> ---
>  arch/arm64/boot/dts/qcom/sc7180-idp.dts |  25 ++++++++
>  arch/arm64/boot/dts/qcom/sc7180.dtsi    | 105 ++++++++++++++++++++++++++++++++
>  2 files changed, 130 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> index 666e9b9..2c7dbdc 100644
> --- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
>
> ...
>
> +		usb_1: usb@a6f8800 {
> +			compatible = "qcom,sc7180-dwc3", "qcom,dwc3";
> +			reg = <0 0x0a6f8800 0 0x400>;
> +			status = "disabled";
> +			#address-cells = <2>;
> +			#size-cells = <2>;
> +			ranges;
> +			dma-ranges;
> +
> +			clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
> +				 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
> +				 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
> +				 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
> +				 <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
> +			clock-names = "cfg_noc", "core", "iface", "mock_utmi",
> +				      "sleep";
> +
> +			assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
> +					  <&gcc GCC_USB30_PRIM_MASTER_CLK>;
> +			assigned-clock-rates = <19200000>, <150000000>;
> +
> +			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
> +				     <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
> +				     <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
> +				     <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "hs_phy_irq", "ss_phy_irq",
> +					  "dm_hs_phy_irq", "dp_hs_phy_irq";
> +
> +			power-domains = <&gcc USB30_PRIM_GDSC>;
> +
> +			resets = <&gcc GCC_USB30_PRIM_BCR>;
> +
> +			usb_1_dwc3: dwc3@a600000 {
> +				compatible = "snps,dwc3";
> +				reg = <0 0x0a600000 0 0xe000>;
> +				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> +				iommus = <&apps_smmu 0x540 0>;
> +				snps,dis_u2_susphy_quirk;
> +				snps,dis_enblslpm_quirk;
> +				phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
> +				phy-names = "usb2-phy", "usb3-phy";
> +			};

I see the following message at boot:

[    4.248436] dwc3 a600000.dwc3: Failed to get clk 'ref': -2

Apparently the driver is operational regardless, however the binding lists
the clocks as required:

  Required properties:
   ...
   - clock-names: should contain "ref", "bus_early", "suspend"
   - clocks: list of phandle and clock specifier pairs corresponding to
             entries in the clock-names property.

  [Documentation/devicetree/bindings/usb/dwc3.txt]

The driver code also has a comment stating that the clocks should be
specified:

  /*
   * Clocks are optional, but new DT platforms should support all
   * clocks as required by the DT-binding.
   */

  [drivers/usb/dwc3/core.txt]
Sandeep Maheswaram Nov. 27, 2019, 9:01 a.m. UTC | #2
Hi Matthias,

Thanks for the review.

On 11/22/2019 6:21 AM, Matthias Kaehlcke wrote:
> Hi Sandeep,
>
> On Fri, Nov 15, 2019 at 10:53:41AM +0530, Sandeep Maheswaram wrote:
>> Add nodes for DWC3 USB controller, QMP and QUSB PHYs.
>>
>> Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
>> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> ---
>>   arch/arm64/boot/dts/qcom/sc7180-idp.dts |  25 ++++++++
>>   arch/arm64/boot/dts/qcom/sc7180.dtsi    | 105 ++++++++++++++++++++++++++++++++
>>   2 files changed, 130 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
>> index 666e9b9..2c7dbdc 100644
>> --- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
>>
>> ...
>>
>> +		usb_1: usb@a6f8800 {
>> +			compatible = "qcom,sc7180-dwc3", "qcom,dwc3";
>> +			reg = <0 0x0a6f8800 0 0x400>;
>> +			status = "disabled";
>> +			#address-cells = <2>;
>> +			#size-cells = <2>;
>> +			ranges;
>> +			dma-ranges;
>> +
>> +			clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
>> +				 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
>> +				 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
>> +				 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
>> +				 <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
>> +			clock-names = "cfg_noc", "core", "iface", "mock_utmi",
>> +				      "sleep";
>> +
>> +			assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
>> +					  <&gcc GCC_USB30_PRIM_MASTER_CLK>;
>> +			assigned-clock-rates = <19200000>, <150000000>;
>> +
>> +			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
>> +				     <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
>> +			interrupt-names = "hs_phy_irq", "ss_phy_irq",
>> +					  "dm_hs_phy_irq", "dp_hs_phy_irq";
>> +
>> +			power-domains = <&gcc USB30_PRIM_GDSC>;
>> +
>> +			resets = <&gcc GCC_USB30_PRIM_BCR>;
>> +
>> +			usb_1_dwc3: dwc3@a600000 {
>> +				compatible = "snps,dwc3";
>> +				reg = <0 0x0a600000 0 0xe000>;
>> +				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
>> +				iommus = <&apps_smmu 0x540 0>;
>> +				snps,dis_u2_susphy_quirk;
>> +				snps,dis_enblslpm_quirk;
>> +				phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
>> +				phy-names = "usb2-phy", "usb3-phy";
>> +			};
> I see the following message at boot:
>
> [    4.248436] dwc3 a600000.dwc3: Failed to get clk 'ref': -2
>
> Apparently the driver is operational regardless, however the binding lists
> the clocks as required:
>
>    Required properties:
>     ...
>     - clock-names: should contain "ref", "bus_early", "suspend"
>     - clocks: list of phandle and clock specifier pairs corresponding to
>               entries in the clock-names property.
>
>    [Documentation/devicetree/bindings/usb/dwc3.txt]
>
> The driver code also has a comment stating that the clocks should be
> specified:
>
>    /*
>     * Clocks are optional, but new DT platforms should support all
>     * clocks as required by the DT-binding.
>     */
>
>    [drivers/usb/dwc3/core.txt]
We are implenting all the required clocks in glue driver 
drivers/usb/dwc3/dwc3-qcom.c.

Also there is exception for qcom,dwc3 in documentation

Documentation/devicetree/bindings/usb/dwc3.txt


Exception for clocks:

clocks are optional if the parent node (i.e. glue-layer) is compatible to
one of the following:
"amlogic,meson-axg-dwc3"
"amlogic,meson-gxl-dwc3"
"cavium,octeon-7130-usb-uctl"
"qcom,dwc3"
"samsung,exynos5250-dwusb3"
"samsung,exynos5433-dwusb3"
"samsung,exynos7-dwusb3"
"sprd,sc9860-dwc3"
"st,stih407-dwc3"
"ti,am437x-dwc3"
"ti,dwc3"
"ti,keystone-dwc3"
"rockchip,rk3399-dwc3"
"xlnx,zynqmp-dwc3"
Matthias Kaehlcke Nov. 27, 2019, 4:49 p.m. UTC | #3
On Wed, Nov 27, 2019 at 09:01:07AM +0000, Sandeep Maheswaram (Temp) wrote:
> Hi Matthias,
> 
> Thanks for the review.
> 
> On 11/22/2019 6:21 AM, Matthias Kaehlcke wrote:
> > Hi Sandeep,
> > 
> > On Fri, Nov 15, 2019 at 10:53:41AM +0530, Sandeep Maheswaram wrote:
> > > Add nodes for DWC3 USB controller, QMP and QUSB PHYs.
> > > 
> > > Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
> > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > > ---
> > >   arch/arm64/boot/dts/qcom/sc7180-idp.dts |  25 ++++++++
> > >   arch/arm64/boot/dts/qcom/sc7180.dtsi    | 105 ++++++++++++++++++++++++++++++++
> > >   2 files changed, 130 insertions(+)
> > > 
> > > diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> > > index 666e9b9..2c7dbdc 100644
> > > --- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
> > > +++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> > > 
> > > ...
> > > 
> > > +		usb_1: usb@a6f8800 {
> > > +			compatible = "qcom,sc7180-dwc3", "qcom,dwc3";
> > > +			reg = <0 0x0a6f8800 0 0x400>;
> > > +			status = "disabled";
> > > +			#address-cells = <2>;
> > > +			#size-cells = <2>;
> > > +			ranges;
> > > +			dma-ranges;
> > > +
> > > +			clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
> > > +				 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
> > > +				 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
> > > +				 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
> > > +				 <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
> > > +			clock-names = "cfg_noc", "core", "iface", "mock_utmi",
> > > +				      "sleep";
> > > +
> > > +			assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
> > > +					  <&gcc GCC_USB30_PRIM_MASTER_CLK>;
> > > +			assigned-clock-rates = <19200000>, <150000000>;
> > > +
> > > +			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
> > > +				     <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
> > > +				     <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
> > > +				     <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
> > > +			interrupt-names = "hs_phy_irq", "ss_phy_irq",
> > > +					  "dm_hs_phy_irq", "dp_hs_phy_irq";
> > > +
> > > +			power-domains = <&gcc USB30_PRIM_GDSC>;
> > > +
> > > +			resets = <&gcc GCC_USB30_PRIM_BCR>;
> > > +
> > > +			usb_1_dwc3: dwc3@a600000 {
> > > +				compatible = "snps,dwc3";
> > > +				reg = <0 0x0a600000 0 0xe000>;
> > > +				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> > > +				iommus = <&apps_smmu 0x540 0>;
> > > +				snps,dis_u2_susphy_quirk;
> > > +				snps,dis_enblslpm_quirk;
> > > +				phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
> > > +				phy-names = "usb2-phy", "usb3-phy";
> > > +			};
> > I see the following message at boot:
> > 
> > [    4.248436] dwc3 a600000.dwc3: Failed to get clk 'ref': -2
> > 
> > Apparently the driver is operational regardless, however the binding lists
> > the clocks as required:
> > 
> >    Required properties:
> >     ...
> >     - clock-names: should contain "ref", "bus_early", "suspend"
> >     - clocks: list of phandle and clock specifier pairs corresponding to
> >               entries in the clock-names property.
> > 
> >    [Documentation/devicetree/bindings/usb/dwc3.txt]
> > 
> > The driver code also has a comment stating that the clocks should be
> > specified:
> > 
> >    /*
> >     * Clocks are optional, but new DT platforms should support all
> >     * clocks as required by the DT-binding.
> >     */
> > 
> >    [drivers/usb/dwc3/core.txt]
> We are implenting all the required clocks in glue driver
> drivers/usb/dwc3/dwc3-qcom.c.
> 
> Also there is exception for qcom,dwc3 in documentation
> 
> Documentation/devicetree/bindings/usb/dwc3.txt
> 
> 
> Exception for clocks:
> 
> clocks are optional if the parent node (i.e. glue-layer) is compatible to
> one of the following:
> "amlogic,meson-axg-dwc3"
> "amlogic,meson-gxl-dwc3"
> "cavium,octeon-7130-usb-uctl"
> "qcom,dwc3"
> "samsung,exynos5250-dwusb3"
> "samsung,exynos5433-dwusb3"
> "samsung,exynos7-dwusb3"
> "sprd,sc9860-dwc3"
> "st,stih407-dwc3"
> "ti,am437x-dwc3"
> "ti,dwc3"
> "ti,keystone-dwc3"
> "rockchip,rk3399-dwc3"
> "xlnx,zynqmp-dwc3"

ah, I missed this, thanks for the pointer!
Bjorn Andersson Nov. 28, 2019, 10:11 p.m. UTC | #4
On Thu 21 Nov 16:51 PST 2019, Matthias Kaehlcke wrote:

> Hi Sandeep,
> 
> On Fri, Nov 15, 2019 at 10:53:41AM +0530, Sandeep Maheswaram wrote:
> > Add nodes for DWC3 USB controller, QMP and QUSB PHYs.
> > 
> > Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
> > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > ---
> >  arch/arm64/boot/dts/qcom/sc7180-idp.dts |  25 ++++++++
> >  arch/arm64/boot/dts/qcom/sc7180.dtsi    | 105 ++++++++++++++++++++++++++++++++
> >  2 files changed, 130 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> > index 666e9b9..2c7dbdc 100644
> > --- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> >
> > ...
> >
> > +		usb_1: usb@a6f8800 {
> > +			compatible = "qcom,sc7180-dwc3", "qcom,dwc3";
> > +			reg = <0 0x0a6f8800 0 0x400>;
> > +			status = "disabled";
> > +			#address-cells = <2>;
> > +			#size-cells = <2>;
> > +			ranges;
> > +			dma-ranges;
> > +
> > +			clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
> > +				 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
> > +				 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
> > +				 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
> > +				 <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
> > +			clock-names = "cfg_noc", "core", "iface", "mock_utmi",
> > +				      "sleep";
> > +
> > +			assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
> > +					  <&gcc GCC_USB30_PRIM_MASTER_CLK>;
> > +			assigned-clock-rates = <19200000>, <150000000>;
> > +
> > +			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
> > +				     <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
> > +				     <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
> > +				     <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
> > +			interrupt-names = "hs_phy_irq", "ss_phy_irq",
> > +					  "dm_hs_phy_irq", "dp_hs_phy_irq";
> > +
> > +			power-domains = <&gcc USB30_PRIM_GDSC>;
> > +
> > +			resets = <&gcc GCC_USB30_PRIM_BCR>;
> > +
> > +			usb_1_dwc3: dwc3@a600000 {
> > +				compatible = "snps,dwc3";
> > +				reg = <0 0x0a600000 0 0xe000>;
> > +				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> > +				iommus = <&apps_smmu 0x540 0>;
> > +				snps,dis_u2_susphy_quirk;
> > +				snps,dis_enblslpm_quirk;
> > +				phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
> > +				phy-names = "usb2-phy", "usb3-phy";
> > +			};
> 
> I see the following message at boot:
> 
> [    4.248436] dwc3 a600000.dwc3: Failed to get clk 'ref': -2
> 

dwc3-qcom picks up the clocks per the names of the binding, but then
dwc3 tries to pick up the same clocks based on the generic names.

At some point it would be nice to figure out how to have these two play
nice with each other, but for now it's a "harmless" error print - which
has consumed many hours of unnecessary debugging by various people...

Regards,
Bjorn
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
index 189254f..282d33e 100644
--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
+++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
@@ -400,3 +400,28 @@ 
 			bias-pull-up;
 		};
 };
+
+&usb_1 {
+	status = "okay";
+};
+
+&usb_1_dwc3 {
+	dr_mode = "host";
+};
+
+&usb_1_hsphy {
+	status = "okay";
+	vdd-supply = <&vreg_l4a_0p8>;
+	vdda-pll-supply = <&vreg_l11a_1p8>;
+	vdda-phy-dpdm-supply = <&vreg_l17a_3p0>;
+	qcom,imp-res-offset-value = <8>;
+	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
+	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
+	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
+};
+
+&usb_1_qmpphy {
+	status = "okay";
+	vdda-phy-supply = <&vreg_l3c_1p2>;
+	vdda-pll-supply = <&vreg_l4a_0p8>;
+};
diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
index 666e9b9..2c7dbdc 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -8,6 +8,7 @@ 
 #include <dt-bindings/clock/qcom,gcc-sc7180.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/phy/phy-qcom-qusb2.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 
 / {
@@ -182,6 +183,18 @@ 
 			#power-domain-cells = <1>;
 		};
 
+		qfprom@784000 {
+			compatible = "qcom,qfprom";
+			reg = <0 0x00784000 0 0x8ff>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			qusb2p_hstx_trim: hstx-trim-primary@25b {
+				reg = <0x25b 0x1>;
+				bits = <1 3>;
+			};
+		};
+
 		qupv3_id_0: geniqup@8c0000 {
 			compatible = "qcom,geni-se-qup";
 			reg = <0 0x008c0000 0 0x6000>;
@@ -911,6 +924,98 @@ 
 			status = "disabled";
 		};
 
+		usb_1_hsphy: phy@88e3000 {
+			compatible = "qcom,sc7180-qusb2-phy";
+			reg = <0 0x088e3000 0 0x400>;
+			status = "disabled";
+			#phy-cells = <0>;
+			clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
+				 <&rpmhcc RPMH_CXO_CLK>;
+			clock-names = "cfg_ahb", "ref";
+			resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+
+			nvmem-cells = <&qusb2p_hstx_trim>;
+		};
+
+		usb_1_qmpphy: phy@88e9000 {
+			compatible = "qcom,sc7180-qmp-usb3-phy";
+			reg = <0 0x088e9000 0 0x18c>,
+			      <0 0x088e8000 0 0x38>;
+			reg-names = "reg-base", "dp_com";
+			status = "disabled";
+			#clock-cells = <1>;
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges;
+
+			clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
+				 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
+				 <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
+				 <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>;
+			clock-names = "aux", "cfg_ahb", "ref", "com_aux";
+
+			resets = <&gcc GCC_USB3_DP_PHY_PRIM_BCR>,
+				 <&gcc GCC_USB3_PHY_PRIM_BCR>;
+			reset-names = "phy", "common";
+
+			usb_1_ssphy: lanes@88e9200 {
+				reg = <0 0x088e9200 0 0x128>,
+				      <0 0x088e9400 0 0x200>,
+				      <0 0x088e9c00 0 0x218>,
+				      <0 0x088e9600 0 0x128>,
+				      <0 0x088e9800 0 0x200>,
+				      <0 0x088e9a00 0 0x18>;
+				#phy-cells = <0>;
+				clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
+				clock-names = "pipe0";
+				clock-output-names = "usb3_phy_pipe_clk_src";
+			};
+		};
+
+		usb_1: usb@a6f8800 {
+			compatible = "qcom,sc7180-dwc3", "qcom,dwc3";
+			reg = <0 0x0a6f8800 0 0x400>;
+			status = "disabled";
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges;
+			dma-ranges;
+
+			clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+				 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+				 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+				 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+				 <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
+			clock-names = "cfg_noc", "core", "iface", "mock_utmi",
+				      "sleep";
+
+			assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+					  <&gcc GCC_USB30_PRIM_MASTER_CLK>;
+			assigned-clock-rates = <19200000>, <150000000>;
+
+			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "hs_phy_irq", "ss_phy_irq",
+					  "dm_hs_phy_irq", "dp_hs_phy_irq";
+
+			power-domains = <&gcc USB30_PRIM_GDSC>;
+
+			resets = <&gcc GCC_USB30_PRIM_BCR>;
+
+			usb_1_dwc3: dwc3@a600000 {
+				compatible = "snps,dwc3";
+				reg = <0 0x0a600000 0 0xe000>;
+				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+				iommus = <&apps_smmu 0x540 0>;
+				snps,dis_u2_susphy_quirk;
+				snps,dis_enblslpm_quirk;
+				phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
+				phy-names = "usb2-phy", "usb3-phy";
+			};
+		};
+
 		spmi_bus: spmi@c440000 {
 			compatible = "qcom,spmi-pmic-arb";
 			reg = <0 0x0c440000 0 0x1100>,