// SPDX-License-Identifier: GPL-2.0

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>

/ {
	i2c@7000d000 {
		pmic: pmic@2d {
			compatible = "ti,tps65911";
			reg = <0x2d>;

			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
			#interrupt-cells = <2>;
			interrupt-controller;
			wakeup-source;

			ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
			ti,system-power-controller;
			ti,sleep-keep-ck32k;
			ti,sleep-enable;

			#gpio-cells = <2>;
			gpio-controller;

			vcc1-supply = <&vdd_5v0_sys>;
			vcc2-supply = <&vdd_5v0_sys>;
			vcc3-supply = <&vdd_1v8>;
			vcc4-supply = <&vdd_5v0_sys>;
			vcc5-supply = <&vdd_5v0_sys>;
			vcc6-supply = <&vdd2_reg>;
			vcc7-supply = <&vdd_5v0_sys>;
			vccio-supply = <&vdd_5v0_sys>;

			regulators {
				vdd1 {
					regulator-name = "vddio_ddr_1v2";
					regulator-min-microvolt = <600000>;
					regulator-max-microvolt = <1500000>;
					regulator-always-on;
					regulator-boot-on;
					ti,regulator-ext-sleep-control = <8>;
				};

				vdd2_reg: vdd2 {
					regulator-name = "vdd2_1v2";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					regulator-always-on;
					regulator-boot-on;
				};

				vdd_cpu: vddctrl {
					regulator-name = "vdd_cpu,vdd_sys";
					regulator-min-microvolt = <800000>;
					regulator-max-microvolt = <1250000>;
					regulator-coupled-with = <&vdd_core>;
					regulator-coupled-max-spread = <300000>;
					regulator-max-step-microvolt = <100000>;
					regulator-always-on;
					ti,regulator-ext-sleep-control = <1>;

					nvidia,tegra-cpu-regulator;
				};

				vdd_1v8: vio {
					regulator-name = "vdd_1v8_gen";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
					regulator-always-on;
					regulator-boot-on;
				};

				vcore_emmc: ldo1 {
					regulator-name = "vdd_pexa,vdd_pexb";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <3300000>;
					regulator-always-on;
				};

				ldo2 {
					regulator-name = "vdd_sata,avdd_plle";
					regulator-min-microvolt = <1050000>;
					regulator-max-microvolt = <1050000>;
				};

				/* LDO3 is not connected to anything */

				ldo4 {
					regulator-name = "vdd_rtc";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					regulator-always-on;
				};

				ldo5 {
					regulator-name = "vddio_sdmmc,avdd_vdac";
					regulator-min-microvolt = <1800000>;
					regulator-max-microvolt = <1800000>;
				};

				ldo6 {
					regulator-name = "avdd_dsi_csi,pwrdet_mipi";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
				};

				ldo7 {
					regulator-name = "vdd_pllm,x,u,a_p_c_s";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					regulator-always-on;
					regulator-boot-on;
					ti,regulator-ext-sleep-control = <8>;
				};

				ldo8 {
					regulator-name = "vdd_ddr_hs";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1000000>;
					regulator-always-on;
					ti,regulator-ext-sleep-control = <8>;
				};
			};
		};

		vdd_core: core-regulator@60 {
			compatible = "ti,tps62361";
			reg = <0x60>;

			regulator-name = "tps62361-vout";
			regulator-min-microvolt = <500000>;
			regulator-max-microvolt = <1350000>;
			regulator-coupled-with = <&vdd_cpu>;
			regulator-coupled-max-spread = <300000>;
			regulator-max-step-microvolt = <100000>;
			regulator-boot-on;
			regulator-always-on;
			ti,enable-vout-discharge;
			ti,vsel0-state-high;
			ti,vsel1-state-high;

			nvidia,tegra-core-regulator;
		};
	};

	vdd_3v3_sys: regulator-3v3 {
		gpio = <&pmic 6 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	pmc@7000e400 {
		i2c-thermtrip {
			nvidia,i2c-controller-id = <4>;
			nvidia,bus-addr = <0x2d>;
			nvidia,reg-addr = <0x3f>;
			nvidia,reg-data = <0x80>;
		};
	};
};