2 * Copyright (C) ST-Ericsson SA 2010
4 * License Terms: GNU General Public License v2
6 * Authors: Sundar Iyer <sundar.iyer@stericsson.com> for ST-Ericsson
7 * Bengt Jonsson <bengt.g.jonsson@stericsson.com> for ST-Ericsson
10 #ifndef __LINUX_MFD_AB8500_REGULATOR_H
11 #define __LINUX_MFD_AB8500_REGULATOR_H
13 #include <linux/platform_device.h>
15 /* AB8500 regulators */
16 enum ab8500_regulator_id
{
28 AB8500_NUM_REGULATORS
,
31 /* AB9450 regulators */
32 enum ab9540_regulator_id
{
47 AB9540_NUM_REGULATORS
,
50 /* AB8500 and AB9540 register initialization */
51 struct ab8500_regulator_reg_init
{
57 #define INIT_REGULATOR_REGISTER(_id, _mask, _value) \
64 /* AB8500 registers */
65 enum ab8500_regulator_reg
{
66 AB8500_REGUREQUESTCTRL2
,
67 AB8500_REGUREQUESTCTRL3
,
68 AB8500_REGUREQUESTCTRL4
,
69 AB8500_REGUSYSCLKREQ1HPVALID1
,
70 AB8500_REGUSYSCLKREQ1HPVALID2
,
71 AB8500_REGUHWHPREQ1VALID1
,
72 AB8500_REGUHWHPREQ1VALID2
,
73 AB8500_REGUHWHPREQ2VALID1
,
74 AB8500_REGUHWHPREQ2VALID2
,
75 AB8500_REGUSWHPREQVALID1
,
76 AB8500_REGUSWHPREQVALID2
,
77 AB8500_REGUSYSCLKREQVALID1
,
78 AB8500_REGUSYSCLKREQVALID2
,
81 AB8500_REGUCTRL1VAMIC
,
90 AB8500_REGUCTRL2SPARE
,
92 AB8500_REGUCTRLDISCH2
,
93 AB8500_NUM_REGULATOR_REGISTERS
,
97 /* AB9540 registers */
98 enum ab9540_regulator_reg
{
99 AB9540_REGUREQUESTCTRL1
,
100 AB9540_REGUREQUESTCTRL2
,
101 AB9540_REGUREQUESTCTRL3
,
102 AB9540_REGUREQUESTCTRL4
,
103 AB9540_REGUSYSCLKREQ1HPVALID1
,
104 AB9540_REGUSYSCLKREQ1HPVALID2
,
105 AB9540_REGUHWHPREQ1VALID1
,
106 AB9540_REGUHWHPREQ1VALID2
,
107 AB9540_REGUHWHPREQ2VALID1
,
108 AB9540_REGUHWHPREQ2VALID2
,
109 AB9540_REGUSWHPREQVALID1
,
110 AB9540_REGUSWHPREQVALID2
,
111 AB9540_REGUSYSCLKREQVALID1
,
112 AB9540_REGUSYSCLKREQVALID2
,
113 AB9540_REGUVAUX4REQVALID
,
116 AB9540_REGUCTRL1VAMIC
,
119 AB9540_VSMPS3REGU
, /* NOTE! PRCMU register */
121 AB9540_EXTSUPPLYREGU
,
123 AB9540_VRF1VAUX3REGU
,
130 AB9540_VSMPS3SEL1
, /* NOTE! PRCMU register */
131 AB9540_VSMPS3SEL2
, /* NOTE! PRCMU register */
135 AB9540_REGUCTRL2SPARE
,
139 AB9540_REGUCTRLDISCH
,
140 AB9540_REGUCTRLDISCH2
,
141 AB9540_REGUCTRLDISCH3
,
142 AB9540_NUM_REGULATOR_REGISTERS
,
145 /* AB8500 external regulators */
146 struct ab8500_ext_regulator_cfg
{
147 bool hwreq
; /* requires hw mode or high power mode */
150 enum ab8500_ext_regulator_id
{
154 AB8500_NUM_EXT_REGULATORS
,
157 /* AB8500 regulator platform data */
158 struct ab8500_regulator_platform_data
{
160 struct ab8500_regulator_reg_init
*reg_init
;
162 struct regulator_init_data
*regulator
;
163 int num_ext_regulator
;
164 struct regulator_init_data
*ext_regulator
;
167 /* AB8500 external regulator functions (internal) */
168 #ifdef CONFIG_REGULATOR_AB8500_EXT
169 int ab8500_ext_regulator_init(struct platform_device
*pdev
);
170 int ab8500_ext_regulator_exit(struct platform_device
*pdev
);
172 inline int ab8500_ext_regulator_init(struct platform_device
*pdev
)
176 inline int ab8500_ext_regulator_exit(struct platform_device
*pdev
)