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

Jon Hunter
2022-10-28T09:33:23Z

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@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@3460000 {
>> non-removable;
>> };
>>
>> + padctl@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@c2a0000 {
>> status = "okay";
>> };
>> @@ -69,4 +92,29 @@ pmc@c360000 {
>> nvidia,invert-interrupt;
>> };
>> };
>> +
>> + vdd_5v0_sys: regulator@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@1 {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vdd-AO-1v8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-always-on;
>> + };
>> +
>> + vdd_ao_3v3: regulator@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@3510000 {
>> nvidia,model = "NVIDIA Jetson AGX Orin HDA";
>> status = "okay";
>> };
>> +
>> + padctl@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@3550000 {
>> + status = "okay";
>> +
>> + phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
>> + <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>;
>> + phy-names = "usb2-0", "usb3-1";
>> + };
>> +
>> + usb@3610000 {
>> + status = "okay";
>> +
>> + phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
>> + <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
>> + <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
>> + <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-3}>,
>> + <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>,
>> + <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>,
>> + <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
>> + phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3",
>> + "usb3-0", "usb3-1", "usb3-2";
>> + };
>> +
>> + i2c@c240000 {
>> + status = "okay";
>> + ucsi_ccg: ucsi_ccg@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@0 {
>> + compatible = "usb-c-connector";
>> + reg = <0>;
>> + label = "USB-C";
>> + data-role = "host";
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + port@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