diff --git a/tegra210-odin.dts b/tegra210-odin.dts index 924362c..de5bc00 100644 --- a/tegra210-odin.dts +++ b/tegra210-odin.dts @@ -3,7 +3,762 @@ /dts-v1/; +#include +#include +#include + #include "tegra210.dtsi" / { + model = "Nintendo Switch (2017)"; + compatible = "nintendo,odin", "nintendo,nx", "nvidia,tegra210"; + + 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-1}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>, + <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; + phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3"; + nvidia,num-lanes = <4>; + status = "okay"; + }; + + pci@2,0 { + phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>; + phy-names = "pcie-0"; + status = "okay"; + + wifi@0,0 { + compatible = "brcm,bcm4356-fmac", "brcm,bcm4329-fmac"; + }; + }; + }; + + host1x@50000000 { + dpaux@54040000 { + status = "okay"; + }; + + dsi@54300000 { + status = "okay"; + + avdd-dsi-csi-supply = <&vdd_dsi_csi>; + }; + + 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>; + + vdd_cpu: regulator@1b { + compatible = "maxim,max77621"; + reg = <0x1b>; + interrupt-parent = <&gpio>; + interrupts = ; + regulator-always-on; + regulator-boot-on; + regulator-init-microvolt = <1000000>; + 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-ramp-delay = <12000>; + maxim,dvs-default-state = <1>; + 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; + }; + + vdd_gpu: regulator@1c { + compatible = "maxim,max77621"; + reg = <0x1c>; + interrupt-parent = <&gpio>; + interrupts = ; + regulator-init-microvolt = <1000000>; + 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-ramp-delay = <12000>; + maxim,dvs-default-state = <1>; + 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; + }; + + 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 = <0>; + maxim,active-fps-power-down-slot = <7>; + }; + + gpio2 { + pins = "gpio2"; + function = "fps-out"; + drive-open-drain = <1>; + maxim,active-fps-source = ; + maxim,active-fps-power-up-slot = <0>; + maxim,active-fps-power-down-slot = <7>; + }; + + 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>; + }; + + 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 = <1200000>; + regulator-disable-ramp-delay = <145800>; + regulator-enable-ramp-delay = <1000>; + 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 = <1>; + maxim,ramp-rate-setting = <27500>; + }; + + vdd_pre: sd2 { + regulator-name = "VDD_PRE_REG_1V35"; + 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>; + 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 = <3>; + maxim,active-fps-power-down-slot = <3>; + 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 = <7>; + maxim,ramp-rate-setting = <50000>; + }; + + vdd_pex_1v05: ldo1 { + regulator-name = "VDD_PEX_1V05"; + 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>; + maxim,ramp-rate-setting = <50000>; + }; + + vddio_sdmmc: ldo2 { + regulator-name = "VDDIO_SDMMC"; + 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>; + 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 = <7>; + maxim,ramp-rate-setting = <50000>; + }; + + vdd_rtc: 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>; + }; + + ldo5 { + regulator-name = "VDDIO_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>; + 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 = <7>; + maxim,ramp-rate-setting = <50000>; + }; + + avdd_1v05_pll: ldo7 { + regulator-name = "AVDD_1V05_PLL"; + 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>; + maxim,ramp-rate-setting = <50000>; + }; + + avdd_1v05: ldo8 { + regulator-name = "AVDD_SATA_HDMI_DP_1V05"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1050000>; + regulator-disable-ramp-delay = <4000>; + 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>; + 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 = <13092 7752>; + nvidia,core-pwr-off-time = <44188>; + 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-6}>; + 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 = <&avdd_1v05_pll>; + 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 = "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"; + }; + + pcie-5 { + nvidia,function = "usb3-ss"; + status = "okay"; + }; + + pcie-6 { + nvidia,function = "usb3-ss"; + status = "okay"; + }; + }; + }; + }; + + ports { + usb2-0 { + status = "okay"; + mode = "otg"; + usb-role-switch; + + vbus-supply = <&battery_reg>; + + 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_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>; + }; + }; + }; + }; }; diff --git a/tegra210b01-fric.dts b/tegra210b01-fric.dts index 3a65d33..f021c9c 100644 --- a/tegra210b01-fric.dts +++ b/tegra210b01-fric.dts @@ -6,4 +6,26 @@ #include "tegra210b01-nx-common.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>; + }; + }; + }; + }; }; diff --git a/tegra210b01-nx-common.dtsi b/tegra210b01-nx-common.dtsi index eaa3212..754f0d2 100644 --- a/tegra210b01-nx-common.dtsi +++ b/tegra210b01-nx-common.dtsi @@ -1,7 +1,747 @@ // 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-odin.dts b/tegra210b01-odin.dts index 3a65d33..3a8b24e 100644 --- a/tegra210b01-odin.dts +++ b/tegra210b01-odin.dts @@ -6,4 +6,26 @@ #include "tegra210b01-nx-common.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>; + }; + }; + }; + }; }; diff --git a/tegra210b01-vali.dts b/tegra210b01-vali.dts index 3a65d33..124c9ed 100644 --- a/tegra210b01-vali.dts +++ b/tegra210b01-vali.dts @@ -6,4 +6,28 @@ #include "tegra210b01-nx-common.dtsi" / { + model = "Nintendo Switch Lite"; + compatible = "nintendo,vali", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; + + i2c@7000d000 { + pmic@3c { + regulators { + vdd_sio: ldo8 { + regulator-name = "VDD_SIO"; + regulator-min-microvolt = <1000000>; + 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>; + }; + }; + }; + }; };