[PATCH 04/11] arm64: tegra: Enable XUSB host and device on Jetson AGX Orin

Jon Hunter jonathanh at nvidia.com
Fri Oct 28 02:33:03 PDT 2022



On 28/10/2022 03:23, Krzysztof Kozlowski wrote:
> On 24/10/2022 03:41, Wayne Chang wrote:
>> This commit enables XUSB host, device, and pad controller on
>> Jetson AGX Orin.
>>
>> Signed-off-by: Wayne Chang <waynec at nvidia.com>
>> ---
>>   .../boot/dts/nvidia/tegra234-p3701-0000.dtsi  |  48 +++++
>>   .../nvidia/tegra234-p3737-0000+p3701-0000.dts | 184 ++++++++++++++++++
>>   arch/arm64/boot/dts/nvidia/tegra234.dtsi      | 170 ++++++++++++++++
>>   3 files changed, 402 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi b/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
>> index 9e4d72cfa69f..8acef87a5398 100644
>> --- a/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
>> +++ b/arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
>> @@ -61,6 +61,29 @@ mmc at 3460000 {
>>   			non-removable;
>>   		};
>>   
>> +		padctl at 3520000 {
>> +			vclamp-usb-supply = <&vdd_ao_1v8>;
>> +			avdd-usb-supply = <&vdd_ao_3v3>;
>> +
>> +			ports {
>> +				usb2-0 {
>> +					vbus-supply = <&vdd_5v0_sys>;
>> +				};
>> +
>> +				usb2-1 {
>> +					vbus-supply = <&vdd_5v0_sys>;
>> +				};
>> +
>> +				usb2-2 {
>> +					vbus-supply = <&vdd_5v0_sys>;
>> +				};
>> +
>> +				usb2-3 {
>> +					vbus-supply = <&vdd_5v0_sys>;
>> +				};
>> +			};
>> +		};
>> +
>>   		rtc at c2a0000 {
>>   			status = "okay";
>>   		};
>> @@ -69,4 +92,29 @@ pmc at c360000 {
>>   			nvidia,invert-interrupt;
>>   		};
>>   	};
>> +
>> +	vdd_5v0_sys: regulator at 0 {
>> +		compatible = "regulator-fixed";
>> +		regulator-name = "VIN_SYS_5V0";
>> +		regulator-min-microvolt = <5000000>;
>> +		regulator-max-microvolt = <5000000>;
>> +		regulator-always-on;
>> +		regulator-boot-on;
>> +	};
>> +
>> +	vdd_ao_1v8: regulator at 1 {
>> +		compatible = "regulator-fixed";
>> +		regulator-name = "vdd-AO-1v8";
>> +		regulator-min-microvolt = <1800000>;
>> +		regulator-max-microvolt = <1800000>;
>> +		regulator-always-on;
>> +	};
>> +
>> +	vdd_ao_3v3: regulator at 2 {
>> +		compatible = "regulator-fixed";
>> +		regulator-name = "vdd-AO-3v3";
>> +		regulator-min-microvolt = <3300000>;
>> +		regulator-max-microvolt = <3300000>;
>> +		regulator-always-on;
>> +	};
>>   };
>> diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
>> index 57ab75328814..b4630280bb32 100644
>> --- a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
>> +++ b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
>> @@ -2011,6 +2011,190 @@ hda at 3510000 {
>>   			nvidia,model = "NVIDIA Jetson AGX Orin HDA";
>>   			status = "okay";
>>   		};
>> +
>> +		padctl at 3520000 {
>> +			status = "okay";
>> +
>> +			pads {
>> +				usb2 {
>> +					lanes {
>> +						usb2-0 {
>> +							status = "okay";
>> +						};
>> +
>> +						usb2-1 {
>> +							status = "okay";
>> +						};
>> +
>> +						usb2-2 {
>> +							status = "okay";
>> +						};
>> +
>> +						usb2-3 {
>> +							status = "okay";
>> +						};
>> +					};
>> +				};
>> +
>> +				usb3 {
>> +					lanes {
>> +						usb3-0 {
>> +							status = "okay";
>> +						};
>> +
>> +						usb3-1 {
>> +							status = "okay";
>> +						};
>> +
>> +						usb3-2 {
>> +							status = "okay";
>> +						};
>> +					};
>> +				};
>> +			};
>> +
>> +			ports {
>> +				usb2-0 {
>> +					mode = "otg";
>> +					usb-role-switch;
>> +					status = "okay";
>> +					port {
>> +						hs_typec_p1: endpoint {
>> +							remote-endpoint = <&hs_ucsi_ccg_p1>;
>> +						};
>> +					};
>> +				};
>> +
>> +				usb2-1 {
>> +					mode = "host";
>> +					status = "okay";
>> +					port {
>> +						hs_typec_p0: endpoint {
>> +							remote-endpoint = <&hs_ucsi_ccg_p0>;
>> +						};
>> +					};
>> +				};
>> +
>> +				usb2-2 {
>> +					mode = "host";
>> +					status = "okay";
>> +				};
>> +
>> +				usb2-3 {
>> +					mode = "host";
>> +					status = "okay";
>> +				};
>> +
>> +				usb3-0 {
>> +					nvidia,usb2-companion = <1>;
>> +					status = "okay";
>> +					port {
>> +						ss_typec_p0: endpoint {
>> +							remote-endpoint = <&ss_ucsi_ccg_p0>;
>> +						};
>> +					};
>> +				};
>> +
>> +				usb3-1 {
>> +					nvidia,usb2-companion = <0>;
>> +					status = "okay";
>> +					port {
>> +						ss_typec_p1: endpoint {
>> +							remote-endpoint = <&ss_ucsi_ccg_p1>;
>> +						};
>> +					};
>> +				};
>> +
>> +				usb3-2 {
>> +					nvidia,usb2-companion = <3>;
>> +					status = "okay";
>> +				};
>> +			};
>> +		};
>> +
>> +		usb at 3550000 {
>> +			status = "okay";
>> +
>> +			phys = <&{/bus at 0/padctl at 3520000/pads/usb2/lanes/usb2-0}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb3/lanes/usb3-1}>;
>> +			phy-names = "usb2-0", "usb3-1";
>> +		};
>> +
>> +		usb at 3610000 {
>> +			status = "okay";
>> +
>> +			phys =	<&{/bus at 0/padctl at 3520000/pads/usb2/lanes/usb2-0}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb2/lanes/usb2-1}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb2/lanes/usb2-2}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb2/lanes/usb2-3}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb3/lanes/usb3-0}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb3/lanes/usb3-1}>,
>> +				<&{/bus at 0/padctl at 3520000/pads/usb3/lanes/usb3-2}>;
>> +			phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3",
>> +				"usb3-0", "usb3-1", "usb3-2";
>> +		};
>> +
>> +		i2c at c240000 {
>> +			status = "okay";
>> +			ucsi_ccg: ucsi_ccg at 8 {
> 
> No underscores in node names.
> 
>> +				compatible = "cypress,cypd4226";
>> +				cypress,firmware-build = "gn";
>> +				interrupt-parent = <&gpio>;
>> +				interrupts = <TEGRA234_MAIN_GPIO(Y, 4) IRQ_TYPE_LEVEL_LOW>;
>> +				reg = <0x08>;
>> +				status = "okay";
> 
> The pattern of redefining full path in Tegra is confusing - I have no
> clue which of these status=okay are correct which are redundant.
> 
> Do you?

I understand you may not like this approach, however, this comment is 
not really relevant to just this patch, but a general comment. But yes 
we will ensure that this is correct.

> 
> 
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +				ccg_typec_con0: connector at 0 {
>> +					compatible = "usb-c-connector";
>> +					reg = <0>;
>> +					label = "USB-C";
>> +					data-role = "host";
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +					port at 0 {
>> +						reg = <0>;
>> +						#address-cells = <1>;
>> +						#size-cells = <0>;
> 
> Hm, why do you have here cells?
> 
> Did you test the DTS with dtbs_check?

That does not look correct and so we will correct.

Thanks!
Jon

-- 
nvpublic



More information about the linux-phy mailing list