/*
 *  Sandbox PMIC dts node
 *
 *  Copyright (C) 2015 Samsung Electronics
 *  Przemyslaw Marczak  <p.marczak@samsung.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <dt-bindings/pmic/sandbox_pmic.h>

&sandbox_pmic {
	compatible = "sandbox,pmic";

	pmic_emul {
		compatible = "sandbox,i2c-pmic";

		/*
		 * Default PMICs register values are set by macro
		 * VAL2REG(min, step, value) [uV/uA]
		 * VAL2OMREG(mode id)
		 * reg-defaults - byte array
		 */
		reg-defaults = /bits/ 8 <
			/* BUCK1 */
			VAL2REG(800000, 25000, 1000000)
			VAL2REG(150000, 25000, 150000)
			VAL2OMREG(BUCK_OM_OFF)
			/* BUCK2 */
			VAL2REG(750000, 50000, 3000000)
			VAL2REG(150000, 25000, 150000)
			VAL2OMREG(0)
			/* LDO1 */
			VAL2REG(800000, 25000, 1600000)
			VAL2REG(100000, 50000, 150000)
			VAL2OMREG(LDO_OM_OFF)
			/* LDO2 */
			VAL2REG(750000, 50000, 3000000)
			VAL2REG(150000, 25000, 150000)
			VAL2OMREG(0)
			/* reg[12:15] - not used */
			0x00
			0x00
			0x00
			0x00
		>;
	};

	buck1 {
		regulator-name = "SUPPLY_1.2V";
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <1200000>;
		regulator-min-microamp = <200000>;
		regulator-max-microamp = <200000>;
		regulator-always-on;
	};

	buck2: buck2 {
		regulator-name = "SUPPLY_3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	ldo1 {
		regulator-name = "VDD_EMMC_1.8V";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-min-microamp = <100000>;
		regulator-max-microamp = <100000>;
		regulator-boot-on;
	};

	ldo2 {
		regulator-name = "VDD_LCD_3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	no_match_by_nodename {
		regulator-name = "buck_SUPPLY_1.5V";
		regulator-min-microvolt = <1500000>;
		regulator-max-microvolt = <1500000>;
	};
};
