Messages in this thread | | | Date | Tue, 15 Nov 2022 12:17:03 +0000 | Subject | Re: [PATCH v3 04/13] arm64: tegra: Enable XUSB host and device on Jetson AGX Orin | From | Jon Hunter <> |
| |
On 14/11/2022 12:40, Wayne Chang wrote: > This commit enables XUSB host, device, and pad controller on > Jetson AGX Orin. > > Signed-off-by: Wayne Chang <waynec@nvidia.com> > --- > depends on the following change > https://lore.kernel.org/all/20221003125141.123759-1-jonathanh@nvidia.com/ > V2 -> V3:nothing has changed but added the dependency here > V1 -> V2:removed the redundant cells and status in ucsi-ccg. > Using dash instead of underscore in the ucsi-ccg node name. > Using representive name in cypress,firmware-build property. > .../boot/dts/nvidia/tegra234-p3701-0000.dtsi | 48 +++++ > .../nvidia/tegra234-p3737-0000+p3701-0000.dts | 175 ++++++++++++++++++ > arch/arm64/boot/dts/nvidia/tegra234.dtsi | 170 +++++++++++++++++ > 3 files changed, 393 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..58baedbd0f93 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,181 @@ 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@8 { > + compatible = "cypress,cypd4226"; > + cypress,firmware-build = "nvidia,jetson-agx-xavier"; > + interrupt-parent = <&gpio>; > + interrupts = <TEGRA234_MAIN_GPIO(Y, 4) IRQ_TYPE_LEVEL_LOW>; > + reg = <0x08>; > + #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>; > + hs_ucsi_ccg_p0: endpoint { > + remote-endpoint = <&hs_typec_p0>; > + }; > + }; > + port@1 { > + reg = <1>; > + 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>; > + hs_ucsi_ccg_p1: endpoint { > + remote-endpoint = <&hs_typec_p1>; > + }; > + }; > + port@1 { > + reg = <1>; > + 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
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Thanks Jon
-- nvpublic
| |