// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2016 Texas Instruments Incorporated - https://www.ti.com/
 */

/*
 * Integrated Power Management Chip
 * https://www.ti.com/lit/ds/symlink/tps65917-q1.pdf
 */

&tps65917 {
	compatible = "ti,tps65917";

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

	ti,system-power-controller;

	tps65917_pmic {
		compatible = "ti,tps65917-pmic";

		smps1-in-supply = <&vsys_3v3>;
		smps2-in-supply = <&vsys_3v3>;
		smps3-in-supply = <&vsys_3v3>;
		smps4-in-supply = <&vsys_3v3>;
		smps5-in-supply = <&vsys_3v3>;
		ldo1-in-supply = <&vsys_3v3>;
		ldo2-in-supply = <&vsys_3v3>;
		ldo3-in-supply = <&vsys_3v3>;
		ldo4-in-supply = <&evm_5v0>;
		ldo5-in-supply = <&vsys_3v3>;

		tps65917_regulators: regulators {
			smps1_reg: smps1 {
				/* VDD_MPU */
				regulator-name = "smps1";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1250000>;
				regulator-always-on;
				regulator-boot-on;
			};

			smps2_reg: smps2 {
				/* VDD_CORE */
				regulator-name = "smps2";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1150000>;
				regulator-boot-on;
				regulator-always-on;
			};

			smps3_reg: smps3 {
				/* VDD_GPU IVA DSPEVE */
				regulator-name = "smps3";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1250000>;
				regulator-boot-on;
				regulator-always-on;
			};

			smps4_reg: smps4 {
				/* VDDS1V8 */
				regulator-name = "smps4";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			smps5_reg: smps5 {
				/* VDD_DDR */
				regulator-name = "smps5";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo1_reg: ldo1 {
				/* LDO1_OUT --> SDIO  */
				regulator-name = "ldo1";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-allow-bypass;
			};

			ldo2_reg: ldo2 {
				regulator-name = "ldo2";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-allow-bypass;
			};

			ldo3_reg: ldo3 {
				/* VDDA_1V8_PHY */
				regulator-name = "ldo3";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo5_reg: ldo5 {
				/* VDDA_1V8_PLL */
				regulator-name = "ldo5";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo4_reg: ldo4 {
				/* VDDA_3V_USB: VDDA_USBHS33 */
				regulator-name = "ldo4";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
			};
		};
	};

	tps65917_power_button {
		compatible = "ti,palmas-pwrbutton";
		interrupt-parent = <&tps65917>;
		interrupts = <1 IRQ_TYPE_NONE>;
		wakeup-source;
		ti,palmas-long-press-seconds = <6>;
	};
};

&usb2_phy1 {
	phy-supply = <&ldo4_reg>;
};

&usb2_phy2 {
	phy-supply = <&ldo4_reg>;
};

&dss {
	vdda_video-supply = <&ldo5_reg>;
};

&mmc1 {
	vqmmc-supply = <&ldo1_reg>;
};

&cpu0 {
	vdd-supply = <&smps1_reg>;
};
