diff --git a/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi index 67c9c8c9fdcb..b5d9a2d109ad 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra210-nx.dtsi @@ -51,12 +51,37 @@ 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 = "jdi,lpm062m326a"; + compatible = "nintendo,panel-nx-dsi"; reset-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_HIGH>; backlight = <&backlight>; vdd1-supply = <&v_pavdd_5v0>; diff --git a/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi b/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi index 0bf9575eb4fb..1bdcdf8837d0 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra210b01-nx.dtsi @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include +#include +#include #include "tegra210b01.dtsi" @@ -17,12 +19,725 @@ 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>; + + touchscreen@49 { + compatible = "stm,ftm4_fts"; + status = "okay"; + reg = <0x49>; + interrupt-parent = <&gpio>; + interrupts = ; + vdd-tp-2v9-supply = <&max77620_ldo6>; + stm,vio-gpio = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_HIGH>; + stm,irq_type = <0x2000>; /* IRQF_ONESHOT */ + stm,regulator_avdd = "vdd-tp-2v9"; + stm,max_coords = <1280 720>; + stm,max-real-coords = <1264 704>; + stm,edge-offset = <15 15>; + stm,delayed-open; + stm,delayed-open-time = <0>; + }; + }; + + 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 */ + 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>; @@ -33,12 +748,48 @@ nvidia,core-power-req-active-high; nvidia,sys-clock-req-active-high; status = "okay"; - }; - mmc@700b0600 { - bus-width = <8>; - non-removable; - 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 { @@ -47,6 +798,76 @@ #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>; + }; + }; + + 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"; @@ -429,4 +1250,43 @@ }; }; }; + + 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/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts b/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts index e4a175c554b3..943491ac427c 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts +++ b/arch/arm64/boot/dts/nvidia/tegra210b01-vali.dts @@ -5,7 +5,7 @@ / { model = "Nintendo Switch Lite"; - compatible = "nvidia,vali", "nintendo,hoag", "nintendo,nx", "nvidia,tegra210b01"; + compatible = "nvidia,vali", "nintendo,hoag", "nintendo,nx", "nvidia,tegra210b01", "nvidia,tegra210"; /* Joycon/Fan power (usb) */ v_vdd50_b: v-vdd50-b { @@ -48,6 +48,33 @@ }; }; + i2c@7000c000 { + bm92t: bm92t@18 { + status = "disabled"; + /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_b: pmic@3c { regulators { @@ -64,4 +91,52 @@ }; }; + 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>; + }; };