xref: /openbmc/u-boot/include/power/sandbox_pmic.h (revision e8f339e0)
15d387d0dSPrzemyslaw Marczak /*
25d387d0dSPrzemyslaw Marczak  *  Copyright (C) 2015 Samsung Electronics
35d387d0dSPrzemyslaw Marczak  *  Przemyslaw Marczak  <p.marczak@samsung.com>
45d387d0dSPrzemyslaw Marczak  *
55d387d0dSPrzemyslaw Marczak  * SPDX-License-Identifier:	GPL-2.0+
65d387d0dSPrzemyslaw Marczak  */
75d387d0dSPrzemyslaw Marczak 
85d387d0dSPrzemyslaw Marczak #ifndef _SANDBOX_PMIC_H_
95d387d0dSPrzemyslaw Marczak #define  _SANDBOX_PMIC_H_
105d387d0dSPrzemyslaw Marczak 
115d387d0dSPrzemyslaw Marczak #define SANDBOX_LDO_DRIVER		"sandbox_ldo"
125d387d0dSPrzemyslaw Marczak #define SANDBOX_OF_LDO_PREFIX		"ldo"
135d387d0dSPrzemyslaw Marczak #define SANDBOX_BUCK_DRIVER		"sandbox_buck"
145d387d0dSPrzemyslaw Marczak #define SANDBOX_OF_BUCK_PREFIX		"buck"
155d387d0dSPrzemyslaw Marczak 
165d387d0dSPrzemyslaw Marczak #define SANDBOX_BUCK_COUNT	2
175d387d0dSPrzemyslaw Marczak #define SANDBOX_LDO_COUNT	2
185d387d0dSPrzemyslaw Marczak /*
195d387d0dSPrzemyslaw Marczak  * Sandbox PMIC registers:
205d387d0dSPrzemyslaw Marczak  * We have only 12 significant registers, but we alloc 16 for padding.
215d387d0dSPrzemyslaw Marczak  */
225d387d0dSPrzemyslaw Marczak enum {
235d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK1_UV = 0,
245d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK1_UA,
255d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK1_OM,
265d387d0dSPrzemyslaw Marczak 
275d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK2_UV,
285d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK2_UA,
295d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_BUCK2_OM,
305d387d0dSPrzemyslaw Marczak 
315d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO_OFFSET,
325d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO1_UV = SANDBOX_PMIC_REG_LDO_OFFSET,
335d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO1_UA,
345d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO1_OM,
355d387d0dSPrzemyslaw Marczak 
365d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO2_UV,
375d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO2_UA,
385d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_LDO2_OM,
395d387d0dSPrzemyslaw Marczak 
405d387d0dSPrzemyslaw Marczak 	SANDBOX_PMIC_REG_COUNT = 16,
415d387d0dSPrzemyslaw Marczak };
425d387d0dSPrzemyslaw Marczak 
435d387d0dSPrzemyslaw Marczak /* Register offset for output: micro Volts, micro Amps, Operation Mode */
445d387d0dSPrzemyslaw Marczak enum {
455d387d0dSPrzemyslaw Marczak 	OUT_REG_UV = 0,
465d387d0dSPrzemyslaw Marczak 	OUT_REG_UA,
475d387d0dSPrzemyslaw Marczak 	OUT_REG_OM,
485d387d0dSPrzemyslaw Marczak 	OUT_REG_COUNT,
495d387d0dSPrzemyslaw Marczak };
505d387d0dSPrzemyslaw Marczak 
515d387d0dSPrzemyslaw Marczak /* Buck operation modes */
525d387d0dSPrzemyslaw Marczak enum {
535d387d0dSPrzemyslaw Marczak 	BUCK_OM_OFF = 0,
545d387d0dSPrzemyslaw Marczak 	BUCK_OM_ON,
555d387d0dSPrzemyslaw Marczak 	BUCK_OM_PWM,
565d387d0dSPrzemyslaw Marczak 	BUCK_OM_COUNT,
575d387d0dSPrzemyslaw Marczak };
585d387d0dSPrzemyslaw Marczak 
595d387d0dSPrzemyslaw Marczak /* Ldo operation modes */
605d387d0dSPrzemyslaw Marczak enum {
615d387d0dSPrzemyslaw Marczak 	LDO_OM_OFF = 0,
625d387d0dSPrzemyslaw Marczak 	LDO_OM_ON,
635d387d0dSPrzemyslaw Marczak 	LDO_OM_SLEEP,
645d387d0dSPrzemyslaw Marczak 	LDO_OM_STANDBY,
655d387d0dSPrzemyslaw Marczak 	LDO_OM_COUNT,
665d387d0dSPrzemyslaw Marczak };
675d387d0dSPrzemyslaw Marczak 
685d387d0dSPrzemyslaw Marczak /* BUCK1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
695d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_MIN	800000
705d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_MAX	2400000
715d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UV_STEP	25000
725d387d0dSPrzemyslaw Marczak 
735d387d0dSPrzemyslaw Marczak /* BUCK1 Amperage: min: 150mA, step: 25mA, max: 250mA */
745d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_MIN	150000
755d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_MAX	250000
765d387d0dSPrzemyslaw Marczak #define OUT_BUCK1_UA_STEP	25000
775d387d0dSPrzemyslaw Marczak 
785d387d0dSPrzemyslaw Marczak /* BUCK2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
795d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_MIN	750000
805d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_MAX	3950000
815d387d0dSPrzemyslaw Marczak #define OUT_BUCK2_UV_STEP	50000
825d387d0dSPrzemyslaw Marczak 
835d387d0dSPrzemyslaw Marczak /* LDO1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
845d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_MIN		800000
855d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_MAX		2400000
865d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UV_STEP	25000
875d387d0dSPrzemyslaw Marczak 
885d387d0dSPrzemyslaw Marczak /* LDO1 Amperage: min: 100mA, step: 50mA, max: 200mA */
895d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_MIN		100000
905d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_MAX		200000
915d387d0dSPrzemyslaw Marczak #define OUT_LDO1_UA_STEP	50000
925d387d0dSPrzemyslaw Marczak 
935d387d0dSPrzemyslaw Marczak /* LDO2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
945d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_MIN		750000
955d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_MAX		3950000
965d387d0dSPrzemyslaw Marczak #define OUT_LDO2_UV_STEP	50000
975d387d0dSPrzemyslaw Marczak 
985d387d0dSPrzemyslaw Marczak /* register <-> value conversion */
995d387d0dSPrzemyslaw Marczak #define REG2VAL(min, step, reg)		((min) + ((step) * (reg)))
1005d387d0dSPrzemyslaw Marczak #define VAL2REG(min, step, val)		(((val) - (min)) / (step))
1015d387d0dSPrzemyslaw Marczak 
1025d387d0dSPrzemyslaw Marczak /* Operation mode id -> register value conversion */
1035d387d0dSPrzemyslaw Marczak #define OM2REG(x)			(x)
1045d387d0dSPrzemyslaw Marczak 
105*e8f339e0SPrzemyslaw Marczak /* Test data for: test/dm/power.c */
106*e8f339e0SPrzemyslaw Marczak 
107*e8f339e0SPrzemyslaw Marczak /* BUCK names */
108*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK1_DEVNAME	"buck1"
109*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK1_PLATNAME	"SUPPLY_1.2V"
110*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK2_DEVNAME	"buck2"
111*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK2_PLATNAME	"SUPPLY_3.3V"
112*e8f339e0SPrzemyslaw Marczak /* LDO names */
113*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO1_DEVNAME	"ldo1"
114*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO1_PLATNAME	"VDD_EMMC_1.8V"
115*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO2_DEVNAME	"ldo2"
116*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO2_PLATNAME	"VDD_LCD_3.3V"
117*e8f339e0SPrzemyslaw Marczak 
118*e8f339e0SPrzemyslaw Marczak /*
119*e8f339e0SPrzemyslaw Marczak  * Expected regulators setup after call of:
120*e8f339e0SPrzemyslaw Marczak  * - regulator_autoset()
121*e8f339e0SPrzemyslaw Marczak  * - regulator_list_autoset()
122*e8f339e0SPrzemyslaw Marczak  */
123*e8f339e0SPrzemyslaw Marczak 
124*e8f339e0SPrzemyslaw Marczak /* BUCK1: for testing regulator_autoset() */
125*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UV	1200000
126*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UA	200000
127*e8f339e0SPrzemyslaw Marczak #define SANDBOX_BUCK1_AUTOSET_EXPECTED_ENABLE	true
128*e8f339e0SPrzemyslaw Marczak 
129*e8f339e0SPrzemyslaw Marczak /* LDO1/2 for testing regulator_list_autoset() */
130*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO1_AUTOSET_EXPECTED_UV	1800000
131*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO1_AUTOSET_EXPECTED_UA	100000
132*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO1_AUTOSET_EXPECTED_ENABLE	true
133*e8f339e0SPrzemyslaw Marczak 
134*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO2_AUTOSET_EXPECTED_UV	3000000
135*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO2_AUTOSET_EXPECTED_UA	-ENOSYS
136*e8f339e0SPrzemyslaw Marczak #define SANDBOX_LDO2_AUTOSET_EXPECTED_ENABLE	false
137*e8f339e0SPrzemyslaw Marczak 
1385d387d0dSPrzemyslaw Marczak #endif
139