Commit 6e505dd6 authored by Wayne Chang's avatar Wayne Chang Committed by Thierry Reding
Browse files

arm64: tegra: Enable XUSB host function on Jetson AGX Orin



This commit enables XUSB host and pad controller on Jetson AGX Orin.

Signed-off-by: default avatarWayne Chang <waynec@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 79ed18d9
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -32,6 +32,29 @@
			non-removable;
		};

		padctl@3520000 {
			vclamp-usb-supply = <&vdd_1v8_ao>;
			avdd-usb-supply = <&vdd_3v3_ao>;

			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";
		};
@@ -41,6 +64,15 @@
		};
	};

	vdd_5v0_sys: regulator-vdd-5v0-sys {
		compatible = "regulator-fixed";
		regulator-name = "VIN_SYS_5V0";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
		regulator-boot-on;
	};

	vdd_1v8_ls: regulator-vdd-1v8-ls {
		compatible = "regulator-fixed";
		regulator-name = "VDD_1V8_LS";
@@ -57,6 +89,14 @@
		regulator-always-on;
	};

	vdd_3v3_ao: regulator-vdd-3v3-ao {
		compatible = "regulator-fixed";
		regulator-name = "VDD_3V3_AO";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	vdd_3v3_pcie: regulator-vdd-3v3-pcie {
		compatible = "regulator-fixed";
		regulator-name = "VDD_3V3_PCIE";
+93 −0
Original line number Diff line number Diff line
@@ -2028,6 +2028,99 @@
			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 = "host";
					status = "okay";
				};

				usb2-1 {
					mode = "host";
					status = "okay";
				};

				usb2-2 {
					mode = "host";
					status = "okay";
				};

				usb2-3 {
					mode = "host";
					status = "okay";
				};

				usb3-0 {
					nvidia,usb2-companion = <1>;
					status = "okay";
				};

				usb3-1 {
					nvidia,usb2-companion = <0>;
					status = "okay";
				};

				usb3-2 {
					nvidia,usb2-companion = <3>;
					status = "okay";
				};
			};
		};

		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";
		};

		ethernet@6800000 {
			status = "okay";

+145 −0
Original line number Diff line number Diff line
@@ -981,6 +981,151 @@
			status = "disabled";
		};

		xusb_padctl: padctl@3520000 {
			compatible = "nvidia,tegra234-xusb-padctl";
			reg = <0x0 0x03520000 0x0 0x20000>,
			      <0x0 0x03540000 0x0 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@3610000 {
			compatible = "nvidia,tegra234-xusb";
			reg = <0x0 0x03610000 0x0 0x40000>,
			      <0x0 0x03600000 0x0 0x10000>,
			      <0x0 0x03650000 0x0 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 = <0x0 0x03810000 0x0 0x10000>;