blob: 03b523b39d3d8a6fa34e4bda9f7e52b2120d65d7 [file] [log] [blame]
Duy Truong790f06d2013-02-13 16:38:12 -08001/* Copyright (c) 2009-2011, The Linux Foundation. All rights reserved.
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#ifndef __ARCH_ARM_MACH_PMIC_H
15#define __ARCH_ARM_MACH_PMIC_H
16
17#include <linux/types.h>
18
19enum spkr_ldo_v_sel {
20 VOLT_LEVEL_1_1V,
21 VOLT_LEVEL_1_2V,
22 VOLT_LEVEL_2_0V,
23};
24
25enum hp_spkr_left_right {
26 LEFT_HP_SPKR,
27 RIGHT_HP_SPKR,
28};
29
30enum spkr_left_right {
31 LEFT_SPKR,
32 RIGHT_SPKR,
33};
34
35enum spkr_gain {
36 SPKR_GAIN_MINUS16DB, /* -16 db */
37 SPKR_GAIN_MINUS12DB, /* -12 db */
38 SPKR_GAIN_MINUS08DB, /* -08 db */
39 SPKR_GAIN_MINUS04DB, /* -04 db */
40 SPKR_GAIN_00DB, /* 00 db */
41 SPKR_GAIN_PLUS04DB, /* +04 db */
42 SPKR_GAIN_PLUS08DB, /* +08 db */
43 SPKR_GAIN_PLUS12DB, /* +12 db */
44};
45
46enum spkr_dly {
47 SPKR_DLY_10MS, /* ~10 ms delay */
48 SPKR_DLY_100MS, /* ~100 ms delay */
49};
50
51enum spkr_hpf_corner_freq {
52 SPKR_FREQ_1_39KHZ, /* 1.39 kHz */
53 SPKR_FREQ_0_64KHZ, /* 0.64 kHz */
54 SPKR_FREQ_0_86KHZ, /* 0.86 kHz */
55 SPKR_FREQ_0_51KHZ, /* 0.51 kHz */
56 SPKR_FREQ_1_06KHZ, /* 1.06 kHz */
57 SPKR_FREQ_0_57KHZ, /* 0.57 kHz */
58 SPKR_FREQ_0_73KHZ, /* 0.73 kHz */
59 SPKR_FREQ_0_47KHZ, /* 0.47 kHz */
60 SPKR_FREQ_1_20KHZ, /* 1.20 kHz */
61 SPKR_FREQ_0_60KHZ, /* 0.60 kHz */
62 SPKR_FREQ_0_76KHZ, /* 0.76 kHz */
63 SPKR_FREQ_0_49KHZ, /* 0.49 kHz */
64 SPKR_FREQ_0_95KHZ, /* 0.95 kHz */
65 SPKR_FREQ_0_54KHZ, /* 0.54 kHz */
66 SPKR_FREQ_0_68KHZ, /* 0.68 kHz */
67 SPKR_FREQ_0_45KHZ, /* 0.45 kHz */
68};
69
70/* Turn the speaker on or off and enables or disables mute.*/
71enum spkr_cmd {
72 SPKR_DISABLE, /* Enable Speaker */
73 SPKR_ENABLE, /* Disable Speaker */
74 SPKR_MUTE_OFF, /* turn speaker mute off, SOUND ON */
75 SPKR_MUTE_ON, /* turn speaker mute on, SOUND OFF */
76 SPKR_OFF, /* turn speaker OFF (speaker disable and mute on) */
77 SPKR_ON, /* turn speaker ON (speaker enable and mute off) */
78 SPKR_SET_FREQ_CMD, /* set speaker frequency */
79 SPKR_GET_FREQ_CMD, /* get speaker frequency */
80 SPKR_SET_GAIN_CMD, /* set speaker gain */
81 SPKR_GET_GAIN_CMD, /* get speaker gain */
82 SPKR_SET_DELAY_CMD, /* set speaker delay */
83 SPKR_GET_DELAY_CMD, /* get speaker delay */
84 SPKR_SET_PDM_MODE,
85 SPKR_SET_PWM_MODE,
86};
87
88struct spkr_config_mode {
89 uint32_t is_right_chan_en;
90 uint32_t is_left_chan_en;
91 uint32_t is_right_left_chan_added;
92 uint32_t is_stereo_en;
93 uint32_t is_usb_with_hpf_20hz;
94 uint32_t is_mux_bypassed;
95 uint32_t is_hpf_en;
96 uint32_t is_sink_curr_from_ref_volt_cir_en;
97};
98
99enum mic_volt {
100 MIC_VOLT_2_00V, /* 2.00 V */
101 MIC_VOLT_1_93V, /* 1.93 V */
102 MIC_VOLT_1_80V, /* 1.80 V */
103 MIC_VOLT_1_73V, /* 1.73 V */
104};
105
106enum ledtype {
107 LED_LCD,
108 LED_KEYPAD,
109};
110
111enum flash_led_mode {
112 FLASH_LED_MODE__MANUAL,
113 FLASH_LED_MODE__DBUS1,
114 FLASH_LED_MODE__DBUS2,
115 FLASH_LED_MODE__DBUS3,
116};
117
118enum flash_led_pol {
119 FLASH_LED_POL__ACTIVE_HIGH,
120 FLASH_LED_POL__ACTIVE_LOW,
121};
122
123enum switch_cmd {
124 OFF_CMD,
125 ON_CMD
126};
127
128enum vreg_lp_id {
129 PM_VREG_LP_MSMA_ID,
130 PM_VREG_LP_MSMP_ID,
131 PM_VREG_LP_MSME1_ID,
132 PM_VREG_LP_GP3_ID,
133 PM_VREG_LP_MSMC_ID,
134 PM_VREG_LP_MSME2_ID,
135 PM_VREG_LP_GP4_ID,
136 PM_VREG_LP_GP1_ID,
137 PM_VREG_LP_RFTX_ID,
138 PM_VREG_LP_RFRX1_ID,
139 PM_VREG_LP_RFRX2_ID,
140 PM_VREG_LP_WLAN_ID,
141 PM_VREG_LP_MMC_ID,
142 PM_VREG_LP_RUIM_ID,
143 PM_VREG_LP_MSMC0_ID,
144 PM_VREG_LP_GP2_ID,
145 PM_VREG_LP_GP5_ID,
146 PM_VREG_LP_GP6_ID,
147 PM_VREG_LP_MPLL_ID,
148 PM_VREG_LP_RFUBM_ID,
149 PM_VREG_LP_RFA_ID,
150 PM_VREG_LP_CDC2_ID,
151 PM_VREG_LP_RFTX2_ID,
152 PM_VREG_LP_USIM_ID,
153 PM_VREG_LP_USB2P6_ID,
154 PM_VREG_LP_TCXO_ID,
155 PM_VREG_LP_USB3P3_ID,
156
157 PM_VREG_LP_MSME_ID = PM_VREG_LP_MSME1_ID,
158 /* backward compatible enums only */
159 PM_VREG_LP_CAM_ID = PM_VREG_LP_GP1_ID,
160 PM_VREG_LP_MDDI_ID = PM_VREG_LP_GP2_ID,
161 PM_VREG_LP_RUIM2_ID = PM_VREG_LP_GP3_ID,
162 PM_VREG_LP_AUX_ID = PM_VREG_LP_GP4_ID,
163 PM_VREG_LP_AUX2_ID = PM_VREG_LP_GP5_ID,
164 PM_VREG_LP_BT_ID = PM_VREG_LP_GP6_ID,
165 PM_VREG_LP_MSMC_LDO_ID = PM_VREG_LP_MSMC_ID,
166 PM_VREG_LP_MSME1_LDO_ID = PM_VREG_LP_MSME1_ID,
167 PM_VREG_LP_MSME2_LDO_ID = PM_VREG_LP_MSME2_ID,
168 PM_VREG_LP_RFA1_ID = PM_VREG_LP_RFRX2_ID,
169 PM_VREG_LP_RFA2_ID = PM_VREG_LP_RFTX2_ID,
170 PM_VREG_LP_XO_ID = PM_VREG_LP_TCXO_ID
171};
172
173enum vreg_id {
174 PM_VREG_MSMA_ID = 0,
175 PM_VREG_MSMP_ID,
176 PM_VREG_MSME1_ID,
177 PM_VREG_MSMC1_ID,
178 PM_VREG_MSMC2_ID,
179 PM_VREG_GP3_ID,
180 PM_VREG_MSME2_ID,
181 PM_VREG_GP4_ID,
182 PM_VREG_GP1_ID,
183 PM_VREG_TCXO_ID,
184 PM_VREG_PA_ID,
185 PM_VREG_RFTX_ID,
186 PM_VREG_RFRX1_ID,
187 PM_VREG_RFRX2_ID,
188 PM_VREG_SYNT_ID,
189 PM_VREG_WLAN_ID,
190 PM_VREG_USB_ID,
191 PM_VREG_BOOST_ID,
192 PM_VREG_MMC_ID,
193 PM_VREG_RUIM_ID,
194 PM_VREG_MSMC0_ID,
195 PM_VREG_GP2_ID,
196 PM_VREG_GP5_ID,
197 PM_VREG_GP6_ID,
198 PM_VREG_RF_ID,
199 PM_VREG_RF_VCO_ID,
200 PM_VREG_MPLL_ID,
201 PM_VREG_S2_ID,
202 PM_VREG_S3_ID,
203 PM_VREG_RFUBM_ID,
204 PM_VREG_NCP_ID,
205 PM_VREG_RF2_ID,
206 PM_VREG_RFA_ID,
207 PM_VREG_CDC2_ID,
208 PM_VREG_RFTX2_ID,
209 PM_VREG_USIM_ID,
210 PM_VREG_USB2P6_ID,
211 PM_VREG_USB3P3_ID,
212 PM_VREG_EXTCDC1_ID,
213 PM_VREG_EXTCDC2_ID,
214
215 /* backward compatible enums only */
216 PM_VREG_MSME_ID = PM_VREG_MSME1_ID,
217 PM_VREG_MSME_BUCK_SMPS_ID = PM_VREG_MSME1_ID,
218 PM_VREG_MSME1_LDO_ID = PM_VREG_MSME1_ID,
219 PM_VREG_MSMC_ID = PM_VREG_MSMC1_ID,
220 PM_VREG_MSMC_LDO_ID = PM_VREG_MSMC1_ID,
221 PM_VREG_MSMC1_BUCK_SMPS_ID = PM_VREG_MSMC1_ID,
222 PM_VREG_MSME2_LDO_ID = PM_VREG_MSME2_ID,
223 PM_VREG_CAM_ID = PM_VREG_GP1_ID,
224 PM_VREG_MDDI_ID = PM_VREG_GP2_ID,
225 PM_VREG_RUIM2_ID = PM_VREG_GP3_ID,
226 PM_VREG_AUX_ID = PM_VREG_GP4_ID,
227 PM_VREG_AUX2_ID = PM_VREG_GP5_ID,
228 PM_VREG_BT_ID = PM_VREG_GP6_ID,
229 PM_VREG_RF1_ID = PM_VREG_RF_ID,
230 PM_VREG_S1_ID = PM_VREG_RF1_ID,
231 PM_VREG_5V_ID = PM_VREG_BOOST_ID,
232 PM_VREG_RFA1_ID = PM_VREG_RFRX2_ID,
233 PM_VREG_RFA2_ID = PM_VREG_RFTX2_ID,
234 PM_VREG_XO_ID = PM_VREG_TCXO_ID
235};
236
237enum vreg_pdown_id {
238 PM_VREG_PDOWN_MSMA_ID,
239 PM_VREG_PDOWN_MSMP_ID,
240 PM_VREG_PDOWN_MSME1_ID,
241 PM_VREG_PDOWN_MSMC1_ID,
242 PM_VREG_PDOWN_MSMC2_ID,
243 PM_VREG_PDOWN_GP3_ID,
244 PM_VREG_PDOWN_MSME2_ID,
245 PM_VREG_PDOWN_GP4_ID,
246 PM_VREG_PDOWN_GP1_ID,
247 PM_VREG_PDOWN_TCXO_ID,
248 PM_VREG_PDOWN_PA_ID,
249 PM_VREG_PDOWN_RFTX_ID,
250 PM_VREG_PDOWN_RFRX1_ID,
251 PM_VREG_PDOWN_RFRX2_ID,
252 PM_VREG_PDOWN_SYNT_ID,
253 PM_VREG_PDOWN_WLAN_ID,
254 PM_VREG_PDOWN_USB_ID,
255 PM_VREG_PDOWN_MMC_ID,
256 PM_VREG_PDOWN_RUIM_ID,
257 PM_VREG_PDOWN_MSMC0_ID,
258 PM_VREG_PDOWN_GP2_ID,
259 PM_VREG_PDOWN_GP5_ID,
260 PM_VREG_PDOWN_GP6_ID,
261 PM_VREG_PDOWN_RF_ID,
262 PM_VREG_PDOWN_RF_VCO_ID,
263 PM_VREG_PDOWN_MPLL_ID,
264 PM_VREG_PDOWN_S2_ID,
265 PM_VREG_PDOWN_S3_ID,
266 PM_VREG_PDOWN_RFUBM_ID,
267 /* new for HAN */
268 PM_VREG_PDOWN_RF1_ID,
269 PM_VREG_PDOWN_RF2_ID,
270 PM_VREG_PDOWN_RFA_ID,
271 PM_VREG_PDOWN_CDC2_ID,
272 PM_VREG_PDOWN_RFTX2_ID,
273 PM_VREG_PDOWN_USIM_ID,
274 PM_VREG_PDOWN_USB2P6_ID,
275 PM_VREG_PDOWN_USB3P3_ID,
276
277 /* backward compatible enums only */
278 PM_VREG_PDOWN_CAM_ID = PM_VREG_PDOWN_GP1_ID,
279 PM_VREG_PDOWN_MDDI_ID = PM_VREG_PDOWN_GP2_ID,
280 PM_VREG_PDOWN_RUIM2_ID = PM_VREG_PDOWN_GP3_ID,
281 PM_VREG_PDOWN_AUX_ID = PM_VREG_PDOWN_GP4_ID,
282 PM_VREG_PDOWN_AUX2_ID = PM_VREG_PDOWN_GP5_ID,
283 PM_VREG_PDOWN_BT_ID = PM_VREG_PDOWN_GP6_ID,
284 PM_VREG_PDOWN_MSME_ID = PM_VREG_PDOWN_MSME1_ID,
285 PM_VREG_PDOWN_MSMC_ID = PM_VREG_PDOWN_MSMC1_ID,
286 PM_VREG_PDOWN_RFA1_ID = PM_VREG_PDOWN_RFRX2_ID,
287 PM_VREG_PDOWN_RFA2_ID = PM_VREG_PDOWN_RFTX2_ID,
288 PM_VREG_PDOWN_XO_ID = PM_VREG_PDOWN_TCXO_ID
289};
290
291enum mpp_which {
292 PM_MPP_1,
293 PM_MPP_2,
294 PM_MPP_3,
295 PM_MPP_4,
296 PM_MPP_5,
297 PM_MPP_6,
298 PM_MPP_7,
299 PM_MPP_8,
300 PM_MPP_9,
301 PM_MPP_10,
302 PM_MPP_11,
303 PM_MPP_12,
304 PM_MPP_13,
305 PM_MPP_14,
306 PM_MPP_15,
307 PM_MPP_16,
308 PM_MPP_17,
309 PM_MPP_18,
310 PM_MPP_19,
311 PM_MPP_20,
312 PM_MPP_21,
313 PM_MPP_22,
314
315 PM_NUM_MPP_HAN = PM_MPP_4 + 1,
316 PM_NUM_MPP_KIP = PM_MPP_4 + 1,
317 PM_NUM_MPP_EPIC = PM_MPP_4 + 1,
318 PM_NUM_MPP_PM7500 = PM_MPP_22 + 1,
319 PM_NUM_MPP_PM6650 = PM_MPP_12 + 1,
320 PM_NUM_MPP_PM6658 = PM_MPP_12 + 1,
321 PM_NUM_MPP_PANORAMIX = PM_MPP_2 + 1,
322 PM_NUM_MPP_PM6640 = PM_NUM_MPP_PANORAMIX,
323 PM_NUM_MPP_PM6620 = PM_NUM_MPP_PANORAMIX
324};
325
326enum mpp_dlogic_level {
327 PM_MPP__DLOGIC__LVL_MSME,
328 PM_MPP__DLOGIC__LVL_MSMP,
329 PM_MPP__DLOGIC__LVL_RUIM,
330 PM_MPP__DLOGIC__LVL_MMC,
331 PM_MPP__DLOGIC__LVL_VDD,
332};
333
334enum mpp_dlogic_in_dbus {
335 PM_MPP__DLOGIC_IN__DBUS_NONE,
336 PM_MPP__DLOGIC_IN__DBUS1,
337 PM_MPP__DLOGIC_IN__DBUS2,
338 PM_MPP__DLOGIC_IN__DBUS3,
339};
340
341enum mpp_dlogic_out_ctrl {
342 PM_MPP__DLOGIC_OUT__CTRL_LOW,
343 PM_MPP__DLOGIC_OUT__CTRL_HIGH,
344 PM_MPP__DLOGIC_OUT__CTRL_MPP,
345 PM_MPP__DLOGIC_OUT__CTRL_NOT_MPP,
346};
347
348enum mpp_i_sink_level {
349 PM_MPP__I_SINK__LEVEL_5mA,
350 PM_MPP__I_SINK__LEVEL_10mA,
351 PM_MPP__I_SINK__LEVEL_15mA,
352 PM_MPP__I_SINK__LEVEL_20mA,
353 PM_MPP__I_SINK__LEVEL_25mA,
354 PM_MPP__I_SINK__LEVEL_30mA,
355 PM_MPP__I_SINK__LEVEL_35mA,
356 PM_MPP__I_SINK__LEVEL_40mA,
357};
358
359enum mpp_i_sink_switch {
360 PM_MPP__I_SINK__SWITCH_DIS,
361 PM_MPP__I_SINK__SWITCH_ENA,
362 PM_MPP__I_SINK__SWITCH_ENA_IF_MPP_HIGH,
363 PM_MPP__I_SINK__SWITCH_ENA_IF_MPP_LOW,
364};
365
366enum pm_vib_mot_mode {
367 PM_VIB_MOT_MODE__MANUAL,
368 PM_VIB_MOT_MODE__DBUS1,
369 PM_VIB_MOT_MODE__DBUS2,
370 PM_VIB_MOT_MODE__DBUS3,
371};
372
373enum pm_vib_mot_pol {
374 PM_VIB_MOT_POL__ACTIVE_HIGH,
375 PM_VIB_MOT_POL__ACTIVE_LOW,
376};
377
378struct rtc_time {
379 uint sec;
380};
381
382enum rtc_alarm {
383 PM_RTC_ALARM_1,
384};
385
386enum hsed_controller {
387 PM_HSED_CONTROLLER_0,
388 PM_HSED_CONTROLLER_1,
389 PM_HSED_CONTROLLER_2,
390};
391
392enum hsed_switch {
393 PM_HSED_SC_SWITCH_TYPE,
394 PM_HSED_OC_SWITCH_TYPE,
395};
396
397enum hsed_enable {
398 PM_HSED_ENABLE_OFF,
399 PM_HSED_ENABLE_TCXO,
400 PM_HSED_ENABLE_PWM_TCXO,
401 PM_HSED_ENABLE_ALWAYS,
402};
403
404enum hsed_hyst_pre_div {
405 PM_HSED_HYST_PRE_DIV_1,
406 PM_HSED_HYST_PRE_DIV_2,
407 PM_HSED_HYST_PRE_DIV_4,
408 PM_HSED_HYST_PRE_DIV_8,
409 PM_HSED_HYST_PRE_DIV_16,
410 PM_HSED_HYST_PRE_DIV_32,
411 PM_HSED_HYST_PRE_DIV_64,
412 PM_HSED_HYST_PRE_DIV_128,
413};
414
415enum hsed_hyst_time {
416 PM_HSED_HYST_TIME_1_CLK_CYCLES,
417 PM_HSED_HYST_TIME_2_CLK_CYCLES,
418 PM_HSED_HYST_TIME_3_CLK_CYCLES,
419 PM_HSED_HYST_TIME_4_CLK_CYCLES,
420 PM_HSED_HYST_TIME_5_CLK_CYCLES,
421 PM_HSED_HYST_TIME_6_CLK_CYCLES,
422 PM_HSED_HYST_TIME_7_CLK_CYCLES,
423 PM_HSED_HYST_TIME_8_CLK_CYCLES,
424 PM_HSED_HYST_TIME_9_CLK_CYCLES,
425 PM_HSED_HYST_TIME_10_CLK_CYCLES,
426 PM_HSED_HYST_TIME_11_CLK_CYCLES,
427 PM_HSED_HYST_TIME_12_CLK_CYCLES,
428 PM_HSED_HYST_TIME_13_CLK_CYCLES,
429 PM_HSED_HYST_TIME_14_CLK_CYCLES,
430 PM_HSED_HYST_TIME_15_CLK_CYCLES,
431 PM_HSED_HYST_TIME_16_CLK_CYCLES,
432};
433
434enum hsed_period_pre_div {
435 PM_HSED_PERIOD_PRE_DIV_2,
436 PM_HSED_PERIOD_PRE_DIV_4,
437 PM_HSED_PERIOD_PRE_DIV_8,
438 PM_HSED_PERIOD_PRE_DIV_16,
439 PM_HSED_PERIOD_PRE_DIV_32,
440 PM_HSED_PERIOD_PRE_DIV_64,
441 PM_HSED_PERIOD_PRE_DIV_128,
442 PM_HSED_PERIOD_PRE_DIV_256,
443};
444
445enum hsed_period_time {
446 PM_HSED_PERIOD_TIME_1_CLK_CYCLES,
447 PM_HSED_PERIOD_TIME_2_CLK_CYCLES,
448 PM_HSED_PERIOD_TIME_3_CLK_CYCLES,
449 PM_HSED_PERIOD_TIME_4_CLK_CYCLES,
450 PM_HSED_PERIOD_TIME_5_CLK_CYCLES,
451 PM_HSED_PERIOD_TIME_6_CLK_CYCLES,
452 PM_HSED_PERIOD_TIME_7_CLK_CYCLES,
453 PM_HSED_PERIOD_TIME_8_CLK_CYCLES,
454 PM_HSED_PERIOD_TIME_9_CLK_CYCLES,
455 PM_HSED_PERIOD_TIME_10_CLK_CYCLES,
456 PM_HSED_PERIOD_TIME_11_CLK_CYCLES,
457 PM_HSED_PERIOD_TIME_12_CLK_CYCLES,
458 PM_HSED_PERIOD_TIME_13_CLK_CYCLES,
459 PM_HSED_PERIOD_TIME_14_CLK_CYCLES,
460 PM_HSED_PERIOD_TIME_15_CLK_CYCLES,
461 PM_HSED_PERIOD_TIME_16_CLK_CYCLES,
462};
463
464enum vreg_lpm_id {
465 VREG_GP1_ID,
466 VREG_GP2_ID,
467 VREG_GP3_ID,
468 VREG_GP4_ID,
469 VREG_GP5_ID,
470 VREG_GP6_ID,
471 VREG_GP7_ID,
472 VREG_GP8_ID,
473 VREG_GP9_ID,
474 VREG_GP10_ID,
475 VREG_GP11_ID,
476 VREG_GP12_ID,
477 VREG_GP13_ID,
478 VREG_GP14_ID,
479 VREG_GP15_ID,
480 VREG_GP16_ID,
481 VREG_GP17_ID,
482 VREG_MDDI_ID,
483 VREG_MPLL_ID,
484 VREG_MSMC1_ID,
485 VREG_MSMC2_ID,
486 VREG_MSME_ID,
487 VREG_RF_ID,
488 VREG_RF1_ID,
489 VREG_RF2_ID,
490 VREG_RFA_ID,
491 VREG_SDCC1_ID,
492 VREG_TCXO_ID,
493 VREG_USB1P8_ID,
494 VREG_USB3P3_ID,
495 VREG_USIM_ID,
496 VREG_WLAN1_ID,
497 VREG_WLAN2_ID,
498 VREG_XO_OUT_D0_ID,
499 VREG_NCP_ID,
500 VREG_LVSW0_ID,
501 VREG_LVSW1_ID,
502};
503
504enum low_current_led {
505 LOW_CURRENT_LED_DRV0,
506 LOW_CURRENT_LED_DRV1,
507 LOW_CURRENT_LED_DRV2,
508};
509
510enum ext_signal {
511 EXT_SIGNAL_CURRENT_SINK_MANUAL_MODE,
512 EXT_SIGNAL_CURRENT_SINK_PWM1,
513 EXT_SIGNAL_CURRENT_SINK_PWM2,
514 EXT_SIGNAL_CURRENT_SINK_PWM3,
515 EXT_SIGNAL_CURRENT_SINK_DTEST1,
516 EXT_SIGNAL_CURRENT_SINK_DTEST2,
517 EXT_SIGNAL_CURRENT_SINK_DTEST3,
518 EXT_SIGNAL_CURRENT_SINK_DTEST4,
519};
520
521enum high_current_led {
522 HIGH_CURRENT_LED_FLASH_DRV0,
523 HIGH_CURRENT_LED_FLASH_DRV1,
524 HIGH_CURRENT_LED_KBD_DRV,
525};
526
527/* PMIC GPIO */
528enum pmic_gpio {
529 PMIC_GPIO_1,
530 PMIC_GPIO_2,
531 PMIC_GPIO_3,
532 PMIC_GPIO_4,
533 PMIC_GPIO_5,
534 PMIC_GPIO_6,
535 PMIC_GPIO_7,
536 PMIC_GPIO_8,
537 PMIC_GPIO_9,
538 PMIC_GPIO_10,
539 PMIC_GPIO_11,
540};
541
542enum pmic_voltage_src {
543 PMIC_GPIO_VIN0,
544 PMIC_GPIO_VIN1,
545 PMIC_GPIO_VIN2,
546 PMIC_GPIO_VIN3,
547 PMIC_GPIO_VIN4,
548 PMIC_GPIO_VIN5,
549 PMIC_GPIO_VIN6,
550 PMIC_GPIO_VIN7,
551};
552
553enum pmic_io_mode {
554 INPUT_ON,
555 INPUT_OUTPUT_ON,
556 OUTPUT_ON,
557 INPUT_OUTPUT_OFF,
558};
559
560enum pmic_current_pull_up {
561 PULL_UP_30uA,
562 PULL_UP_1_5uA,
563 PULL_UP_31_5uA,
564 PULL_UP_1_5uA_PLUS_30uA_BOOST,
565 PULL_DOWN_10uA,
566 PULL_NO_PULL,
567};
568
569enum pmic_op_buf_drv_strength {
570 BUFFER_OFF,
571 BUFFER_HIGH,
572 BUFFER_MEDIUM,
573 BUFFER_LOW,
574};
575
576enum pmic_output_buffer_config {
577 CONFIG_CMOS,
578 CONFIG_OPEN_DRAIN,
579};
580
581enum pmic_dtest_buf_onoff {
582 DTEST_DISABLE,
583 DTEST_ENABLE,
584};
585
586enum pmic_ext_pin_config {
587 EXT_PIN_ENABLE,
588 /*! Puts EXT_PIN at high Z state & disables the block */
589 EXT_PIN_DISABLE,
590};
591
592enum pmic_source_config {
593 SOURCE_GND,
594 SOURCE_PAIRED_GPIO,
595 SOURCE_SPECIAL_FUNCTION1,
596 SOURCE_SPECIAL_FUNCTION2,
597 SOURCE_DTEST1,
598 SOURCE_DTEST2,
599 SOURCE_DTEST3,
600 SOURCE_DTEST4,
601};
602
603enum pmic_direction_mode {
604 MODE_INPUT,
605 MODE_OTPUT_AND_INPUT_ON,
606 MODE_OUTPUT,
607 MODE_INPUT_AND_OUTPUT_OFF,
608};
609
610struct pm8xxx_gpio_rpc_cfg {
611 enum pmic_gpio gpio;
612 bool config_gpio;
613 enum pmic_voltage_src volt_src;
614 bool mode_on;
615 enum pmic_io_mode mode;
616 enum pmic_output_buffer_config buf_config;
617 bool invert_ext_pin;
618 enum pmic_current_pull_up src_pull;
619 enum pmic_op_buf_drv_strength drv_strength;
620 enum pmic_dtest_buf_onoff dtest_on;
621 enum pmic_ext_pin_config ext_config;
622 enum pmic_source_config src_config;
623 bool int_polarity;
624};
625
626int pmic_lp_mode_control(enum switch_cmd cmd, enum vreg_lp_id id);
627int pmic_vreg_set_level(enum vreg_id vreg, int level);
628int pmic_vreg_pull_down_switch(enum switch_cmd cmd, enum vreg_pdown_id id);
629int pmic_secure_mpp_control_digital_output(enum mpp_which which,
630 enum mpp_dlogic_level level, enum mpp_dlogic_out_ctrl out);
631int pmic_secure_mpp_config_i_sink(enum mpp_which which,
632 enum mpp_i_sink_level level, enum mpp_i_sink_switch onoff);
633int pmic_secure_mpp_config_digital_input(enum mpp_which which,
634 enum mpp_dlogic_level level, enum mpp_dlogic_in_dbus dbus);
635int pmic_rtc_start(struct rtc_time *time);
636int pmic_rtc_stop(void);
637int pmic_rtc_get_time(struct rtc_time *time);
638int pmic_rtc_enable_alarm(enum rtc_alarm alarm,
639 struct rtc_time *time);
640int pmic_rtc_disable_alarm(enum rtc_alarm alarm);
641int pmic_rtc_get_alarm_time(enum rtc_alarm alarm,
642 struct rtc_time *time);
643int pmic_rtc_get_alarm_status(uint *status);
644int pmic_rtc_set_time_adjust(uint adjust);
645int pmic_rtc_get_time_adjust(uint *adjust);
646int pmic_speaker_cmd(const enum spkr_cmd cmd);
647int pmic_set_spkr_configuration(struct spkr_config_mode *cfg);
648int pmic_get_spkr_configuration(struct spkr_config_mode *cfg);
649int pmic_spkr_en_right_chan(uint enable);
650int pmic_spkr_is_right_chan_en(uint *enabled);
651int pmic_spkr_en_left_chan(uint enable);
652int pmic_spkr_is_left_chan_en(uint *enabled);
653int pmic_spkr_en(enum spkr_left_right left_right, uint enabled);
654int pmic_spkr_is_en(enum spkr_left_right left_right, uint *enabled);
655int pmic_spkr_set_gain(enum spkr_left_right left_right, enum spkr_gain gain);
656int pmic_spkr_get_gain(enum spkr_left_right left_right, enum spkr_gain *gain);
657int pmic_set_speaker_gain(enum spkr_gain gain);
658int pmic_set_speaker_delay(enum spkr_dly delay);
659int pmic_speaker_1k6_zin_enable(uint enable);
660int pmic_spkr_set_mux_hpf_corner_freq(enum spkr_hpf_corner_freq freq);
661int pmic_spkr_get_mux_hpf_corner_freq(enum spkr_hpf_corner_freq *freq);
662int pmic_spkr_select_usb_with_hpf_20hz(uint enable);
663int pmic_spkr_is_usb_with_hpf_20hz(uint *enabled);
664int pmic_spkr_bypass_mux(uint enable);
665int pmic_spkr_is_mux_bypassed(uint *enabled);
666int pmic_spkr_en_hpf(uint enable);
667int pmic_spkr_is_hpf_en(uint *enabled);
668int pmic_spkr_en_sink_curr_from_ref_volt_cir(uint enable);
669int pmic_spkr_is_sink_curr_from_ref_volt_cir_en(uint *enabled);
670int pmic_spkr_set_delay(enum spkr_left_right left_right, enum spkr_dly delay);
671int pmic_spkr_get_delay(enum spkr_left_right left_right, enum spkr_dly *delay);
672int pmic_spkr_en_mute(enum spkr_left_right left_right, uint enabled);
673int pmic_spkr_is_mute_en(enum spkr_left_right left_right, uint *enabled);
674int pmic_mic_en(uint enable);
675int pmic_mic_is_en(uint *enabled);
676int pmic_mic_set_volt(enum mic_volt vol);
677int pmic_mic_get_volt(enum mic_volt *voltage);
678int pmic_set_led_intensity(enum ledtype type, int level);
679int pmic_flash_led_set_current(uint16_t milliamps);
680int pmic_flash_led_set_mode(enum flash_led_mode mode);
681int pmic_flash_led_set_polarity(enum flash_led_pol pol);
682int pmic_spkr_add_right_left_chan(uint enable);
683int pmic_spkr_is_right_left_chan_added(uint *enabled);
684int pmic_spkr_en_stereo(uint enable);
685int pmic_spkr_is_stereo_en(uint *enabled);
686int pmic_vib_mot_set_volt(uint vol);
687int pmic_vib_mot_set_mode(enum pm_vib_mot_mode mode);
688int pmic_vib_mot_set_polarity(enum pm_vib_mot_pol pol);
689int pmic_vid_en(uint enable);
690int pmic_vid_is_en(uint *enabled);
691int pmic_vid_load_detect_en(uint enable);
692
693int pmic_hsed_set_period(
694 enum hsed_controller controller,
695 enum hsed_period_pre_div period_pre_div,
696 enum hsed_period_time period_time
697);
698
699int pmic_hsed_set_hysteresis(
700 enum hsed_controller controller,
701 enum hsed_hyst_pre_div hyst_pre_div,
702 enum hsed_hyst_time hyst_time
703);
704
705int pmic_hsed_set_current_threshold(
706 enum hsed_controller controller,
707 enum hsed_switch switch_hsed,
708 uint32_t current_threshold
709);
710
711int pmic_hsed_enable(
712 enum hsed_controller controller,
713 enum hsed_enable enable
714);
715
716int pmic_high_current_led_set_current(enum high_current_led led,
717 uint16_t milliamps);
718int pmic_high_current_led_set_polarity(enum high_current_led led,
719 enum flash_led_pol polarity);
720int pmic_high_current_led_set_mode(enum high_current_led led,
721 enum flash_led_mode mode);
722int pmic_lp_force_lpm_control(enum switch_cmd cmd,
723 enum vreg_lpm_id vreg);
724int pmic_low_current_led_set_ext_signal(enum low_current_led led,
725 enum ext_signal sig);
726int pmic_low_current_led_set_current(enum low_current_led led,
727 uint16_t milliamps);
728
729int pmic_spkr_set_vsel_ldo(enum spkr_left_right left_right,
730 enum spkr_ldo_v_sel vlt_cntrl);
731int pmic_spkr_set_boost(enum spkr_left_right left_right, uint enable);
732int pmic_spkr_bypass_en(enum spkr_left_right left_right, uint enable);
733int pmic_hp_spkr_mstr_en(enum hp_spkr_left_right left_right, uint enable);
734int pmic_hp_spkr_mute_en(enum hp_spkr_left_right left_right, uint enable);
735int pmic_hp_spkr_prm_in_en(enum hp_spkr_left_right left_right, uint enable);
736int pmic_hp_spkr_aux_in_en(enum hp_spkr_left_right left_right, uint enable);
737int pmic_hp_spkr_ctrl_prm_gain_input(enum hp_spkr_left_right left_right,
738 uint prm_gain_ctl);
739int pmic_hp_spkr_ctrl_aux_gain_input(enum hp_spkr_left_right left_right,
740 uint aux_gain_ctl);
741int pmic_xo_core_force_enable(uint enable);
742int pmic_gpio_direction_input(unsigned gpio);
743int pmic_gpio_direction_output(unsigned gpio);
744int pmic_gpio_set_value(unsigned gpio, int value);
745int pmic_gpio_get_value(unsigned gpio);
746int pmic_gpio_get_direction(unsigned gpio);
747int pmic_gpio_config(struct pm8xxx_gpio_rpc_cfg *);
748#endif