Home | History | Annotate | Download | only in power
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  *  Copyright (C) 2015 Samsung Electronics
      4  *  Przemyslaw Marczak  <p.marczak (at) samsung.com>
      5  */
      6 
      7 #ifndef _SANDBOX_PMIC_H_
      8 #define  _SANDBOX_PMIC_H_
      9 
     10 #define SANDBOX_LDO_DRIVER		"sandbox_ldo"
     11 #define SANDBOX_OF_LDO_PREFIX		"ldo"
     12 #define SANDBOX_BUCK_DRIVER		"sandbox_buck"
     13 #define SANDBOX_OF_BUCK_PREFIX		"buck"
     14 
     15 #define SANDBOX_BUCK_COUNT	3
     16 #define SANDBOX_LDO_COUNT	2
     17 /*
     18  * Sandbox PMIC registers:
     19  * We have only 12 significant registers, but we alloc 16 for padding.
     20  */
     21 enum {
     22 	SANDBOX_PMIC_REG_BUCK1_UV = 0,
     23 	SANDBOX_PMIC_REG_BUCK1_UA,
     24 	SANDBOX_PMIC_REG_BUCK1_OM,
     25 
     26 	SANDBOX_PMIC_REG_BUCK2_UV,
     27 	SANDBOX_PMIC_REG_BUCK2_UA,
     28 	SANDBOX_PMIC_REG_BUCK2_OM,
     29 
     30 	SANDBOX_PMIC_REG_LDO_OFFSET,
     31 	SANDBOX_PMIC_REG_LDO1_UV = SANDBOX_PMIC_REG_LDO_OFFSET,
     32 	SANDBOX_PMIC_REG_LDO1_UA,
     33 	SANDBOX_PMIC_REG_LDO1_OM,
     34 
     35 	SANDBOX_PMIC_REG_LDO2_UV,
     36 	SANDBOX_PMIC_REG_LDO2_UA,
     37 	SANDBOX_PMIC_REG_LDO2_OM,
     38 
     39 	SANDBOX_PMIC_REG_COUNT = 16,
     40 };
     41 
     42 /* Register offset for output: micro Volts, micro Amps, Operation Mode */
     43 enum {
     44 	OUT_REG_UV = 0,
     45 	OUT_REG_UA,
     46 	OUT_REG_OM,
     47 	OUT_REG_COUNT,
     48 };
     49 
     50 /* Buck operation modes */
     51 enum {
     52 	BUCK_OM_OFF = 0,
     53 	BUCK_OM_ON,
     54 	BUCK_OM_PWM,
     55 	BUCK_OM_COUNT,
     56 };
     57 
     58 /* Ldo operation modes */
     59 enum {
     60 	LDO_OM_OFF = 0,
     61 	LDO_OM_ON,
     62 	LDO_OM_SLEEP,
     63 	LDO_OM_STANDBY,
     64 	LDO_OM_COUNT,
     65 };
     66 
     67 /* BUCK1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
     68 #define OUT_BUCK1_UV_MIN	800000
     69 #define OUT_BUCK1_UV_MAX	2400000
     70 #define OUT_BUCK1_UV_STEP	25000
     71 
     72 /* BUCK1 Amperage: min: 150mA, step: 25mA, max: 250mA */
     73 #define OUT_BUCK1_UA_MIN	150000
     74 #define OUT_BUCK1_UA_MAX	250000
     75 #define OUT_BUCK1_UA_STEP	25000
     76 
     77 /* BUCK2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
     78 #define OUT_BUCK2_UV_MIN	750000
     79 #define OUT_BUCK2_UV_MAX	3950000
     80 #define OUT_BUCK2_UV_STEP	50000
     81 
     82 /* LDO1 Voltage: min: 0.8V, step: 25mV, max 2.4V */
     83 #define OUT_LDO1_UV_MIN		800000
     84 #define OUT_LDO1_UV_MAX		2400000
     85 #define OUT_LDO1_UV_STEP	25000
     86 
     87 /* LDO1 Amperage: min: 100mA, step: 50mA, max: 200mA */
     88 #define OUT_LDO1_UA_MIN		100000
     89 #define OUT_LDO1_UA_MAX		200000
     90 #define OUT_LDO1_UA_STEP	50000
     91 
     92 /* LDO2 Voltage: min: 0.75V, step: 50mV, max 3.95V */
     93 #define OUT_LDO2_UV_MIN		750000
     94 #define OUT_LDO2_UV_MAX		3950000
     95 #define OUT_LDO2_UV_STEP	50000
     96 
     97 /* register <-> value conversion */
     98 #define REG2VAL(min, step, reg)		((min) + ((step) * (reg)))
     99 #define VAL2REG(min, step, val)		(((val) - (min)) / (step))
    100 
    101 /* Operation mode id -> register value conversion */
    102 #define OM2REG(x)			(x)
    103 
    104 /* Test data for: test/dm/power.c */
    105 
    106 /* BUCK names */
    107 #define SANDBOX_BUCK1_DEVNAME	"buck1"
    108 #define SANDBOX_BUCK1_PLATNAME	"SUPPLY_1.2V"
    109 #define SANDBOX_BUCK2_DEVNAME	"buck2"
    110 #define SANDBOX_BUCK2_PLATNAME	"SUPPLY_3.3V"
    111 /* BUCK3: for testing fallback regulator prefix matching during bind */
    112 #define SANDBOX_BUCK3_DEVNAME	"no_match_by_nodename"
    113 #define SANDBOX_BUCK3_PLATNAME	"buck_SUPPLY_1.5V"
    114 /* LDO names */
    115 #define SANDBOX_LDO1_DEVNAME	"ldo1"
    116 #define SANDBOX_LDO1_PLATNAME	"VDD_EMMC_1.8V"
    117 #define SANDBOX_LDO2_DEVNAME	"ldo2"
    118 #define SANDBOX_LDO2_PLATNAME	"VDD_LCD_3.3V"
    119 
    120 /*
    121  * Expected regulators setup after call of:
    122  * - regulator_autoset_by_name()
    123  * - regulator_list_autoset()
    124  */
    125 
    126 /* BUCK1: for testing regulator_autoset_by_name() */
    127 #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UV	1200000
    128 #define SANDBOX_BUCK1_AUTOSET_EXPECTED_UA	200000
    129 #define SANDBOX_BUCK1_AUTOSET_EXPECTED_ENABLE	true
    130 
    131 /* BUCK2: for testing sandbox ADC's supply */
    132 #define SANDBOX_BUCK2_INITIAL_EXPECTED_UV	3000000
    133 #define SANDBOX_BUCK2_SET_UV			3300000
    134 
    135 /* LDO1/2 for testing regulator_list_autoset() */
    136 #define SANDBOX_LDO1_AUTOSET_EXPECTED_UV	1800000
    137 #define SANDBOX_LDO1_AUTOSET_EXPECTED_UA	100000
    138 #define SANDBOX_LDO1_AUTOSET_EXPECTED_ENABLE	true
    139 
    140 #define SANDBOX_LDO2_AUTOSET_EXPECTED_UV	3000000
    141 #define SANDBOX_LDO2_AUTOSET_EXPECTED_UA	-ENOSYS
    142 #define SANDBOX_LDO2_AUTOSET_EXPECTED_ENABLE	false
    143 
    144 #endif
    145