arm64: tegra: Add support for Jetson Xavier NX
authorJon Hunter <jonathanh@nvidia.com>
Mon, 13 Jul 2020 16:17:01 +0000 (17:17 +0100)
committerThierry Reding <treding@nvidia.com>
Wed, 15 Jul 2020 09:07:39 +0000 (11:07 +0200)
Add the device-tree source files for the Tegra194 Jetson Xavier NX
Developer Kit. The Xavier NX Developer Kit consists of a small form
factor system-on-module (SOM) board (part number p3668-0000) and a
carrier board (part number p3509-0000).

The Xavier NX Developer Kit SOM features a micro-SD card slot, however,
there is also a variant of the SOM available that features a 16GB eMMC.
Given that the carrier board can be used with the different SOM
variants, that have different part numbers, both the compatible string
and file name of the device-tree source file for the Developer Kit is a
concatenation of the SOM and carrier board part numbers.

Based on some initial work 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/Makefile
arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi [new file with mode: 0644]

index bcd018c3162b19b4bc98c62313e17010ccd2db56..2273fc5db19c0343913e953a6ce9c209e7dbc916 100644 (file)
@@ -8,3 +8,4 @@ dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-smaug.dtb
 dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2894-0050-a08.dtb
 dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p2771-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p2972-0000.dtb
+dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0000.dtb
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts b/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts
new file mode 100644 (file)
index 0000000..c1c5898
--- /dev/null
@@ -0,0 +1,331 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/input/gpio-keys.h>
+
+#include "tegra194-p3668-0000.dtsi"
+
+/ {
+       model = "NVIDIA Jetson Xavier NX Developer Kit";
+       compatible = "nvidia,p3509-0000+p3668-0000", "nvidia,tegra194";
+
+       bus@0 {
+               aconnect@2900000 {
+                       status = "okay";
+
+                       dma-controller@2930000 {
+                               status = "okay";
+                       };
+
+                       interrupt-controller@2a40000 {
+                               status = "okay";
+                       };
+               };
+
+               ddc: i2c@3190000 {
+                       status = "okay";
+               };
+
+               hda@3510000 {
+                       nvidia,model = "jetson-xavier-nx-hda";
+                       status = "okay";
+               };
+
+               padctl@3520000 {
+                       status = "okay";
+
+                       pads {
+                               usb2 {
+                                       lanes {
+                                               usb2-1 {
+                                                       status = "okay";
+                                               };
+
+                                               usb2-2 {
+                                                       status = "okay";
+                                               };
+                                       };
+                               };
+
+                               usb3 {
+                                       lanes {
+                                               usb3-2 {
+                                                       status = "okay";
+                                               };
+                                       };
+                               };
+                       };
+
+                       ports {
+                               usb2-1 {
+                                       mode = "host";
+                                       status = "okay";
+                               };
+
+                               usb2-2 {
+                                       mode = "host";
+                                       vbus-supply = <&vdd_5v0_sys>;
+                                       status = "okay";
+                               };
+
+                               usb3-2 {
+                                       nvidia,usb2-companion = <1>;
+                                       vbus-supply = <&vdd_5v0_sys>;
+                                       status = "okay";
+                               };
+                       };
+               };
+
+               usb@3610000 {
+                       status = "okay";
+
+                       phys =  <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
+                               <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
+                               <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
+                       phy-names = "usb2-1", "usb2-2", "usb3-2";
+               };
+
+               pwm@32d0000 {
+                       status = "okay";
+               };
+
+               host1x@13e00000 {
+                       display-hub@15200000 {
+                               status = "okay";
+                       };
+
+                       dpaux@155c0000 {
+                               status = "okay";
+                       };
+
+                       dpaux@155d0000 {
+                               status = "okay";
+                       };
+
+                       /* DP0 */
+                       sor@15b00000 {
+                               status = "okay";
+
+                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
+                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
+
+                               nvidia,dpaux = <&dpaux0>;
+                       };
+
+                       /* HDMI */
+                       sor@15b40000 {
+                               status = "okay";
+
+                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
+                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
+                               hdmi-supply = <&vdd_hdmi>;
+
+                               nvidia,ddc-i2c-bus = <&ddc>;
+                               nvidia,hpd-gpio = <&gpio TEGRA194_MAIN_GPIO(M, 1)
+                                                        GPIO_ACTIVE_LOW>;
+                       };
+               };
+       };
+
+       pcie@14160000 {
+               status = "okay";
+
+               vddio-pex-ctl-supply = <&vdd_1v8ao>;
+
+               phys = <&p2u_hsio_11>;
+               phy-names = "p2u-0";
+       };
+
+       pcie@141a0000 {
+               status = "okay";
+
+               vddio-pex-ctl-supply = <&vdd_1v8ao>;
+
+               phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
+                      <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
+                      <&p2u_nvhs_6>, <&p2u_nvhs_7>;
+
+               phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
+                           "p2u-5", "p2u-6", "p2u-7";
+       };
+
+       pcie_ep@141a0000 {
+               status = "disabled";
+
+               vddio-pex-ctl-supply = <&vdd_1v8ao>;
+
+               reset-gpios = <&gpio TEGRA194_MAIN_GPIO(GG, 1) GPIO_ACTIVE_LOW>;
+
+               nvidia,refclk-select-gpios = <&gpio_aon TEGRA194_AON_GPIO(AA, 5)
+                                             GPIO_ACTIVE_HIGH>;
+
+               phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
+                      <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
+                      <&p2u_nvhs_6>, <&p2u_nvhs_7>;
+
+               phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
+                           "p2u-5", "p2u-6", "p2u-7";
+       };
+
+       fan: fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm6 0 45334>;
+
+               cooling-levels = <0 64 128 255>;
+               #cooling-cells = <2>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               force-recovery {
+                       label = "Force Recovery";
+                       gpios = <&gpio TEGRA194_MAIN_GPIO(G, 0)
+                                      GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_SLEEP>;
+                       debounce-interval = <10>;
+               };
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio_aon TEGRA194_AON_GPIO(EE, 4)
+                                          GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       vdd_5v0_sys: regulator@100 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_5V_SYS";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_3v3_sys: regulator@101 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_3V3_SYS";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_3v3_ao: regulator@102 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_3V3_AO";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_1v8: regulator@103 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_hdmi: regulator@104 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_5V0_HDMI_CON";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       thermal-zones {
+               cpu {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               cpu_trip_critical: critical {
+                                       temperature = <96500>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+
+                               cpu_trip_hot: hot {
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               cpu_trip_active: active {
+                                       temperature = <50000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_passive: passive {
+                                       temperature = <30000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               cpu-critical {
+                                       cooling-device = <&fan 3 3>;
+                                       trip = <&cpu_trip_critical>;
+                               };
+
+                               cpu-hot {
+                                       cooling-device = <&fan 2 2>;
+                                       trip = <&cpu_trip_hot>;
+                               };
+
+                               cpu-active {
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active>;
+                               };
+
+                               cpu-passive {
+                                       cooling-device = <&fan 0 0>;
+                                       trip = <&cpu_trip_passive>;
+                               };
+                       };
+               };
+
+               gpu {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               gpu_alert0: critical {
+                                       temperature = <99000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               aux {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               aux_alert0: critical {
+                                       temperature = <90000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi
new file mode 100644 (file)
index 0000000..10cb836
--- /dev/null
@@ -0,0 +1,290 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "tegra194.dtsi"
+
+#include <dt-bindings/mfd/max77620.h>
+
+/ {
+       model = "NVIDIA Jetson Xavier NX";
+       compatible = "nvidia,p3668-0000", "nvidia,tegra194";
+
+       aliases {
+               ethernet0 = "/bus@0/ethernet@2490000";
+               i2c0 = "/bpmp/i2c";
+               i2c1 = "/bus@0/i2c@3160000";
+               i2c2 = "/bus@0/i2c@c240000";
+               i2c3 = "/bus@0/i2c@3180000";
+               i2c4 = "/bus@0/i2c@3190000";
+               i2c5 = "/bus@0/i2c@31c0000";
+               i2c6 = "/bus@0/i2c@c250000";
+               i2c7 = "/bus@0/i2c@31e0000";
+               mmc0 = "/bus@0/mmc@3460000";
+               rtc0 = "/bpmp/i2c/pmic@3c";
+               rtc1 = "/bus@0/rtc@c2a0000";
+               serial0 = &tcu;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+               stdout-path = "serial0:115200n8";
+       };
+
+       bus@0 {
+               ethernet@2490000 {
+                       status = "okay";
+
+                       phy-reset-gpios = <&gpio TEGRA194_MAIN_GPIO(R, 1) GPIO_ACTIVE_LOW>;
+                       phy-handle = <&phy>;
+                       phy-mode = "rgmii-id";
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy: phy@0 {
+                                       compatible = "ethernet-phy-ieee802.3-c22";
+                                       reg = <0x0>;
+                                       interrupt-parent = <&gpio>;
+                                       interrupts = <TEGRA194_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
+                                       #phy-cells = <0>;
+                               };
+                       };
+               };
+
+               memory-controller@2c00000 {
+                       status = "okay";
+               };
+
+               serial@c280000 {
+                       status = "okay";
+               };
+
+               /* SDMMC1 (SD/MMC) */
+               mmc@3400000 {
+                       status = "okay";
+                       bus-width = <4>;
+                       cd-gpios = <&gpio TEGRA194_MAIN_GPIO(G, 7) GPIO_ACTIVE_LOW>;
+                       disable-wp;
+                       vmmc-supply = <&vdd_3v3_sd>;
+               };
+
+               padctl@3520000 {
+                       avdd-usb-supply = <&vdd_usb_3v3>;
+                       vclamp-usb-supply = <&vdd_1v8ao>;
+
+                       ports {
+                               usb2-1 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
+                               usb2-3 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
+                               usb3-0 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
+                               usb3-3 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+                       };
+               };
+
+               rtc@c2a0000 {
+                       status = "okay";
+               };
+
+               pmc@c360000 {
+                       nvidia,invert-interrupt;
+               };
+       };
+
+       bpmp {
+               i2c {
+                       status = "okay";
+
+                       pmic: pmic@3c {
+                               compatible = "maxim,max20024";
+                               reg = <0x3c>;
+
+                               interrupt-parent = <&pmc>;
+                               interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&max20024_default>;
+
+                               max20024_default: pinmux {
+                                       gpio0 {
+                                               pins = "gpio0";
+                                               function = "gpio";
+                                       };
+
+                                       gpio1 {
+                                               pins = "gpio1";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
+                                       };
+
+                                       gpio2 {
+                                               pins = "gpio2";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
+                                       };
+
+                                       gpio3 {
+                                               pins = "gpio3";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
+                                       };
+
+                                       gpio4 {
+                                               pins = "gpio4";
+                                               function = "32k-out1";
+                                               drive-push-pull = <1>;
+                                       };
+
+                                       gpio6 {
+                                               pins = "gpio6";
+                                               function = "gpio";
+                                               drive-push-pull = <1>;
+                                       };
+
+                                       gpio7 {
+                                               pins = "gpio7";
+                                               function = "gpio";
+                                               drive-push-pull = <0>;
+                                       };
+                               };
+
+                               fps {
+                                       fps0 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+
+                                       fps1 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                               maxim,device-state-on-disabled-event = <MAX77620_FPS_INACTIVE_STATE_SLEEP>;
+                                       };
+
+                                       fps2 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+                               };
+
+                               regulators {
+                                       in-sd0-supply = <&vdd_5v0_sys>;
+                                       in-sd1-supply = <&vdd_5v0_sys>;
+                                       in-sd2-supply = <&vdd_5v0_sys>;
+                                       in-sd3-supply = <&vdd_5v0_sys>;
+                                       in-sd4-supply = <&vdd_5v0_sys>;
+
+                                       in-ldo0-1-supply = <&vdd_5v0_sys>;
+                                       in-ldo2-supply = <&vdd_5v0_sys>;
+                                       in-ldo3-5-supply = <&vdd_5v0_sys>;
+                                       in-ldo4-6-supply = <&vdd_5v0_sys>;
+                                       in-ldo7-8-supply = <&vdd_1v8ls>;
+
+                                       vdd_1v0: sd0 {
+                                               regulator-name = "VDDIO_SYS_1V0";
+                                               regulator-min-microvolt = <1000000>;
+                                               regulator-max-microvolt = <1000000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_1v8hs: sd1 {
+                                               regulator-name = "VDDIO_SYS_1V8HS";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_1v8ls: sd2 {
+                                               regulator-name = "VDDIO_SYS_1V8LS";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_1v8ao: sd3 {
+                                               regulator-name = "VDDIO_AO_1V8";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       sd4 {
+                                               regulator-name = "VDD_DDR_1V1";
+                                               regulator-min-microvolt = <1100000>;
+                                               regulator-max-microvolt = <1100000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo0 {
+                                               regulator-name = "VDD_RTC";
+                                               regulator-min-microvolt = <800000>;
+                                               regulator-max-microvolt = <800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo2 {
+                                               regulator-name = "VDDIO_AO_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo3 {
+                                               regulator-name = "VDD_EMMC_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       vdd_usb_3v3: ldo5 {
+                                               regulator-name = "VDD_USB_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo6 {
+                                               regulator-name = "VDD_SDIO_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo7 {
+                                               regulator-name = "AVDD_CSI_1V2";
+                                               regulator-min-microvolt = <1200000>;
+                                               regulator-max-microvolt = <1200000>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       vdd_3v3_sd: regulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_3V3_SD";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio TEGRA194_MAIN_GPIO(G, 2) GPIO_ACTIVE_HIGH>;
+               regulator-boot-on;
+               enable-active-high;
+       };
+};