From 0ac6a10eaa266170f083358eee3f7cc8bc0e52d5 Mon Sep 17 00:00:00 2001 From: Thomas Makin Date: Sun, 13 Jul 2025 10:07:49 -0500 Subject: [PATCH] arm64: t210: add initial support for nx The Nintendo Switch is a video game console based on the Tegra X1 (T210) and X1+ (T210B01). Signed-off-by: Thomas Makin --- arch/arm64/boot/dts/nvidia/Makefile | 4 + arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi | 944 +++++++ arch/arm64/boot/dts/nvidia/tegra210-odin.dts | 2253 +++++++++++++++++ .../boot/dts/nvidia/tegra210b01-fric.dts | 9 + .../arm64/boot/dts/nvidia/tegra210b01-nx.dtsi | 70 + .../boot/dts/nvidia/tegra210b01-odin.dts | 10 + .../boot/dts/nvidia/tegra210b01-vali.dts | 52 + 7 files changed, 3342 insertions(+) create mode 100644 arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi create mode 100644 arch/arm64/boot/dts/nvidia/tegra210-odin.dts create mode 100644 arch/arm64/boot/dts/nvidia/tegra210b01-fric.dts create mode 100644 arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi create mode 100644 arch/arm64/boot/dts/nvidia/tegra210b01-odin.dts create mode 100644 arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts diff --git a/arch/arm64/boot/dts/nvidia/Makefile b/arch/arm64/boot/dts/nvidia/Makefile index 7313e1b00070..cd40ed13d0fb 100644 --- a/arch/arm64/boot/dts/nvidia/Makefile +++ b/arch/arm64/boot/dts/nvidia/Makefile @@ -26,7 +26,11 @@ dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p3450-0000.dtb dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p3541-0000.dtb dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-smaug.dtb dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2894-0050-a08.dtb +dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-odin.dtb dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210b01-p2894-0050-a08.dtb +dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210b01-odin.dtb +dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210b01-vali.dtb +dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210b01-fric.dtb dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p2771-0000.dtb dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p3509-0000+p3636-0001.dtb dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p2972-0000.dtb diff --git a/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi new file mode 100644 index 000000000000..67c9c8c9fdcb --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi @@ -0,0 +1,944 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tegra210.dtsi" + +/ { + aliases { + i2c1 = "/i2c@7000c000"; + i2c2 = "/i2c@7000c400"; + i2c3 = "/i2c@7000c500"; + i2c5 = "/i2c@7000d000"; + rtc0 = "/i2c@7000d000/max77620@3c"; + rtc1 = "/rtc@7000e000"; + serial0 = &uarta; + serial1 = &uartb; + serial2 = &uartc; + serial3 = &uartd; + }; + + chosen { + bootargs = "root=/dev/mmcblk0p2 rw rootwait fbcon=rotate:3 printk.synchronous=1 loglevel=4 console=fb0 console=ttyGS0 earlycon"; + stdout-path = "serial1:115200n8"; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + vdd-cpu-supply = <&cpu_max_reg>; + }; + + idle-states { + cpu-sleep { + status = "okay"; + }; + }; + }; + + gpu@57000000 { + status = "okay"; + vdd-supply = <&gpu_max_reg>; + }; + + host1x@50000000 { + dsia: dsi@54300000 { + status = "okay"; + + panel@0 { + compatible = "jdi,lpm062m326a"; + reset-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_HIGH>; + backlight = <&backlight>; + vdd1-supply = <&v_pavdd_5v0>; + vdd2-supply = <&v_navdd_5v0>; + }; + }; + + /* tegradc.0: DSI */ + dc@54200000 { + status = "okay"; + pavdd_lcd-supply = <&v_pavdd_5v0>; + navdd_lcd-supply = <&v_navdd_5v0>; + dvdd_lcd-supply = <&max77620_sd3>; + vdd_lcd_bl_en-supply = <&lcd_bl_en>; + nvidia,outputs = <&dsia>; + }; + + /* tegradc.1: DP */ + dc@54240000 { + status = "okay"; + avdd_hdmi-supply = <&max77620_ldo8>; /* 1V05 */ + avdd_hdmi_pll-supply = <&max77620_sd3>; /* 1V8 */ + // vdd_hdmi_5v0-supply = <&vdd_hdmi>; /* 5V0 GPIO_PCC7 fixed reg */ + + vdd-dp-pwr-supply = <&vdd_3v3>; + avdd-dp-pll-supply = <&max77620_sd3>; + vdd-dp-pad-supply = <&max77620_ldo8>; + + extcon-cables = <&bm92t 3>; + extcon-cable-names = "typec1"; + + nvidia,outputs = <&sor1>; + }; + + dpaux1: dpaux@54040000 { + status = "okay"; + vdd-supply = <&v_pavdd_5v0>; + }; + + sor1: sor@54580000 { + status = "okay"; + nvidia,dpaux = <&dpaux1>; + + avdd-io-hdmi-dp-supply = <&max77620_ldo8>; + vdd-hdmi-dp-pll-supply = <&max77620_sd3>; + + nvidia,hpd-gpio = <&gpio TEGRA_GPIO(CC, 1) GPIO_ACTIVE_LOW>; + }; + + vi: i2c@546c0000 { + status = "okay"; + }; + }; + + clock@70110000 { + status = "okay"; + nvidia,cf = <6>; + nvidia,ci = <0>; + nvidia,cg = <2>; + nvidia,droop-ctrl = <0x00000f00>; + nvidia,force-mode = <1>; + nvidia,i2c-fs-rate = <400000>; + nvidia,sample-rate = <12500>; + vdd-cpu-supply = <&cpu_max_reg>; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x80000000 0x0 0x80000000>; + }; + + reserved-memory { + /delete-node/ vpr-carveout; + /delete-node/ iram-carveout; + }; + + r2p { + compatible = "tegra-r2p"; + status = "okay"; + }; + + /* debug port */ + serial@70006000 { + status = "disabled"; + }; + + /* joycon ports: + invert TXD and RTS via IRDA_CSR + start @ 1000000 baud, switch to 3000000 + when they are >= 3000000 baud, use 2 stop bits + use flow control + Note: hsuart driver is required for flow control + */ + /* right joycon */ + serial@70006040 { + status = "okay"; + compatible = "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart"; + nvidia,invert-txd; + nvidia,invert-rts; + reset-names = "serial"; + + joyconr { + status = "okay"; + compatible = "nintendo,joycon-serdev"; + charger-supply = <&en_vdd_jcr_chgr>; + detect-en-gpios = <&gpio TEGRA_GPIO(G, 0) GPIO_ACTIVE_HIGH>; + detect-gpios = <&gpio TEGRA_GPIO(H, 6) GPIO_ACTIVE_LOW>; + }; + }; + + /* left joycon */ + serial@70006200 { + status = "okay"; + compatible = "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart"; + nvidia,invert-txd; + nvidia,invert-rts; + reset-names = "serial"; + + joyconl { + status = "okay"; + compatible = "nintendo,joycon-serdev"; + charger-supply = <&en_vdd_jcl_chgr>; + detect-en-gpios = <&gpio TEGRA_GPIO(D, 1) GPIO_ACTIVE_HIGH>; + detect-gpios = <&gpio TEGRA_GPIO(E, 6) GPIO_ACTIVE_LOW>; + }; + }; + + /* bluetooth */ + serial@70006300 { + dma-names = "tx"; + status = "okay"; + compatible = "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart"; + reset-names = "serial"; + + bluetooth { + compatible = "brcm,bcm43438-bt"; + vbat-supply = <&battery_reg>; + vddio-supply = <&battery_reg>; + shutdown-gpios = <&gpio TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>; + device-wakeup-gpios = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_LOW>; + max-speed = <3000000>; /* Max supported 4 MBaud */ + sco-routing = <1>; /* Over HCI */ + }; + }; + + clk32k_in: clock-32k { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pwm 0 33898>; + pwm-names = "backlight"; + brightness-levels = < + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + 17 18 19 20 21 22 23 24 25 26 27 28 29 30 + 31 32 33 34 35 36 37 38 39 40 41 42 43 44 + 45 46 47 48 49 50 51 52 53 54 55 56 57 58 + 59 60 61 62 63 64 65 66 67 68 69 70 71 72 + 73 74 75 76 77 78 79 80 81 82 83 84 85 86 + 87 88 89 90 91 92 93 94 95 96 97 98 99 100 + >; + default-brightness-level = <50>; + enable-gpios = <&gpio TEGRA_GPIO(V, 1) GPIO_ACTIVE_HIGH>; + power-supply = <&max77620_sd3>; + }; + + /* Fixed regulators */ + battery_reg: vdd-ac-bat { + compatible = "regulator-fixed"; + status = "okay"; + regulator-name = "vdd-ac-bat"; + regulator-min-microvolt = <4800000>; + regulator-max-microvolt = <4800000>; + regulator-always-on; + regulator-boot-on; + }; + + vdd_3v3: vdd-3v3 { + compatible = "regulator-fixed"; + regulator-name = "vdd-3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + gpio = <&max77620 3 0>; + enable-active-high; + regulator-enable-ramp-delay = <160>; + regulator-disable-ramp-delay = <10000>; + }; + + max77620_gpio7: avdd-dsi-csi-1v2 { + compatible = "regulator-fixed"; + regulator-name = "max77620-gpio7"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-boot-on; /* Must be set for seamless display */ + gpio = <&max77620 7 0>; + enable-active-high; + regulator-enable-ramp-delay = <240>; + regulator-disable-ramp-delay = <11340>; + vin-supply = <&max77620_ldo0>; + }; + + lcd_bl_en: lcd-bl-en { + compatible = "regulator-fixed"; + regulator-name = "lcd-bl-en"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio TEGRA_GPIO(V, 1) 0>; + regulator-boot-on; /* Must be set for seamless display */ + enable-active-high; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + en_vdd_sd: en-vdd-sd { + compatible = "regulator-fixed"; + regulator-name = "en-vdd-sd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio TEGRA_GPIO(E, 4) 0>; + enable-active-high; + regulator-enable-ramp-delay = <472>; + regulator-disable-ramp-delay = <4880>; + vin-supply = <&vdd_3v3>; + }; + + /* LCD Power Enable +5V. Rohm BD8316GWL. */ + v_pavdd_5v0: v-pavdd-5v0 { + compatible = "regulator-fixed"; + regulator-name = "v_pavdd_5v0"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio TEGRA_GPIO(I, 0) 0>; + enable-active-high; + regulator-boot-on; /* Must be set for seamless display */ + regulator-enable-ramp-delay = <232>; + }; + + /* LCD Power Enable -5V. Rohm BD8316GWL. */ + v_navdd_5v0: v-navdd-5v0 { + compatible = "regulator-fixed"; + regulator-name = "v_navdd_5v0"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio TEGRA_GPIO(I, 1) 0>; + enable-active-high; + regulator-boot-on; /* Must be set for seamless display */ + regulator-enable-ramp-delay = <232>; + }; + + /* Joycon/Fan power (battery). Maxim MAX8969EWL53+. */ + v_vdd50_a: v-vdd50-a { + compatible = "regulator-fixed"; + regulator-name = "v_vdd50_a"; + regulator-min-microvolt = <5300000>; + regulator-max-microvolt = <5300000>; + gpio = <&gpio TEGRA_GPIO(A, 5) 0>; + enable-active-high; + }; + + /* Joycon/Fan power (usb). DC0 on Odin. Maxim MAX8969EWL53+ on Modin. */ + v_vdd50_b: v-vdd50-b { + compatible = "regulator-fixed"; + regulator-name = "v_vdd50_b"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio TEGRA_GPIO(CC, 4) 0>; + enable-active-high; + }; + + v_vdd5v3: v-vdd5v3 { + compatible = "regulator-fixed"; + status = "okay"; /* Only enabled on Modin/Vali/Fric */ + regulator-name = "v_vdd5v3"; + regulator-min-microvolt = <5300000>; + regulator-max-microvolt = <5300000>; + gpio = <&gpio TEGRA_GPIO(X, 3) 0>; + enable-active-high; + regulator-enable-ramp-delay = <10000>; + }; + + vdd3v3_gc: vdd3v3-gc { + compatible = "regulator-fixed"; + regulator-name = "vdd3v3_gc"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio TEGRA_GPIO(E, 5) 0>; + enable-active-high; + regulator-enable-ramp-delay = <472>; + regulator-disable-ramp-delay = <4880>; + vin-supply = <&vdd_3v3>; + }; + + /* TI TCR2EE48 4.8V */ + en_vdd_jcl_chgr: left-joycon-charger { + compatible = "regulator-fixed"; + status = "okay"; + regulator-name = "left-joycon-charger"; + regulator-min-microvolt = <4800000>; + regulator-max-microvolt = <4800000>; + gpio = <&gpio TEGRA_GPIO(CC, 3) GPIO_ACTIVE_HIGH>; + enable-active-high; + vin-supply = <&v_vdd50_a>; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + /* TI TCR2EE48 4.8V */ + en_vdd_jcr_chgr: right-joycon-charger { + compatible = "regulator-fixed"; + status = "okay"; + regulator-name = "right-joycon-charger"; + regulator-min-microvolt = <4800000>; + regulator-max-microvolt = <4800000>; + gpio = <&gpio TEGRA_GPIO(K, 3) GPIO_ACTIVE_HIGH>; + enable-active-high; + vin-supply = <&v_vdd50_a>; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + /* SDMMC4 for EMMC */ + mmc@700b0600 { + status = "disabled"; + bus-width = <8>; + max-frequency = <200000000>; + + cap-mmc-highspeed; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + mmc-hs400-1_8v; + non-removable; + + vqmmc-supply = <&max77620_sd3>; + vmmc-supply = <&vdd_3v3>; + }; + + /* SDMMC3 Not Used */ + mmc@700b0400 { + status = "disabled"; + + vqmmc-supply = <&max77620_sd3>; + vmmc-supply = <&vdd_3v3>; + }; + + /* SDMMC2 for Gamecard */ + mmc@700b0200 { + status = "disabled"; + bus-width = <8>; + max-frequency = <200000000>; + + mmc-ddr-1_8v; + mmc-hs400-1_8v; + mmc-hs200-1_8v; + cap-mmc-highspeed; + cap-sd-highspeed; + non-removable; + + vqmmc-supply = <&max77620_sd3>; + vmmc-supply = <&vdd_3v3>; + }; + + /* SDMMC1 for SD Card */ + mmc@700b0000 { + status = "okay"; + bus-width = <4>; + max-frequency = <200000000>; + + cap-sd-highspeed; + sd-uhs-sdr12; + sd-uhs-sdr50; + sd-uhs-sdr104; + + cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; + + vmmc-supply = <&en_vdd_sd>; + vqmmc-supply = <&max77620_ldo2>; + }; + + hda@70030000 { + status = "okay"; + }; + + /* i2c1 @ 100000hz + 1c: realtek 5639 + 18: rohm usb-pd + 4c: ti temperature sensor + 6b: ti charger + 36: maxim fuel gauge + */ + i2c@7000c000 { + status = "okay"; + clock-frequency = <100000>; + + bq24193@6b { + compatible = "ti,bq24193"; + reg = <0x6b>; + + interrupt-parent = <&gpio>; + interrupts = ; + + monitored-battery = <&fuel_gauge>; + #extcon-cells = <1>; + + omit-battery-class; + + battery_charger: charger { + regulator-name = "batt_regulator"; + regulator-max-microamp = <4500000>; + }; + + usb0_vbus: usb-otg-vbus { + regulator-name = "vbus_regulator"; + }; + }; + + fuel_gauge: fuel-gauge@36 { + compatible = "maxim,max17050"; + status = "okay"; + reg = <0x36>; + + interrupt-parent = <&gpio>; + interrupts = ; + + /* Actual is 5000 but driver does not account for CGAIN */ + /* And does not take into account Rsense and CGAIN for capacity */ + maxim,rsns-microohm = <10000>; + maxim,over-heat-temp = <600>; + maxim,dead-volt = <3000>; + maxim,over-volt = <4208>; /* Actual: 4258 mV */ + + #thermal-sensor-cells = <0>; + }; + + rt5639: audio-codec@1c { + status = "okay"; + compatible = "realtek,rt5639"; + reg = <0x1c>; + interrupt-parent = <&gpio>; + interrupts = ; + realtek,ldo1-en-gpios = <&gpio TEGRA_GPIO(Z, 4) GPIO_ACTIVE_HIGH>; + realtek,over-current-threshold-microamp = <600>; + realtek,over-current-scale-factor = <2>; + realtek,jack-detect-is-jd1; + }; + + /* PD Chip */ + bm92t: bm92t@18 { + compatible = "rohm,bm92t"; + reg = <0x18>; + interrupt-parent = <&gpio>; + interrupts = ; + #extcon-cells = <1>; + pd_bat_chg-supply = <&battery_charger>; + vbus-source-supply = <&v_vdd5v3>; + vbus-supply = <&usb0_vbus>; + + rohm,dp-lanes = <2>; + rohm,dp-signal-toggle-on-resume; + + /* Absolute max is 2.4A, constrained by BQ24193 ILIM */ + rohm,pd-5v-current-limit-ma = <2000>; + rohm,pd-9v-current-limit-ma = <2000>; + rohm,pd-12v-current-limit-ma = <1500>; + rohm,pd-15v-current-limit-ma = <1200>; + + port { + usb_con_ep: endpoint { + remote-endpoint = <&usb_port_0>; + }; + }; + }; + + tmp451: temperature-sensor@4c { + compatible = "ti,tmp451"; + status = "okay"; + reg = <0x4c>; + + interrupt-parent = <&gpio>; + interrupts = ; + vcc-supply = <&battery_reg>; + + #thermal-sensor-cells = <1>; + }; + }; + + /* i2c3 @ 400000hz + 49: stm touchscreen controller + */ + i2c@7000c500 { + status = "okay"; + clock-frequency = <400000>; + + touchscreen@49 { + compatible = "stm,ftm4_fts"; + status = "okay"; + reg = <0x49>; + interrupt-parent = <&gpio>; + interrupts = ; + vdd-tp-2v9-supply = <&max77620_ldo6>; + stm,vio-gpio = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_HIGH>; + stm,irq_type = <0x2000>; /* IRQF_ONESHOT */ + stm,regulator_avdd = "vdd-tp-2v9"; + stm,max_coords = <1280 720>; + stm,max-real-coords = <1264 704>; + stm,edge-offset = <15 15>; + stm,delayed-open; + stm,delayed-open-time = <0>; + }; + }; + + + /* i2c2 @ 400000hz + 29: rohm ambient light sensor + */ + i2c@7000c400 { + status = "okay"; + clock-frequency = <400000>; + + bh1730fvc: bh1730fvc@29 { + status = "disabled"; + compatible = "rohm,bh1730fvc"; + reg = <0x29>; + als-vid-supply = <&max77620_ldo6>; + als-vdd-supply = <&vdd_3v3>; + rohm,integration-cycle = <38>; + rohm,lux-multiplier = <3600>; + + rohm,opt-win-coeff = < 500 5002 7502 + 754 2250 2000 + 1029 1999 1667 + 1373 884 583 + 1879 309 165>; + + rohm,gain-coeff = < 2500 0 + 1600 7800 + 10 50000 + 0 1000>; + }; + }; + + spi@7000da00 { + status = "disabled"; /* Disabled for Vali */ + num-cs = <1>; + + #address-cells = <1>; + #size-cells = <0>; + + // spi-cs-setup-delay-ns = <2>; + // spi-cs-hold-delay-ns = <2>; + // spi-cs-inactive-delay-ns = <2>; + + /* + * Model WHOAMI: + * LSM6DS3H 0x69, LSM6DSE 0x6A, LSM6DSO 0x6C, ICM40607 0x38. + */ + gyroscope: imu@0 { + reg = <0>; + status = "disabled"; + compatible = "st,lsm6ds3h"; + + #address-cells = <1>; + #size-cells = <0>; + + spi-max-frequency = <8000000>; + + /* SPI Mode-3 */ + spi-cpha; + spi-cpol; + + interrupt-parent = <&gpio>; + interrupts = ; + + vdd-supply = <&battery_reg>; + vddio-supply = <&battery_reg>; + + st,drdy-int-pin = <2>; + + nvidia,rx-clk-tap-delay = <0x1f>; + nvidia,tx-clk-tap-delay = <0x0>; + + + mount-matrix = + "1", "0", "0", /* X: x */ + "0", "1", "0", /* Y: y */ + "0", "0", "1"; /* Z: z */ + }; + }; + + gpio-keys { + compatible = "gpio-keys"; + + key-volume-down { + label = "Volume Down"; + gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>; + linux,input-type = ; + linux,code = ; + debounce-interval = <10>; + }; + + key-volume-up { + label = "Volume Up"; + gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>; + linux,input-type = ; + linux,code = ; + debounce-interval = <10>; + }; + }; + + gpio@6000d000 { + boot-default-output-high { + gpio-hog; + output-high; + gpios = ; /* Wi-Fi Reset. Powered on by default. */ + line-name = "boot-default-output-high"; + }; + }; + + pwm@7000a000 { + status = "okay"; + #pwm-cells = <2>; + }; + + fan: pwm-fan { + compatible = "pwm-fan"; + cooling-min-state = <0>; + cooling-max-state = <5>; + #cooling-cells = <2>; + pwms = <&pwm 1 33333>; + fan-supply = <&v_vdd50_a>; + enable-gpios = <&gpio TEGRA_GPIO(A, 5) GPIO_ACTIVE_HIGH>; + /* cooling level (0, 1, 2, 3, 4, 5) - pwm inverted */ + cooling-levels = <255 204 153 102 51 0>; + }; + + sound { + status = "okay"; + compatible = "nvidia,tegra-audio-rt5640-tx1", + "nvidia,tegra-audio-rt5640"; + nvidia,model = "Nintendo Switch"; + + nvidia,audio-codec = <&rt5639>; + nvidia,i2s-controller = <&tegra_i2s1>; + // nvidia,hp-det-gpios = <&gpio 143 0>; + + clocks = <&tegra_car TEGRA210_CLK_PLL_A>, + <&tegra_car TEGRA210_CLK_PLL_A_OUT0>, + <&tegra_car TEGRA210_CLK_CLK_M>; + clock-names = "pll_a", "plla_out0", "mclk"; + + assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>, + <&tegra_car TEGRA210_CLK_PLL_A_OUT0>, + <&tegra_car TEGRA210_CLK_D_AUDIO>, + <&tegra_car TEGRA210_CLK_EXTERN1>; + assigned-clock-rates = <368640000>, <36864000>, + <36864000>, <12288000>; + + nvidia,audio-routing = + "Headphones", "HPOL", + "Headphones", "HPOR", + "Speakers", "SPORP", + "Speakers", "SPORN", + "Speakers", "SPOLP", + "Speakers", "SPOLN", + "IN1P", "Mic Jack", + "IN1P", "Mic Jack"; + }; + + thermal-zones { + cpu { + polling-delay-passive = <250>; + polling-delay = <500>; + status = "okay"; + + /* Based on Console profile SoC: 95% (100% at Handheld) */ + coefficients = <95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>; + thermal-sensors = <&tmp451 1>; + + trips { + cpu_critical: cpu-critical { + temperature = <102500>; + hysteresis = <0>; + type = "critical"; + }; + + cpu_heavy: cpu-heavy { + temperature = <98500>; + hysteresis = <1000>; + type = "hot"; + }; + + cpu_throttle: cpu-throttle { + temperature = <89000>; + hysteresis = <2000>; + type = "passive"; + }; + + cpu_cap_trip1: cpu-cap-trip1 { + temperature = <58000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_floor_trip1: cpu-floor-trip1 { + temperature = <53000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_cap_trip0: cpu-cap-trip0 { + temperature = <48000>; + hysteresis = <2000>; + type = "active"; + }; + + cpu_floor_trip0: cpu-floor-trip0 { + temperature = <43000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + map0 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu_critical>; + }; + + map1 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu_heavy>; + }; + + map2 { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu_throttle>; + }; + + map3 { + cooling-device = <&fan 1 1>; + trip = <&cpu_cap_trip1>; + }; + + map4 { + cooling-device = <&fan 2 2>; + trip = <&cpu_floor_trip1>; + }; + + map5 { + cooling-device = <&fan 3 3>; + trip = <&cpu_cap_trip0>; + }; + + map6 { + cooling-device = <&fan 4 4>; + trip = <&cpu_floor_trip0>; + }; + }; + }; + + gpu { + polling-delay-passive = <250>; + polling-delay = <500>; + status = "okay"; + thermal-sensors = <&tmp451 1>; + + trips { + gpu_critical: gpu-critical { + temperature = <103000>; + hysteresis = <0>; + type = "critical"; + }; + + gpu_heavy: gpu-heavy { + temperature = <100000>; + hysteresis = <1000>; + type = "hot"; + }; + + gpu_throttle: gpu-throttle { + temperature = <90500>; + hysteresis = <0>; + type = "passive"; + }; + }; + + cooling-maps { + map0 { + trip = <&gpu_critical>; + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + map1 { + trip = <&gpu_heavy>; + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + map2 { + trip = <&gpu_throttle>; + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; + }; + + pmic { + status = "okay"; + polling-delay-passive = <250>; + polling-delay = <500>; + thermal-sensors = <&max77620>; + + trips { + pmic_die_warn_temp_thresh: hot-die { + temperature = <120000>; + type = "hot"; + hysteresis = <0>; + }; + + pmic_die_cirt_temp_thresh: critical-die { + temperature = <140000>; + type = "critical"; + hysteresis = <0>; + }; + }; + + cooling-maps { + map0 { + trip = <&pmic_die_warn_temp_thresh>; + cooling-device = <&throttle_heavy 1 1>; + contribution = <100>; + }; + }; + }; + + cpu_vreg { + status = "okay"; + polling-delay-passive = <250>; + polling-delay = <500>; + thermal-sensors = <&cpu_max_reg>; + + trips { + cpu_vreg_die_warn_temp_thresh: hot-die { + temperature = <120000>; + type = "hot"; + hysteresis = <0>; + }; + }; + + cooling-maps { + map0 { + trip = <&cpu_vreg_die_warn_temp_thresh>; + cooling-device = <&throttle_heavy 1 1>; + contribution = <100>; + }; + }; + }; + + gpu_vreg { + status = "okay"; + polling-delay-passive = <250>; + polling-delay = <500>; + thermal-sensors = <&gpu_max_reg>; + + trips { + gpu_vreg_die_warn_temp_thresh: hot-die { + temperature = <120000>; + type = "hot"; + hysteresis = <0>; + }; + }; + + cooling-maps { + /* + * There are currently no cooling maps, + * because there are no cooling devices. + */ + }; + }; + }; + +}; diff --git a/arch/arm64/boot/dts/nvidia/tegra210-odin.dts b/arch/arm64/boot/dts/nvidia/tegra210-odin.dts new file mode 100644 index 000000000000..82754184364e --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210-odin.dts @@ -0,0 +1,2253 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "tegra210-nx.dtsi" + +/ { + model = "Nintendo Switch (2017)"; + compatible = "nintendo,icosa", "nvidia,tegra210"; + serial-number = "1234"; + + #address-cells = <2>; + #size-cells = <2>; + + external-memory-controller@7001b000 { + status = "okay"; + + clocks = <&tegra_car TEGRA210_CLK_EMC>, + <&tegra_car TEGRA210_CLK_PLL_M>, + <&tegra_car TEGRA210_CLK_PLL_C>, + <&tegra_car TEGRA210_CLK_PLL_P>, + <&tegra_car TEGRA210_CLK_CLK_M>, + <&tegra_car TEGRA210_CLK_PLL_MB>, + <&tegra_car TEGRA210_CLK_PLL_MB_UD>, + <&tegra_car TEGRA210_CLK_PLL_P_UD>; + + clock-names = "emc", "pll_m", "pll_c", "pll_p", "mclk", + "pll_mb", "pll_mb_ud", "pll_p_ud"; + #thermal-sensor-cells = <0>; + + nvidia,use-smc-emc-tables; + }; + + pcie@1003000 { + status = "okay"; + + hvddio-pex-supply = <&max77620_sd3>; + dvddio-pex-supply = <&max77620_ldo1>; + vddio-pex-ctl-supply = <&max77620_sd3>; + + pci@1,0 { + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; + phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3"; + nvidia,num-lanes = <4>; + status = "okay"; + }; + + pci@2,0 { + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>; + phy-names = "pcie-0"; + status = "okay"; + + wifi { /* PCIE-0 (Port 1) */ + compatible = "brcm,bcm4356-fmac"; + brcm,reset_on_wake; + }; + }; + }; + + host1x@50000000 { + dsia: dsi@54300000 { + avdd-dsi-csi-supply = <&max77620_gpio7>; + }; + + dc@54200000 { + avdd_dsi_csi-supply = <&max77620_gpio7>; + }; + + vi: i2c@546c0000 { + avdd_dsi_csi-supply = <&max77620_gpio7>; + }; + }; + + gpio@6000d000 { + boot-default-input { + gpio-hog; + input; + gpios = < + TEGRA_GPIO(E, 6) GPIO_ACTIVE_LOW /* Joycon (L) Wake Detect */ + TEGRA_GPIO(H, 6) GPIO_ACTIVE_LOW /* Joycon (R) Wake Detect */ + TEGRA_GPIO(X, 5) GPIO_ACTIVE_HIGH /* Power Button (Not connected) */ + TEGRA_GPIO(Y, 1) GPIO_ACTIVE_LOW /* Home Button (RCM) */ + TEGRA_GPIO(S, 1) GPIO_ACTIVE_LOW /* Charger IC (BQ24193) Battery Charge Status */ + TEGRA_GPIO(S, 3) GPIO_ACTIVE_LOW /* Gamecard Detect */ + TEGRA_GPIO(Z, 3) GPIO_ACTIVE_LOW /* SD Card Write Protected */ + TEGRA_GPIO(H, 2) GPIO_ACTIVE_LOW /* Wi-Fi Wake Host */ + TEGRA_GPIO(H, 5) GPIO_ACTIVE_LOW /* Bluetooth - BT Module -> Wake AP */ + TEGRA_GPIO(K, 0) GPIO_ACTIVE_HIGH /* Bluetooth Gpio2 */ + TEGRA_GPIO(K, 1) GPIO_ACTIVE_HIGH /* Bluetooth Gpio3 */ + TEGRA_GPIO(K, 2) GPIO_ACTIVE_HIGH /* Bluetooth Gpio4 */ + TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW /* Unused */ + + TEGRA_GPIO(P, 0) GPIO_ACTIVE_LOW /* SDEV Odin/Modin */ + TEGRA_GPIO(BB, 2) GPIO_ACTIVE_HIGH /* Ram Code 3 */ + TEGRA_GPIO(CC, 2) GPIO_ACTIVE_HIGH /* Ram Code 2 */ + >; + line-name = "boot-default-input"; + }; + + boot-default-output-low { + gpio-hog; + output-low; + gpios = < + TEGRA_GPIO(BB, 3) GPIO_ACTIVE_HIGH /* Gamecard Reset */ + TEGRA_GPIO(V, 5) GPIO_ACTIVE_HIGH /* USB-PD (BM92T36) Reset. Use it to reset bm92t (128 ms debounce)? */ + TEGRA_GPIO(K, 5) GPIO_ACTIVE_HIGH /* USB-PD (BM92T36) VCONN Power Enable. HOS sets it to 0 */ + TEGRA_GPIO(J, 5) GPIO_ACTIVE_HIGH /* Charger IC (BQ24193) Charge Select 1 */ + TEGRA_GPIO(L, 0) GPIO_ACTIVE_HIGH /* Charger IC (BQ24193) Charge Select 2 */ + TEGRA_GPIO(H, 0) GPIO_ACTIVE_HIGH /* Wi-Fi RF Disable */ + TEGRA_GPIO(H, 7) GPIO_ACTIVE_HIGH /* TODO: What's this? Bluetooth Gpio5 */ + >; + line-name = "boot-default-output-low"; + }; + }; + + pinmux: pinmux@700008d4 { + pinctrl-names = "default", "drive", "unused"; + pinctrl-0 = <&pinmux_default>; + pinctrl-1 = <&drive_default>; + pinctrl-2 = <&pinmux_unused_lowpower>; + + pinmux_default: common { + /* SFIO Pin Configuration */ + aud_mclk_pbb0 { /* 3180 */ + nvidia,pins = "aud_mclk_pbb0"; + nvidia,function = "aud"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dvfs_pwm_pbb1 { /* 3184 */ + nvidia,pins = "dvfs_pwm_pbb1"; + nvidia,function = "cldvfs"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap1_din_pb1 { /* 3128 */ + nvidia,pins = "dap1_din_pb1"; + nvidia,function = "i2s1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap1_dout_pb2 { /* 312c */ + nvidia,pins = "dap1_dout_pb2"; + nvidia,function = "i2s1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap1_fs_pb0 { /* 3124 */ + nvidia,pins = "dap1_fs_pb0"; + nvidia,function = "i2s1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap1_sclk_pb3 { /* 3030 */ + nvidia,pins = "dap1_sclk_pb3"; + nvidia,function = "i2s1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dmic1_clk_pe0 { /* 30a4 */ + nvidia,pins = "dmic1_clk_pe0"; + nvidia,function = "dmic1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dmic1_dat_pe1 { /* 30a8 */ + nvidia,pins = "dmic1_dat_pe1"; + nvidia,function = "dmic1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dmic2_clk_pe2 { /* 30ac */ + nvidia,pins = "dmic2_clk_pe2"; + nvidia,function = "dmic2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dmic2_dat_pe3 { /* 30b0 */ + nvidia,pins = "dmic2_dat_pe3"; + nvidia,function = "dmic2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* SD Card Power Enable */ + dmic3_clk_pe4 { /* 30b4 */ + nvidia,pins = "dmic3_clk_pe4"; + nvidia,function = "rsvd3"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Gamecard Power Enable */ + dmic3_dat_pe5 { /* 30b8 */ + nvidia,pins = "dmic3_dat_pe5"; + nvidia,function = "rsvd3"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + gen3_i2c_scl_pf0 { /* 30cc */ + nvidia,pins = "gen3_i2c_scl_pf0"; + nvidia,function = "i2c3"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + gen3_i2c_sda_pf1 { /* 30d0 */ + nvidia,pins = "gen3_i2c_sda_pf1"; + nvidia,function = "i2c3"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + cam_i2c_scl_ps2 { /* 30d4 */ + nvidia,pins = "cam_i2c_scl_ps2"; + nvidia,function = "i2cvi"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + /* Gamecard Detect */ + cam_i2c_sda_ps3 { /* 30d8 */ + nvidia,pins = "cam_i2c_sda_ps3"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + cam1_mclk_ps0 { /* 3154 */ + nvidia,pins = "cam1_mclk_ps0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Charger IC (BQ24193) Battery Charge Status */ + cam2_mclk_ps1 { /* 3158 */ + nvidia,pins = "cam2_mclk_ps1"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pex_l0_clkreq_n_pa1 { /* 303c PARKED */ + nvidia,pins = "pex_l0_clkreq_n_pa1"; + nvidia,function = "pe0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + pex_l0_rst_n_pa0 { /* 3038 */ + nvidia,pins = "pex_l0_rst_n_pa0"; + nvidia,function = "pe0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + pex_l1_clkreq_n_pa4 { /* 3048 */ + nvidia,pins = "pex_l1_clkreq_n_pa4"; + nvidia,function = "pe1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + pex_l1_rst_n_pa3 { /* 3044 */ + nvidia,pins = "pex_l1_rst_n_pa3"; + nvidia,function = "pe1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + pex_wake_n_pa2 { /* 3040 */ + nvidia,pins = "pex_wake_n_pa2"; + nvidia,function = "pe"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + sdmmc1_clk_pm0 { /* 3000 */ + nvidia,pins = "sdmmc1_clk_pm0"; + nvidia,function = "sdmmc1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc1_cmd_pm1 { /* 3004 */ + nvidia,pins = "sdmmc1_cmd_pm1"; + nvidia,function = "sdmmc1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc1_dat0_pm5 { /* 3008 */ + nvidia,pins = "sdmmc1_dat0_pm5"; + nvidia,function = "sdmmc1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc1_dat1_pm4 { /* 300C */ + nvidia,pins = "sdmmc1_dat1_pm4"; + nvidia,function = "sdmmc1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc1_dat2_pm3 { /* 3010 */ + nvidia,pins = "sdmmc1_dat2_pm3"; + nvidia,function = "sdmmc1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc1_dat3_pm2 { /* 3014 */ + nvidia,pins = "sdmmc1_dat3_pm2"; + nvidia,function = "sdmmc1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc3_clk_pp0 { /* 301c */ + nvidia,pins = "sdmmc3_clk_pp0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc3_cmd_pp1 { /* 3020 */ + nvidia,pins = "sdmmc3_cmd_pp1"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc3_dat0_pp5 { /* 3024 */ + nvidia,pins = "sdmmc3_dat0_pp5"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc3_dat1_pp4 { /* 3028 */ + nvidia,pins = "sdmmc3_dat1_pp4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc3_dat2_pp3 { /* 302C */ + nvidia,pins = "sdmmc3_dat2_pp3"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + sdmmc3_dat3_pp2 { /* 3030 */ + nvidia,pins = "sdmmc3_dat3_pp2"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + shutdown { /* 3178 */ + nvidia,pins = "shutdown"; + nvidia,function = "shutdown"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + lcd_te_py2 { /* 31f8 */ + nvidia,pins = "lcd_te_py2"; + nvidia,function = "displaya"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* LCD Backlight PWM */ + lcd_bl_pwm_pv0 { /* 31fc */ + nvidia,pins = "lcd_bl_pwm_pv0"; + nvidia,function = "pwm0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Fan PWM */ + lcd_gpio2_pv4 { /* 320c */ + nvidia,pins = "lcd_gpio2_pv4"; + nvidia,function = "pwm1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pwr_i2c_scl_py3 { /* 30dc */ + nvidia,pins = "pwr_i2c_scl_py3"; + nvidia,function = "i2cpmu"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + pwr_i2c_sda_py4 { /* 30e0 */ + nvidia,pins = "pwr_i2c_sda_py4"; + nvidia,function = "i2cpmu"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + clk_32k_in { /* 3160 */ + nvidia,pins = "clk_32k_in"; + nvidia,function = "clk"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + clk_32k_out_py5 { /* 3164 */ + nvidia,pins = "clk_32k_out_py5"; + nvidia,function = "soc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* SD Card Detect */ + pz1 { + nvidia,pins = "pz1"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Audio Codec (ALC5639) Power Enable */ + pz4 { /* 328c */ + nvidia,pins = "pz4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pz5 { /*3290 */ + nvidia,pins = "pz5"; + nvidia,function = "soc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + clk_req { /* 316c */ + nvidia,pins = "clk_req"; + nvidia,function = "sys"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + core_pwr_req { /* 317c */ + nvidia,pins = "core_pwr_req"; + nvidia,function = "core"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* 3170 */ + cpu_pwr_req { + nvidia,pins = "cpu_pwr_req"; + nvidia,function = "cpu"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pwr_int_n { /* 3174 */ + nvidia,pins = "pwr_int_n"; + nvidia,function = "pmi"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap4_din_pj5 { /* 3148 */ + nvidia,pins = "dap4_din_pj5"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap4_dout_pj6 { /* 314c */ + nvidia,pins = "dap4_dout_pj6"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap4_fs_pj4 { /* 3144 */ + nvidia,pins = "dap4_fs_pj4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Touchscreen (4CD60D) Reset */ + dap4_sclk_pj7 { /* 3150 */ + nvidia,pins = "dap4_sclk_pj7"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + gen1_i2c_scl_pj1 { /* 30bc */ + nvidia,pins = "gen1_i2c_scl_pj1"; + nvidia,function = "i2c1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + gen1_i2c_sda_pj0 { /* 30c0 */ + nvidia,pins = "gen1_i2c_sda_pj0"; + nvidia,function = "i2c1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + gen2_i2c_scl_pj2 { /* 30c4 */ + nvidia,pins = "gen2_i2c_scl_pj2"; + nvidia,function = "i2c2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + gen2_i2c_sda_pj3 { /* 30c8 */ + nvidia,pins = "gen2_i2c_sda_pj3"; + nvidia,function = "i2c2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + uart1_tx_pu0 { /* 30e4 */ + nvidia,pins = "uart1_tx_pu0"; + nvidia,function = "uarta"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart1_rx_pu1 { /* 30e8 */ + nvidia,pins = "uart1_rx_pu1"; + nvidia,function = "uarta"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart1_rts_pu2 { /* 30ec */ + nvidia,pins = "uart1_rts_pu2"; + nvidia,function = "uarta"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart1_cts_pu3 { /* 30f0 */ + nvidia,pins = "uart1_cts_pu3"; + nvidia,function = "uarta"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + jtag_rtck { /* 315c */ + nvidia,pins = "jtag_rtck"; + nvidia,function = "jtag"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth GPIO2 */ + pk0 { /* 3254 */ + nvidia,pins = "pk0"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth GPIO3 */ + pk1 { /* 3258 */ + nvidia,pins = "pk1"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth GPIO4 */ + pk2 { /* 325c */ + nvidia,pins = "pk2"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Joycon (R) Charge Enable */ + pk3 { /* 3260 */ + nvidia,pins = "pk3"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Joycon (L) Charge Enable */ + spdif_in_pcc3 { /* 31a4 */ + nvidia,pins = "spdif_in_pcc3"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pl1 { /* 3278 */ + nvidia,pins = "pl1"; + nvidia,function = "soc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi1_mosi_pc0 { /* 3050 */ + nvidia,pins = "spi1_mosi_pc0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi1_miso_pc1 { /* 3054 */ + nvidia,pins = "spi1_miso_pc1"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi1_sck_pc2 { /* 3058 */ + nvidia,pins = "spi1_sck_pc2"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi1_cs0_pc3 { /* 305c */ + nvidia,pins = "spi1_cs0_pc3"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi1_cs1_pc4 { /* 3060 */ + nvidia,pins = "spi1_cs1_pc4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* IMU access */ + spi4_mosi_pc7 { + nvidia,pins = "spi4_mosi_pc7"; + nvidia,function = "spi4"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi4_miso_pd0 { /* 307c */ + nvidia,pins = "spi4_miso_pd0"; + nvidia,function = "spi4"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi4_sck_pc5 { /* 3080 */ + nvidia,pins = "spi4_sck_pc5"; + nvidia,function = "spi4"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi4_cs0_pc6 { /* 3084 */ + nvidia,pins = "spi4_cs0_pc6"; + nvidia,function = "spi4"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart2_tx_pg0 { /* 30f4 */ + nvidia,pins = "uart2_tx_pg0"; + nvidia,function = "uartb"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart2_rx_pg1 { /* 30f8 */ + nvidia,pins = "uart2_rx_pg1"; + nvidia,function = "uartb"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart2_rts_pg2 { /* 30fc */ + nvidia,pins = "uart2_rts_pg2"; + nvidia,function = "uartb"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart2_cts_pg3 { /* 3100 */ + nvidia,pins = "uart2_cts_pg3"; + nvidia,function = "uartb"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart3_tx_pd1 { /* 3104 */ + nvidia,pins = "uart3_tx_pd1"; + nvidia,function = "uartc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart3_rx_pd2 { /* 3108 */ + nvidia,pins = "uart3_rx_pd2"; + nvidia,function = "uartc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart3_rts_pd3 { /* 310C */ + nvidia,pins = "uart3_rts_pd3"; + nvidia,function = "uartc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart3_cts_pd4 { /* 3110 */ + nvidia,pins = "uart3_cts_pd4"; + nvidia,function = "uartc"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart4_tx_pi4 { /* 3114 */ + nvidia,pins = "uart4_tx_pi4"; + nvidia,function = "uartd"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart4_rx_pi5 { /* 3118 */ + nvidia,pins = "uart4_rx_pi5"; + nvidia,function = "uartd"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart4_rts_pi6 { /* 311c */ + nvidia,pins = "uart4_rts_pi6"; + nvidia,function = "uartd"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + uart4_cts_pi7 { /* 3120 */ + nvidia,pins = "uart4_cts_pi7"; + nvidia,function = "uartd"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap2_din_paa2 { /* 3138 */ + nvidia,pins = "dap2_din_paa2"; + nvidia,function = "i2s2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap2_dout_paa3 { /* 313c */ + nvidia,pins = "dap2_dout_paa3"; + nvidia,function = "i2s2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap2_fs_paa0 { /* 3134 */ + nvidia,pins = "dap2_fs_paa0"; + nvidia,function = "i2s2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + dap2_sclk_paa1 { /* 3140 */ + nvidia,pins = "dap2_sclk_paa1"; + nvidia,function = "i2s2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* 5V Regulator - USB */ + usb_vbus_en0_pcc4 { + nvidia,pins = "usb_vbus_en0_pcc4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + usb_vbus_en1_pcc5 { /* 31ac */ + nvidia,pins = "usb_vbus_en1_pcc5"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + hdmi_cec_pcc0 { /* 3198 */ + nvidia,pins = "hdmi_cec_pcc0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + /* GPIO Pin Configuration */ + dvfs_clk_pbb2 { /* 3188 */ + nvidia,pins = "dvfs_clk_pbb2"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Gamecard Reset */ + gpio_x1_aud_pbb3 { /* 318c */ + nvidia,pins = "gpio_x1_aud_pbb3"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Audio Codec (ALC5639) Alert */ + gpio_x3_aud_pbb4 { /* 3190 */ + nvidia,pins = "gpio_x3_aud_pbb4"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Joycon (L) Wake Detect */ + pe6 { + nvidia,pins = "pe6"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + cam_rst_ps4 { /* 31e0 */ + nvidia,pins = "cam_rst_ps4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + cam_af_en_ps5 { /* 31e4 */ + nvidia,pins = "cam_af_en_ps5"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Charger IC (BQ24193) Battery Charge Enable */ + cam_flash_en_ps6 { /* 31e8 */ + nvidia,pins = "cam_flash_en_ps6"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Fan Tachometer */ + cam1_pwdn_ps7 { /* 31ec */ + nvidia,pins = "cam1_pwdn_ps7"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + cam2_pwdn_pt0 { /* 31f0 */ + nvidia,pins = "cam2_pwdn_pt0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + cam1_strobe_pt1 { /* 31f4 */ + nvidia,pins = "cam1_strobe_pt1"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* 5V Regulator - Battery */ + sata_led_active_pa5 { /* 304c */ + nvidia,pins = "sata_led_active_pa5"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + als_prox_int_px3 { /* 3228 */ + nvidia,pins = "als_prox_int_px3"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Temperature Sensor (TMP451) Alert */ + temp_alert_px4 { /* 322c */ + nvidia,pins = "temp_alert_px4"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Motion IRQ */ + motion_int_px2 { /* 3224 */ + nvidia,pins = "motion_int_px2"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Audio Codec (ALC5639) Headphone Detect */ + touch_rst_pv6 { /* 3214 */ + nvidia,pins = "touch_rst_pv6"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + touch_clk_pv7 { /* 3218 */ + nvidia,pins = "touch_clk_pv7"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Touchscreen (4CD60D) IRQ */ + touch_int_px1 { /* 3220 */ + nvidia,pins = "touch_int_px1"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + modem_wake_ap_px0 { /* 321c */ + nvidia,pins = "modem_wake_ap_px0"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Power Button (Unused) */ + button_power_on_px5 { /* 3230 */ + nvidia,pins = "button_power_on_px5"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Volume Up Button */ + button_vol_up_px6 { /* 3234 */ + nvidia,pins = "button_vol_up_px6"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Volume Down Button */ + button_vol_down_px7 { /* 3238 */ + nvidia,pins = "button_vol_down_px7"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Home Button (RCM) */ + button_home_py1 { /* 3240 */ + nvidia,pins = "button_home_py1"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* LCD Backlight Power Enable */ + lcd_bl_en_pv1 { /* 3200 */ + nvidia,pins = "lcd_bl_en_pv1"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* LCD Reset */ + lcd_rst_pv2 { /* 3204 */ + nvidia,pins = "lcd_rst_pv2"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* USB-PD (BM92T36) Reset */ + ap_ready_pv5 { /* 3210 */ + nvidia,pins = "ap_ready_pv5"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Charger IC (BQ24193) IRQ */ + pz0 { /* 327c */ + nvidia,pins = "pz0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* SD Card Write Protect */ + pz3 { /* 3288 */ + nvidia,pins = "pz3"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* USB-PD (BM92T36) IRQ */ + pk4 { /* 3264 */ + nvidia,pins = "pk4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* USB-PD (BM92T36) VCONN Power Enable */ + pk5 { /* 3268 */ + nvidia,pins = "pk5"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* PMIC CPU (MAX77621_CPU) IRQ */ + pk6 { /* 326c */ + nvidia,pins = "pk6"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* PMIC GPU (MAX77621_GPU) IRQ */ + pk7 { /* 3270 */ + nvidia,pins = "pk7"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pl0 { /* 3274 */ + nvidia,pins = "pl0"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Wi-Fi RF Disable */ + wifi_en_ph0 { /* 31b4 */ + nvidia,pins = "wifi_en_ph0"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Wi-Fi Reset */ + wifi_rst_ph1 { /* 31b8 */ + nvidia,pins = "wifi_rst_ph1"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Wi-Fi Wake Host */ + wifi_wake_ap_ph2 { /* 31bc */ + nvidia,pins = "wifi_wake_ap_ph2"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth - AP -> Wake BT Module */ + ap_wake_bt_ph3 { /* 31c0 */ + nvidia,pins = "ap_wake_bt_ph3"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth Reset */ + bt_rst_ph4 { /* 31c4 */ + nvidia,pins = "bt_rst_ph4"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth - BT Module -> Wake AP */ + bt_wake_ap_ph5 { /* 31c8 */ + nvidia,pins = "bt_wake_ap_ph5"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Joycon (R) Wake Detect */ + ph6 { /* 3250 */ + nvidia,pins = "ph6"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* Bluetooth GPIO5 */ + ap_wake_nfc_ph7 { /* 31cc */ + nvidia,pins = "ap_wake_nfc_ph7"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* LCD Power Enable +5V */ + nfc_en_pi0 { /* 31d0 */ + nvidia,pins = "nfc_en_pi0"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + /* LCD Power Enable -5V */ + nfc_int_pi1 { + nvidia,pins = "nfc_int_pi1"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + gps_en_pi2 { /* 31d8 */ + nvidia,pins = "gps_en_pi2"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pcc7 { /* 3194 */ + nvidia,pins = "pcc7"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + dp_hpd0_pcc6 { /* 31b0 */ + nvidia,pins = "dp_hpd0_pcc6"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + hdmi_int_dp_hpd_pcc1 { /* 319c */ + nvidia,pins = "hdmi_int_dp_hpd_pcc1"; + nvidia,function = "dp"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,io-high-voltage = ; + }; + + /* Fuel Gauge IC (MAX17050) IRQ */ + button_slide_sw_py0 { /* 323c */ + nvidia,pins = "button_slide_sw_py0"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pe7 { /* 324c */ + nvidia,pins = "pe7"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + lcd_gpio1_pv3 { /* 3208 */ + nvidia,pins = "lcd_gpio1_pv3"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + }; + + pinmux_unused_lowpower: unused_lowpower { + spi2_mosi_pb4 { /* 3064 */ + nvidia,pins = "spi2_mosi_pb4"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi2_miso_pb5 { /* 3068 */ + nvidia,pins = "spi2_miso_pb5"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi2_sck_pb6 { /* 306c */ + nvidia,pins = "spi2_sck_pb6"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi2_cs0_pb7 { /* 3070 */ + nvidia,pins = "spi2_cs0_pb7"; + nvidia,function = "rsvd2"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + spi2_cs1_pdd0 { /* 3074 */ + nvidia,pins = "spi2_cs1_pdd0"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pa6 { /* 3244 */ + nvidia,pins = "pa6"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + pz2 { /* 3284 */ + nvidia,pins = "pz2"; + nvidia,function = "rsvd3"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + gps_rst_pi3 { /* 31dc */ + nvidia,pins = "gps_rst_pi3"; + nvidia,function = "rsvd0"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + + qspi_io0_pee2 { /* 3090 */ + nvidia,pins = "qspi_io0_pee2"; + nvidia,function = "qspi"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,schmitt = ; + }; + + qspi_io1_pee3 { /* 3094 */ + nvidia,pins = "qspi_io1_pee3"; + nvidia,function = "qspi"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,schmitt = ; + }; + + qspi_sck_pee0 { /* 3088 */ + nvidia,pins = "qspi_sck_pee0"; + nvidia,function = "qspi"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,schmitt = ; + }; + + qspi_cs_n_pee1 { /* 308c */ + nvidia,pins = "qspi_cs_n_pee1"; + nvidia,function = "qspi"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,schmitt = ; + }; + + qspi_io2_pee4 { /* 3098 */ + nvidia,pins = "qspi_io2_pee4"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,schmitt = ; + }; + + qspi_io3_pee5 { /* 309c */ + nvidia,pins = "qspi_io3_pee5"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + nvidia,schmitt = ; + }; + + spdif_out_pcc2 { /* 31a0 */ + nvidia,pins = "spdif_out_pcc2"; + nvidia,function = "rsvd1"; + nvidia,pull = ; + nvidia,tristate = ; + nvidia,enable-input = ; + }; + }; + + drive_default: drive { + aud_mclk_pbb0 { + nvidia,pins = "aud_mclk_pbb0"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + cam1_mclk_ps0 { + nvidia,pins = "cam1_mclk_ps0"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + cam2_mclk_ps1 { + nvidia,pins = "cam2_mclk_ps1"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + cam_af_en_ps5 { + nvidia,pins = "cam_af_en_ps5"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + cam_flash_en_ps6 { + nvidia,pins = "cam_flash_en_ps6"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + cam_i2c_scl_ps2 { + nvidia,pins = "cam_i2c_scl_ps2"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + cam_i2c_sda_ps3 { + nvidia,pins = "cam_i2c_sda_ps3"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + dmic3_clk_pe4 { + nvidia,pins = "dmic3_clk_pe4"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x1F>; + }; + dmic3_dat_pe5 { + nvidia,pins = "dmic3_dat_pe5"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x1F>; + }; + dap4_din_pj5 { + nvidia,pins = "dap4_din_pj5"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dap4_dout_pj6 { + nvidia,pins = "dap4_dout_pj6"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dap4_fs_pj4 { + nvidia,pins = "dap4_fs_pj4"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dap4_sclk_pj7 { + nvidia,pins = "dap4_sclk_pj7"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dmic1_clk_pe0 { + nvidia,pins = "dmic1_clk_pe0"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dmic1_dat_pe1 { + nvidia,pins = "dmic1_dat_pe1"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dmic2_clk_pe2 { + nvidia,pins = "dmic2_clk_pe2"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + dmic2_dat_pe3 { + nvidia,pins = "dmic2_dat_pe3"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + touch_clk_pv7 { + nvidia,pins = "touch_clk_pv7"; + nvidia,pull-down-strength = <0x14>; + nvidia,pull-up-strength = <0x14>; + }; + gen1_i2c_scl_pj1 { + nvidia,pins = "gen1_i2c_scl_pj1"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + gen1_i2c_sda_pj0 { + nvidia,pins = "gen1_i2c_sda_pj0"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + gen2_i2c_scl_pj2 { + nvidia,pins = "gen2_i2c_scl_pj2"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + gen2_i2c_sda_pj3 { + nvidia,pins = "gen2_i2c_sda_pj3"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + gen3_i2c_scl_pf0 { + nvidia,pins = "gen3_i2c_scl_pf0"; + nvidia,pull-down-strength = <0x7>; + nvidia,pull-up-strength = <0x00>; + }; + gen3_i2c_sda_pf1 { + nvidia,pins = "gen3_i2c_sda_pf1"; + nvidia,pull-down-strength = <0x7>; + nvidia,pull-up-strength = <0x00>; + }; + pwr_i2c_scl_py3 { + nvidia,pins = "pwr_i2c_scl_py3"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + pwr_i2c_sda_py4 { + nvidia,pins = "pwr_i2c_sda_py4"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x00>; + }; + spi1_cs0_pc3 { + nvidia,pins = "spi1_cs0_pc3"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi1_cs1_pc4 { + nvidia,pins = "spi1_cs1_pc4"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi1_miso_pc1 { + nvidia,pins = "spi1_miso_pc1"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi1_mosi_pc0 { + nvidia,pins = "spi1_mosi_pc0"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi1_sck_pc2 { + nvidia,pins = "spi1_sck_pc2"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi2_cs0_pb7 { + nvidia,pins = "spi2_cs0_pb7"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi2_cs1_pdd0 { + nvidia,pins = "spi2_cs1_pdd0"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi2_miso_pb5 { + nvidia,pins = "spi2_miso_pb5"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi2_mosi_pb4 { + nvidia,pins = "spi2_mosi_pb4"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + spi2_sck_pb6 { + nvidia,pins = "spi2_sck_pb6"; + nvidia,pull-down-strength = <0x00>; + nvidia,pull-up-strength = <0x00>; + }; + dvfs_clk_pbb2 { + nvidia,pins = "dvfs_clk_pbb2"; + nvidia,pull-down-strength = <0x1F>; + nvidia,pull-up-strength = <0x1F>; + }; + dvfs_pwm_pbb1 { + nvidia,pins = "dvfs_pwm_pbb1"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + pz0 { + nvidia,pins = "pz0"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + pz1 { + nvidia,pins = "pz1"; + nvidia,pull-down-strength = <0x10>; + nvidia,pull-up-strength = <0x10>; + }; + gpio_x1_aud_pbb3 { + nvidia,pins = "gpio_x1_aud_pbb3"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + gpio_x3_aud_pbb4 { + nvidia,pins = "gpio_x3_aud_pbb4"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + uart3_tx_pd1 { + nvidia,pins = "uart3_tx_pd1"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + uart3_rx_pd2 { + nvidia,pins = "uart3_rx_pd2"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + uart3_rts_pd3 { + nvidia,pins = "uart3_rts_pd3"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + uart3_cts_pd4 { + nvidia,pins = "uart3_cts_pd4"; + nvidia,pull-down-strength = <0x04>; + nvidia,pull-up-strength = <0x14>; + }; + }; + }; + + /* i2c5 @ 400000hz + 1b: cpu_max_reg + 1c: gpu_max_reg + 3c: max77620 + 68: max77620_rtc + */ + i2c@7000d000 { + status = "okay"; + clock-frequency = <400000>; + + cpu_max_reg: pmic@1b { + compatible = "maxim,max77621"; + reg = <0x1b>; + interrupt-parent = <&gpio>; + interrupts = ; + regulator-name = "vdd-cpu"; + regulator-min-microvolt = <618750>; + regulator-max-microvolt = <1400000>; + regulator-max-microamp = <9000000>; + regulator-init-microvolt = <1000000>; + regulator-ramp-delay = <12000>; + regulator-enable-ramp-delay = <500>; + regulator-disable-ramp-delay = <60000>; + regulator-boot-on; + regulator-always-on; + #thermal-sensor-cells = <0>; + maxim,enable-active-discharge; + maxim,enable-falling-slew-rate; + maxim,enable-remote-sense; + maxim,externally-enable; + maxim,sleep-on-dvs; + maxim,dvs-default-state = <1>; + maxim,enable-gpio = <&max77620 5 0>; + junction-warn-millicelsius = <120000>; + }; + + gpu_max_reg: pmic@1c { + compatible = "maxim,max77621"; + reg = <0x1c>; + interrupt-parent = <&gpio>; + interrupts = ; + regulator-name = "vdd-gpu"; + regulator-min-microvolt = <618750>; + regulator-max-microvolt = <1150000>; + regulator-max-microamp = <15000000>; + regulator-init-microvolt = <1000000>; + regulator-ramp-delay = <12000>; + regulator-enable-ramp-delay = <500>; + regulator-disable-ramp-delay = <60000>; + #thermal-sensor-cells = <0>; + maxim,enable-active-discharge; + maxim,enable-falling-slew-rate; + maxim,enable-remote-sense; + maxim,enable-bias-control; + maxim,dvs-default-state = <1>; + maxim,enable-gpio = <&max77620 6 0>; + junction-warn-millicelsius = <120000>; + }; + + max77620: max77620@3c { + compatible = "maxim,max77620"; + status = "okay"; + reg = <0x3c>; + interrupts = ; /* TEGRA_GPIO(K, 6) / PMU_EXT */ + + #address-cells = <1>; + + #interrupt-cells = <2>; + interrupt-controller; + + gpio-controller; + #gpio-cells = <2>; + + #thermal-sensor-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&max77620_default>; + + max77620_default: pinmux { + gpio0 { + pins = "gpio0"; + function = "gpio"; + }; + + gpio1 { + pins = "gpio1"; + function = "gpio"; + }; + + gpio2 { + pins = "gpio2"; + function = "fps-out"; + drive-open-drain = <1>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + }; + + /* vdd_3v3 */ + gpio3 { + pins = "gpio3"; + function = "fps-out"; + drive-open-drain = <1>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <4>; + maxim,active-fps-power-down-slot = <2>; + }; + + gpio4 { + pins = "gpio4"; + function = "32k-out1"; + }; + + /* 5: cpu_max_reg, 6: gpu_max_reg, 7: dsi panel */ + gpio5_6_7 { + pins = "gpio5", "gpio6", "gpio7"; + function = "gpio"; + drive-push-pull = <1>; + }; + }; + + watchdog { + maxim,wdt-boot-timeout = <16>; + maxim,wdt-clear-time = <13>; + status = "okay"; + dt-override-status-odm-data = <0x00020000 0x00020000>; + }; + + fps { + fps0 { + maxim,fps-event-source = ; + maxim,suspend-fps-time-period-us = <5120>; + }; + + fps1 { + maxim,suspend-fps-time-period-us = <5120>; + maxim,fps-event-source = ; + }; + + fps2 { + maxim,suspend-fps-time-period-us = <5120>; + maxim,fps-event-source = ; + }; + }; + + regulators { + in-sd0-supply = <&battery_reg>; + in-sd1-supply = <&battery_reg>; + in-sd2-supply = <&battery_reg>; + in-sd3-supply = <&battery_reg>; + + in-ldo0-1-supply = <&max77620_sd2>; + in-ldo2-supply = <&vdd_3v3>; + in-ldo3-5-supply = <&vdd_3v3>; + in-ldo4-6-supply = <&battery_reg>; + in-ldo7-8-supply = <&max77620_sd2>; + + max77620_sd0: sd0 { + regulator-name = "vdd-core"; + regulator-min-microvolt = <625000>; + regulator-max-microvolt = <1400000>; + regulator-boot-on; + regulator-always-on; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <1>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <4080>; + maxim,ramp-rate-setting = <27500>; + regulator-ramp-delay = <27500>; + }; + + max77620_sd1: sd1 { + regulator-name = "vddio-ddr"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + /* regulator-init-microvolt = <1125000>; */ /* Controlled by bootloader */ + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <5>; + maxim,active-fps-power-down-slot = <1>; + regulator-enable-ramp-delay = <1000>; + regulator-disable-ramp-delay = <145800>; + maxim,ramp-rate-setting = <27500>; + regulator-ramp-delay = <27500>; + }; + + max77620_sd2: sd2 { + regulator-name = "vdd-pre-reg"; + regulator-min-microvolt = <1325000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-boot-on; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <2>; + maxim,active-fps-power-down-slot = <5>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <32000>; + maxim,ramp-rate-setting = <27500>; + regulator-ramp-delay = <27500>; + }; + + max77620_sd3: sd3 { + regulator-name = "vdd-1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <3>; + maxim,active-fps-power-down-slot = <3>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <118000>; + maxim,ramp-rate-setting = <27500>; + regulator-ramp-delay = <27500>; + }; + + /* Display Panel */ + max77620_ldo0: ldo0 { + regulator-name = "avdd-sys"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-boot-on; /* Must be set for seamless display */ + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <4000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* XUSB, PCIE */ + max77620_ldo1: ldo1 { + regulator-name = "vdd-pex"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1050000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <6000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* SD Card (SDMMC1) */ + max77620_ldo2: ldo2 { + regulator-name = "vddio-sdmmc1"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <7000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* GC Card Vdd */ + max77620_ldo3: ldo3 { + regulator-name = "vdd-gc-3v1"; + regulator-min-microvolt = <3100000>; + regulator-max-microvolt = <3100000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <3000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* RTC domain. Always On */ + max77620_ldo4: ldo4 { + regulator-name = "vdd-rtc"; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + regulator-always-on; + regulator-boot-on; + maxim,active-fps-power-up-slot = <1>; + maxim,active-fps-power-down-slot = <7>; + maxim,active-fps-source = ; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <610>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* GC Card Vddio */ + max77620_ldo5: ldo5 { + regulator-name = "vdd-gc-1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <60>; + regulator-disable-ramp-delay = <3000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* Touch Panel, ALS */ + max77620_ldo6: ldo6 { + regulator-name = "vdd-tp-2v9"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + regulator-boot-on; /* Decrease por time for Touch Panel. */ + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <3000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + max77620_ldo7: ldo7 { + regulator-name = "vdd-gen-pll-edp"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1050000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <3>; + maxim,active-fps-power-down-slot = <4>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <2768>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* DP */ + max77620_ldo8: ldo8 { + regulator-name = "vdd-hdmi-dp"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1050000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <4000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + onoff { + maxim,onoff-keycode = ; + }; + }; + }; + }; + + pmc@7000e400 { + status = "okay"; + #address-cells = <1>; + + nvidia,invert-interrupt; + nvidia,suspend-mode = <0>; + nvidia,cpu-pwr-good-time = <0>; + nvidia,cpu-pwr-off-time = <0>; + nvidia,core-pwr-good-time = <13092 7752>; + nvidia,core-pwr-off-time = <44188>; + nvidia,core-pwr-req-active-high; + nvidia,sys-clock-req-active-high; + + iopad-defaults { + audio-hv-pads { + pins = "audio-hv"; + power-source = ; + }; + + spi-hv-pads { + pins = "spi-hv"; + power-source = ; + }; + + gpio-pads { + pins = "gpio"; + power-source = ; + }; + + sdmmc1-pads { + pins = "sdmmc1"; + }; + + sdmmc3-pads { + pins = "sdmmc3"; + power-source = ; + low-power-enable; + }; + }; + }; + + xusb: usb@70090000 { + status = "okay"; + + phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-6}>; + phy-names = "usb2-0", "usb3-0"; + + extcon = <&bm92t 0>; + extcon-cable-names = "vbus"; + + avdd-usb-supply = <&vdd_3v3>; + dvddio-pex-supply = <&max77620_ldo1>; + hvddio-pex-supply = <&max77620_sd3>; + avdd-pll-utmip-supply = <&max77620_sd3>; + avdd-pll-uerefe-supply = <&max77620_ldo7>; + dvdd-pex-pll-supply = <&max77620_ldo1>; + hvdd-pex-pll-e-supply = <&max77620_sd3>; + dvdd-usb-ss-pll-supply = <&max77620_ldo7>; + hvdd-usb-ss-pll-e-supply = <&max77620_sd3>; + }; + + padctl@7009f000 { + status = "okay"; + + avdd-pll-utmip-supply = <&max77620_sd3>; + avdd-pll-uerefe-supply = <&max77620_ldo7>; + dvdd-pex-pll-supply = <&max77620_ldo1>; + hvdd-pex-pll-e-supply = <&max77620_sd3>; + + pads { + usb2 { + status = "okay"; + + lanes { + usb2-0 { + nvidia,function = "xusb"; + status = "okay"; + }; + }; + }; + + pcie { + status = "okay"; + + lanes { + /* bcm4356A3-wifi */ + pcie-0 { + nvidia,function = "pcie-x1"; + status = "okay"; + }; + /* Unused ports */ + pcie-1 { + nvidia,function = "pcie-x4"; + status = "okay"; + }; + pcie-2 { + nvidia,function = "pcie-x4"; + status = "okay"; + }; + pcie-3 { + nvidia,function = "pcie-x4"; + status = "okay"; + }; + pcie-4 { + nvidia,function = "pcie-x4"; + status = "okay"; + }; + /* XUSB */ + pcie-5 { + nvidia,function = "usb3-ss"; + status = "okay"; + }; + pcie-6 { + nvidia,function = "usb3-ss"; + status = "okay"; + }; + }; + }; + }; + + ports { + usb2-0 { + status = "okay"; + mode = "otg"; + + usb-role-switch; + vbus-supply = <&battery_reg>; + + #address-cells = <1>; + #size-cells = <0>; + + usb_port_0: endpoint@0 { + reg = <0>; + remote-endpoint = <&usb_con_ep>; + }; + }; + + usb3-0 { + status = "okay"; + nvidia,usb2-companion = <0>; + }; + }; + }; + + xudc: usb@700d0000 { + status = "okay"; + + phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-6}>; + phy-names = "usb2-0", "usb3-0"; + + extcon = <&bm92t 1>; + extcon-cable-names = "id"; + + avddio-usb-supply = <&max77620_ldo1>; + hvdd-usb-supply = <&vdd_3v3>; + }; + + aconnect@702c0000 { + status = "okay"; + + dma-controller@702e2000 { + status = "okay"; + }; + + interrupt-controller@702f9000 { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/nvidia/tegra210b01-fric.dts b/arch/arm64/boot/dts/nvidia/tegra210b01-fric.dts new file mode 100644 index 000000000000..7d910cbc81a4 --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210b01-fric.dts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "tegra210b01-nx.dtsi" + +/ { + model = "Nintendo Switch (OLED model)"; + compatible = "nvidia,fric", "nintendo,aula", "nintendo,nx", "nvidia,tegra210b01"; +}; diff --git a/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi b/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi new file mode 100644 index 000000000000..df50d185eb1d --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "tegra210b01.dtsi" + +/ { + aliases { + serial0 = &uarta; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x0 0x80000000 0x0 0xc0000000>; + }; + + serial@70006000 { + /delete-property/ dmas; + /delete-property/ dma-names; + status = "okay"; + }; + + pmc@7000e400 { + nvidia,invert-interrupt; + nvidia,suspend-mode = <0>; + nvidia,cpu-pwr-good-time = <0>; + nvidia,cpu-pwr-off-time = <0>; + nvidia,core-pwr-good-time = <13100 7800>; + nvidia,core-pwr-off-time = <44160>; + nvidia,core-power-req-active-high; + nvidia,sys-clock-req-active-high; + status = "okay"; + }; + + mmc@700b0600 { + bus-width = <8>; + non-removable; + status = "okay"; + }; + + clk32k_in: clock-32k { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + cpus { + cpu@0 { + enable-method = "psci"; + }; + + cpu@1 { + enable-method = "psci"; + }; + + cpu@2 { + enable-method = "psci"; + }; + + cpu@3 { + enable-method = "psci"; + }; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; +}; diff --git a/arch/arm64/boot/dts/nvidia/tegra210b01-odin.dts b/arch/arm64/boot/dts/nvidia/tegra210b01-odin.dts new file mode 100644 index 000000000000..f8bf70f13023 --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210b01-odin.dts @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "tegra210b01-nx.dtsi" + +/ { + + model = "Nintendo Switch (2019)"; + compatible = "nvidia,modin", "nvidia,odin", "nintendo,iowa", "nintendo,nx", "nvidia,tegra210b01"; +}; diff --git a/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts b/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts new file mode 100644 index 000000000000..fdab44553cdc --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "tegra210b01-nx.dtsi" + +/ { + model = "Nintendo Switch Lite"; + compatible = "nvidia,vali", "nintendo,hoag", "nintendo,nx", "nvidia,tegra210b01"; + + /* Joycon/Fan power (usb) */ + v_vdd50_b: v-vdd50-b { + status = "disabled"; /* Only enabled on Odin/Modin */ + }; + + en_vdd_jcl_chgr: left-joycon-charger { + status = "disabled"; /* Only enabled on Odin/Modin/Fric */ + }; + + en_vdd_jcr_chgr: right-joycon-charger { + status = "disabled"; /* Only enabled on Odin/Modin/Fric */ + }; + + spi@7000da00 { + status = "disabled"; /* Disabled for Vali since Sio uses it */ + }; + + /* Right Joycon */ + serial@70006040 { + status = "disabled"; + + joyconr { + status = "disabled"; + }; + }; + + /* Left Joycon / Sio */ + serial@70006200 { + status = "okay"; + /delete-property/ nvidia,invert-txd; + /delete-property/ nvidia,invert-rts; + + joyconl { + status = "disabled"; + }; + + sio { + status = "okay"; + }; + }; + + +};