mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 20:18:18 +00:00 
			
		
		
		
	This change adds new file to sandbox driver model test environment.
The file is: test/dm/power.c, and it includes tests for PMIC framework,
which includes PMIC uclass and REGULATOR uclass.
All tests are based od Sandbox PMIC emulated device. Some test constants for
this device are defined in the header: include/power/sandbox_pmic.h
PMIC tests includes:
- pmic get - tests, that pmic_get() returns the requested device
- pmic I/O - tests I/O by writing and reading some values to PMIC's registers
             and then compares, that the write/read values are equal.
The regulator tests includes:
- Regulator get by devname/platname
- Voltage set/get
- Current set/get
- Enable set/get
- Mode set/get
- Autoset
- List autoset
For the regulator 'get' test, the returned device pointers are compared,
and their names are also compared to the requested one.
Every other test, first sets the given attribute and next try to get it.
The test pass, when the set/get values are equal.
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested on sandbox:
Tested-by: Simon Glass <sjg@chromium.org>
		
	
			
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  Copyright (C) 2015 Samsung Electronics
 | |
|  *  Przemyslaw Marczak  <p.marczak@samsung.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| #ifndef _SANDBOX_PMIC_H_
 | |
| #define  _SANDBOX_PMIC_H_
 | |
| 
 | |
| #define SANDBOX_LDO_DRIVER		"sandbox_ldo"
 | |
| #define SANDBOX_OF_LDO_PREFIX		"ldo"
 | |
| #define SANDBOX_BUCK_DRIVER		"sandbox_buck"
 | |
| #define SANDBOX_OF_BUCK_PREFIX		"buck"
 | |
| 
 | |
| #define SANDBOX_BUCK_COUNT	2
 | |
| #define SANDBOX_LDO_COUNT	2
 | |
| /*
 | |
|  * Sandbox PMIC registers:
 | |
|  * We have only 12 significant registers, but we alloc 16 for padding.
 | |
|  */
 | |
| enum {
 | |
| 	SANDBOX_PMIC_REG_BUCK1_UV = 0,
 | |
| 	SANDBOX_PMIC_REG_BUCK1_UA,
 | |
| 	SANDBOX_PMIC_REG_BUCK1_OM,
 | |
| 
 | |
| 	SANDBOX_PMIC_REG_BUCK2_UV,
 | |
| 	SANDBOX_PMIC_REG_BUCK2_UA,
 | |
| 	SANDBOX_PMIC_REG_BUCK2_OM,
 | |
| 
 | |
| 	SANDBOX_PMIC_REG_LDO_OFFSET,
 | |
| 	SANDBOX_PMIC_REG_LDO1_UV = SANDBOX_PMIC_REG_LDO_OFFSET,
 | |
| 	SANDBOX_PMIC_REG_LDO1_UA,
 | |
| 	SANDBOX_PMIC_REG_LDO1_OM,
 | |
| 
 | |
| 	SANDBOX_PMIC_REG_LDO2_UV,
 | |
| 	SANDBOX_PMIC_REG_LDO2_UA,
 | |
| 	SANDBOX_PMIC_REG_LDO2_OM,
 | |
| 
 | |
| 	SANDBOX_PMIC_REG_COUNT = 16,
 | |
| };
 | |
| 
 | |
| /* Register offset for output: micro Volts, micro Amps, Operation Mode */
 | |
| enum {
 | |
| 	OUT_REG_UV = 0,
 | |
| 	OUT_REG_UA,
 | |
| 	OUT_REG_OM,
 | |
| 	OUT_REG_COUNT,
 | |
| };
 | |
| 
 | |
| /* Buck operation modes */
 | |
| enum {
 | |
| 	BUCK_OM_OFF = 0,
 | |
| 	BUCK_OM_ON,
 | |
| 	BUCK_OM_PWM,
 | |
| 	BUCK_OM_COUNT,
 | |
| };
 | |
| 
 | |
| /* Ldo operation modes */
 | |
| enum {
 | |
| 	LDO_OM_OFF = 0,
 | |
| 	LDO_OM_ON,
 | |
| 	LDO_OM_SLEEP,
 | |
| 	LDO_OM_STANDBY,
 | |
| 	LDO_OM_COUNT,
 | |
| };
 | |
