diff mbox series

[3/3] arm64: dts: ipq6018: enable USB2 support

Message ID 59a0d43f34b69406cd320f16edc4e7fabe022bfd.1611756920.git.baruch@tkos.co.il (mailing list archive)
State New, archived
Headers show
Series phy: qualcomm: support IPQ60xx USB PHY | expand

Commit Message

Baruch Siach Jan. 27, 2021, 2:20 p.m. UTC
From: Kathiravan T <kathirav@codeaurora.org>

Signed-off-by: Kathiravan T <kathirav@codeaurora.org>
[baruch: adjust regs address/size; drop binding updates;
 drop unsupported quirk properties]
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts |  8 ++++
 arch/arm64/boot/dts/qcom/ipq6018.dtsi        | 48 ++++++++++++++++++++
 2 files changed, 56 insertions(+)

Comments

Baruch Siach Feb. 7, 2021, 9:08 a.m. UTC | #1
Hi Kathiravan T,

Thanks for your review.

On Fri, Feb 05 2021, Kathiravan T wrote:
> On 2021-01-27 19:50, Baruch Siach wrote:
>> From: Kathiravan T <kathirav@codeaurora.org>
>> Signed-off-by: Kathiravan T <kathirav@codeaurora.org>
>> [baruch: adjust regs address/size; drop binding updates;
>>  drop unsupported quirk properties]
>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>> ---
>>  arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts |  8 ++++
>>  arch/arm64/boot/dts/qcom/ipq6018.dtsi        | 48 ++++++++++++++++++++
>>  2 files changed, 56 insertions(+)
>> diff --git a/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
>> b/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
>> index 99cefe88f6f2..5aec18308712 100644
>> --- a/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
>> +++ b/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
>> @@ -78,3 +78,11 @@ nand@0 {
>>  		nand-bus-width = <8>;
>>  	};
>>  };
>> +
>> +&qusb_phy_1 {
>> +	status = "ok";
>> +};
>> +
>> +&usb2 {
>> +	status = "ok";
>> +};
>> diff --git a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
>> b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
>> index 9fa5b028e4f3..d4a3d4e4a7e9 100644
>> --- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
>> @@ -524,6 +524,54 @@ qrtr_requests {
>>  			};
>>  		};
>> +		qusb_phy_1: qusb@59000 {
>> +			compatible = "qcom,ipq6018-qusb2-phy";
>> +			reg = <0x0 0x059000 0x0 0x180>;
>> +			#phy-cells = <0>;
>> +
>> +			clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
>> +				 <&xo>;
>> +			clock-names = "cfg_ahb", "ref";
>
> As per the bindings, ref clock should be 19.2MHz where the XO in IPQ60xx is
> 24MHz. Did the USB enumerated successfully and able to perform read / write
> operations?

I managed to enumerate an Ethernet USB dongle with only this series
applied.  But then I tested again with USB storage device. That only
worked with downstream clock adjust/period patch:

  https://source.codeaurora.org/quic/qsdk/oss/kernel/linux-ipq-5.4/commit/?h=fig&id=707d8fa2b481888f4792edc6561e81999301cbcf

That patch applies cleanly on top of v5.11-rc4.

Is anyone at Codeaurora pushing the dwc3 clock patch upstream? Should I
do that?

Thanks,
baruch
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts b/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
index 99cefe88f6f2..5aec18308712 100644
--- a/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
+++ b/arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
@@ -78,3 +78,11 @@  nand@0 {
 		nand-bus-width = <8>;
 	};
 };
+
+&qusb_phy_1 {
+	status = "ok";
+};
+
+&usb2 {
+	status = "ok";
+};
diff --git a/arch/arm64/boot/dts/qcom/ipq6018.dtsi b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
index 9fa5b028e4f3..d4a3d4e4a7e9 100644
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -524,6 +524,54 @@  qrtr_requests {
 			};
 		};
 
+		qusb_phy_1: qusb@59000 {
+			compatible = "qcom,ipq6018-qusb2-phy";
+			reg = <0x0 0x059000 0x0 0x180>;
+			#phy-cells = <0>;
+
+			clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
+				 <&xo>;
+			clock-names = "cfg_ahb", "ref";
+
+			resets = <&gcc GCC_QUSB2_1_PHY_BCR>;
+			status = "disabled";
+		};
+
+		usb2: usb2@7000000 {
+			compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
+			reg = <0x0 0x070F8800 0x0 0x400>;
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges;
+			clocks = <&gcc GCC_USB1_MASTER_CLK>,
+				 <&gcc GCC_USB1_SLEEP_CLK>,
+				 <&gcc GCC_USB1_MOCK_UTMI_CLK>;
+			clock-names = "master",
+				      "sleep",
+				      "mock_utmi";
+
+			assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>,
+					  <&gcc GCC_USB1_MOCK_UTMI_CLK>;
+			assigned-clock-rates = <133330000>,
+					       <24000000>;
+			resets = <&gcc GCC_USB1_BCR>;
+			status = "disabled";
+
+			dwc_1: dwc3@7000000 {
+			       compatible = "snps,dwc3";
+			       reg = <0x0 0x7000000 0x0 0xcd00>;
+			       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+			       phys = <&qusb_phy_1>;
+			       phy-names = "usb2-phy";
+			       tx-fifo-resize;
+			       snps,is-utmi-l1-suspend;
+			       snps,hird-threshold = /bits/ 8 <0x0>;
+			       snps,dis_u2_susphy_quirk;
+			       snps,dis_u3_susphy_quirk;
+			       dr_mode = "host";
+			};
+		};
+
 	};
 
 	wcss: wcss-smp2p {