OSDN Git Service

arm64: tegra: Enable XUSB host function on Jetson AGX Orin
authorWayne Chang <waynec@nvidia.com>
Wed, 11 Jan 2023 11:04:47 +0000 (11:04 +0000)
committerThierry Reding <treding@nvidia.com>
Tue, 17 Jan 2023 13:52:01 +0000 (14:52 +0100)
This commit enables XUSB host and pad controller on Jetson AGX Orin.

Signed-off-by: Wayne Chang <waynec@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
arch/arm64/boot/dts/nvidia/tegra234.dtsi

index 07aa5dc..12f72e3 100644 (file)
                        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";
                };
                };
        };
 
+       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";
                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";
index a4d1be2..8a97478 100644 (file)
                        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";
 
index c3d390c..c0dbed3 100644 (file)
                        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>;