diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b0d0698 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "makefile.configureOnOpen": true +} \ No newline at end of file diff --git a/tegra210-nx.dtsi b/tegra210-nx.dtsi new file mode 100644 index 0000000..1334389 --- /dev/null +++ b/tegra210-nx.dtsi @@ -0,0 +1,1001 @@ +// 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; + }; + + gpio-keys { + compatible = "gpio-keys"; + gpio-keys,name = "gpio-keys"; + + volume_down { + label = "Volume Down"; + gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <16>; + }; + + volume_up { + label = "Volume Up"; + gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <16>; + }; + }; + + firmware { + android { + compatible = "android,firmware"; + boot_devices = "700b0000.mmc"; + hardware = "nx"; + }; + }; + + 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>; + }; + + pcie@1003000 { + status = "okay"; + + avdd-pll-uerefe-supply = <&max77620_ldo1>; + hvddio-pex-supply = <&max77620_sd3>; + dvddio-pex-supply = <&max77620_ldo1>; + dvdd-pex-pll-supply = <&max77620_ldo1>; + hvdd-pex-pll-e-supply = <&max77620_sd3>; + vddio-pex-ctl-supply = <&max77620_sd3>; + + pci@1,0 { + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>, /* Referred to plat config */ + <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; + phy-names = "pcie-0", "pcie-1"; + nvidia,num-lanes = <2>; + status = "disabled"; + }; + + pci@2,0 { + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>; + phy-names = "pcie-0"; + status = "okay"; + }; + }; + + host1x@50000000 { + dsia: dsi@54300000 { + status = "okay"; + + panel@0 { + compatible = "nintendo,panel-nx-dsi"; + 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 */ + ts_dvdd: ts_dvdd { + compatible = "regulator-fixed"; + status = "okay"; + regulator-name = "ts_dvdd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-enable-ramp-delay = <10000>; + }; + + 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>; + + fts_touch: fts@49 { + compatible = "stm,ftm4_fts"; + status = "okay"; + reg = <0x49>; + interrupt-parent = <&gpio>; + interrupts = ; + 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/tegra210-odin.dts b/tegra210-odin.dts index de5bc00..8275418 100644 --- a/tegra210-odin.dts +++ b/tegra210-odin.dts @@ -1,45 +1,47 @@ -// SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (C) 2025 The LineageOS Project - +// SPDX-License-Identifier: GPL-2.0 /dts-v1/; -#include -#include -#include - -#include "tegra210.dtsi" +#include "tegra210-nx.dtsi" / { model = "Nintendo Switch (2017)"; - compatible = "nintendo,odin", "nintendo,nx", "nvidia,tegra210"; + compatible = "nintendo,icosa", "nvidia,tegra210"; + serial-number = "1234"; - aliases { - rtc0 = "/i2c@7000d000/pmic@3c"; - rtc1 = "/rtc@7000e000"; - serial0 = &uarta; - }; + #address-cells = <2>; + #size-cells = <2>; - chosen { - stdout-path = "serial0:115200n8"; - }; + external-memory-controller@7001b000 { + status = "okay"; - memory@80000000 { - device_type = "memory"; - reg = <0x0 0x80000000 0x1 0x0>; + 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 = <&vdd_1v8>; - dvddio-pex-supply = <&vdd_pex_1v05>; - vddio-pex-ctl-supply = <&vdd_1v8>; + 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}>; + <&{/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"; @@ -50,133 +52,1758 @@ phy-names = "pcie-0"; status = "okay"; - wifi@0,0 { - compatible = "brcm,bcm4356-fmac", "brcm,bcm4329-fmac"; + wifi { /* PCIE-0 (Port 1) */ + compatible = "brcm,bcm4356-fmac"; + brcm,reset_on_wake; }; }; }; host1x@50000000 { - dpaux@54040000 { - status = "okay"; + dsia: dsi@54300000 { + avdd-dsi-csi-supply = <&max77620_gpio7>; }; - dsi@54300000 { - status = "okay"; - - avdd-dsi-csi-supply = <&vdd_dsi_csi>; + dc@54200000 { + avdd_dsi_csi-supply = <&max77620_gpio7>; }; - sor@54580000 { - status = "okay"; + vi: i2c@546c0000 { + avdd_dsi_csi-supply = <&max77620_gpio7>; + }; + }; - avdd-io-hdmi-dp-supply = <&avdd_1v05>; - vdd-hdmi-dp-pll-supply = <&vdd_1v8>; + 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 */ - nvidia,dpaux = <&dpaux1>; - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(CC, 1) - GPIO_ACTIVE_LOW>; + 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"; }; }; - gpu@57000000 { - vdd-supply = <&vdd_gpu>; - status = "okay"; - }; - - /* debug port */ - serial@70006000 { - /delete-property/ dmas; - /delete-property/ dma-names; - status = "okay"; - }; - - pwm@7000a000 { - status = "okay"; + 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>; - vdd_cpu: regulator@1b { + cpu_max_reg: pmic@1b { compatible = "maxim,max77621"; reg = <0x1b>; interrupt-parent = <&gpio>; interrupts = ; - regulator-always-on; - regulator-boot-on; - regulator-init-microvolt = <1000000>; + regulator-name = "vdd-cpu"; regulator-min-microvolt = <618750>; - regulator-max-microamp = <9000000>; regulator-max-microvolt = <1400000>; - regulator-name = "VDD_CPU"; - regulator-disable-ramp-delay = <60000>; - regulator-enable-ramp-delay = <500>; + regulator-max-microamp = <9000000>; + regulator-init-microvolt = <1000000>; regulator-ramp-delay = <12000>; - maxim,dvs-default-state = <1>; + 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-bias-control; maxim,enable-falling-slew-rate; - maxim,enable-gpio = <&pmic 5 0>; 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>; }; - vdd_gpu: regulator@1c { + gpu_max_reg: pmic@1c { compatible = "maxim,max77621"; reg = <0x1c>; interrupt-parent = <&gpio>; interrupts = ; - regulator-init-microvolt = <1000000>; + regulator-name = "vdd-gpu"; regulator-min-microvolt = <618750>; - regulator-max-microamp = <15000000>; regulator-max-microvolt = <1150000>; - regulator-name = "VDD_GPU"; - regulator-disable-ramp-delay = <60000>; - regulator-enable-ramp-delay = <500>; + regulator-max-microamp = <15000000>; + regulator-init-microvolt = <1000000>; regulator-ramp-delay = <12000>; - maxim,dvs-default-state = <1>; + regulator-enable-ramp-delay = <500>; + regulator-disable-ramp-delay = <60000>; + #thermal-sensor-cells = <0>; maxim,enable-active-discharge; - maxim,enable-bias-control; maxim,enable-falling-slew-rate; - maxim,enable-gpio = <&pmic 6 GPIO_ACTIVE_HIGH>; maxim,enable-remote-sense; - maxim,externally-enable; + maxim,enable-bias-control; + maxim,dvs-default-state = <1>; + maxim,enable-gpio = <&max77620 6 0>; + junction-warn-millicelsius = <120000>; }; - pmic: pmic@3c { + max77620: max77620@3c { compatible = "maxim,max77620"; + status = "okay"; reg = <0x3c>; - interrupt-parent = <&tegra_pmc>; - interrupts = <51 IRQ_TYPE_LEVEL_LOW>; + interrupts = ; /* TEGRA_GPIO(K, 6) / PMU_EXT */ + + #address-cells = <1>; #interrupt-cells = <2>; interrupt-controller; - #gpio-cells = <2>; gpio-controller; + #gpio-cells = <2>; + + #thermal-sensor-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&max77620_default>; - fps { - fps0 { - maxim,fps-event-source = ; - maxim,suspend-fps-time-period-us = <5120>; - }; - - fps1 { - maxim,fps-event-source = ; - maxim,suspend-fps-time-period-us = <5120>; - }; - - fps2 { - maxim,fps-event-source = ; - }; - }; - max77620_default: pinmux { gpio0 { pins = "gpio0"; @@ -185,11 +1812,7 @@ gpio1 { pins = "gpio1"; - function = "fps-out"; - drive-push-pull = <1>; - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <7>; + function = "gpio"; }; gpio2 { @@ -201,13 +1824,14 @@ 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 = <3>; + maxim,active-fps-power-down-slot = <2>; }; gpio4 { @@ -215,6 +1839,7 @@ function = "32k-out1"; }; + /* 5: cpu_max_reg, 6: gpu_max_reg, 7: dsi panel */ gpio5_6_7 { pins = "gpio5", "gpio6", "gpio7"; function = "gpio"; @@ -222,257 +1847,315 @@ }; }; + 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-ldo0-1-supply = <&vdd_pre>; - in-ldo2-supply = <&vdd_3v3_sys>; - in-ldo3-5-supply = <&vdd_3v3_sys>; - in-ldo4-6-supply = <&battery_reg>; - in-ldo7-8-supply = <&vdd_pre>; in-sd0-supply = <&battery_reg>; in-sd1-supply = <&battery_reg>; in-sd2-supply = <&battery_reg>; in-sd3-supply = <&battery_reg>; - vdd_core: sd0 { - regulator-name = "VDD_CORE"; + 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-enable-ramp-delay = <50>; - regulator-disable-ramp-delay = <4080>; - regulator-ramp-delay = <27500>; - regulator-always-on; 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>; }; - vdd_ddr: sd1 { - regulator-name = "VDD_DDR_1V1_PMIC"; + max77620_sd1: sd1 { + regulator-name = "vddio-ddr"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1200000>; - regulator-disable-ramp-delay = <145800>; - regulator-enable-ramp-delay = <1000>; - regulator-ramp-delay = <27500>; 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>; }; - vdd_pre: sd2 { - regulator-name = "VDD_PRE_REG_1V35"; + max77620_sd2: sd2 { + regulator-name = "vdd-pre-reg"; regulator-min-microvolt = <1325000>; regulator-max-microvolt = <1350000>; - regulator-disable-ramp-delay = <32000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <27500>; 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>; }; - vdd_1v8: sd3 { - regulator-name = "VDD_1V8"; + max77620_sd3: sd3 { + regulator-name = "vdd-1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; - regulator-disable-ramp-delay = <118000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <27500>; 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>; }; - vdd_sys_1v2: ldo0 { - regulator-name = "AVDD_SYS_1V2"; + /* Display Panel */ + max77620_ldo0: ldo0 { + regulator-name = "avdd-sys"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; - regulator-disable-ramp-delay = <4000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - regulator-boot-on; - + 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>; }; - vdd_pex_1v05: ldo1 { - regulator-name = "VDD_PEX_1V05"; + /* XUSB, PCIE */ + max77620_ldo1: ldo1 { + regulator-name = "vdd-pex"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1050000>; - regulator-disable-ramp-delay = <6000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - 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>; }; - vddio_sdmmc: ldo2 { - regulator-name = "VDDIO_SDMMC"; + /* SD Card (SDMMC1) */ + max77620_ldo2: ldo2 { + regulator-name = "vddio-sdmmc1"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; - regulator-disable-ramp-delay = <7000>; - regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - 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>; }; - ldo3 { - regulator-name = "VDD_GC_3V1"; + /* GC Card Vdd */ + max77620_ldo3: ldo3 { + regulator-name = "vdd-gc-3v1"; regulator-min-microvolt = <3100000>; regulator-max-microvolt = <3100000>; - regulator-disable-ramp-delay = <3000>; - regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - 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>; }; - vdd_rtc: ldo4 { - regulator-name = "VDD_RTC"; + /* RTC domain. Always On */ + max77620_ldo4: ldo4 { + regulator-name = "vdd-rtc"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <850000>; - regulator-disable-ramp-delay = <610>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - regulator-disable-active-discharge; regulator-always-on; regulator-boot-on; - - maxim,active-fps-source = ; 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>; }; - ldo5 { - regulator-name = "VDDIO_GC_1V8"; + /* GC Card Vddio */ + max77620_ldo5: ldo5 { + regulator-name = "vdd-gc-1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; - regulator-disable-ramp-delay = <3000>; - regulator-enable-ramp-delay = <60>; - regulator-ramp-delay = <50000>; - 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>; }; - ldo6 { - regulator-name = "VDD_TOUCH"; + /* Touch Panel, ALS */ + max77620_ldo6: ldo6 { + regulator-name = "vdd-tp-2v9"; regulator-min-microvolt = <2900000>; regulator-max-microvolt = <2900000>; - regulator-disable-ramp-delay = <3000>; - regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - regulator-boot-on; - + 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>; }; - avdd_1v05_pll: ldo7 { - regulator-name = "AVDD_1V05_PLL"; + max77620_ldo7: ldo7 { + regulator-name = "vdd-gen-pll-edp"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1050000>; - regulator-disable-ramp-delay = <2768>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - 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>; }; - avdd_1v05: ldo8 { - regulator-name = "AVDD_SATA_HDMI_DP_1V05"; + /* DP */ + max77620_ldo8: ldo8 { + regulator-name = "vdd-hdmi-dp"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1050000>; - regulator-disable-ramp-delay = <4000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <6>; - maxim,active-fps-power-down-slot = <1>; + 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-power-req-active-high; + 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; + }; + }; }; - hda@70030000 { - nvidia,model = "Nintendo Switch"; - + xusb: usb@70090000 { status = "okay"; - }; - usb@70090000 { phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>, - <&{/padctl@7009f000/pads/pcie/lanes/pcie-6}>; + <&{/padctl@7009f000/pads/pcie/lanes/pcie-6}>; phy-names = "usb2-0", "usb3-0"; - avdd-usb-supply = <&vdd_3v3_sys>; - dvddio-pex-supply = <&vdd_pex_1v05>; - hvddio-pex-supply = <&vdd_1v8>; + extcon = <&bm92t 0>; + extcon-cable-names = "vbus"; - status = "okay"; + 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"; + status = "okay"; - avdd-pll-utmip-supply = <&vdd_1v8>; - avdd-pll-uerefe-supply = <&avdd_1v05_pll>; - dvdd-pex-pll-supply = <&vdd_pex_1v05>; - hvdd-pex-pll-e-supply = <&vdd_1v8>; + 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 { - type_c: usb2-0 { + usb2-0 { nvidia,function = "xusb"; status = "okay"; }; @@ -483,36 +2166,33 @@ 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"; @@ -525,12 +2205,16 @@ usb2-0 { status = "okay"; mode = "otg"; - usb-role-switch; + usb-role-switch; vbus-supply = <&battery_reg>; - endpoint@0 { + #address-cells = <1>; + #size-cells = <0>; + + usb_port_0: endpoint@0 { reg = <0>; + remote-endpoint = <&usb_con_ep>; }; }; @@ -541,224 +2225,29 @@ }; }; - mmc@700b0000 { - status = "okay"; - bus-width = <4>; - - cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; - disable-wp; - - vqmmc-supply = <&vddio_sdmmc>; - vmmc-supply = <&vdd_3v3_sd>; - }; - - mmc@700b0600 { - /* explicitly not enabled by default */ - bus-width = <8>; - non-removable; - vqmmc-supply = <&vdd_1v8>; - vmmc-supply = <&vdd_3v3_sys>; - }; - - usb@700d0000 { - status = "okay"; - phys = <&type_c>; - phy-names = "usb2-0"; - avddio-usb-supply = <&vdd_pex_1v05>; - hvdd-usb-supply = <&vdd_3v3_sys>; - }; - - clock@70110000 { + xudc: usb@700d0000 { 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>; + phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-6}>; + phy-names = "usb2-0", "usb3-0"; - vdd-cpu-supply = <&vdd_cpu>; + extcon = <&bm92t 1>; + extcon-cable-names = "id"; + + avddio-usb-supply = <&max77620_ldo1>; + hvdd-usb-supply = <&vdd_3v3>; }; - clk32k_in: clock-32k { - compatible = "fixed-clock"; - clock-frequency = <32768>; - #clock-cells = <0>; - }; + aconnect@702c0000 { + status = "okay"; - cpus { - cpu@0 { - enable-method = "psci"; + dma-controller@702e2000 { + status = "okay"; }; - cpu@1 { - enable-method = "psci"; - }; - - cpu@2 { - enable-method = "psci"; - }; - - cpu@3 { - enable-method = "psci"; - }; - - idle-states { - cpu-sleep { - status = "okay"; - }; - }; - }; - - gpio-keys { - compatible = "gpio-keys"; - - key-volume-down { - label = "Volume Down"; - gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <10>; - }; - - key-volume-up { - label = "Volume Up"; - gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <10>; - }; - }; - - psci { - compatible = "arm,psci-1.0"; - method = "smc"; - }; - - fan: pwm-fan { - compatible = "pwm-fan"; - pwms = <&pwm 1 33333>; - fan-supply = <&vdd_fan>; - - cooling-levels = <255 128 64 0>; - #cooling-cells = <2>; - }; - - battery_reg: regulator-vdd-ac-bat { - compatible = "regulator-fixed"; - - regulator-name = "vdd-ac-bat"; - regulator-min-microvolt = <4800000>; - regulator-max-microvolt = <4800000>; - regulator-always-on; - regulator-boot-on; - }; - - vdd_3v3_sys: regulator-vdd-3v3-sys { - compatible = "regulator-fixed"; - - regulator-name = "VDD_3V3_SYS"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-enable-ramp-delay = <240>; - regulator-always-on; - regulator-boot-on; - - gpio = <&pmic 3 GPIO_ACTIVE_HIGH>; - enable-active-high; - - vin-supply = <&battery_reg>; - }; - - vdd_3v3_sd: regulator-vdd-3v3-sd { - compatible = "regulator-fixed"; - - regulator-name = "VDD_3V3_SD"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-enable-ramp-delay = <472>; - regulator-disable-ramp-delay = <4880>; - - gpio = <&gpio TEGRA_GPIO(E, 4) GPIO_ACTIVE_HIGH>; - enable-active-high; - - vin-supply = <&vdd_3v3_sys>; - }; - - vdd_dsi_csi: regulator-vdd-dsi-csi { - compatible = "regulator-fixed"; - - regulator-name = "AVDD_DSI_CSI_1V2"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - regulator-boot-on; - - gpio = <&pmic 7 GPIO_ACTIVE_HIGH>; - enable-active-high; - - vin-supply = <&vdd_sys_1v2>; - }; - - vdd_fan: regulator-vdd-fan { - compatible = "regulator-fixed"; - regulator-name = "VDD_FAN"; - regulator-min-microvolt = <5300000>; - regulator-max-microvolt = <5300000>; - gpio = <&gpio TEGRA_GPIO(A, 5) GPIO_ACTIVE_LOW>; - vin-supply = <&battery_reg>; - - regulator-enable-ramp-delay = <284>; - }; - - thermal-zones { - cpu-thermal { - trips { - cpu_trip_critical: critical { - temperature = <58000>; - hysteresis = <0>; - type = "critical"; - }; - - cpu_trip_hot: hot { - temperature = <53000>; - hysteresis = <2000>; - type = "hot"; - }; - - cpu_trip_active: active { - temperature = <48000>; - hysteresis = <2000>; - type = "active"; - }; - - cpu_trip_passive: passive { - temperature = <30000>; - hysteresis = <2000>; - type = "passive"; - }; - }; - - cooling-maps { - cpu-critical { - cooling-device = <&fan 3 3>; - trip = <&cpu_trip_critical>; - }; - - cpu-hot { - cooling-device = <&fan 2 2>; - trip = <&cpu_trip_hot>; - }; - - cpu-active { - cooling-device = <&fan 1 1>; - trip = <&cpu_trip_active>; - }; - - cpu-passive { - cooling-device = <&fan 0 0>; - trip = <&cpu_trip_passive>; - }; - }; + interrupt-controller@702f9000 { + status = "okay"; }; }; }; diff --git a/tegra210b01-fric.dts b/tegra210b01-fric.dts index f021c9c..a2aa7c2 100644 --- a/tegra210b01-fric.dts +++ b/tegra210b01-fric.dts @@ -1,31 +1,9 @@ -// SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (C) 2025 The LineageOS Project - +// SPDX-License-Identifier: GPL-2.0 /dts-v1/; -#include "tegra210b01-nx-common.dtsi" +#include "tegra210b01-nx.dtsi" / { - model = "Nintendo Switch OLED"; - compatible = "nintendo,fric", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; - - i2c@7000d000 { - pmic@3c { - regulators { - avdd_1v05: ldo8 { - regulator-name = "AVDD_SATA_HDMI_DP_1V05"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-disable-ramp-delay = <4000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - }; - }; - }; + model = "Nintendo Switch (OLED model)"; + compatible = "nvidia,fric", "nintendo,aula", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; }; diff --git a/tegra210b01-nx-common.dtsi b/tegra210b01-nx-common.dtsi deleted file mode 100644 index 754f0d2..0000000 --- a/tegra210b01-nx-common.dtsi +++ /dev/null @@ -1,747 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (C) 2025 The LineageOS Project - -#include -#include -#include - -#include "tegra210b01.dtsi" - -/ { - aliases { - rtc0 = "/i2c@7000d000/pmic@3c"; - rtc1 = "/rtc@7000e000"; - serial0 = &uarta; - }; - - chosen { - stdout-path = "serial0:115200n8"; - }; - - memory@80000000 { - device_type = "memory"; - reg = <0x0 0x80000000 0x1 0x0>; - }; - - pcie@1003000 { - status = "okay"; - - hvddio-pex-supply = <&vdd_1v8>; - dvddio-pex-supply = <&vdd_pex_1v05>; - vddio-pex-ctl-supply = <&vdd_1v8>; - - pci@1,0 { - phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>, - <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; - phy-names = "pcie-0", "pcie-1"; - nvidia,num-lanes = <2>; - status = "okay"; - }; - - pci@2,0 { - phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>; - phy-names = "pcie-0"; - status = "okay"; - - wifi@0,0 { - compatible = "brcm,bcm4356-fmac", "brcm,bcm4329-fmac"; - }; - }; - }; - - host1x@50000000 { - dpaux@54040000 { - status = "okay"; - }; - - dsi@54300000 { - status = "okay"; - - avdd-dsi-csi-supply = <&vdd_sys_1v2>; - }; - - sor@54580000 { - status = "okay"; - - avdd-io-hdmi-dp-supply = <&avdd_1v05>; - vdd-hdmi-dp-pll-supply = <&vdd_1v8>; - - nvidia,dpaux = <&dpaux1>; - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(CC, 1) - GPIO_ACTIVE_LOW>; - }; - }; - - gpu@57000000 { - vdd-supply = <&vdd_gpu>; - status = "okay"; - }; - - /* debug port */ - serial@70006000 { - /delete-property/ dmas; - /delete-property/ dma-names; - status = "okay"; - }; - - pwm@7000a000 { - status = "okay"; - }; - - i2c@7000d000 { - status = "okay"; - clock-frequency = <400000>; - - max77812: max77812@33 { - compatible = "maxim,max77812-regulator"; - reg = <0x33>; - maxim,soft-start-slew-rate = <5000>; - maxim,shutdown-slew-rate = <5000>; - maxim,ramp-up-slew-rate = <5000>; - maxim,ramp-down-slew-rate = <5000>; - status = "okay"; - - regulators { - vin-supply = <&battery_reg>; - - vdd_gpu: m1vout { - regulator-name = "vdd-gpu"; - regulator-disable-ramp-delay = <5000>; - regulator-enable-ramp-delay = <5000>; - regulator-init-microvolt = <800000>; - regulator-min-microvolt = <250000>; - regulator-max-microvolt = <1525000>; - regulator-ramp-delay = <5000>; - - maxim,peak-current-limit-ua = <7200000>; - }; - - m2vout { - regulator-name = "vdd-mvout2"; - regulator-disable-ramp-delay = <5000>; - regulator-enable-ramp-delay = <5000>; - regulator-min-microvolt = <250000>; - regulator-max-microvolt = <1525000>; - regulator-ramp-delay = <5000>; - - maxim,peak-current-limit-ua = <7200000>; - }; - - m3vout { - status = "okay"; - regulator-name = "vddio-ddr"; - regulator-disable-ramp-delay = <5000>; - regulator-enable-ramp-delay = <5000>; - regulator-min-microvolt = <550000>; - regulator-max-microvolt = <650000>; - regulator-ramp-delay = <5000>; - regulator-always-on; - regulator-boot-on; - - maxim,peak-current-limit-ua = <7200000>; - }; - - vdd_cpu: m4vout { - regulator-name = "vdd-cpu"; - regulator-disable-ramp-delay = <5000>; - regulator-enable-ramp-delay = <5000>; - regulator-init-microvolt = <1000000>; - regulator-min-microvolt = <250000>; - regulator-max-microvolt = <1525000>; - regulator-ramp-delay = <5000>; - regulator-always-on; - regulator-boot-on; - - maxim,peak-current-limit-ua = <7200000>; - }; - }; - }; - - pmic: pmic@3c { - compatible = "maxim,max77620"; - reg = <0x3c>; - interrupt-parent = <&tegra_pmc>; - interrupts = <51 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 = ; - maxim,suspend-fps-time-period-us = <5120>; - }; - - fps1 { - maxim,fps-event-source = ; - maxim,suspend-fps-time-period-us = <5120>; - }; - - fps2 { - maxim,fps-event-source = ; - }; - }; - - max77620_default: pinmux { - gpio0 { - pins = "gpio0"; - function = "gpio"; - }; - - gpio1 { - pins = "gpio1"; - function = "fps-out"; - drive-push-pull = <1>; - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <5>; - maxim,active-fps-power-down-slot = <0>; - }; - - gpio2 { - pins = "gpio2"; - function = "fps-out"; - drive-open-drain = <1>; - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <6>; - maxim,active-fps-power-down-slot = <0>; - }; - - gpio3 { - pins = "gpio3"; - function = "fps-out"; - drive-open-drain = <1>; - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <3>; - maxim,active-fps-power-down-slot = <0>; - }; - - gpio4 { - pins = "gpio4"; - function = "32k-out1"; - }; - - gpio5_6_7 { - pins = "gpio5", "gpio6", "gpio7"; - function = "gpio"; - drive-push-pull = <1>; - }; - }; - - regulators { - in-ldo0-1-supply = <&vdd_pre>; - in-ldo2-supply = <&vdd_3v3_sys>; - in-ldo3-5-supply = <&vdd_3v3_sys>; - in-ldo4-6-supply = <&battery_reg>; - in-ldo7-8-supply = <&vdd_pre>; - in-sd0-supply = <&battery_reg>; - in-sd1-supply = <&battery_reg>; - in-sd2-supply = <&battery_reg>; - in-sd3-supply = <&battery_reg>; - - vdd_core: sd0 { - regulator-name = "VDD_CORE"; - regulator-min-microvolt = <625000>; - regulator-max-microvolt = <1400000>; - regulator-enable-ramp-delay = <50>; - regulator-disable-ramp-delay = <4080>; - regulator-ramp-delay = <27500>; - regulator-always-on; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <1>; - maxim,active-fps-power-down-slot = <7>; - maxim,ramp-rate-setting = <27500>; - }; - - vdd_ddr: sd1 { - regulator-name = "VDD_DDR_1V1_PMIC"; - regulator-min-microvolt = <1050000>; - regulator-max-microvolt = <1175000>; - regulator-disable-ramp-delay = <145800>; - regulator-enable-ramp-delay = <60>; - regulator-ramp-delay = <27500>; - regulator-always-on; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <5>; - maxim,active-fps-power-down-slot = <2>; - maxim,ramp-rate-setting = <27500>; - }; - - vdd_pre: sd2 { - regulator-name = "VDD_PRE_REG_1V35"; - regulator-min-microvolt = <1325000>; - regulator-max-microvolt = <1325000>; - regulator-disable-ramp-delay = <20000>; - regulator-enable-ramp-delay = <40>; - regulator-ramp-delay = <27500>; - regulator-always-on; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <27500>; - }; - - vdd_1v8: sd3 { - regulator-name = "VDD_1V8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-disable-ramp-delay = <118000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <27500>; - regulator-always-on; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <2>; - maxim,active-fps-power-down-slot = <4>; - maxim,ramp-rate-setting = <27500>; - }; - - vdd_sys_1v2: ldo0 { - regulator-name = "AVDD_SYS_1V2"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - regulator-disable-ramp-delay = <4000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - - vdd_pex_1v05: ldo1 { - regulator-name = "VDD_PEX_1V05"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-disable-ramp-delay = <7000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - - vddio_sdmmc: ldo2 { - regulator-name = "VDDIO_SDMMC"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3300000>; - regulator-disable-ramp-delay = <6000>; - regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - - ldo3 { - regulator-name = "VDD_GC_3V1"; - regulator-min-microvolt = <3100000>; - regulator-max-microvolt = <3100000>; - regulator-disable-ramp-delay = <3000>; - regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - - vdd_rtc: ldo4 { - regulator-name = "VDD_RTC"; - regulator-min-microvolt = <800000>; - regulator-max-microvolt = <800000>; - regulator-disable-ramp-delay = <610>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - regulator-disable-active-discharge; - regulator-always-on; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <7>; - }; - - ldo5 { - regulator-name = "VDDIO_GC_1V8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-disable-ramp-delay = <3000>; - regulator-enable-ramp-delay = <70>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - - ldo6 { - regulator-name = "VDD_TOUCH"; - regulator-min-microvolt = <2900000>; - regulator-max-microvolt = <2900000>; - regulator-disable-ramp-delay = <3000>; - regulator-enable-ramp-delay = <100>; - regulator-ramp-delay = <50000>; - regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - - /* Varies by variant */ - ldo7 { - status = "disabled"; - }; - - avdd_1v05: ldo8 { - regulator-name = "AVDD_SATA_HDMI_DP_1V05"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-disable-ramp-delay = <4000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - }; - }; - }; - - 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; - }; - - hda@70030000 { - nvidia,model = "Nintendo Switch"; - - status = "okay"; - }; - - usb@70090000 { - phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>, - <&{/padctl@7009f000/pads/pcie/lanes/pcie-5}>; - phy-names = "usb2-0", "usb3-0"; - - avdd-usb-supply = <&vdd_3v3_sys>; - dvddio-pex-supply = <&vdd_pex_1v05>; - hvddio-pex-supply = <&vdd_1v8>; - - status = "okay"; - }; - - padctl@7009f000 { - status = "okay"; - - avdd-pll-utmip-supply = <&vdd_1v8>; - avdd-pll-uerefe-supply = <&vdd_pex_1v05>; - dvdd-pex-pll-supply = <&vdd_pex_1v05>; - hvdd-pex-pll-e-supply = <&vdd_1v8>; - - pads { - usb2 { - status = "okay"; - - lanes { - type_c: usb2-0 { - nvidia,function = "xusb"; - status = "okay"; - }; - }; - }; - - pcie { - status = "okay"; - - lanes { - pcie-0 { - nvidia,function = "pcie-x1"; - status = "okay"; - }; - - pcie-1 { - nvidia,function = "usb3-ss"; - status = "okay"; - }; - - pcie-2 { - nvidia,function = "pcie-x4"; - status = "okay"; - }; - - pcie-3 { - nvidia,function = "pcie-x4"; - status = "okay"; - }; - - pcie-4 { - nvidia,function = "usb3-ss"; - status = "okay"; - }; - - pcie-5 { - nvidia,function = "usb3-ss"; - status = "okay"; - }; - }; - }; - }; - - ports { - usb2-0 { - status = "okay"; - mode = "otg"; - usb-role-switch; - - vbus-supply = <&battery_reg>; - - endpoint@0 { - reg = <0>; - }; - }; - - usb3-0 { - status = "okay"; - nvidia,usb2-companion = <0>; - }; - }; - }; - - mmc@700b0000 { - status = "okay"; - bus-width = <4>; - - cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; - disable-wp; - - vqmmc-supply = <&vddio_sdmmc>; - vmmc-supply = <&vdd_3v3_sd>; - }; - - mmc@700b0600 { - /* explicitly not enabled by default */ - bus-width = <8>; - non-removable; - vqmmc-supply = <&vdd_1v8>; - vmmc-supply = <&vdd_3v3_sys>; - }; - - usb@700d0000 { - status = "okay"; - phys = <&type_c>; - phy-names = "usb2-0"; - avddio-usb-supply = <&vdd_pex_1v05>; - hvdd-usb-supply = <&vdd_3v3_sys>; - }; - - 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 = <&vdd_cpu>; - }; - - 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"; - }; - - idle-states { - cpu-sleep { - status = "okay"; - }; - }; - }; - - gpio-keys { - compatible = "gpio-keys"; - - key-volume-down { - label = "Volume Down"; - gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <10>; - }; - - key-volume-up { - label = "Volume Up"; - gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <10>; - }; - }; - - psci { - compatible = "arm,psci-1.0"; - method = "smc"; - }; - - fan: pwm-fan { - compatible = "pwm-fan"; - pwms = <&pwm 1 33333>; - fan-supply = <&vdd_fan>; - - cooling-levels = <255 128 64 0>; - #cooling-cells = <2>; - }; - - battery_reg: regulator-vdd-ac-bat { - compatible = "regulator-fixed"; - - regulator-name = "vdd-ac-bat"; - regulator-min-microvolt = <4800000>; - regulator-max-microvolt = <4800000>; - regulator-always-on; - regulator-boot-on; - }; - - vdd_3v3_sys: regulator-vdd-3v3-sys { - compatible = "regulator-fixed"; - - regulator-name = "VDD_3V3_SYS"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-enable-ramp-delay = <240>; - regulator-always-on; - regulator-boot-on; - - gpio = <&pmic 3 GPIO_ACTIVE_HIGH>; - enable-active-high; - - vin-supply = <&battery_reg>; - }; - - vdd_3v3_sd: regulator-vdd-3v3-sd { - compatible = "regulator-fixed"; - - regulator-name = "VDD_3V3_SD"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-enable-ramp-delay = <472>; - regulator-disable-ramp-delay = <4880>; - - gpio = <&gpio TEGRA_GPIO(E, 4) GPIO_ACTIVE_HIGH>; - enable-active-high; - - vin-supply = <&vdd_3v3_sys>; - }; - - vdd_fan: regulator-vdd-fan { - compatible = "regulator-fixed"; - regulator-name = "VDD_FAN"; - regulator-min-microvolt = <5300000>; - regulator-max-microvolt = <5300000>; - gpio = <&gpio TEGRA_GPIO(A, 5) GPIO_ACTIVE_LOW>; - vin-supply = <&battery_reg>; - - regulator-enable-ramp-delay = <284>; - }; - - thermal-zones { - cpu-thermal { - trips { - cpu_trip_critical: critical { - temperature = <58000>; - hysteresis = <0>; - type = "critical"; - }; - - cpu_trip_hot: hot { - temperature = <53000>; - hysteresis = <2000>; - type = "hot"; - }; - - cpu_trip_active: active { - temperature = <48000>; - hysteresis = <2000>; - type = "active"; - }; - - cpu_trip_passive: passive { - temperature = <30000>; - hysteresis = <2000>; - type = "passive"; - }; - }; - - cooling-maps { - cpu-critical { - cooling-device = <&fan 3 3>; - trip = <&cpu_trip_critical>; - }; - - cpu-hot { - cooling-device = <&fan 2 2>; - trip = <&cpu_trip_hot>; - }; - - cpu-active { - cooling-device = <&fan 1 1>; - trip = <&cpu_trip_active>; - }; - - cpu-passive { - cooling-device = <&fan 0 0>; - trip = <&cpu_trip_passive>; - }; - }; - }; - }; -}; diff --git a/tegra210b01-nx.dtsi b/tegra210b01-nx.dtsi new file mode 100644 index 0000000..d9231ba --- /dev/null +++ b/tegra210b01-nx.dtsi @@ -0,0 +1,1344 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include +#include + +#include "tegra210b01.dtsi" + +/ { + aliases { + serial0 = &uarta; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + gpio-keys { + compatible = "gpio-keys"; + gpio-keys,name = "gpio-keys"; + + power { + label = "Power"; + gpios = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <16>; + gpio-key,wakeup; + + status = "disabled"; /* Only hooked on Vali. max77620 is preferred. */ + }; + + volume_down { + label = "Volume Down"; + gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <16>; + }; + + volume_up { + label = "Volume Up"; + gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <16>; + }; + }; + + firmware { + android { + compatible = "android,firmware"; + boot_devices = "700b0000.mmc"; + hardware = "nx"; + }; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x0 0x80000000 0x0 0xc0000000>; + }; + + pwm@7000a000 { + status = "okay"; + #pwm-cells = <2>; + }; + + serial@70006000 { + /delete-property/ dmas; + /delete-property/ dma-names; + status = "okay"; + }; + + /* SDMMC4 for EMMC */ + mmc@700b0600 { + status = "disabled"; + bus-width = <8>; + max-frequency = <200000000>; + + cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_HIGH>; + + 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"; + }; + + /* 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; + + vmmc-supply = <&en_vdd_sd>; + vqmmc-supply = <&max77620_ldo2>; + }; + + 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,vconn-en-gpio = <&gpio TEGRA_GPIO(K, 5) GPIO_ACTIVE_HIGH>; + + 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>; + + fts_touch: fts@49 { + compatible = "stm,ftm4_fts"; + status = "okay"; + reg = <0x49>; + interrupt-parent = <&gpio>; + interrupts = ; + 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>; + }; + }; + + gpu@57000000 { + status = "okay"; + vdd-supply = <&gpu_max_reg>; + }; + + backlight: backlight { + status = "okay"; + 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 */ + ts_dvdd: ts_dvdd { + compatible = "regulator-fixed"; + status = "okay"; + regulator-name = "ts_dvdd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-enable-ramp-delay = <10000>; + }; + + 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 = <&pmic_b 3 0>; + enable-active-high; + regulator-enable-ramp-delay = <160>; + regulator-disable-ramp-delay = <10000>; + }; + + 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>; + }; + + 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 = <&pmic_b 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>; + }; + + soctherm@700E2000 { + throttle-cfgs { + /* PG/ACOK/USB OC pin. CLK_32K_OUT. Used for LED PWM on Vali. */ + /* + throttle_oc1: oc1 { // Sticky mode but not supported. + nvidia,priority = <16>; + nvidia,polarity-active-low = <1>; + nvidia,count-threshold = <0>; + nvidia,throttle-period = <2500000>; + nvidia,alarm-filter = <0xFFFFFFFF>; + nvidia,cpu-throt-percent = <75>; + nvidia,gpu-throt-level = ; + }; + */ + + /* Battery OC pin. GPIO_PL1. Traced but missing resistor. */ + /* + throttle_oc2: oc2 { + nvidia,priority = <24>; + nvidia,polarity-active-low = <1>; + nvidia,count-threshold = <0>; + nvidia,throttle-period = <100>; + nvidia,alarm-filter = <0xFFFFFFFF>; + nvidia,cpu-throt-percent = <75>; + nvidia,gpu-throt-level = ; + }; + */ + + /* throttle_oc3: oc3: GPIO_PZ5. Floating. */ + }; + }; + + thermal-zones { + PLL-therm { + status = "okay"; + polling-delay-passive = <500>; + thermal-zone-params { + governor-name = "step_wise"; + }; + trips { + cpu_heavy { + temperature = <94500>; + hysteresis = <0>; + type = "hot"; + writable; + }; + cpu_throttle { + temperature = <90500>; + hysteresis = <0>; + type = "passive"; + writable; + }; + cpu_critical { + temperature = <96000>; + hysteresis = <0>; + type = "critical"; + writable; + }; + dfll_cap_trip0: dfll-cap-trip0 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + dfll_cap_trip1: dfll-cap-trip1 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + }; + // cooling-maps { + // map0 { + // trip = <&{/thermal-zones/PLL-therm/trips/cpu_heavy}>; + // cdev-type = "tegra-heavy"; + // cooling-device = <&throttle_heavy 1 1>; + // }; + // map1 { + // trip = <&{/thermal-zones/PLL-therm/trips/cpu_throttle}>; + // cdev-type = "cpu-balanced"; + // cooling-device = <&{/bthrot_cdev/cpu_balanced} + // THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + // }; + // dfll-cap-map0 { + // trip = <&dfll_cap_trip0>; + // cooling-device = <&dfll_cap 1 1>; + // }; + // dfll-cap-map1 { + // trip = <&dfll_cap_trip1>; + // cooling-device = <&dfll_cap 2 2>; + // }; + // }; + }; + Tboard_tegra { + status = "okay"; + polling-delay = <0>; + polling-delay-passive = <5500>; + + trips { + board_emergency { + temperature = <85000>; + hysteresis = <2000>; + type = "passive"; + writable; + }; + }; + // cooling-maps { + // map0 { + // trip = <&{/thermal-zones/Tboard_tegra/trips/board_emergency}>; + // cdev-type = "emergency-balanced"; + // cooling-device = <&{/bthrot_cdev/emergency_balanced} + // THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + // }; + // }; + }; + Tdiode_tegra { + status = "okay"; + polling-delay = <0>; + polling-delay-passive = <1100>; + + trips { + gpu_shutdown { + temperature = <92500>; + hysteresis = <0>; + type = "critical"; + writable; + }; + + gpu_throttle { + temperature = <86000>; + hysteresis = <0>; + type = "passive"; + writable; + }; + gpu_scaling_trip0: gpu-scaling-trip0 { + temperature = <(TEGRA210B01_GPU_DVFS_THERMAL_MIN)>; + hysteresis = <0>; /* millicelsius */ + type = "active"; + }; + gpu_scaling_trip1: gpu-scaling-trip1 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + gpu_scaling_trip2: gpu-scaling-trip2 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + gpu_scaling_trip3: gpu-scaling-trip3 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + gpu_scaling_trip4: gpu-scaling-trip4 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + gpu_scaling_trip5: gpu-scaling-trip5 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + + gpu_vmax_trip1: gpu-vmax-trip1 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + core_dvfs_floor_trip0: core_dvfs_floor_trip0 { + temperature = ; + hysteresis = <1000>; + type = "active"; + }; + + core_dvfs_cap_trip0: core_dvfs_cap_trip0 { + temperature = ; + hysteresis = <1000>; + type = "active"; + }; + soc_critical { + temperature = <96000>; + hysteresis = <0>; + type = "critical"; + writable; + }; + soc_emergency { + temperature = <85000>; + hysteresis = <2000>; + type = "passive"; + writable; + }; + dfll_floor_trip0: dfll-floor-trip0 { + temperature = ; + hysteresis = <1000>; /* millicelsius */ + type = "active"; + }; + }; + cooling-maps { + // map0 { + // trip = <&{/thermal-zones/Tdiode_tegra/trips/soc_critical}>; + // cdev-type = "tegra-shutdown"; + // cooling-device = <&{/soctherm@0x700E2000/throttle@critical} + // THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + // }; + // map1 { + // trip = <&{/thermal-zones/Tdiode_tegra/trips/soc_emergency}>; + // cdev-type = "emergency-balanced"; + // cooling-device = <&{/bthrot_cdev/emergency_balanced} + // THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + // }; + // gpu-scaling-map1 { + // trip = <&gpu_scaling_trip1>; + // cooling-device = <&gpu_scaling_cdev 1 1>; + // }; + // gpu-scaling-map2 { + // trip = <&gpu_scaling_trip2>; + // cooling-device = <&gpu_scaling_cdev 2 2>; + // }; + // gpu_scaling_map3 { + // trip = <&gpu_scaling_trip3>; + // cooling-device = <&gpu_scaling_cdev 3 3>; + // }; + // gpu-scaling-map4 { + // trip = <&gpu_scaling_trip4>; + // cooling-device = <&gpu_scaling_cdev 4 4>; + // }; + // gpu-scaling-map5 { + // trip = <&gpu_scaling_trip5>; + // cooling-device = <&gpu_scaling_cdev 5 5>; + // }; + + // gpu-vmax-map1 { + // trip = <&gpu_vmax_trip1>; + // cooling-device = <&gpu_vmax_cdev 1 1>; + // }; + + core_dvfs_floor_map0 { + trip = <&core_dvfs_floor_trip0>; + cooling-device = <&core_dvfs_floor 1 1>; + }; + core_dvfs_cap_map0 { + trip = <&core_dvfs_cap_trip0>; + cooling-device = <&core_dvfs_cap 1 1>; + }; + + dfll-floor-map0 { + trip = <&dfll_floor_trip0>; + cooling-device = <&dfll_floor 1 1>; + }; + // map2 { + // trip = <&{/thermal-zones/Tdiode_tegra/trips/gpu_throttle}>; + // cdev-type = "gpu-balanced"; + // cooling-device = <&{/bthrot_cdev/gpu_balanced} + // THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + // }; + }; + }; + AO-therm { + status = "okay"; + }; + }; + + pcie@1003000 { + status = "okay"; + + avdd-pll-uerefe-supply = <&max77620_ldo1>; + hvddio-pex-supply = <&max77620_sd3>; + dvddio-pex-supply = <&max77620_ldo1>; + dvdd-pex-pll-supply = <&max77620_ldo1>; + hvdd-pex-pll-e-supply = <&max77620_sd3>; + vddio-pex-ctl-supply = <&max77620_sd3>; + + pci@1,0 { + nvidia,num-lanes = <2>; + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>, /* Referred to plat config */ + <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; + phy-names = "pcie-0", "pcie-1"; + status = "disabled"; + }; + + pci@2,0 { + status = "okay"; + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>; + phy-names = "pcie-0"; + + brcmf { /* PCIE-0 (Port 1) */ + compatible = "brcm,bcm4356-fmac"; + }; + }; + }; + + padctl@7009f000 { + status = "okay"; + + pads { + usb2 { + status = "okay"; + + lanes { + usb2-0 { + nvidia,hs_curr_level_offset = <6>; + 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 = "usb3-ss"; + status = "okay"; + }; + + pcie-2 { + nvidia,function = "pcie-x4"; + status = "okay"; + }; + + pcie-3 { + nvidia,function = "pcie-x4"; + status = "okay"; + }; + + pcie-4 { + nvidia,function = "usb3-ss"; + status = "okay"; + }; + + /* USB3 port */ + pcie-5 { + 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>; + // }; + }; + }; + + pinmux@700008d4 { + // dsi_ab_pad_default: dsi_ab_pad_default { + // dsi_ab_pad_enable { + // nvidia,pins = "pad_dsi_ab"; + // nvidia,pad-power = ; + // }; + // }; + // dsi_cd_pad_default: dsi_cd_pad_default { + // dsi_cd_pad_enable { + // nvidia,pins = "pad_dsi_cd"; + // nvidia,pad-power = ; + // }; + // }; + // dsi_ab_pad_idle: dsi_ab_pad_idle { + // dsi_ab_pad_disable { + // nvidia,pins = "pad_dsi_ab"; + // nvidia,pad-power = ; + // }; + // }; + // dsi_cd_pad_idle: dsi_cd_pad_idle { + // dsi_cd_pad_disable { + // nvidia,pins = "pad_dsi_cd"; + // nvidia,pad-power = ; + // }; + // }; + + // /* Always on for T210B01 NX */ + // sdmmc1_schmitt_disable { + // sdmmc1 { + // nvidia,schmitt = ; + // }; + // }; + // sdmmc1_clk_schmitt_disable { + // sdmmc1 { + // nvidia,schmitt = ; + // }; + // }; + }; + + 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"; + + // TODO + // bootrom-commands { + // reset-commands { + // nvidia,command-retries-count = <2>; + // nvidia,delay-between-commands-us = <10>; + // nvidia,wait-before-start-bus-clear-us = <10>; + // #address-cells = <1>; + // #size-cells = <0>; + + // commands@4-0068 { + // nvidia,command-names = "r2p-setup"; + // reg = <0x68>; + // nvidia,enable-8bit-register; + // nvidia,enable-8bit-data; + // nvidia,controller-type-i2c; + // nvidia,controller-id = <4>; + // nvidia,enable-controller-reset; + // nvidia,write-commands = < + // 0x13 0x00 /* r2p enc 0 */ + // 0x1A 0x00 /* r2p enc 1 */ + // 0x11 0x00 /* r2p mgc 0 */ + // 0x18 0x00 /* r2p mgc 1 */ + // 0x04 0x01 /* Update RTC regs */ + // >; + // }; + // commands@4-003c { + // nvidia,command-names = "pmic-rails"; + // reg = <0x3c>; + // nvidia,enable-8bit-register; + // nvidia,enable-8bit-data; + // nvidia,controller-type-i2c; + // nvidia,controller-id = <4>; + // nvidia,enable-controller-reset; + // nvidia,write-commands = < + // 0x16 0x20 /* Set 1.0V and disable SD0 */ + // 0x42 0x99 /* Wake reasons: SFT_RST/ACOK/LID/EN0 */ + // 0x41 0x80 /* Reboot */ + // >; + // }; + // }; + // }; + }; + + clk32k_in: clock-32k { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + host1x@50000000 { + vic@54340000 { + status = "disabled"; + }; + nvjpg@54380000 { + status = "disabled"; + }; + nvdec@54480000 { + status = "disabled"; + }; + nvenc@544c0000 { + status = "disabled"; + }; + + dsia: dsi@54300000 { + status = "okay"; + + avdd-dsi-csi-supply = <&max77620_ldo0>; + + panel@0 { + reg = <0>; + status = "okay"; + + compatible = "nintendo,panel-nx-dsi"; + reset-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_HIGH>; + backlight = <&backlight>; + vdd1-supply = <&v_pavdd_5v0>; + vdd2-supply = <&v_navdd_5v0>; + }; + }; + + dsi@54400000 { + status = "disabled"; + }; + + dc@54200000 { + status = "okay"; + + // pinctrl-names = "pad_ab_default", "pad_ab_idle", + // "pad_cd_default", "pad_cd_idle"; + // pinctrl-0 = <&dsi_ab_pad_default>; + // pinctrl-1 = <&dsi_ab_pad_idle>; + // pinctrl-2 = <&dsi_cd_pad_default>; + // pinctrl-3 = <&dsi_cd_pad_idle>; + + nvidia,outputs = <&dsia>; + }; + + /* tegradc.1: DP */ + dc@54240000 { + status = "okay"; + + extcon-cables = <&bm92t 3>; + extcon-cable-names = "typec1"; + + //nvidia,outputs = <&sor1>;pa + }; + }; + + tegra_clk_dfll: clock@70110000 { + status = "okay"; + vdd-cpu-supply = <&cpu_max_reg>; + nvidia,align-step-uv = <5000>; + nvidia,sample-rate = <12500>; + nvidia,droop-ctrl = <0x00000f00>; + nvidia,force-mode = <1>; + nvidia,cf = <6>; + nvidia,ci = <0>; + nvidia,cg = <2>; + nvidia,i2c-fs-rate = <400000>; + nvidia,pmic-undershoot-gb = <0>; /* Use pmic default min */ + /* nvidia,dfll-max-freq-khz = <1683000>; */ + }; + + 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"; + }; + + i2c@7000d000 { + status = "okay"; + clock-frequency = <400000>; + + pmic_a: pmic@33 { + compatible = "maxim,max77812-regulator"; + reg = <0x33>; + maxim,soft-start-slew-rate = <5000>; + maxim,shutdown-slew-rate = <5000>; + maxim,ramp-up-slew-rate = <5000>; + maxim,ramp-down-slew-rate = <5000>; + status = "okay"; + + /* interrupt-parent = <&gpio>; */ + /* interrupts = ; */ + + regulators { + gpu_max_reg: m1vout { + regulator-name = "vdd-gpu"; + regulator-min-microvolt = <250000>; + regulator-max-microvolt = <1525000>; + /* regulator-max-microamp = <10000000>; */ /* 0x33 cfg */ + /* regulator-max-microamp = <15000000>; */ /* 0x31 cfg */ + regulator-init-microvolt = <800000>; + regulator-ramp-delay = <5000>; + regulator-enable-ramp-delay = <5000>; + regulator-disable-ramp-delay = <5000>; + maxim,peak-current-limit-ua = <7200000>; + }; + + m2vout { + regulator-name = "vdd-mvout2"; + regulator-min-microvolt = <250000>; + regulator-max-microvolt = <1525000>; + regulator-ramp-delay = <5000>; + regulator-enable-ramp-delay = <5000>; + regulator-disable-ramp-delay = <5000>; + maxim,peak-current-limit-ua = <7200000>; + }; + + ram_max_reg: m3vout { + status = "okay"; + regulator-name = "vddio-ddr"; + regulator-min-microvolt = <550000>; /* Set min lpddr4x normally allowed */ + regulator-max-microvolt = <650000>; /* Set max lpddr4x normally allowed */ + /* regulator-max-microamp = <5000000>; */ + regulator-always-on; + regulator-boot-on; + /* regulator-init-microvolt = <600000>; */ /* Controlled by bootloader */ + regulator-ramp-delay = <5000>; + regulator-enable-ramp-delay = <5000>; + regulator-disable-ramp-delay = <5000>; + maxim,peak-current-limit-ua = <7200000>; + }; + + cpu_max_reg: m4vout { + regulator-name = "vdd-cpu"; + regulator-min-microvolt = <250000>; + regulator-max-microvolt = <1525000>; + /* regulator-max-microamp = <5000000>; */ + regulator-always-on; + regulator-boot-on; + regulator-init-microvolt = <1000000>; + regulator-ramp-delay = <5000>; + regulator-enable-ramp-delay = <5000>; + regulator-disable-ramp-delay = <5000>; + maxim,peak-current-limit-ua = <7200000>; + }; + }; + }; + + pmic_b: pmic@3c { + compatible = "maxim,max77620"; + reg = <0x3c>; + interrupts = ; + + #interrupt-cells = <2>; + interrupt-controller; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names = "default"; + pinctrl-0 = <&max77620_default>; + + fps { + #address-cells = <1>; + #size-cells = <0>; + + fps0 { + reg = <0>; + maxim,shutdown-fps-time-period-us = <5120>; + maxim,fps-event-source = ; + }; + + fps1 { + reg = <1>; + maxim,shutdown-fps-time-period-us = <5120>; + maxim,fps-event-source = ; + maxim,device-state-on-disabled-event = ; + }; + + fps2 { + reg = <2>; + maxim,shutdown-fps-time-period-us = <5120>; + maxim,fps-event-source = ; + }; + }; + + // hog-0 { + // gpio-hog; + // output-high; + // gpios = <2 GPIO_ACTIVE_HIGH>, + // <7 GPIO_ACTIVE_HIGH>; + // }; + + max77620_default: pinmux { + gpio0 { + pins = "gpio0"; + function = "gpio"; + }; + + gpio1 { + pins = "gpio1"; + function = "fps-out"; + drive-open-drain = <1>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <5>; + maxim,active-fps-power-down-slot = <0>; + }; + + gpio2 { + pins = "gpio2"; + function = "fps-out"; + drive-open-drain = <1>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <6>; + maxim,active-fps-power-down-slot = <0>; + }; + + gpio3 { + pins = "gpio3"; + function = "fps-out"; + drive-open-drain = <1>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <3>; + maxim,active-fps-power-down-slot = <0>; + }; + + gpio4 { + pins = "gpio4"; + function = "32k-out1"; + }; + + gpio5_6_7 { + pins = "gpio5", "gpio6", "gpio7"; + function = "gpio"; + drive-open-drain = <1>; + }; + }; + + regulators { + in-ldo0-1-supply = <&max77620_sd2>; + 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-initial-mode = ; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <4080>; + maxim,ramp-rate-setting = <27500>; + regulator-ramp-delay = <27500>; + }; + + max77620_sd1: sd1 { + regulator-name = "vdd-ddr"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1175000>; + regulator-always-on; + regulator-boot-on; + /* regulator-init-microvolt = <1100000>; */ /* Controlled by bootloader */ + // regulator-initial-mode = ; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <5>; + maxim,active-fps-power-down-slot = <2>; + regulator-enable-ramp-delay = <60>; + 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 = <1325000>; + regulator-always-on; + regulator-boot-on; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <0>; + regulator-enable-ramp-delay = <40>; + regulator-disable-ramp-delay = <20000>; + 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 = <2>; + maxim,active-fps-power-down-slot = <4>; + // regulator-initial-mode = ; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <118000>; + maxim,ramp-rate-setting = <27500>; + regulator-ramp-delay = <27500>; + }; + + 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 = <0>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <4000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + max77620_ldo1: ldo1 { + regulator-name = "vdd-pex"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <0>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <7000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + 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 = <0>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <6000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + 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 = <0>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <3000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + max77620_ldo4: ldo4 { + regulator-name = "vdd-rtc"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <800000>; + regulator-always-on; + regulator-boot-on; + maxim,active-fps-power-up-slot = <0>; + 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 = <0>; + regulator-enable-ramp-delay = <70>; + regulator-disable-ramp-delay = <3000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* Touch Panel, ALS. Powers LDO 1V8. */ + 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 = <0>; + regulator-enable-ramp-delay = <100>; + regulator-disable-ramp-delay = <3000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* Not used on T210B01 */ + max77620_ldo7: ldo7 { + regulator-name = "vdd-gen-pll-edp"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; /* 3100000 */ + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <0>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <2768>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + + /* Odin/Modin/Fric: DP. */ + /* Vali: Powers LDO 2V8 for Sio VDD + * Powers LDO 1V8 for I2C1 VDDQ and ALC5639. + */ + max77620_ldo8: ldo8 { + regulator-name = "vdd-hdmi-dp"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <0>; + regulator-enable-ramp-delay = <50>; + regulator-disable-ramp-delay = <4000>; + maxim,ramp-rate-setting = <50000>; + regulator-ramp-delay = <50000>; + }; + }; + }; + }; + + dfll_cap: dfll-cdev-cap { + compatible = "nvidia,tegra-dfll-cdev-action"; + act-dev = <&tegra_clk_dfll>; + cdev-type = "DFLL-cap"; + #cooling-cells = <2>; /* min followed by max */ + }; + + dfll_floor: dfll-cdev-floor { + compatible = "nvidia,tegra-dfll-cdev-action"; + act-dev = <&tegra_clk_dfll>; + cdev-type = "DFLL-floor"; + #cooling-cells = <2>; /* min followed by max */ + }; + + // gpu_scaling_cdev: gpu-scaling-cdev { + // cooling-min-state = <0>; + // cooling-max-state = <5>; + // #cooling-cells = <2>; + // compatible = "nvidia,tegra210-rail-scaling-cdev"; + // cdev-type = "gpu_scaling"; + // nvidia,constraint; + // nvidia,trips = <&gpu_scaling_trip0 800 &gpu_scaling_trip1 0 + // &gpu_scaling_trip2 0 &gpu_scaling_trip3 0 + // &gpu_scaling_trip4 0 &gpu_scaling_trip5 0>; + // }; + + // gpu_vmax_cdev: gpu-vmax-cdev { + // cooling-min-state = <0>; + // cooling-max-state = <1>; + // #cooling-cells = <2>; + // compatible = "nvidia,tegra210-rail-vmax-cdev"; + // cdev-type = "GPU-cap"; + // nvidia,constraint-ucm2; + // nvidia,trips = <&gpu_vmax_trip1 1010 1010>; + // clocks = <&tegra_car TEGRA210_CLK_CAP_VGPU_GBUS>; + // clock-names = "cap-clk"; + // status = "disabled"; + // }; +}; diff --git a/tegra210b01-odin.dts b/tegra210b01-odin.dts index 3a8b24e..f1a971e 100644 --- a/tegra210b01-odin.dts +++ b/tegra210b01-odin.dts @@ -1,31 +1,10 @@ -// SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (C) 2025 The LineageOS Project - +// SPDX-License-Identifier: GPL-2.0 /dts-v1/; -#include "tegra210b01-nx-common.dtsi" +#include "tegra210b01-nx.dtsi" / { + model = "Nintendo Switch (2019)"; - compatible = "nintendo,odin", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; - - i2c@7000d000 { - pmic@3c { - regulators { - avdd_1v05: ldo8 { - regulator-name = "AVDD_SATA_HDMI_DP_1V05"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-disable-ramp-delay = <4000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; - }; - }; - }; - }; + compatible = "nvidia,modin", "nvidia,odin", "nintendo,iowa", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; }; diff --git a/tegra210b01-vali.dts b/tegra210b01-vali.dts index 124c9ed..107ada6 100644 --- a/tegra210b01-vali.dts +++ b/tegra210b01-vali.dts @@ -1,33 +1,178 @@ -// SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (C) 2025 The LineageOS Project - +// SPDX-License-Identifier: GPL-2.0 /dts-v1/; -#include "tegra210b01-nx-common.dtsi" +#include "tegra210b01-nx.dtsi" / { model = "Nintendo Switch Lite"; - compatible = "nintendo,vali", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; + compatible = "nvidia,vali", "nintendo,hoag", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; + + pinmux: pinmux@700008d4 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&pinmux_default>; + + pinmux_default: common { + /* USB-PD (BM92T36) Reset */ + ap_ready_pv5 { /* 3210 */ + nvidia,pins = "ap_ready_pv5"; + nvidia,function = "rsvd0"; + 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 = ; + }; + }; + }; + + + /* 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"; + }; + }; + + i2c@7000c000 { + bm92t: bm92t@18 { + status = "okay"; + /delete-property/ rohm,dp-signal-toggle-on-resume; + rohm,dp-disable; + rohm,pd-5v-current-limit-ma = <2000>; + rohm,pd-9v-current-limit-ma = <1500>; + rohm,pd-12v-current-limit-ma = <1200>; + rohm,pd-15v-current-limit-ma = <900>; + }; + + bq2419x: bq24193@6b { + battery_charger: charger { + ti,charge-voltage-limit-millivolt = <4320>; /* Adjusted by cell age */ + ti,fast-charge-current-limit-milliamp = <1664>; + ti,temp-range = <0 18 47 58>; + ti,charge-thermal-voltage-limit = <4320 4320 4320 4080>; /* Adjusted by cell age */ + ti,charge-current-limit = <512 640 1664 1664>; + }; + }; + + fuel_gauge: fuel-gauge@36 { + maxim,over-volt = <4320>; /* Actual: 4370 mV */ + maxim,kernel-maximum-soc = <100>; /* Adjusted by cell age */ + }; + }; i2c@7000d000 { - pmic@3c { + pmic_b: pmic@3c { regulators { - vdd_sio: ldo8 { - regulator-name = "VDD_SIO"; - regulator-min-microvolt = <1000000>; + /* Vali: Powers LDO 2V8 for Sio VDD + * Powers LDO 1V8 for I2C1 VDDQ and ALC5639. + */ + ldo8 { + regulator-name = "vdd-i2c1"; regulator-max-microvolt = <2800000>; - regulator-disable-ramp-delay = <4000>; - regulator-enable-ramp-delay = <50>; - regulator-ramp-delay = <50000>; regulator-always-on; regulator-boot-on; - - maxim,active-fps-source = ; - maxim,active-fps-power-up-slot = <0>; - maxim,active-fps-power-down-slot = <0>; - maxim,ramp-rate-setting = <50000>; }; }; }; }; + + i2c@546c0000 { + bus-pullup-supply = <&battery_reg>; + }; + + host1x@50000000 { + /* tegradc.1: DP */ + dc@54240000 { + status = "disabled"; + }; + }; + + xusb: usb@70090000 { + status = "okay"; + + phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-5}>; + 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>; + }; + + xudc: usb@700d0000 { + status = "okay"; + + phys = <&{/padctl@7009f000/pads/usb2/lanes/usb2-0}>;//, + //<&{/padctl@7009f000/pads/pcie/lanes/pcie-5}>; + phy-names = "usb2-0";//, "usb3-0"; + + extcon = <&bm92t 1>; + extcon-cable-names = "id"; + + hvdd-usb-supply = <&vdd_3v3>; + avddio-usb-supply = <&max77620_ldo1>; + }; + + padctl@7009f000 { + status = "okay"; + + avdd-pll-utmip-supply = <&max77620_sd3>; + avdd-pll-uerefe-supply = <&max77620_ldo1>; + dvdd-pex-pll-supply = <&max77620_ldo1>; + hvdd-pex-pll-e-supply = <&max77620_sd3>; + }; };