| 
 | |
| /* BUCK1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
 | |
| #define OUT_BUCK1_UV_MIN	800000
 | |
| #define OUT_BUCK1_UV_MAX	2400000
 | |
| #define OUT_BUCK1_UV_STEP	25000
 | |
| 
 | |
| /* BUCK1 Amperage: min: 150mA, step: 25mA, max: 250mA */
 | |
| #define OUT_BUCK1_UA_MIN	150000
 | |
| #define OUT_BUCK1_UA_MAX	250000
 | |
| #define OUT_BUCK1_UA_STEP	25000
 | |
| 
 | |
| /* BUCK2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
 | |
| #define OUT_BUCK2_UV_MIN	750000
 | |
| #define OUT_BUCK2_UV_MAX	3950000
 | |
| #define OUT_BUCK2_UV_STEP	50000
 | |
| 
 | |
| /* LDO1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
 | |
| #define OUT_LDO1_UV_MIN		800000
 | |
| #define OUT_LDO1_UV_MAX		2400000
 | |
| #define OUT_LDO1_UV_STEP	25000
 | |
| 
 | |
| /* LDO1 Amperage: min: 100mA, step: 50mA, max: 200mA */
 | |
| #define OUT_LDO1_UA_MIN		100000
 | |
| #define OUT_LDO1_UA_MAX		200000
 | |
| #define OUT_LDO1_UA_STEP	50000
 | |
| 
 | |
| /* LDO2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
 | |
| #define OUT_LDO2_UV_MIN		750000
 | |
| #define OUT_LDO2_UV_MAX		3950000
 | |
| #define OUT_LDO2_UV_STEP	50000
 | |
| 
 | |
| /* register <-> value conversion */
 | |
| #define REG2VAL(min, step, reg)		((min) + ((step) * (reg)))
 | |
| #define VAL2REG(min, step, val)		(((val) - (min)) / (step))
 | |
| 
 | |
| /* Operation mode id -> register value conversion */
 | |
| #define OM2REG(x)			(x)
 | |
| 
 | |
| /* Test data for: test/dm/power.c */
 | |
| 
 | |
| /* BUCK names */
 | |
| #define SANDBOX_BUCK1_DEVNAME	"buck1"
 | |
| #define SANDBOX_BUCK1_PLATNAME	"SUPPLY_1.2V"
 | |
| #define SANDBOX_BUCK2_DEVNAME	"buck2"
 | |
| #define SANDBOX_BUCK2_PLATNAME	"SUPPLY_3.3V"
 | |
| /* LDO names */
 | |
| #define SANDBOX_LDO1_DEVNAME	"ldo1"
 | |
| #define SANDBOX_LDO1_PLATNAME	"VDD_EMMC_1.8V"
 | |
| #define SANDBOX_LDO2_DEVNAME	"ldo2"
 | |
| #define SANDBOX_LDO2_PLATNAME	"VDD_LCD_3.3V"
 | |
| 
 | |
| /*
 | |
|  * Expected regulators setup after call of:
 | |
|  * - regulator_autoset()
 | |
|  * - regulator_list_autoset()
 | |
|  */
 | |
| 
 | |
| /* BUCK1: for testing regulator_autoset() */
 | |
| #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UV	1200000
 | |
| #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UA	200000
 | |
| #define SANDBOX_BUCK1_AUTOSET_EXPECTED_ENABLE	true
 | |
| 
 | |
| /* LDO1/2 for testing regulator_list_autoset() */
 | |
| #define SANDBOX_LDO1_AUTOSET_EXPECTED_UV	1800000
 | |
| #define SANDBOX_LDO1_AUTOSET_EXPECTED_UA	100000
 | |
| #define SANDBOX_LDO1_AUTOSET_EXPECTED_ENABLE	true
 | |
| 
 | |
| #define SANDBOX_LDO2_AUTOSET_EXPECTED_UV	3000000
 | |
| #define SANDBOX_LDO2_AUTOSET_EXPECTED_UA	-ENOSYS
 | |
| #define SANDBOX_LDO2_AUTOSET_EXPECTED_ENABLE	false
 | |
| 
 | |
| #endif
 |