blob: 99b0a8fc80769ed8f77391508d2e819a07358e06 [file] [log] [blame]
Jay Chokshie8741282012-01-25 15:22:55 -08001/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -08002 *
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#include <linux/init.h>
15#include <linux/ioport.h>
16#include <linux/platform_device.h>
17#include <linux/bootmem.h>
Jay Chokshie8741282012-01-25 15:22:55 -080018#include <linux/mfd/pm8xxx/pm8921.h>
19#include <linux/leds.h>
20#include <linux/leds-pm8xxx.h>
Jay Chokshif3a9ea82012-01-12 16:34:43 -080021#include <linux/mfd/pm8xxx/pm8xxx-adc.h>
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -080022#include <asm/mach-types.h>
23#include <asm/mach/mmc.h>
24#include <mach/msm_bus_board.h>
25#include <mach/board.h>
26#include <mach/gpio.h>
27#include <mach/gpiomux.h>
Jay Chokshie8741282012-01-25 15:22:55 -080028#include <mach/restart.h>
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -080029#include "devices.h"
30#include "board-8064.h"
31
Jay Chokshie8741282012-01-25 15:22:55 -080032struct pm8xxx_gpio_init {
33 unsigned gpio;
34 struct pm_gpio config;
35};
36
37struct pm8xxx_mpp_init {
38 unsigned mpp;
39 struct pm8xxx_mpp_config_data config;
40};
41
42#define PM8921_GPIO_INIT(_gpio, _dir, _buf, _val, _pull, _vin, _out_strength, \
43 _func, _inv, _disable) \
44{ \
45 .gpio = PM8921_GPIO_PM_TO_SYS(_gpio), \
46 .config = { \
47 .direction = _dir, \
48 .output_buffer = _buf, \
49 .output_value = _val, \
50 .pull = _pull, \
51 .vin_sel = _vin, \
52 .out_strength = _out_strength, \
53 .function = _func, \
54 .inv_int_pol = _inv, \
55 .disable_pin = _disable, \
56 } \
57}
58
59#define PM8921_MPP_INIT(_mpp, _type, _level, _control) \
60{ \
61 .mpp = PM8921_MPP_PM_TO_SYS(_mpp), \
62 .config = { \
63 .type = PM8XXX_MPP_TYPE_##_type, \
64 .level = _level, \
65 .control = PM8XXX_MPP_##_control, \
66 } \
67}
68
69#define PM8821_MPP_INIT(_mpp, _type, _level, _control) \
70{ \
71 .mpp = PM8821_MPP_PM_TO_SYS(_mpp), \
72 .config = { \
73 .type = PM8XXX_MPP_TYPE_##_type, \
74 .level = _level, \
75 .control = PM8XXX_MPP_##_control, \
76 } \
77}
78
79#define PM8921_GPIO_DISABLE(_gpio) \
80 PM8921_GPIO_INIT(_gpio, PM_GPIO_DIR_IN, 0, 0, 0, PM_GPIO_VIN_S4, \
81 0, 0, 0, 1)
82
83#define PM8921_GPIO_OUTPUT(_gpio, _val, _strength) \
84 PM8921_GPIO_INIT(_gpio, PM_GPIO_DIR_OUT, PM_GPIO_OUT_BUF_CMOS, _val, \
85 PM_GPIO_PULL_NO, PM_GPIO_VIN_S4, \
86 PM_GPIO_STRENGTH_##_strength, \
87 PM_GPIO_FUNC_NORMAL, 0, 0)
88
Jay Chokshi1de4f9d2012-02-07 16:11:31 -080089#define PM8921_GPIO_OUTPUT_BUFCONF(_gpio, _val, _strength, _bufconf) \
90 PM8921_GPIO_INIT(_gpio, PM_GPIO_DIR_OUT,\
91 PM_GPIO_OUT_BUF_##_bufconf, _val, \
92 PM_GPIO_PULL_NO, PM_GPIO_VIN_S4, \
93 PM_GPIO_STRENGTH_##_strength, \
94 PM_GPIO_FUNC_NORMAL, 0, 0)
95
Jay Chokshie8741282012-01-25 15:22:55 -080096#define PM8921_GPIO_INPUT(_gpio, _pull) \
97 PM8921_GPIO_INIT(_gpio, PM_GPIO_DIR_IN, PM_GPIO_OUT_BUF_CMOS, 0, \
98 _pull, PM_GPIO_VIN_S4, \
99 PM_GPIO_STRENGTH_NO, \
100 PM_GPIO_FUNC_NORMAL, 0, 0)
101
102#define PM8921_GPIO_OUTPUT_FUNC(_gpio, _val, _func) \
103 PM8921_GPIO_INIT(_gpio, PM_GPIO_DIR_OUT, PM_GPIO_OUT_BUF_CMOS, _val, \
104 PM_GPIO_PULL_NO, PM_GPIO_VIN_S4, \
105 PM_GPIO_STRENGTH_HIGH, \
106 _func, 0, 0)
107
108#define PM8921_GPIO_OUTPUT_VIN(_gpio, _val, _vin) \
109 PM8921_GPIO_INIT(_gpio, PM_GPIO_DIR_OUT, PM_GPIO_OUT_BUF_CMOS, _val, \
110 PM_GPIO_PULL_NO, _vin, \
111 PM_GPIO_STRENGTH_HIGH, \
112 PM_GPIO_FUNC_NORMAL, 0, 0)
113
114/* Initial PM8921 GPIO configurations */
115static struct pm8xxx_gpio_init pm8921_gpios[] __initdata = {
Aravind Venkateswaran0507c8c2012-02-16 17:16:05 -0800116 PM8921_GPIO_OUTPUT(14, 1, HIGH), /* HDMI Mux Selector */
David Collins390fc332012-02-07 14:38:16 -0800117 PM8921_GPIO_OUTPUT(23, 0, HIGH), /* touchscreen power FET */
Jay Chokshi1de4f9d2012-02-07 16:11:31 -0800118 PM8921_GPIO_OUTPUT_BUFCONF(25, 0, LOW, CMOS), /* DISP_RESET_N */
119 PM8921_GPIO_OUTPUT_FUNC(26, 0, PM_GPIO_FUNC_2), /* Bl: Off, PWM mode */
120 PM8921_GPIO_OUTPUT_BUFCONF(36, 1, LOW, OPEN_DRAIN),
Amy Maloche70090f992012-02-16 16:35:26 -0800121 PM8921_GPIO_OUTPUT_FUNC(44, 0, PM_GPIO_FUNC_2),
122 PM8921_GPIO_OUTPUT(33, 0, HIGH),
123 PM8921_GPIO_OUTPUT(20, 0, HIGH),
Mohan Pallaka474b94b2012-01-25 12:59:58 +0530124 PM8921_GPIO_INPUT(35, PM_GPIO_PULL_UP_1P5),
125 PM8921_GPIO_INPUT(38, PM_GPIO_PULL_UP_1P5),
Shiv Maliyappanahalli7e0beff2012-02-06 15:56:39 -0800126 /* TABLA CODEC RESET */
127 PM8921_GPIO_OUTPUT(34, 1, MED),
Mohan Pallaka474b94b2012-01-25 12:59:58 +0530128};
129
130static struct pm8xxx_gpio_init pm8921_mtp_kp_gpios[] __initdata = {
131 PM8921_GPIO_INPUT(3, PM_GPIO_PULL_UP_1P5),
132 PM8921_GPIO_INPUT(4, PM_GPIO_PULL_UP_1P5),
133};
134
135static struct pm8xxx_gpio_init pm8921_cdp_kp_gpios[] __initdata = {
136 PM8921_GPIO_INPUT(37, PM_GPIO_PULL_UP_1P5),
Jing Lin3f8f8422012-03-05 09:32:11 -0800137 PM8921_GPIO_INPUT(42, PM_GPIO_PULL_UP_1P5),
Jay Chokshie8741282012-01-25 15:22:55 -0800138};
139
140/* Initial PM8XXX MPP configurations */
141static struct pm8xxx_mpp_init pm8xxx_mpps[] __initdata = {
Jay Chokshi1de4f9d2012-02-07 16:11:31 -0800142 PM8921_MPP_INIT(3, D_OUTPUT, PM8921_MPP_DIG_LEVEL_VPH, DOUT_CTRL_LOW),
David Collinsf0d00732012-01-25 15:46:50 -0800143 /* External 5V regulator enable; shared by HDMI and USB_OTG switches. */
Jay Chokshi1de4f9d2012-02-07 16:11:31 -0800144 PM8921_MPP_INIT(7, D_OUTPUT, PM8921_MPP_DIG_LEVEL_VPH, DOUT_CTRL_LOW),
145 PM8921_MPP_INIT(8, D_OUTPUT, PM8921_MPP_DIG_LEVEL_S4, DOUT_CTRL_LOW),
Hemant Kumar56925352012-02-13 16:59:52 -0800146 /*MPP9 is used to detect docking station connection/removal on Liquid*/
147 PM8921_MPP_INIT(9, D_INPUT, PM8921_MPP_DIG_LEVEL_S4, DIN_TO_INT),
Jay Chokshie8741282012-01-25 15:22:55 -0800148};
149
150void __init apq8064_pm8xxx_gpio_mpp_init(void)
151{
152 int i, rc;
153
154 for (i = 0; i < ARRAY_SIZE(pm8921_gpios); i++) {
155 rc = pm8xxx_gpio_config(pm8921_gpios[i].gpio,
156 &pm8921_gpios[i].config);
157 if (rc) {
158 pr_err("%s: pm8xxx_gpio_config: rc=%d\n", __func__, rc);
159 break;
160 }
161 }
162
Mohan Pallaka474b94b2012-01-25 12:59:58 +0530163 if (machine_is_apq8064_cdp() || machine_is_apq8064_liquid())
164 for (i = 0; i < ARRAY_SIZE(pm8921_cdp_kp_gpios); i++) {
165 rc = pm8xxx_gpio_config(pm8921_cdp_kp_gpios[i].gpio,
166 &pm8921_cdp_kp_gpios[i].config);
167 if (rc) {
168 pr_err("%s: pm8xxx_gpio_config: rc=%d\n",
169 __func__, rc);
170 break;
171 }
172 }
173
174 if (machine_is_apq8064_mtp())
175 for (i = 0; i < ARRAY_SIZE(pm8921_mtp_kp_gpios); i++) {
176 rc = pm8xxx_gpio_config(pm8921_mtp_kp_gpios[i].gpio,
177 &pm8921_mtp_kp_gpios[i].config);
178 if (rc) {
179 pr_err("%s: pm8xxx_gpio_config: rc=%d\n",
180 __func__, rc);
181 break;
182 }
183 }
184
Jay Chokshie8741282012-01-25 15:22:55 -0800185 for (i = 0; i < ARRAY_SIZE(pm8xxx_mpps); i++) {
186 rc = pm8xxx_mpp_config(pm8xxx_mpps[i].mpp,
187 &pm8xxx_mpps[i].config);
188 if (rc) {
189 pr_err("%s: pm8xxx_mpp_config: rc=%d\n", __func__, rc);
190 break;
191 }
192 }
193}
194
195static struct pm8xxx_pwrkey_platform_data apq8064_pm8921_pwrkey_pdata = {
196 .pull_up = 1,
197 .kpd_trigger_delay_us = 15625,
198 .wakeup = 1,
199};
200
201static struct pm8xxx_misc_platform_data apq8064_pm8921_misc_pdata = {
202 .priority = 0,
203};
204
205#define PM8921_LC_LED_MAX_CURRENT 4 /* I = 4mA */
206#define PM8921_LC_LED_LOW_CURRENT 1 /* I = 1mA */
207#define PM8XXX_LED_PWM_PERIOD 1000
208#define PM8XXX_LED_PWM_DUTY_MS 20
209/**
210 * PM8XXX_PWM_CHANNEL_NONE shall be used when LED shall not be
211 * driven using PWM feature.
212 */
213#define PM8XXX_PWM_CHANNEL_NONE -1
214
215static struct led_info pm8921_led_info[] = {
216 [0] = {
217 .name = "led:red",
218 .default_trigger = "ac-online",
219 },
220};
221
222static struct led_platform_data pm8921_led_core_pdata = {
223 .num_leds = ARRAY_SIZE(pm8921_led_info),
224 .leds = pm8921_led_info,
225};
226
227static int pm8921_led0_pwm_duty_pcts[56] = {
228 1, 4, 8, 12, 16, 20, 24, 28, 32, 36,
229 40, 44, 46, 52, 56, 60, 64, 68, 72, 76,
230 80, 84, 88, 92, 96, 100, 100, 100, 98, 95,
231 92, 88, 84, 82, 78, 74, 70, 66, 62, 58,
232 58, 54, 50, 48, 42, 38, 34, 30, 26, 22,
233 14, 10, 6, 4, 1
234};
235
236static struct pm8xxx_pwm_duty_cycles pm8921_led0_pwm_duty_cycles = {
237 .duty_pcts = (int *)&pm8921_led0_pwm_duty_pcts,
238 .num_duty_pcts = ARRAY_SIZE(pm8921_led0_pwm_duty_pcts),
239 .duty_ms = PM8XXX_LED_PWM_DUTY_MS,
240 .start_idx = 0,
241};
242
243static struct pm8xxx_led_config pm8921_led_configs[] = {
244 [0] = {
245 .id = PM8XXX_ID_LED_0,
246 .mode = PM8XXX_LED_MODE_PWM2,
247 .max_current = PM8921_LC_LED_MAX_CURRENT,
248 .pwm_channel = 5,
249 .pwm_period_us = PM8XXX_LED_PWM_PERIOD,
250 .pwm_duty_cycles = &pm8921_led0_pwm_duty_cycles,
251 },
252};
253
254static struct pm8xxx_led_platform_data apq8064_pm8921_leds_pdata = {
255 .led_core = &pm8921_led_core_pdata,
256 .configs = pm8921_led_configs,
257 .num_configs = ARRAY_SIZE(pm8921_led_configs),
258};
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800259
Jay Chokshif3a9ea82012-01-12 16:34:43 -0800260static struct pm8xxx_adc_amux apq8064_pm8921_adc_channels_data[] = {
261 {"vcoin", CHANNEL_VCOIN, CHAN_PATH_SCALING2, AMUX_RSV1,
262 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
263 {"vbat", CHANNEL_VBAT, CHAN_PATH_SCALING2, AMUX_RSV1,
264 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
265 {"dcin", CHANNEL_DCIN, CHAN_PATH_SCALING4, AMUX_RSV1,
266 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
267 {"ichg", CHANNEL_ICHG, CHAN_PATH_SCALING1, AMUX_RSV1,
268 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
269 {"vph_pwr", CHANNEL_VPH_PWR, CHAN_PATH_SCALING2, AMUX_RSV1,
270 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
271 {"ibat", CHANNEL_IBAT, CHAN_PATH_SCALING1, AMUX_RSV1,
272 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
273 {"batt_therm", CHANNEL_BATT_THERM, CHAN_PATH_SCALING1, AMUX_RSV2,
274 ADC_DECIMATION_TYPE2, ADC_SCALE_BATT_THERM},
275 {"batt_id", CHANNEL_BATT_ID, CHAN_PATH_SCALING1, AMUX_RSV1,
276 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
277 {"usbin", CHANNEL_USBIN, CHAN_PATH_SCALING3, AMUX_RSV1,
278 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
279 {"pmic_therm", CHANNEL_DIE_TEMP, CHAN_PATH_SCALING1, AMUX_RSV1,
280 ADC_DECIMATION_TYPE2, ADC_SCALE_PMIC_THERM},
281 {"625mv", CHANNEL_625MV, CHAN_PATH_SCALING1, AMUX_RSV1,
282 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
283 {"125v", CHANNEL_125V, CHAN_PATH_SCALING1, AMUX_RSV1,
284 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
285 {"chg_temp", CHANNEL_CHG_TEMP, CHAN_PATH_SCALING1, AMUX_RSV1,
286 ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT},
287 {"xo_therm", CHANNEL_MUXOFF, CHAN_PATH_SCALING1, AMUX_RSV0,
288 ADC_DECIMATION_TYPE2, ADC_SCALE_XOTHERM},
289};
290
291static struct pm8xxx_adc_properties apq8064_pm8921_adc_data = {
292 .adc_vdd_reference = 1800, /* milli-voltage for this adc */
293 .bitresolution = 15,
294 .bipolar = 0,
295};
296
297static struct pm8xxx_adc_platform_data apq8064_pm8921_adc_pdata = {
298 .adc_channel = apq8064_pm8921_adc_channels_data,
299 .adc_num_board_channel = ARRAY_SIZE(apq8064_pm8921_adc_channels_data),
300 .adc_prop = &apq8064_pm8921_adc_data,
301 .adc_mpp_base = PM8921_MPP_PM_TO_SYS(1),
302};
303
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800304static struct pm8xxx_mpp_platform_data
305apq8064_pm8921_mpp_pdata __devinitdata = {
306 .mpp_base = PM8921_MPP_PM_TO_SYS(1),
307};
308
309static struct pm8xxx_gpio_platform_data
310apq8064_pm8921_gpio_pdata __devinitdata = {
311 .gpio_base = PM8921_GPIO_PM_TO_SYS(1),
312};
313
314static struct pm8xxx_irq_platform_data
315apq8064_pm8921_irq_pdata __devinitdata = {
316 .irq_base = PM8921_IRQ_BASE,
Jeffrey Chuanga92c7ab2012-03-01 23:56:00 -0800317 .devirq = MSM_GPIO_TO_INT(74),
318 .irq_trigger_flag = IRQF_TRIGGER_LOW,
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800319 .dev_id = 0,
320};
321
Ashay Jaiswal0b023dc2012-01-25 10:18:36 +0530322static struct pm8xxx_rtc_platform_data
323apq8064_pm8921_rtc_pdata = {
324 .rtc_write_enable = false,
325 .rtc_alarm_powerup = false,
326};
327
Jay Chokshi42fe9f02012-02-01 20:52:08 -0800328static int apq8064_pm8921_therm_mitigation[] = {
329 1100,
330 700,
331 600,
332 325,
333};
334
335#define MAX_VOLTAGE_MV 4200
336static struct pm8921_charger_platform_data
337apq8064_pm8921_chg_pdata __devinitdata = {
338 .safety_time = 180,
339 .update_time = 60000,
340 .max_voltage = MAX_VOLTAGE_MV,
341 .min_voltage = 3200,
342 .resume_voltage_delta = 100,
343 .term_current = 100,
344 .cool_temp = 10,
345 .warm_temp = 40,
346 .temp_check_period = 1,
347 .max_bat_chg_current = 1100,
348 .cool_bat_chg_current = 350,
349 .warm_bat_chg_current = 350,
350 .cool_bat_voltage = 4100,
351 .warm_bat_voltage = 4100,
352 .thermal_mitigation = apq8064_pm8921_therm_mitigation,
353 .thermal_levels = ARRAY_SIZE(apq8064_pm8921_therm_mitigation),
354};
355
356static struct pm8xxx_ccadc_platform_data
357apq8064_pm8xxx_ccadc_pdata = {
358 .r_sense = 10,
359};
360
361static struct pm8921_bms_platform_data
362apq8064_pm8921_bms_pdata __devinitdata = {
David Keitel35e11872012-02-17 17:40:42 -0800363 .battery_type = BATT_UNKNOWN,
Jay Chokshi42fe9f02012-02-01 20:52:08 -0800364 .r_sense = 10,
365 .i_test = 2500,
366 .v_failure = 3000,
367 .calib_delay_ms = 600000,
368 .max_voltage_uv = MAX_VOLTAGE_MV * 1000,
369};
370
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800371static struct pm8921_platform_data
372apq8064_pm8921_platform_data __devinitdata = {
373 .regulator_pdatas = msm8064_pm8921_regulator_pdata,
374 .irq_pdata = &apq8064_pm8921_irq_pdata,
375 .gpio_pdata = &apq8064_pm8921_gpio_pdata,
376 .mpp_pdata = &apq8064_pm8921_mpp_pdata,
Ashay Jaiswal0b023dc2012-01-25 10:18:36 +0530377 .rtc_pdata = &apq8064_pm8921_rtc_pdata,
Jay Chokshie8741282012-01-25 15:22:55 -0800378 .pwrkey_pdata = &apq8064_pm8921_pwrkey_pdata,
379 .misc_pdata = &apq8064_pm8921_misc_pdata,
380 .leds_pdata = &apq8064_pm8921_leds_pdata,
Jay Chokshif3a9ea82012-01-12 16:34:43 -0800381 .adc_pdata = &apq8064_pm8921_adc_pdata,
Jay Chokshi42fe9f02012-02-01 20:52:08 -0800382 .charger_pdata = &apq8064_pm8921_chg_pdata,
383 .bms_pdata = &apq8064_pm8921_bms_pdata,
384 .ccadc_pdata = &apq8064_pm8xxx_ccadc_pdata,
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800385};
386
387static struct pm8xxx_irq_platform_data
388apq8064_pm8821_irq_pdata __devinitdata = {
389 .irq_base = PM8821_IRQ_BASE,
Jay Chokshie8741282012-01-25 15:22:55 -0800390 .devirq = PM8821_SEC_IRQ_N,
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800391 .irq_trigger_flag = IRQF_TRIGGER_HIGH,
392 .dev_id = 1,
393};
394
395static struct pm8xxx_mpp_platform_data
396apq8064_pm8821_mpp_pdata __devinitdata = {
397 .mpp_base = PM8821_MPP_PM_TO_SYS(1),
398};
399
400static struct pm8821_platform_data
401apq8064_pm8821_platform_data __devinitdata = {
402 .irq_pdata = &apq8064_pm8821_irq_pdata,
403 .mpp_pdata = &apq8064_pm8821_mpp_pdata,
404};
405
406static struct msm_ssbi_platform_data apq8064_ssbi_pm8921_pdata __devinitdata = {
407 .controller_type = MSM_SBI_CTRL_PMIC_ARBITER,
408 .slave = {
409 .name = "pm8921-core",
410 .platform_data = &apq8064_pm8921_platform_data,
411 },
412};
413
414static struct msm_ssbi_platform_data apq8064_ssbi_pm8821_pdata __devinitdata = {
415 .controller_type = MSM_SBI_CTRL_PMIC_ARBITER,
416 .slave = {
417 .name = "pm8821-core",
418 .platform_data = &apq8064_pm8821_platform_data,
419 },
420};
421
422void __init apq8064_init_pmic(void)
423{
Jay Chokshie8741282012-01-25 15:22:55 -0800424 pmic_reset_irq = PM8921_IRQ_BASE + PM8921_RESOUT_IRQ;
425
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800426 apq8064_device_ssbi_pmic1.dev.platform_data =
427 &apq8064_ssbi_pm8921_pdata;
428 apq8064_device_ssbi_pmic2.dev.platform_data =
429 &apq8064_ssbi_pm8821_pdata;
430 apq8064_pm8921_platform_data.num_regulators =
431 msm8064_pm8921_regulator_pdata_len;
432
433 if (machine_is_apq8064_rumi3()) {
434 apq8064_pm8921_irq_pdata.devirq = 0;
435 apq8064_pm8821_irq_pdata.devirq = 0;
David Keitel35e11872012-02-17 17:40:42 -0800436 } else if (machine_is_apq8064_mtp()) {
437 apq8064_pm8921_bms_pdata.battery_type = BATT_PALLADIUM;
438 } else if (machine_is_apq8064_liquid()) {
439 apq8064_pm8921_bms_pdata.battery_type = BATT_DESAY;
Stepan Moskovchenkoc1074f02011-12-14 17:51:57 -0800440 }
441}