summaryrefslogtreecommitdiff
path: root/include/linux/mfd/s5m87xx/s5m-pmic.h
blob: 7c719f20f58ab7a98340917faf80f42c65bce6de (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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* s5m87xx.h
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

#ifndef __LINUX_MFD_S5M_PMIC_H
#define __LINUX_MFD_S5M_PMIC_H

#include <linux/regulator/machine.h>

/* S5M8767 regulator ids */
enum s5m8767_regulators {
	S5M8767_LDO1,
	S5M8767_LDO2,
	S5M8767_LDO3,
	S5M8767_LDO4,
	S5M8767_LDO5,
	S5M8767_LDO6,
	S5M8767_LDO7,
	S5M8767_LDO8,
	S5M8767_LDO9,
	S5M8767_LDO10,
	S5M8767_LDO11,
	S5M8767_LDO12,
	S5M8767_LDO13,
	S5M8767_LDO14,
	S5M8767_LDO15,
	S5M8767_LDO16,
	S5M8767_LDO17,
	S5M8767_LDO18,
	S5M8767_LDO19,
	S5M8767_LDO20,
	S5M8767_LDO21,
	S5M8767_LDO22,
	S5M8767_LDO23,
	S5M8767_LDO24,
	S5M8767_LDO25,
	S5M8767_LDO26,
	S5M8767_LDO27,
	S5M8767_LDO28,
	S5M8767_BUCK1,
	S5M8767_BUCK2,
	S5M8767_BUCK3,
	S5M8767_BUCK4,
	S5M8767_BUCK5,
	S5M8767_BUCK6,
	S5M8767_BUCK7,
	S5M8767_BUCK8,
	S5M8767_BUCK9,
	S5M8767_AP_EN32KHZ,
	S5M8767_CP_EN32KHZ,

	S5M8767_REG_MAX,
};

#define S5M8767_ENCTRL_SHIFT  6

/* S5M8763 regulator ids */
enum s5m8763_regulators {
	S5M8763_LDO1,
	S5M8763_LDO2,
	S5M8763_LDO3,
	S5M8763_LDO4,
	S5M8763_LDO5,
	S5M8763_LDO6,
	S5M8763_LDO7,
	S5M8763_LDO8,
	S5M8763_LDO9,
	S5M8763_LDO10,
	S5M8763_LDO11,
	S5M8763_LDO12,
	S5M8763_LDO13,
	S5M8763_LDO14,
	S5M8763_LDO15,
	S5M8763_LDO16,
	S5M8763_BUCK1,
	S5M8763_BUCK2,
	S5M8763_BUCK3,
	S5M8763_BUCK4,
	S5M8763_AP_EN32KHZ,
	S5M8763_CP_EN32KHZ,
	S5M8763_ENCHGVI,
	S5M8763_ESAFEUSB1,
	S5M8763_ESAFEUSB2,
};

/**
 * s5m87xx_regulator_data - regulator data
 * @id: regulator id
 * @initdata: regulator init data (contraints, supplies, ...)
 */
struct s5m_regulator_data {
	int				id;
	struct regulator_init_data	*initdata;
};

/*
 * s5m_opmode_data - regulator operation mode data
 * @id: regulator id
 * @mode: regulator operation mode
 */
struct s5m_opmode_data {
	int id;
	int mode;
};

/*
 * s5m regulator operation mode
 * S5M_OPMODE_OFF	Regulator always OFF
 * S5M_OPMODE_ON	Regulator always ON
 * S5M_OPMODE_LOWPOWER  Regulator is on in low-power mode
 * S5M_OPMODE_SUSPEND   Regulator is changed by PWREN pin
 *			If PWREN is high, regulator is on
 *			If PWREN is low, regulator is off
 */

enum s5m_opmode {
	S5M_OPMODE_OFF,
	S5M_OPMODE_ON,
	S5M_OPMODE_LOWPOWER,
	S5M_OPMODE_SUSPEND,
};

#endif /*  __LINUX_MFD_S5M_PMIC_H */