Message ID | 20221024074128.1113554-5-waynec@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Enable USB host and device functions on Jetson | expand |
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? > + #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? Best regards, Krzysztof
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
On 28/10/2022 05:33, Jon Hunter wrote: >>> + 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. > Just to clarify - this status looks redundant, but I have no way to tell for sure... Best regards, Krzysztof
On 28/10/2022 12:27, Krzysztof Kozlowski wrote: > On 28/10/2022 05:33, Jon Hunter wrote: >>>> + 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. >> > > Just to clarify - this status looks redundant, but I have no way to tell > for sure... I see. This is the only place where this device appears. I always forget if we are meant to explicitly set status to okay or just omit. Personally, I always prefer to be explicit. Jon
On Fri, Oct 28, 2022 at 07:27:09AM -0400, Krzysztof Kozlowski wrote: > On 28/10/2022 05:33, Jon Hunter wrote: > >>> + 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. > > > > Just to clarify - this status looks redundant, but I have no way to tell > for sure... But that's independent of whether we specify this using the full path or reference the node by label, isn't it? The only way to make sure that a status = "okay" is not redundant is by manual inspection. I don't know of an automated way to do that. Perhaps it's something that could be added as a check to DTC? In this particular case I don't think the status is needed. As Jon mentioned, this device is first defined here and status = "okay" is the default, so this is redundant. Thierry
On 28/10/2022 08:38, Thierry Reding wrote: >>> >>> 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. >>> >> >> Just to clarify - this status looks redundant, but I have no way to tell >> for sure... > > But that's independent of whether we specify this using the full path or > reference the node by label, isn't it? The only way to make sure that a > status = "okay" is not redundant is by manual inspection. I don't know > of an automated way to do that. Perhaps it's something that could be > added as a check to DTC? With overrides/extends pattern it is easy to spot one case of mistakes - you see override, then status might be needed might not. You see new node (like here!) - then status=okay is redundant. Best regards, Krzysztof
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 { + compatible = "cypress,cypd4226"; + cypress,firmware-build = "gn"; + interrupt-parent = <&gpio>; + interrupts = <TEGRA234_MAIN_GPIO(Y, 4) IRQ_TYPE_LEVEL_LOW>; + reg = <0x08>; + status = "okay"; + #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>; + hs_ucsi_ccg_p0: endpoint { + remote-endpoint = <&hs_typec_p0>; + }; + }; + port@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + ss_ucsi_ccg_p0: endpoint { + remote-endpoint = <&ss_typec_p0>; + }; + }; + }; + ccg_typec_con1: connector@1 { + compatible = "usb-c-connector"; + reg = <1>; + label = "USB-C"; + data-role = "dual"; + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + hs_ucsi_ccg_p1: endpoint { + remote-endpoint = <&hs_typec_p1>; + }; + }; + port@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + ss_ucsi_ccg_p1: endpoint { + remote-endpoint = <&ss_typec_p1>; + }; + }; + }; + }; + }; }; chosen { diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi index 0170bfa8a467..27635d459e4c 100644 --- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi @@ -942,6 +942,174 @@ hda@3510000 { status = "disabled"; }; + xusb_padctl: padctl@3520000 { + compatible = "nvidia,tegra234-xusb-padctl"; + reg = <0x03520000 0x20000>, + <0x03540000 0x10000>; + reg-names = "padctl", "ao"; + interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>; + + resets = <&bpmp TEGRA234_RESET_XUSB_PADCTL>; + reset-names = "padctl"; + + status = "disabled"; + + pads { + usb2 { + clocks = <&bpmp TEGRA234_CLK_USB2_TRK>; + clock-names = "trk"; + + lanes { + usb2-0 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + + usb2-1 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + + usb2-2 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + + usb2-3 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + }; + }; + + usb3 { + lanes { + usb3-0 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + + usb3-1 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + + usb3-2 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + + usb3-3 { + nvidia,function = "xusb"; + status = "disabled"; + #phy-cells = <0>; + }; + }; + }; + }; + + ports { + usb2-0 { + status = "disabled"; + }; + + usb2-1 { + status = "disabled"; + }; + + usb2-2 { + status = "disabled"; + }; + + usb2-3 { + status = "disabled"; + }; + + usb3-0 { + status = "disabled"; + }; + + usb3-1 { + status = "disabled"; + }; + + usb3-2 { + status = "disabled"; + }; + + usb3-3 { + status = "disabled"; + }; + }; + }; + + usb@3550000 { + compatible = "nvidia,tegra234-xudc"; + reg = <0x03550000 0x8000>, + <0x03558000 0x8000>; + reg-names = "base", "fpci"; + interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_DEV>, + <&bpmp TEGRA234_CLK_XUSB_CORE_SS>, + <&bpmp TEGRA234_CLK_XUSB_SS>, + <&bpmp TEGRA234_CLK_XUSB_FS>; + clock-names = "dev", "ss", "ss_src", "fs_src"; + interconnects = <&mc TEGRA234_MEMORY_CLIENT_XUSB_DEVR &emc>, + <&mc TEGRA234_MEMORY_CLIENT_XUSB_DEVW &emc>; + interconnect-names = "dma-mem", "write"; + iommus = <&smmu_niso1 TEGRA234_SID_XUSB_DEV>; + power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBB>, + <&bpmp TEGRA234_POWER_DOMAIN_XUSBA>; + power-domain-names = "dev", "ss"; + nvidia,xusb-padctl = <&xusb_padctl>; + dma-coherent; + status = "disabled"; + }; + + usb@3610000 { + compatible = "nvidia,tegra234-xusb"; + reg = <0x03610000 0x40000>, + <0x03600000 0x10000>, + <0x03650000 0x10000>; + reg-names = "hcd", "fpci", "bar2"; + + interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>; + + clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_HOST>, + <&bpmp TEGRA234_CLK_XUSB_FALCON>, + <&bpmp TEGRA234_CLK_XUSB_CORE_SS>, + <&bpmp TEGRA234_CLK_XUSB_SS>, + <&bpmp TEGRA234_CLK_CLK_M>, + <&bpmp TEGRA234_CLK_XUSB_FS>, + <&bpmp TEGRA234_CLK_UTMIP_PLL>, + <&bpmp TEGRA234_CLK_CLK_M>, + <&bpmp TEGRA234_CLK_PLLE>; + clock-names = "xusb_host", "xusb_falcon_src", + "xusb_ss", "xusb_ss_src", "xusb_hs_src", + "xusb_fs_src", "pll_u_480m", "clk_m", + "pll_e"; + interconnects = <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTR &emc>, + <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTW &emc>; + interconnect-names = "dma-mem", "write"; + iommus = <&smmu_niso1 TEGRA234_SID_XUSB_HOST>; + + power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBC>, + <&bpmp TEGRA234_POWER_DOMAIN_XUSBA>; + power-domain-names = "xusb_host", "xusb_ss"; + + nvidia,xusb-padctl = <&xusb_padctl>; + dma-coherent; + status = "disabled"; + }; + fuse@3810000 { compatible = "nvidia,tegra234-efuse"; reg = <0x03810000 0x10000>; @@ -1470,6 +1638,8 @@ gen2_i2c: i2c@c240000 { compatible = "nvidia,tegra194-i2c"; reg = <0xc240000 0x100>; interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; + #address-cells = <1>; + #size-cells = <0>; status = "disabled"; clock-frequency = <100000>; clocks = <&bpmp TEGRA234_CLK_I2C2
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(+)