// SPDX-License-Identifier: GPL-2.0 /dts-v1/; #include <dt-bindings/input/linux-event-codes.h> #include <dt-bindings/input/gpio-keys.h> #include <dt-bindings/mfd/max77620.h> #include "tegra186.dtsi" / { model = "NVIDIA Jetson TX2 NX Developer Kit"; compatible = "nvidia,p3509-0000+p3636-0001", "nvidia,tegra186"; aliases { ethernet0 = "/ethernet@2490000"; i2c0 = "/bpmp/i2c"; i2c1 = "/i2c@3160000"; i2c2 = "/i2c@c240000"; i2c3 = "/i2c@3180000"; i2c4 = "/i2c@3190000"; i2c5 = "/i2c@31c0000"; i2c6 = "/i2c@c250000"; i2c7 = "/i2c@31e0000"; mmc0 = "/mmc@3460000"; serial0 = &uarta; }; chosen { bootargs = "earlycon console=ttyS0,115200n8"; stdout-path = "serial0:115200n8"; }; memory@80000000 { device_type = "memory"; reg = <0x0 0x80000000 0x0 0x70000000>; }; ethernet@2490000 { status = "okay"; phy-reset-gpios = <&gpio_aon TEGRA186_AON_GPIO(AA, 6) GPIO_ACTIVE_LOW>; phy-handle = <&phy>; phy-mode = "rgmii-id"; mdio { #address-cells = <1>; #size-cells = <0>; phy: ethernet-phy@0 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0x0>; interrupt-parent = <&gpio_aon>; interrupts = <TEGRA186_AON_GPIO(AA, 7) IRQ_TYPE_LEVEL_LOW>; #phy-cells = <0>; }; }; }; aconnect@2900000 { status = "okay"; ahub@2900800 { status = "okay"; i2s@2901000 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; i2s1_cif_ep: endpoint { remote-endpoint = <&xbar_i2s1_ep>; }; }; i2s1_port: port@1 { reg = <1>; i2s1_dap_ep: endpoint { dai-format = "i2s"; /* Placeholder for external Codec */ }; }; }; }; i2s@2901200 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; i2s3_cif_ep: endpoint { remote-endpoint = <&xbar_i2s3_ep>; }; }; i2s3_port: port@1 { reg = <1>; i2s3_dap_ep: endpoint { dai-format = "i2s"; /* Placeholder for external Codec */ }; }; }; }; dmic@2904000 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; dmic1_cif_ep: endpoint { remote-endpoint = <&xbar_dmic1_ep>; }; }; dmic1_port: port@1 { reg = <1>; dmic1_dap_ep: endpoint { /* Place holder for external Codec */ }; }; }; }; dmic@2904100 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; dmic2_cif_ep: endpoint { remote-endpoint = <&xbar_dmic2_ep>; }; }; dmic2_port: port@1 { reg = <1>; dmic2_dap_ep: endpoint { /* Place holder for external Codec */ }; }; }; }; admaif@290f000 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; admaif0_port: port@0 { reg = <0x0>; admaif0_ep: endpoint { remote-endpoint = <&xbar_admaif0_ep>; }; }; admaif1_port: port@1 { reg = <0x1>; admaif1_ep: endpoint { remote-endpoint = <&xbar_admaif1_ep>; }; }; admaif2_port: port@2 { reg = <0x2>; admaif2_ep: endpoint { remote-endpoint = <&xbar_admaif2_ep>; }; }; admaif3_port: port@3 { reg = <0x3>; admaif3_ep: endpoint { remote-endpoint = <&xbar_admaif3_ep>; }; }; admaif4_port: port@4 { reg = <0x4>; admaif4_ep: endpoint { remote-endpoint = <&xbar_admaif4_ep>; }; }; admaif5_port: port@5 { reg = <0x5>; admaif5_ep: endpoint { remote-endpoint = <&xbar_admaif5_ep>; }; }; admaif6_port: port@6 { reg = <0x6>; admaif6_ep: endpoint { remote-endpoint = <&xbar_admaif6_ep>; }; }; admaif7_port: port@7 { reg = <0x7>; admaif7_ep: endpoint { remote-endpoint = <&xbar_admaif7_ep>; }; }; admaif8_port: port@8 { reg = <0x8>; admaif8_ep: endpoint { remote-endpoint = <&xbar_admaif8_ep>; }; }; admaif9_port: port@9 { reg = <0x9>; admaif9_ep: endpoint { remote-endpoint = <&xbar_admaif9_ep>; }; }; admaif10_port: port@a { reg = <0xa>; admaif10_ep: endpoint { remote-endpoint = <&xbar_admaif10_ep>; }; }; admaif11_port: port@b { reg = <0xb>; admaif11_ep: endpoint { remote-endpoint = <&xbar_admaif11_ep>; }; }; admaif12_port: port@c { reg = <0xc>; admaif12_ep: endpoint { remote-endpoint = <&xbar_admaif12_ep>; }; }; admaif13_port: port@d { reg = <0xd>; admaif13_ep: endpoint { remote-endpoint = <&xbar_admaif13_ep>; }; }; admaif14_port: port@e { reg = <0xe>; admaif14_ep: endpoint { remote-endpoint = <&xbar_admaif14_ep>; }; }; admaif15_port: port@f { reg = <0xf>; admaif15_ep: endpoint { remote-endpoint = <&xbar_admaif15_ep>; }; }; admaif16_port: port@10 { reg = <0x10>; admaif16_ep: endpoint { remote-endpoint = <&xbar_admaif16_ep>; }; }; admaif17_port: port@11 { reg = <0x11>; admaif17_ep: endpoint { remote-endpoint = <&xbar_admaif17_ep>; }; }; admaif18_port: port@12 { reg = <0x12>; admaif18_ep: endpoint { remote-endpoint = <&xbar_admaif18_ep>; }; }; admaif19_port: port@13 { reg = <0x13>; admaif19_ep: endpoint { remote-endpoint = <&xbar_admaif19_ep>; }; }; }; }; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0x0>; xbar_admaif0_ep: endpoint { remote-endpoint = <&admaif0_ep>; }; }; port@1 { reg = <0x1>; xbar_admaif1_ep: endpoint { remote-endpoint = <&admaif1_ep>; }; }; port@2 { reg = <0x2>; xbar_admaif2_ep: endpoint { remote-endpoint = <&admaif2_ep>; }; }; port@3 { reg = <0x3>; xbar_admaif3_ep: endpoint { remote-endpoint = <&admaif3_ep>; }; }; port@4 { reg = <0x4>; xbar_admaif4_ep: endpoint { remote-endpoint = <&admaif4_ep>; }; }; port@5 { reg = <0x5>; xbar_admaif5_ep: endpoint { remote-endpoint = <&admaif5_ep>; }; }; port@6 { reg = <0x6>; xbar_admaif6_ep: endpoint { remote-endpoint = <&admaif6_ep>; }; }; port@7 { reg = <0x7>; xbar_admaif7_ep: endpoint { remote-endpoint = <&admaif7_ep>; }; }; port@8 { reg = <0x8>; xbar_admaif8_ep: endpoint { remote-endpoint = <&admaif8_ep>; }; }; port@9 { reg = <0x9>; xbar_admaif9_ep: endpoint { remote-endpoint = <&admaif9_ep>; }; }; port@a { reg = <0xa>; xbar_admaif10_ep: endpoint { remote-endpoint = <&admaif10_ep>; }; }; port@b { reg = <0xb>; xbar_admaif11_ep: endpoint { remote-endpoint = <&admaif11_ep>; }; }; port@c { reg = <0xc>; xbar_admaif12_ep: endpoint { remote-endpoint = <&admaif12_ep>; }; }; port@d { reg = <0xd>; xbar_admaif13_ep: endpoint { remote-endpoint = <&admaif13_ep>; }; }; port@e { reg = <0xe>; xbar_admaif14_ep: endpoint { remote-endpoint = <&admaif14_ep>; }; }; port@f { reg = <0xf>; xbar_admaif15_ep: endpoint { remote-endpoint = <&admaif15_ep>; }; }; port@10 { reg = <0x10>; xbar_admaif16_ep: endpoint { remote-endpoint = <&admaif16_ep>; }; }; port@11 { reg = <0x11>; xbar_admaif17_ep: endpoint { remote-endpoint = <&admaif17_ep>; }; }; port@12 { reg = <0x12>; xbar_admaif18_ep: endpoint { remote-endpoint = <&admaif18_ep>; }; }; port@13 { reg = <0x13>; xbar_admaif19_ep: endpoint { remote-endpoint = <&admaif19_ep>; }; }; xbar_i2s1_port: port@14 { reg = <0x14>; xbar_i2s1_ep: endpoint { remote-endpoint = <&i2s1_cif_ep>; }; }; xbar_i2s3_port: port@16 { reg = <0x16>; xbar_i2s3_ep: endpoint { remote-endpoint = <&i2s3_cif_ep>; }; }; xbar_dmic1_port: port@1a { reg = <0x1a>; xbar_dmic1_ep: endpoint { remote-endpoint = <&dmic1_cif_ep>; }; }; xbar_dmic2_port: port@1b { reg = <0x1b>; xbar_dmic2_ep: endpoint { remote-endpoint = <&dmic2_cif_ep>; }; }; }; }; dma-controller@2930000 { status = "okay"; }; interrupt-controller@2a40000 { status = "okay"; }; }; memory-controller@2c00000 { status = "okay"; }; timer@3010000 { status = "okay"; }; serial@3100000 { status = "okay"; }; i2c@3160000 { status = "okay"; }; i2c@3180000 { status = "okay"; power-monitor@40 { compatible = "ti,ina3221"; reg = <0x40>; #address-cells = <1>; #size-cells = <0>; input@0 { reg = <0>; label = "VDD_IN"; shunt-resistor-micro-ohms = <5>; }; input@1 { reg = <1>; label = "VDD_CPU_GPU"; shunt-resistor-micro-ohms = <5>; }; input@2 { reg = <2>; label = "VDD_SOC"; shunt-resistor-micro-ohms = <5>; }; }; }; ddc: i2c@3190000 { status = "okay"; }; i2c@31c0000 { status = "okay"; }; i2c@31e0000 { status = "okay"; }; /* SDMMC4 (eMMC) */ mmc@3460000 { status = "okay"; bus-width = <8>; non-removable; vqmmc-supply = <&vdd_1v8_ap>; vmmc-supply = <&vdd_3v3_sys>; }; hda@3510000 { nvidia,model = "NVIDIA Jetson TX2 NX HDA"; status = "okay"; }; padctl@3520000 { status = "okay"; avdd-pll-erefeut-supply = <&vdd_1v8_pll>; avdd-usb-supply = <&vdd_3v3_sys>; vclamp-usb-supply = <&vdd_1v8>; vddio-hsic-supply = <&gnd>; pads { usb2 { status = "okay"; lanes { micro_b: usb2-0 { nvidia,function = "xusb"; status = "okay"; }; usb2-1 { nvidia,function = "xusb"; status = "okay"; }; usb2-2 { nvidia,function = "xusb"; status = "okay"; }; }; }; usb3 { status = "okay"; lanes { usb3-1 { nvidia,function = "xusb"; status = "okay"; }; }; }; }; ports { usb2-0 { status = "okay"; mode = "otg"; vbus-supply = <&vdd_5v0_sys>; usb-role-switch; connector { compatible = "gpio-usb-b-connector", "usb-b-connector"; label = "micro-USB"; type = "micro"; vbus-gpios = <&gpio TEGRA186_MAIN_GPIO(L, 4) GPIO_ACTIVE_LOW>; id-gpios = <&pmic 0 GPIO_ACTIVE_HIGH>; }; }; usb2-1 { status = "okay"; mode = "host"; vbus-supply = <&vdd_5v0_sys>; }; usb2-2 { status = "okay"; mode = "host"; vbus-supply = <&vdd_5v0_sys>; }; usb3-1 { nvidia,usb2-companion = <1>; vbus-supply = <&vdd_5v0_sys>; status = "okay"; }; }; }; usb@3530000 { status = "okay"; phys = <&{/padctl@3520000/pads/usb2/lanes/usb2-0}>, <&{/padctl@3520000/pads/usb2/lanes/usb2-1}>, <&{/padctl@3520000/pads/usb2/lanes/usb2-2}>, <&{/padctl@3520000/pads/usb3/lanes/usb3-1}>; phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-1"; }; usb@3550000 { status = "okay"; phys = <µ_b>; phy-names = "usb2-0"; }; hsp@3c00000 { status = "okay"; }; i2c@c240000 { status = "okay"; }; i2c@c250000 { status = "okay"; /* module ID EEPROM */ eeprom@50 { compatible = "atmel,24c02"; reg = <0x50>; label = "module"; vcc-supply = <&vdd_1v8>; address-width = <8>; pagesize = <8>; size = <256>; read-only; }; /* carrier board ID EEPROM */ eeprom@57 { compatible = "atmel,24c02"; reg = <0x57>; label = "system"; vcc-supply = <&vdd_1v8>; address-width = <8>; pagesize = <8>; size = <256>; read-only; }; }; rtc@c2a0000 { status = "okay"; }; pwm@c340000 { status = "okay"; }; pmc@c360000 { nvidia,invert-interrupt; }; pcie@10003000 { status = "okay"; dvdd-pex-supply = <&vdd_pex>; hvdd-pex-pll-supply = <&vdd_1v8>; hvdd-pex-supply = <&vdd_1v8>; vddio-pexctl-aud-supply = <&vdd_1v8>; pci@1,0 { nvidia,num-lanes = <2>; status = "okay"; }; pci@2,0 { nvidia,num-lanes = <1>; status = "disabled"; }; pci@3,0 { nvidia,num-lanes = <1>; status = "okay"; }; }; host1x@13e00000 { status = "okay"; dpaux@15040000 { status = "okay"; }; display-hub@15200000 { status = "okay"; }; dsi@15300000 { status = "disabled"; }; /* DP */ sor@15540000 { status = "okay"; avdd-io-hdmi-dp-supply = <&vdd_hdmi_1v05>; vdd-hdmi-dp-pll-supply = <&vdd_1v8_ap>; nvidia,dpaux = <&dpaux>; }; /* HDMI */ sor@15580000 { status = "okay"; avdd-io-hdmi-dp-supply = <&vdd_hdmi_1v05>; vdd-hdmi-dp-pll-supply = <&vdd_1v8_ap>; hdmi-supply = <&vdd_hdmi>; nvidia,ddc-i2c-bus = <&ddc>; nvidia,hpd-gpio = <&gpio TEGRA186_MAIN_GPIO(P, 1) GPIO_ACTIVE_LOW>; }; dpaux@155c0000 { status = "okay"; }; }; gpu@17000000 { status = "okay"; }; bpmp { i2c { status = "okay"; pmic: pmic@3c { compatible = "maxim,max77620"; 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 = <&max77620_default>; 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>; }; fps2 { maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>; maxim,shutdown-fps-time-period-us = <640>; }; }; max77620_default: pinmux { gpio0 { pins = "gpio0"; function = "gpio"; }; gpio1 { pins = "gpio1"; function = "fps-out"; maxim,active-fps-source = <MAX77620_FPS_SRC_0>; }; gpio2 { pins = "gpio2"; function = "fps-out"; maxim,active-fps-source = <MAX77620_FPS_SRC_1>; }; gpio3 { pins = "gpio3"; function = "fps-out"; maxim,active-fps-source = <MAX77620_FPS_SRC_1>; }; gpio4 { pins = "gpio4"; function = "32k-out1"; drive-push-pull = <1>; }; gpio5 { pins = "gpio5"; function = "gpio"; drive-push-pull = <0>; }; gpio6 { pins = "gpio6"; function = "gpio"; drive-push-pull = <1>; }; gpio7 { pins = "gpio7"; function = "gpio"; drive-push-pull = <1>; }; }; 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-ldo0-1-supply = <&vdd_5v0_sys>; in-ldo2-supply = <&vdd_5v0_sys>; in-ldo3-5-supply = <&vdd_5v0_sys>; in-ldo4-6-supply = <&vdd_1v8>; in-ldo7-8-supply = <&avdd_dsi_csi>; sd0 { regulator-name = "VDD_DDR_1V1_PMIC"; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; regulator-always-on; regulator-boot-on; }; avdd_dsi_csi: sd1 { regulator-name = "AVDD_DSI_CSI_1V2"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; }; vdd_1v8: sd2 { regulator-name = "VDD_1V8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; vdd_3v3_sys: sd3 { regulator-name = "VDD_3V3_SYS"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; vdd_1v8_pll: ldo0 { regulator-name = "VDD_1V8_AP_PLL"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; ldo2 { regulator-name = "VDDIO_3V3_AOHV"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-boot-on; }; vddio_sdmmc1: ldo3 { regulator-name = "VDDIO_SDMMC1_AP"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; }; ldo4 { regulator-name = "VDD_RTC"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; }; vddio_sdmmc3: ldo5 { regulator-name = "VDDIO_SDMMC3_AP"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; }; vdd_hdmi_1v05: ldo7 { regulator-name = "VDD_HDMI_1V05"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1050000>; }; vdd_pex: ldo8 { regulator-name = "VDD_PEX_1V05"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1050000>; }; }; }; }; }; cpus { cpu@0 { enable-method = "psci"; }; cpu@1 { enable-method = "psci"; }; cpu@2 { enable-method = "psci"; }; cpu@3 { enable-method = "psci"; }; cpu@4 { enable-method = "psci"; }; cpu@5 { enable-method = "psci"; }; }; gpio-keys { compatible = "gpio-keys"; key-power { label = "Power"; gpios = <&gpio_aon TEGRA186_AON_GPIO(FF, 0) GPIO_ACTIVE_LOW>; linux,input-type = <EV_KEY>; linux,code = <KEY_POWER>; debounce-interval = <10>; wakeup-event-action = <EV_ACT_ASSERTED>; wakeup-source; }; key-volume-down { label = "Volume Down"; gpios = <&gpio_aon TEGRA186_AON_GPIO(FF, 2) GPIO_ACTIVE_LOW>; linux,input-type = <EV_KEY>; linux,code = <KEY_VOLUMEDOWN>; debounce-interval = <10>; }; key-volume-up { label = "Volume Up"; gpios = <&gpio_aon TEGRA186_AON_GPIO(FF, 1) GPIO_ACTIVE_LOW>; linux,input-type = <EV_KEY>; linux,code = <KEY_VOLUMEUP>; debounce-interval = <10>; }; }; psci { compatible = "arm,psci-1.0"; status = "okay"; method = "smc"; }; fan: pwm-fan { compatible = "pwm-fan"; pwms = <&pwm4 0 45334>; cooling-levels = <0 64 128 255>; #cooling-cells = <2>; }; gnd: regulator-gnd { compatible = "regulator-fixed"; regulator-name = "GND"; regulator-min-microvolt = <0>; regulator-max-microvolt = <0>; regulator-always-on; regulator-boot-on; }; vdd_5v0_sys: regulator-vdd-5v0-sys { compatible = "regulator-fixed"; regulator-name = "VDD_5V0_SYS"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; regulator-boot-on; }; vdd_1v8_ap: regulator-vdd-1v8-ap { compatible = "regulator-fixed"; regulator-name = "VDD_1V8_AP"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&pmic 1 GPIO_ACTIVE_HIGH>; enable-active-high; vin-supply = <&vdd_1v8>; }; vdd_hdmi: regulator-vdd-hdmi { compatible = "regulator-fixed"; regulator-name = "VDD_5V0_HDMI_CON"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&vdd_5v0_sys>; }; sound { compatible = "nvidia,tegra186-audio-graph-card"; status = "okay"; dais = /* FE */ <&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>, <&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>, <&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>, <&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>, <&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>, /* Router */ <&xbar_i2s1_port>, <&xbar_i2s3_port>, <&xbar_dmic1_port>, <&xbar_dmic2_port>, /* I/O */ <&i2s1_port>, <&i2s3_port>, <&dmic1_port>, <&dmic2_port>; label = "NVIDIA Jetson TX2 NX APE"; }; thermal-zones { cpu-thermal { 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 = <79000>; hysteresis = <2000>; type = "hot"; }; cpu_trip_active: active { temperature = <62000>; hysteresis = <2000>; type = "active"; }; cpu_trip_passive: passive { temperature = <45000>; 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>; }; }; }; aux-thermal { polling-delay = <0>; polling-delay-passive = <500>; status = "okay"; trips { aux_alert0: critical { temperature = <90000>; hysteresis = <0>; type = "critical"; }; }; }; gpu-thermal { polling-delay = <0>; polling-delay-passive = <500>; status = "okay"; trips { gpu_alert0: critical { temperature = <99000>; hysteresis = <0>; type = "critical"; }; }; }; }; };