summaryrefslogtreecommitdiff
path: root/include/power/sandbox_pmic.h
blob: f317c3ae90995c701b7f454e4dc63c573e53310d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
 *  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)

#endif