upload tizen1.0 source
[kernel/linux-2.6.36.git] / arch / arm / mach-s5pv310 / max8997-u1hd.c
1 /*
2  * linux/arch/arm/mach-s5pv310/max8997-u1hd.c
3  *
4  * Copyright (c) 2011 Samsung Electronics Co., Ltd.
5  * MyungJoo Ham <myungjoo.ham@samsung.com>
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 version 2 as
9  * published by the Free Software Foundation.
10  *
11  * MAX8997 Setting for U1 Board
12  */
13
14 #include <linux/mfd/max8997.h>
15 #include <linux/regulator/machine.h>
16
17 #include <mach/gpio.h>
18 #include <mach/irqs.h>
19
20 #include <plat/gpio-cfg.h>
21
22 void __init u1hd_pmic_init(void)
23 {
24         int gpio;
25
26         /* TODO: SET1, SET2, SET3, AP_PMIC_IRQ< ... */
27         gpio = S5PV310_GPX0(7);
28         gpio_request(gpio, "AP_PMIC_IRQ");
29         s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf));
30         s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
31 }
32
33 static struct regulator_consumer_supply u1hd_max8997_ldo1_consumer[] = {
34         REGULATOR_SUPPLY("vadc", NULL),
35         REGULATOR_SUPPLY("vadc", "s5p-charger"),
36 };
37 static struct regulator_consumer_supply u1hd_max8997_ldo2_consumer[] = {
38         REGULATOR_SUPPLY("vdd_alive", "s5pc210"), /* FIXME: device name */
39 };
40 static struct regulator_consumer_supply u1hd_max8997_ldo3_consumer[] = {
41         REGULATOR_SUPPLY("vusb_a", NULL),       /* TODO: DEV NAME? */
42         REGULATOR_SUPPLY("mipi_1.1v_c210", "s5p-mipi-dsim.0"),  /* obsolete */
43         REGULATOR_SUPPLY("vdd11_mipi", "s3c-csis.0"),
44         REGULATOR_SUPPLY("vdd11_mipi", "s3c-csis.1"),
45 };
46 static struct regulator_consumer_supply u1hd_max8997_ldo4_consumer[] = {
47         REGULATOR_SUPPLY("vmipi_1.8v", "s5p-mipi-dsim.0"), /* obsolete */
48         REGULATOR_SUPPLY("vdd18_mipi", "s3c-csis.0"),
49         REGULATOR_SUPPLY("vdd18_mipi", "s3c-csis.1"),
50 };
51 static struct regulator_consumer_supply u1hd_max8997_ldo5_consumer[] = {
52         REGULATOR_SUPPLY("vhsic", NULL), /* obsolete? 8*/
53         REGULATOR_SUPPLY("vdd12_uhost", "s5pc210"), /* FIXME: device name */
54 };
55 static struct regulator_consumer_supply u1hd_max8997_ldo6_consumer[] = {
56         REGULATOR_SUPPLY("vcc_1.8v", "ld9040"),
57         REGULATOR_SUPPLY("v_gps_1.8v", "gsd4t"),
58 };
59 static struct regulator_consumer_supply u1hd_max8997_ldo7_consumer[] = {
60         REGULATOR_SUPPLY("i_host_18", "0-001f"),
61         REGULATOR_SUPPLY("i_host_18", "17-002d"),
62 };
63 static struct regulator_consumer_supply u1hd_max8997_ldo8_consumer[] = {
64         REGULATOR_SUPPLY("vusb_d", NULL), /* TODO: DEV NAME? */
65         REGULATOR_SUPPLY("vdac", NULL), /* TODO: DEV NAME? */
66 };
67 static struct regulator_consumer_supply u1hd_max8997_ldo9_consumer[] = {
68         REGULATOR_SUPPLY("vcc_2.8v_pda", NULL), /* FIXME: update name */
69 };
70 static struct regulator_consumer_supply u1hd_max8997_ldo10_consumer[] = {
71         REGULATOR_SUPPLY("vpll", NULL), /* obsolete? */
72         REGULATOR_SUPPLY("vdd11_pll", "s5pc210"), /* FIXME: device name */
73 };
74 static struct regulator_consumer_supply u1hd_max8997_ldo11_consumer[] = {
75         REGULATOR_SUPPLY("touch_2.8v", NULL),
76 };
77 static struct regulator_consumer_supply u1hd_max8997_ldo12_consumer[] = {
78         REGULATOR_SUPPLY("vddio", "17-003c"),   /* TODO: double check the name */
79         REGULATOR_SUPPLY("vt_core_18", "17-002d"),      /* TODO: double check the name */
80 };
81 static struct regulator_consumer_supply u1hd_max8997_ldo13_consumer[] = {
82         REGULATOR_SUPPLY("vcc_3.0v_lcd", "s6e8aa0"),
83 };
84 static struct regulator_consumer_supply u1hd_max8997_ldo14_consumer[] = {
85         REGULATOR_SUPPLY("inmotor", "max8997-haptic"),
86 };
87 static struct regulator_consumer_supply u1hd_max8997_ldo15_consumer[] = {
88         REGULATOR_SUPPLY("vlcd_2.2v", "s6e8aa0"),       /* FIXME: dev name of motor */
89 };
90 static struct regulator_consumer_supply u1hd_max8997_ldo16_consumer[] = {
91         REGULATOR_SUPPLY("s_vif_18", "0-001f"),
92 };
93 static struct regulator_consumer_supply u1hd_max8997_ldo17_consumer[] = {
94         REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"),
95 };
96 static struct regulator_consumer_supply u1hd_max8997_ldo18_consumer[] = {
97         REGULATOR_SUPPLY("touch_led_3.3v", NULL),
98 };
99 static struct regulator_consumer_supply u1hd_max8997_ldo21_consumer[] = {
100         /* "Memory I/O Power" */
101 };
102
103 static struct regulator_consumer_supply u1hd_max8997_buck1_consumer[] = {
104         REGULATOR_SUPPLY("vdd_arm", NULL),
105 };
106 static struct regulator_consumer_supply u1hd_max8997_buck2_consumer[] = {
107         REGULATOR_SUPPLY("vdd_int", NULL),
108 };
109 static struct regulator_consumer_supply u1hd_max8997_buck3_consumer[] = {
110         REGULATOR_SUPPLY("vg3d", "mali_dev.0"),
111 };
112 static struct regulator_consumer_supply u1hd_max8997_buck4_consumer[] = {
113         REGULATOR_SUPPLY("i_core_12", "0-001f"),
114         REGULATOR_SUPPLY("i_core_12", "17-002d"),
115 };
116 static struct regulator_consumer_supply u1hd_max8997_buck5_consumer[] = {
117         REGULATOR_SUPPLY("vdd_mem", NULL), /* LPDDR's Core Power */
118 };
119 static struct regulator_consumer_supply u1hd_max8997_buck6_consumer[] = {
120         REGULATOR_SUPPLY("dig_28", "0-001f"),
121         REGULATOR_SUPPLY("flash_en", "0-001f"), /* Actual SET/EN of FLASH */
122         REGULATOR_SUPPLY("flash_set", "0-001f"),        /* Dummy of FLASH */
123 };
124 static struct regulator_consumer_supply u1hd_max8997_buck7_consumer[] = {
125         REGULATOR_SUPPLY("vcc_sub_2.0v", "0-003c"),     /* TODO: double check the name */
126 };
127
128 static struct regulator_consumer_supply u1hd_max8997_esafeout1_consumer[] = {
129         REGULATOR_SUPPLY("usb_vbus_ap_5v", NULL), /* obsolete. FIXME name? */
130 };
131 static struct regulator_consumer_supply u1hd_max8997_esafeout2_consumer[] = {
132         REGULATOR_SUPPLY("usb_vbus_cp_5v", NULL), /* obsolete. FIXME name? */
133 };
134 #ifdef CONFIG_CHARGERCTRL_MAX8997
135 static struct regulator_consumer_supply u1hd_max8997_charger_consumer[] = {
136         REGULATOR_SUPPLY("vinchg1", "charger-manager.0"),
137 };
138 static struct regulator_consumer_supply u1hd_max8997_charger_topoff_consumer[] = {
139         REGULATOR_SUPPLY("vinchg_stop", NULL),
140 };
141 #endif
142 static struct regulator_consumer_supply u1hd_max8997_32khz_ap_consumer[] = {
143         REGULATOR_SUPPLY("gps_clk", "gsd4t"),
144         REGULATOR_SUPPLY("bt_clk", NULL),
145         REGULATOR_SUPPLY("wifi_clk", NULL),
146 };
147 static struct regulator_init_data u1hd_max8997_ldo1_data = {
148         .constraints    = {
149                 .name           = "VADC_3.3V_C210",
150                 .min_uV         = 3300000,
151                 .max_uV         = 3300000,
152                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
153                 .apply_uV       = 1,
154                 .state_mem      = {
155                         .enabled        = 0,
156                         .disabled       = 1,
157                 },
158         },
159         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo1_consumer),
160         .consumer_supplies      = u1hd_max8997_ldo1_consumer,
161 };
162
163 static struct regulator_init_data u1hd_max8997_ldo2_data = {
164         .constraints    = {
165                 .name           = "VALIVE_1.1V_C210",
166                 .min_uV         = 1100000,
167                 .max_uV         = 1100000,
168                 .apply_uV       = 1,
169                 .always_on      = 1,
170                 .state_mem      = {
171                         .enabled        = 1,
172                         .disabled       = 0,
173                 },
174         },
175         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo2_consumer),
176         .consumer_supplies      = u1hd_max8997_ldo2_consumer,
177 };
178
179 static struct regulator_init_data u1hd_max8997_ldo3_data = {
180         .constraints    = {
181                 .name           = "VUSB/MIPI_1.1V_C210",
182                 .min_uV         = 1100000,
183                 .max_uV         = 1100000,
184                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
185                 .apply_uV       = 1,
186                 .boot_on        = 1,
187                 .state_mem      = {
188                         .enabled        = 0,
189                         .disabled       = 1,
190                 },
191         },
192         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo3_consumer),
193         .consumer_supplies      = u1hd_max8997_ldo3_consumer,
194 };
195
196 static struct regulator_init_data u1hd_max8997_ldo4_data = {
197         .constraints    = {
198                 .name           = "VMIPI_1.8V",
199                 .min_uV         = 1800000,
200                 .max_uV         = 1800000,
201                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
202                 .apply_uV       = 1,
203                 .boot_on        = 1,
204                 .state_mem      = {
205                         .enabled        = 0,
206                         .disabled       = 1,
207                 },
208         },
209         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo4_consumer),
210         .consumer_supplies      = u1hd_max8997_ldo4_consumer,
211 };
212
213 static struct regulator_init_data u1hd_max8997_ldo5_data = {
214         .constraints    = {
215                 .name           = "VHSIC_1.2V_C210",
216                 .min_uV         = 1200000,
217                 .max_uV         = 1200000,
218                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
219                 .apply_uV       = 1,
220                 .state_mem      = {
221                         .enabled        = 0,
222                         .disabled       = 1,
223                 },
224         },
225         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo5_consumer),
226         .consumer_supplies      = u1hd_max8997_ldo5_consumer,
227 };
228
229 static struct regulator_init_data u1hd_max8997_ldo6_data = {
230         .constraints    = {
231                 .name           = "VCC_1.8V_PDA",
232                 .min_uV         = 1800000,
233                 .max_uV         = 1800000,
234                 .apply_uV       = 1,
235                 .always_on      = 1,
236                 .state_mem      = {
237                         .enabled        = 1,
238                         .disabled       = 0,
239                 },
240         },
241         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo6_consumer),
242         .consumer_supplies      = u1hd_max8997_ldo6_consumer,
243 };
244
245 static struct regulator_init_data u1hd_max8997_ldo7_data = {
246         .constraints    = {
247                 .name           = "CAM_ISP_1.8V",
248                 .min_uV         = 1800000,
249                 .max_uV         = 1800000,
250                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
251                 .apply_uV       = 1,
252                 .state_mem      = {
253                         .enabled        = 0,
254                         .disabled       = 1,
255                 },
256         },
257         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo7_consumer),
258         .consumer_supplies      = u1hd_max8997_ldo7_consumer,
259 };
260
261 static struct regulator_init_data u1hd_max8997_ldo8_data = {
262         .constraints    = {
263                 .name           = "VUSB/VDAC_3.3V_C210",
264                 .min_uV         = 3300000,
265                 .max_uV         = 3300000,
266                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
267                 .apply_uV       = 1,
268                 .state_mem      = {
269                         .enabled        = 0,
270                         .disabled       = 1,
271                 },
272         },
273         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo8_consumer),
274         .consumer_supplies      = u1hd_max8997_ldo8_consumer,
275 };
276
277 static struct regulator_init_data u1hd_max8997_ldo9_data = {
278         .constraints    = {
279                 .name           = "VCC_2.8V_PDA",
280                 .min_uV         = 2800000,
281                 .max_uV         = 2800000,
282                 .apply_uV       = 1,
283                 .always_on      = 1,
284                 .state_mem      = {
285                         .enabled        = 1,
286                         .disabled       = 0,
287                 },
288         },
289         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo9_consumer),
290         .consumer_supplies      = u1hd_max8997_ldo9_consumer,
291 };
292
293 static struct regulator_init_data u1hd_max8997_ldo10_data = {
294         .constraints    = {
295                 .name           = "VPLL_1.1V_C210",
296                 .min_uV         = 1100000,
297                 .max_uV         = 1100000,
298                 .apply_uV       = 1,
299                 .always_on      = 1,
300                 .state_mem      = {
301                         .enabled        = 0,
302                         .disabled       = 1,
303                 },
304         },
305         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo10_consumer),
306         .consumer_supplies      = u1hd_max8997_ldo10_consumer,
307 };
308
309 static struct regulator_init_data u1hd_max8997_ldo11_data = {
310         .constraints    = {
311                 .name           = "TOUCH_2.8V",
312                 .min_uV         = 2800000,
313                 .max_uV         = 2800000,
314                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
315                 .apply_uV       = 1,
316                 .state_mem      = {
317                         .enabled        = 0,
318                         .disabled       = 1,
319                 },
320         },
321         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo11_consumer),
322         .consumer_supplies      = u1hd_max8997_ldo11_consumer,
323 };
324
325 static struct regulator_init_data u1hd_max8997_ldo12_data = {
326         .constraints    = {
327                 .name           = "VT_CAM_1.8V",
328                 .min_uV         = 1800000,
329                 .max_uV         = 1800000,
330                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
331                 .apply_uV       = 1,
332                 .state_mem      = {
333                         .enabled        = 0,
334                         .disabled       = 1,
335                 },
336         },
337         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo12_consumer),
338         .consumer_supplies      = u1hd_max8997_ldo12_consumer,
339 };
340
341 static struct regulator_init_data u1hd_max8997_ldo13_data = {
342         .constraints    = {
343                 .name           = "VCC_3.0V_LCD",
344                 .min_uV         = 3000000,
345                 .max_uV         = 3000000,
346                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
347                 .apply_uV       = 1,
348                 .boot_on        = 1,
349                 .state_mem      = {
350                         .enabled        = 0,
351                         .disabled       = 1,
352                 },
353         },
354         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo13_consumer),
355         .consumer_supplies      = u1hd_max8997_ldo13_consumer,
356 };
357
358 static struct regulator_init_data u1hd_max8997_ldo14_data = {
359         .constraints    = {
360                 .name           = "VCC_3.0V_MOTOR",
361                 .min_uV         = 3000000,
362                 .max_uV         = 3000000,
363                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
364                 .apply_uV       = 1,
365                 .state_mem      = {
366                         .enabled        = 0,
367                         .disabled       = 1,
368                 },
369         },
370         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo14_consumer),
371         .consumer_supplies      = u1hd_max8997_ldo14_consumer,
372 };
373
374 static struct regulator_init_data u1hd_max8997_ldo15_data = {
375         .constraints    = {
376                 .name           = "VLCD_2.2V",
377                 .min_uV         = 2200000,
378                 .max_uV         = 2200000,
379                 .apply_uV       = 1,
380                 .boot_on        = 1,
381                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
382                 .state_mem      = {
383                         .enabled        = 0,
384                         .disabled       = 1,
385                 },
386         },
387         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo15_consumer),
388         .consumer_supplies      = u1hd_max8997_ldo15_consumer,
389 };
390
391 static struct regulator_init_data u1hd_max8997_ldo16_data = {
392         .constraints    = {
393                 .name           = "CAM_SENSOR_IO_1.8V",
394                 .min_uV         = 1800000,
395                 .max_uV         = 1800000,
396                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
397                 .apply_uV       = 1,
398                 .state_mem      = {
399                         .enabled        = 0,
400                         .disabled       = 1,
401                 },
402         },
403         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo16_consumer),
404         .consumer_supplies      = u1hd_max8997_ldo16_consumer,
405 };
406
407 static struct regulator_init_data u1hd_max8997_ldo17_data = {
408         .constraints    = {
409                 .name           = "VTF_2.8V",
410                 .min_uV         = 2800000,
411                 .max_uV         = 2800000,
412                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
413                 .apply_uV       = 1,
414                 .state_mem      = {
415                         .enabled        = 0,
416                         .disabled       = 1,
417                 },
418         },
419         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo17_consumer),
420         .consumer_supplies      = u1hd_max8997_ldo17_consumer,
421 };
422
423 static struct regulator_init_data u1hd_max8997_ldo18_data = {
424         .constraints    = {
425                 .name           = "TOUCH_LED_3.3V",
426                 .min_uV         = 3300000,
427                 .max_uV         = 3300000,
428                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
429                 .apply_uV       = 1,
430                 .state_mem      = {
431                         .enabled        = 0,
432                         .disabled       = 1,
433                 },
434         },
435         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo18_consumer),
436         .consumer_supplies      = u1hd_max8997_ldo18_consumer,
437 };
438
439 static struct regulator_init_data u1hd_max8997_ldo21_data = {
440         .constraints    = {
441                 .name           = "VDDQ_M1M2_1.2V",
442                 .min_uV         = 1200000,
443                 .max_uV         = 1200000,
444                 .apply_uV       = 1,
445                 .always_on      = 1,
446                 .state_mem      = {
447                         .enabled        = 0,
448                         .disabled       = 1,
449                 },
450         },
451         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_ldo21_consumer),
452         .consumer_supplies      = u1hd_max8997_ldo21_consumer,
453 };
454
455 static struct regulator_init_data u1hd_max8997_buck1_data = {
456         .constraints    = {
457                 .name           = "VARM_1.2V_C210",
458                 .min_uV         = 900000,
459                 .max_uV         = 1350000,
460                 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
461                 .always_on      = 1,
462                 .state_mem      = {
463                         .enabled = 0,
464                         .disabled       = 1,
465                 },
466         },
467         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck1_consumer),
468         .consumer_supplies = u1hd_max8997_buck1_consumer,
469 };
470
471 static struct regulator_init_data u1hd_max8997_buck2_data = {
472         .constraints    = {
473                 .name           = "VINT_1.1V_C210",
474                 .min_uV         = 900000,
475                 .max_uV         = 1100000,
476                 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
477                 .always_on      = 1,
478                 .state_mem      = {
479                         .enabled = 0,
480                         .disabled       = 1,
481                 },
482         },
483         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck2_consumer),
484         .consumer_supplies = u1hd_max8997_buck2_consumer,
485 };
486
487 static struct regulator_init_data u1hd_max8997_buck3_data = {
488         .constraints    = {
489                 .name           = "VG3D_1.1V_C210",
490                 .min_uV         = 900000,
491                 .max_uV         = 1100000,
492                 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
493                         REGULATOR_CHANGE_STATUS,
494                 .state_mem      = {
495                         .enabled        = 0,
496                         .disabled       = 1,
497                 },
498         },
499         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck3_consumer),
500         .consumer_supplies = u1hd_max8997_buck3_consumer,
501 };
502
503 static struct regulator_init_data u1hd_max8997_buck4_data = {
504         .constraints    = {
505                 .name           = "CAM_ISP_CORE_1.2V",
506                 .min_uV         = 1200000,
507                 .max_uV         = 1200000,
508                 .apply_uV       = 1,
509                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
510                 .state_mem      = {
511                         .enabled        = 0,
512                         .disabled       = 1,
513                 },
514         },
515         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck4_consumer),
516         .consumer_supplies = u1hd_max8997_buck4_consumer,
517 };
518
519 static struct regulator_init_data u1hd_max8997_buck5_data = {
520         .constraints    = {
521                 .name           = "VMEM_1.2V_C210",
522                 .min_uV         = 1200000,
523                 .max_uV         = 1200000,
524                 .apply_uV       = 1,
525                 .always_on      = 1,
526                 .state_mem      = {
527                         .enabled        = 1,
528                         .disabled       = 0,
529                 },
530         },
531         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck5_consumer),
532         .consumer_supplies = u1hd_max8997_buck5_consumer,
533 };
534
535 static struct regulator_init_data u1hd_max8997_buck6_data = {
536         .constraints    = {
537                 .name           = "V_BAT",
538                 .min_uV         = 2800000,
539                 .max_uV         = 2800000,
540                 .apply_uV       = 1,
541                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
542                 .state_mem      = {
543                         .enabled        = 0,
544                         .disabled       = 1,
545                 },
546         },
547         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck6_consumer),
548         .consumer_supplies = u1hd_max8997_buck6_consumer,
549 };
550
551 static struct regulator_init_data u1hd_max8997_buck7_data = {
552         .constraints    = {
553                 .name           = "VCC_SUB_2.0V",
554                 .min_uV         = 2000000,
555                 .max_uV         = 2000000,
556                 .apply_uV       = 1,
557                 .always_on      = 1,
558                 .state_mem      = {
559                         .enabled        = 1,
560                         .disabled       = 0,
561                 },
562         },
563         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_buck7_consumer),
564         .consumer_supplies = u1hd_max8997_buck7_consumer,
565 };
566
567 static struct regulator_init_data u1hd_max8997_32khz_ap_data = {
568         .constraints    = {
569                 .name           = "32KHz AP",
570                 .always_on      = 1,
571                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
572                 .state_mem      = {
573                         .enabled        = 1,
574                         .disabled       = 0,
575                 },
576         },
577         .num_consumer_supplies = ARRAY_SIZE(u1hd_max8997_32khz_ap_consumer),
578         .consumer_supplies = u1hd_max8997_32khz_ap_consumer,
579 };
580
581 static struct regulator_init_data u1hd_max8997_32khz_cp_data = {
582         .constraints    = {
583                 .name           = "32KHz CP",
584                 .state_mem      = {
585                         .enabled        = 0,
586                         .disabled       = 1,
587                 },
588         },
589 };
590
591 static struct regulator_init_data u1hd_max8997_vichg_data = {
592         .constraints    = {
593                 .name           = "VICHG",
594                 .state_mem      = {
595                         .enabled        = 0,
596                         .disabled       = 1,
597                 },
598         },
599 };
600
601 static struct regulator_init_data u1hd_max8997_esafeout1_data = {
602         .constraints    = {
603                 .name           = "SAFEOUT1",
604                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
605                 .state_mem      = {
606                         .enabled        = 0,
607                         .disabled       = 1,
608                 },
609         },
610         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_esafeout1_consumer),
611         .consumer_supplies      = u1hd_max8997_esafeout1_consumer,
612 };
613
614 static struct regulator_init_data u1hd_max8997_esafeout2_data = {
615         .constraints    = {
616                 .name           = "SAFEOUT2",
617                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
618                 .state_mem      = {
619                         .enabled        = 0,
620                         .disabled       = 1,
621                 },
622         },
623         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_esafeout2_consumer),
624         .consumer_supplies      = u1hd_max8997_esafeout2_consumer,
625 };
626
627 #ifdef CONFIG_CHARGERCTRL_MAX8997
628 static struct regulator_init_data u1hd_max8997_charger_cv_data = {
629         .constraints    = {
630                 .name           = "CHARGER_CV",
631                 .min_uV         = 4200000,
632                 .max_uV         = 4200000,
633                 .apply_uV       = 1,
634         },
635 };
636
637 static struct regulator_init_data u1hd_max8997_charger_data = {
638         .constraints    = {
639                 .name           = "CHARGER",
640                 .min_uA         = 200000,
641                 .max_uA         = 950000,
642                 .boot_on        = 1,
643                 .valid_ops_mask = REGULATOR_CHANGE_STATUS |
644                                 REGULATOR_CHANGE_CURRENT,
645         },
646         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_charger_consumer),
647         .consumer_supplies      = u1hd_max8997_charger_consumer,
648 };
649
650 static struct regulator_init_data u1hd_max8997_charger_topoff_data = {
651         .constraints    = {
652                 .name           = "CHARGER TOPOFF",
653                 .min_uA         = 50000,
654                 .max_uA         = 200000,
655                 .valid_ops_mask = REGULATOR_CHANGE_CURRENT,
656         },
657         .num_consumer_supplies  = ARRAY_SIZE(u1hd_max8997_charger_topoff_consumer),
658         .consumer_supplies      = u1hd_max8997_charger_topoff_consumer,
659 };
660 #endif
661
662 static struct max8997_regulator_data u1hd_max8997_regulators[] = {
663         { MAX8997_LDO1, &u1hd_max8997_ldo1_data },
664         { MAX8997_LDO2, &u1hd_max8997_ldo2_data },
665         { MAX8997_LDO3, &u1hd_max8997_ldo3_data },
666         { MAX8997_LDO4, &u1hd_max8997_ldo4_data },
667         { MAX8997_LDO5, &u1hd_max8997_ldo5_data },
668         { MAX8997_LDO6, &u1hd_max8997_ldo6_data },
669         { MAX8997_LDO7, &u1hd_max8997_ldo7_data },
670         { MAX8997_LDO8, &u1hd_max8997_ldo8_data },
671         { MAX8997_LDO9, &u1hd_max8997_ldo9_data },
672         { MAX8997_LDO10, &u1hd_max8997_ldo10_data },
673         { MAX8997_LDO11, &u1hd_max8997_ldo11_data },
674         { MAX8997_LDO12, &u1hd_max8997_ldo12_data },
675         { MAX8997_LDO13, &u1hd_max8997_ldo13_data },
676         { MAX8997_LDO14, &u1hd_max8997_ldo14_data },
677         { MAX8997_LDO15, &u1hd_max8997_ldo15_data },
678         { MAX8997_LDO16, &u1hd_max8997_ldo16_data },
679         { MAX8997_LDO17, &u1hd_max8997_ldo17_data },
680         { MAX8997_LDO18, &u1hd_max8997_ldo18_data },
681         { MAX8997_LDO21, &u1hd_max8997_ldo21_data },
682
683         { MAX8997_BUCK1, &u1hd_max8997_buck1_data },
684         { MAX8997_BUCK2, &u1hd_max8997_buck2_data },
685         { MAX8997_BUCK3, &u1hd_max8997_buck3_data },
686         { MAX8997_BUCK4, &u1hd_max8997_buck4_data },
687         { MAX8997_BUCK5, &u1hd_max8997_buck5_data },
688         { MAX8997_BUCK6, &u1hd_max8997_buck6_data },
689         { MAX8997_BUCK7, &u1hd_max8997_buck7_data },
690
691         { MAX8997_EN32KHZ_AP, &u1hd_max8997_32khz_ap_data },
692         { MAX8997_EN32KHZ_CP, &u1hd_max8997_32khz_cp_data },
693
694         { MAX8997_ENVICHG, &u1hd_max8997_vichg_data },
695         { MAX8997_ESAFEOUT1, &u1hd_max8997_esafeout1_data },
696         { MAX8997_ESAFEOUT2, &u1hd_max8997_esafeout2_data },
697 #ifdef CONFIG_CHARGERCTRL_MAX8997
698         { MAX8997_CHARGER_CV, &u1hd_max8997_charger_cv_data },
699         { MAX8997_CHARGER, &u1hd_max8997_charger_data },
700         { MAX8997_CHARGER_TOPOFF, &u1hd_max8997_charger_topoff_data },
701 #endif
702 };
703
704 extern struct max8997_muic_platform_data u1hd_muic_pdata;
705 extern struct max8997_haptic_platform_data u1hd_haptic_pdata;
706
707 struct max8997_platform_data u1hd_max8997_pdata = {
708         .irq_base               = IRQ_PMIC_BASE,
709         .ono                    = 0,
710         .wakeup                 = 1,
711
712         .num_regulators         = ARRAY_SIZE(u1hd_max8997_regulators),
713         .regulators             = u1hd_max8997_regulators,
714
715         .buck125_gpios = { S5PV310_GPX0(5), S5PV310_GPX0(6), S5PV310_GPL0(0) },
716         .buck125_default_idx = 0,
717         .buck1_gpiodvs = false,
718         .buck2_gpiodvs = false,
719         .buck5_gpiodvs = false,
720
721         .buck1_voltage[0] = 1350000, /* 1.35V */
722         .buck1_voltage[1] = 1300000, /* 1.3V */
723         .buck1_voltage[2] = 1250000, /* 1.25V */
724         .buck1_voltage[3] = 1200000, /* 1.2V */
725         .buck1_voltage[4] = 1150000, /* 1.15V */
726         .buck1_voltage[5] = 1100000, /* 1.1V */
727         .buck1_voltage[6] = 1000000, /* 1.0V */ /* No room for 1.05V */
728         .buck1_voltage[7] = 950000, /* 0.95V */
729
730         .buck2_voltage[0] = 1100000, /* 1.1V */
731         .buck2_voltage[1] = 1000000, /* 1.0V */
732         .buck2_voltage[2] = 950000, /* 0.95V */
733         .buck2_voltage[3] = 900000, /* 0.9V */
734         .buck2_voltage[4] = 1100000, /* 1.1V */
735         .buck2_voltage[5] = 1000000, /* 1.0V */
736         .buck2_voltage[6] = 950000, /* 0.95V */
737         .buck2_voltage[7] = 900000, /* 0.9V */
738
739         .buck5_voltage[0] = 1200000, /* 1.2V */
740         .buck5_voltage[1] = 1200000, /* 1.2V */
741         .buck5_voltage[2] = 1200000, /* 1.2V */
742         .buck5_voltage[3] = 1200000, /* 1.2V */
743         .buck5_voltage[4] = 1200000, /* 1.2V */
744         .buck5_voltage[5] = 1200000, /* 1.2V */
745         .buck5_voltage[6] = 1200000, /* 1.2V */
746         .buck5_voltage[7] = 1200000, /* 1.2V */
747
748         /* CHARGER */
749         .eoc_mA         = 50,
750         .eoc_ratio      = 0,    /* TODO: change after ratio is implemented */
751         .vichg_adc_get_uV       = NULL, /* TODO: Need to fill this in */
752         .timeout        = 5,
753
754         /* haptic */
755         .haptic_pdata   = &u1hd_haptic_pdata,
756
757         /* muic */
758         .muic_pdata     = &u1hd_muic_pdata,
759
760         /* RTC */
761         .delay          = true,
762
763         /* Flash */
764         .flash_cntl_val = 0x53, /* Flash safety timer duration: 800msec,
765                                    Maximum timer mode */
766 };