Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
mfd
max8997.h
Go to the documentation of this file.
1
/*
2
* max8997.h - Driver for the Maxim 8997/8966
3
*
4
* Copyright (C) 2009-2010 Samsung Electrnoics
5
* MyungJoo Ham <
[email protected]
>
6
*
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
*
21
* This driver is based on max8998.h
22
*
23
* MAX8997 has PMIC, MUIC, HAPTIC, RTC, FLASH, and Fuel Gauge devices.
24
* Except Fuel Gauge, every device shares the same I2C bus and included in
25
* this mfd driver. Although the fuel gauge is included in the chip, it is
26
* excluded from the driver because a) it has a different I2C bus from
27
* others and b) it can be enabled simply by using MAX17042 driver.
28
*/
29
30
#ifndef __LINUX_MFD_MAX8998_H
31
#define __LINUX_MFD_MAX8998_H
32
33
#include <
linux/regulator/consumer.h
>
34
35
/* MAX8997/8966 regulator IDs */
36
enum
max8998_regulators
{
37
MAX8997_LDO1
= 0,
38
MAX8997_LDO2
,
39
MAX8997_LDO3
,
40
MAX8997_LDO4
,
41
MAX8997_LDO5
,
42
MAX8997_LDO6
,
43
MAX8997_LDO7
,
44
MAX8997_LDO8
,
45
MAX8997_LDO9
,
46
MAX8997_LDO10
,
47
MAX8997_LDO11
,
48
MAX8997_LDO12
,
49
MAX8997_LDO13
,
50
MAX8997_LDO14
,
51
MAX8997_LDO15
,
52
MAX8997_LDO16
,
53
MAX8997_LDO17
,
54
MAX8997_LDO18
,
55
MAX8997_LDO21
,
56
MAX8997_BUCK1
,
57
MAX8997_BUCK2
,
58
MAX8997_BUCK3
,
59
MAX8997_BUCK4
,
60
MAX8997_BUCK5
,
61
MAX8997_BUCK6
,
62
MAX8997_BUCK7
,
63
MAX8997_EN32KHZ_AP
,
64
MAX8997_EN32KHZ_CP
,
65
MAX8997_ENVICHG
,
66
MAX8997_ESAFEOUT1
,
67
MAX8997_ESAFEOUT2
,
68
MAX8997_CHARGER_CV
,
/* control MBCCV of MBCCTRL3 */
69
MAX8997_CHARGER
,
/* charger current, MBCCTRL4 */
70
MAX8997_CHARGER_TOPOFF
,
/* MBCCTRL5 */
71
72
MAX8997_REG_MAX
,
73
};
74
75
struct
max8997_regulator_data
{
76
int
id
;
77
struct
regulator_init_data
*
initdata
;
78
};
79
80
enum
max8997_muic_usb_type
{
81
MAX8997_USB_HOST
,
82
MAX8997_USB_DEVICE
,
83
};
84
85
enum
max8997_muic_charger_type
{
86
MAX8997_CHARGER_TYPE_NONE
= 0,
87
MAX8997_CHARGER_TYPE_USB
,
88
MAX8997_CHARGER_TYPE_DOWNSTREAM_PORT
,
89
MAX8997_CHARGER_TYPE_DEDICATED_CHG
,
90
MAX8997_CHARGER_TYPE_500MA
,
91
MAX8997_CHARGER_TYPE_1A
,
92
MAX8997_CHARGER_TYPE_DEAD_BATTERY
= 7,
93
};
94
95
struct
max8997_muic_reg_data
{
96
u8
addr
;
97
u8
data
;
98
};
99
106
struct
max8997_muic_platform_data
{
107
struct
max8997_muic_reg_data
*
init_data
;
108
int
num_init_data
;
109
};
110
111
enum
max8997_haptic_motor_type
{
112
MAX8997_HAPTIC_ERM
,
113
MAX8997_HAPTIC_LRA
,
114
};
115
116
enum
max8997_haptic_pulse_mode
{
117
MAX8997_EXTERNAL_MODE
,
118
MAX8997_INTERNAL_MODE
,
119
};
120
121
enum
max8997_haptic_pwm_divisor
{
122
MAX8997_PWM_DIVISOR_32
,
123
MAX8997_PWM_DIVISOR_64
,
124
MAX8997_PWM_DIVISOR_128
,
125
MAX8997_PWM_DIVISOR_256
,
126
};
127
147
struct
max8997_haptic_platform_data
{
148
unsigned
int
pwm_channel_id
;
149
unsigned
int
pwm_period
;
150
151
enum
max8997_haptic_motor_type
type
;
152
enum
max8997_haptic_pulse_mode
mode
;
153
enum
max8997_haptic_pwm_divisor
pwm_divisor
;
154
155
unsigned
int
internal_mode_pattern
;
156
unsigned
int
pattern_cycle
;
157
unsigned
int
pattern_signal_period
;
158
};
159
160
enum
max8997_led_mode
{
161
MAX8997_NONE
,
162
MAX8997_FLASH_MODE
,
163
MAX8997_MOVIE_MODE
,
164
MAX8997_FLASH_PIN_CONTROL_MODE
,
165
MAX8997_MOVIE_PIN_CONTROL_MODE
,
166
};
167
177
struct
max8997_led_platform_data
{
178
enum
max8997_led_mode
mode
[2];
179
u8
brightness
[2];
180
};
181
182
struct
max8997_platform_data
{
183
/* IRQ */
184
int
ono
;
185
int
wakeup
;
186
187
/* ---- PMIC ---- */
188
struct
max8997_regulator_data
*
regulators
;
189
int
num_regulators
;
190
191
/*
192
* SET1~3 DVS GPIOs control Buck1, 2, and 5 simultaneously. Therefore,
193
* With buckx_gpiodvs enabled, the buckx cannot be controlled
194
* independently. To control buckx (of 1, 2, and 5) independently,
195
* disable buckx_gpiodvs and control with BUCKxDVS1 register.
196
*
197
* When buckx_gpiodvs and bucky_gpiodvs are both enabled, set_voltage
198
* on buckx will change the voltage of bucky at the same time.
199
*
200
*/
201
bool
ignore_gpiodvs_side_effect
;
202
int
buck125_gpios
[3];
/* GPIO of [0]SET1, [1]SET2, [2]SET3 */
203
int
buck125_default_idx
;
/* Default value of SET1, 2, 3 */
204
unsigned
int
buck1_voltage
[8];
/* buckx_voltage in uV */
205
bool
buck1_gpiodvs
;
206
unsigned
int
buck2_voltage
[8];
207
bool
buck2_gpiodvs
;
208
unsigned
int
buck5_voltage
[8];
209
bool
buck5_gpiodvs
;
210
211
/* ---- Charger control ---- */
212
/* eoc stands for 'end of charge' */
213
int
eoc_mA
;
/* 50 ~ 200mA by 10mA step */
214
/* charge Full Timeout */
215
int
timeout
;
/* 0 (no timeout), 5, 6, 7 hours */
216
217
/* ---- MUIC ---- */
218
struct
max8997_muic_platform_data
*
muic_pdata
;
219
220
/* ---- HAPTIC ---- */
221
struct
max8997_haptic_platform_data
*
haptic_pdata
;
222
223
/* RTC: Not implemented */
224
/* ---- LED ---- */
225
struct
max8997_led_platform_data
*
led_pdata
;
226
};
227
228
#endif
/* __LINUX_MFD_MAX8998_H */
Generated on Thu Jan 10 2013 14:51:54 for Linux Kernel by
1.8.2