Commit 1b17df99 authored by Wayne Chang's avatar Wayne Chang Committed by Greg Kroah-Hartman

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>
Link: https://lore.kernel.org/r/20230111110450.24617-4-jonathanh@nvidia.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2648f68b
......@@ -67,6 +67,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";
};
......@@ -75,4 +98,29 @@ pmc@c360000 {
nvidia,invert-interrupt;
};
};
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_ao_1v8: regulator-vdd-1v8-ao {
compatible = "regulator-fixed";
regulator-name = "vdd-AO-1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
vdd_ao_3v3: regulator-vdd-3v3-ao {
compatible = "regulator-fixed";
regulator-name = "vdd-AO-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
......@@ -2022,6 +2022,99 @@ 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 = "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";
};
};
chosen {
......
......@@ -1079,6 +1079,151 @@ 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@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>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment