blob: 165e1a3ba1d2f0f7037c9bc4a9977dc6e815f4c0 [file] [log] [blame]
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -08001/* Copyright (c) 2011, Code Aurora Forum. All rights reserved.
2 *
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 <asm/mach-types.h>
15#include <mach/gpio.h>
16#include <mach/gpiomux.h>
17#include <mach/socinfo.h>
18#include "devices.h"
Stepan Moskovchenko5a83dba2011-12-05 17:30:17 -080019#include "board-8930.h"
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -080020
21/* The SPI configurations apply to GSBI 1*/
22static struct gpiomux_setting spi_active = {
23 .func = GPIOMUX_FUNC_1,
24 .drv = GPIOMUX_DRV_12MA,
25 .pull = GPIOMUX_PULL_NONE,
26};
27
28static struct gpiomux_setting spi_suspended_config = {
29 .func = GPIOMUX_FUNC_GPIO,
30 .drv = GPIOMUX_DRV_2MA,
31 .pull = GPIOMUX_PULL_DOWN,
32};
33
34static struct gpiomux_setting spi_active_config2 = {
35 .func = GPIOMUX_FUNC_2,
36 .drv = GPIOMUX_DRV_8MA,
37 .pull = GPIOMUX_PULL_NONE,
38};
39
40static struct gpiomux_setting spi_suspended_config2 = {
41 .func = GPIOMUX_FUNC_GPIO,
42 .drv = GPIOMUX_DRV_2MA,
43 .pull = GPIOMUX_PULL_UP,
44};
45
46static struct gpiomux_setting gsbi3_suspended_cfg = {
47 .func = GPIOMUX_FUNC_1,
48 .drv = GPIOMUX_DRV_2MA,
49 .pull = GPIOMUX_PULL_KEEPER,
50};
51
52static struct gpiomux_setting gsbi3_active_cfg = {
53 .func = GPIOMUX_FUNC_1,
54 .drv = GPIOMUX_DRV_8MA,
55 .pull = GPIOMUX_PULL_NONE,
56};
57
58static struct gpiomux_setting gsbi5 = {
59 .func = GPIOMUX_FUNC_1,
60 .drv = GPIOMUX_DRV_8MA,
61 .pull = GPIOMUX_PULL_NONE,
62};
63
64static struct gpiomux_setting gsbi10 = {
65 .func = GPIOMUX_FUNC_2,
66 .drv = GPIOMUX_DRV_8MA,
67 .pull = GPIOMUX_PULL_NONE,
68};
69
70static struct gpiomux_setting gsbi12 = {
71 .func = GPIOMUX_FUNC_1,
72 .drv = GPIOMUX_DRV_8MA,
73 .pull = GPIOMUX_PULL_NONE,
74};
75
76static struct gpiomux_setting cdc_mclk = {
77 .func = GPIOMUX_FUNC_1,
78 .drv = GPIOMUX_DRV_8MA,
79 .pull = GPIOMUX_PULL_NONE,
80};
81
82static struct gpiomux_setting audio_auxpcm[] = {
83 /* Suspended state */
84 {
85 .func = GPIOMUX_FUNC_GPIO,
86 .drv = GPIOMUX_DRV_2MA,
87 .pull = GPIOMUX_PULL_NONE,
88 },
89 /* Active state */
90 {
91 .func = GPIOMUX_FUNC_1,
92 .drv = GPIOMUX_DRV_2MA,
93 .pull = GPIOMUX_PULL_NONE,
94 },
95};
96
97#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
98static struct gpiomux_setting gpio_eth_config = {
99 .pull = GPIOMUX_PULL_NONE,
100 .drv = GPIOMUX_DRV_8MA,
101 .func = GPIOMUX_FUNC_GPIO,
102};
103#endif
104
105static struct gpiomux_setting slimbus = {
106 .func = GPIOMUX_FUNC_1,
107 .drv = GPIOMUX_DRV_8MA,
108 .pull = GPIOMUX_PULL_KEEPER,
109};
110
111static struct gpiomux_setting wcnss_5wire_suspend_cfg = {
112 .func = GPIOMUX_FUNC_GPIO,
113 .drv = GPIOMUX_DRV_2MA,
114 .pull = GPIOMUX_PULL_UP,
115};
116
117static struct gpiomux_setting wcnss_5wire_active_cfg = {
118 .func = GPIOMUX_FUNC_1,
119 .drv = GPIOMUX_DRV_6MA,
120 .pull = GPIOMUX_PULL_DOWN,
121};
122
Amy Malochef3c9db42011-12-08 15:17:35 -0800123static struct gpiomux_setting atmel_resout_sus_cfg = {
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800124 .func = GPIOMUX_FUNC_GPIO,
125 .drv = GPIOMUX_DRV_6MA,
126 .pull = GPIOMUX_PULL_DOWN,
127};
128
Amy Malochef3c9db42011-12-08 15:17:35 -0800129static struct gpiomux_setting atmel_resout_act_cfg = {
130 .func = GPIOMUX_FUNC_GPIO,
131 .drv = GPIOMUX_DRV_6MA,
132 .pull = GPIOMUX_PULL_UP,
133};
134
135static struct gpiomux_setting atmel_ldo_en_sus_cfg = {
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800136 .func = GPIOMUX_FUNC_GPIO,
137 .drv = GPIOMUX_DRV_6MA,
138 .pull = GPIOMUX_PULL_DOWN,
139};
140
Amy Malochef3c9db42011-12-08 15:17:35 -0800141static struct gpiomux_setting atmel_ldo_en_act_cfg = {
142 .func = GPIOMUX_FUNC_GPIO,
143 .drv = GPIOMUX_DRV_6MA,
144 .pull = GPIOMUX_PULL_DOWN,
145};
146
147static struct gpiomux_setting atmel_int_act_cfg = {
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800148 .func = GPIOMUX_FUNC_GPIO,
149 .drv = GPIOMUX_DRV_8MA,
150 .pull = GPIOMUX_PULL_UP,
151};
152
Amy Malochef3c9db42011-12-08 15:17:35 -0800153static struct gpiomux_setting atmel_int_sus_cfg = {
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800154 .func = GPIOMUX_FUNC_GPIO,
155 .drv = GPIOMUX_DRV_2MA,
156 .pull = GPIOMUX_PULL_DOWN,
157};
158
159#ifdef CONFIG_USB_EHCI_MSM_HSIC
160static struct gpiomux_setting hsic_act_cfg = {
161 .func = GPIOMUX_FUNC_1,
162 .drv = GPIOMUX_DRV_12MA,
163 .pull = GPIOMUX_PULL_NONE,
164};
165
166static struct gpiomux_setting hsic_sus_cfg = {
167 .func = GPIOMUX_FUNC_GPIO,
168 .drv = GPIOMUX_DRV_2MA,
169 .pull = GPIOMUX_PULL_DOWN,
170 .dir = GPIOMUX_OUT_LOW,
171};
172
173static struct gpiomux_setting hsic_hub_act_cfg = {
174 .func = GPIOMUX_FUNC_GPIO,
175 .drv = GPIOMUX_DRV_2MA,
176 .pull = GPIOMUX_PULL_NONE,
177};
178#endif
179
180static struct gpiomux_setting hap_lvl_shft_suspended_config = {
181 .func = GPIOMUX_FUNC_GPIO,
182 .drv = GPIOMUX_DRV_2MA,
183 .pull = GPIOMUX_PULL_DOWN,
184};
185
186static struct gpiomux_setting hap_lvl_shft_active_config = {
187 .func = GPIOMUX_FUNC_GPIO,
188 .drv = GPIOMUX_DRV_8MA,
189 .pull = GPIOMUX_PULL_UP,
190};
191
192static struct gpiomux_setting ap2mdm_cfg = {
193 .func = GPIOMUX_FUNC_GPIO,
194 .drv = GPIOMUX_DRV_8MA,
195 .pull = GPIOMUX_PULL_DOWN,
196};
197
198static struct gpiomux_setting mdm2ap_status_cfg = {
199 .func = GPIOMUX_FUNC_GPIO,
200 .drv = GPIOMUX_DRV_8MA,
201 .pull = GPIOMUX_PULL_NONE,
202};
203
204static struct gpiomux_setting mdm2ap_errfatal_cfg = {
205 .func = GPIOMUX_FUNC_GPIO,
206 .drv = GPIOMUX_DRV_16MA,
207 .pull = GPIOMUX_PULL_DOWN,
208};
209
210static struct gpiomux_setting ap2mdm_kpdpwr_n_cfg = {
211 .func = GPIOMUX_FUNC_GPIO,
212 .drv = GPIOMUX_DRV_8MA,
213 .pull = GPIOMUX_PULL_NONE,
214};
215
216static struct gpiomux_setting mdp_vsync_suspend_cfg = {
217 .func = GPIOMUX_FUNC_GPIO,
218 .drv = GPIOMUX_DRV_2MA,
219 .pull = GPIOMUX_PULL_DOWN,
220};
221
222static struct gpiomux_setting mdp_vsync_active_cfg = {
223 .func = GPIOMUX_FUNC_1,
224 .drv = GPIOMUX_DRV_2MA,
225 .pull = GPIOMUX_PULL_DOWN,
226};
227
228#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
229static struct gpiomux_setting hdmi_suspend_cfg = {
230 .func = GPIOMUX_FUNC_GPIO,
231 .drv = GPIOMUX_DRV_2MA,
232 .pull = GPIOMUX_PULL_DOWN,
233};
234
235static struct gpiomux_setting hdmi_active_1_cfg = {
236 .func = GPIOMUX_FUNC_1,
237 .drv = GPIOMUX_DRV_2MA,
238 .pull = GPIOMUX_PULL_UP,
239};
240
241static struct gpiomux_setting hdmi_active_2_cfg = {
242 .func = GPIOMUX_FUNC_1,
243 .drv = GPIOMUX_DRV_2MA,
244 .pull = GPIOMUX_PULL_DOWN,
245};
246#endif
247
248#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
249static struct msm_gpiomux_config msm8960_ethernet_configs[] = {
250 {
251 .gpio = 90,
252 .settings = {
253 [GPIOMUX_SUSPENDED] = &gpio_eth_config,
254 }
255 },
256 {
257 .gpio = 89,
258 .settings = {
259 [GPIOMUX_SUSPENDED] = &gpio_eth_config,
260 }
261 },
262};
263#endif
264
265static struct msm_gpiomux_config msm8960_gsbi_configs[] __initdata = {
266 {
267 .gpio = 6, /* GSBI1 QUP SPI_DATA_MOSI */
268 .settings = {
269 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
270 [GPIOMUX_ACTIVE] = &spi_active,
271 },
272 },
273 {
274 .gpio = 7, /* GSBI1 QUP SPI_DATA_MISO */
275 .settings = {
276 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
277 [GPIOMUX_ACTIVE] = &spi_active,
278 },
279 },
280 {
281 .gpio = 8, /* GSBI1 QUP SPI_CS_N */
282 .settings = {
283 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
284 [GPIOMUX_ACTIVE] = &spi_active,
285 },
286 },
287 {
288 .gpio = 9, /* GSBI1 QUP SPI_CLK */
289 .settings = {
290 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
291 [GPIOMUX_ACTIVE] = &spi_active,
292 },
293 },
294 {
295 .gpio = 14, /* GSBI1 SPI_CS_1 */
296 .settings = {
297 [GPIOMUX_SUSPENDED] = &spi_suspended_config2,
298 [GPIOMUX_ACTIVE] = &spi_active_config2,
299 },
300 },
301 {
302 .gpio = 16, /* GSBI3 I2C QUP SDA */
303 .settings = {
304 [GPIOMUX_SUSPENDED] = &gsbi3_suspended_cfg,
305 [GPIOMUX_ACTIVE] = &gsbi3_active_cfg,
306 },
307 },
308 {
309 .gpio = 17, /* GSBI3 I2C QUP SCL */
310 .settings = {
311 [GPIOMUX_SUSPENDED] = &gsbi3_suspended_cfg,
312 [GPIOMUX_ACTIVE] = &gsbi3_active_cfg,
313 },
314 },
315 {
316 .gpio = 22, /* GSBI5 UART2 */
317 .settings = {
318 [GPIOMUX_SUSPENDED] = &gsbi5,
319 },
320 },
321 {
322 .gpio = 23, /* GSBI5 UART2 */
323 .settings = {
324 [GPIOMUX_SUSPENDED] = &gsbi5,
325 },
326 },
327 {
328 .gpio = 24, /* GSBI5 UART2 */
329 .settings = {
330 [GPIOMUX_SUSPENDED] = &gsbi5,
331 },
332 },
333 {
334 .gpio = 25, /* GSBI5 UART2 */
335 .settings = {
336 [GPIOMUX_SUSPENDED] = &gsbi5,
337 },
338 },
339 {
340 .gpio = 44, /* GSBI12 I2C QUP SDA */
341 .settings = {
342 [GPIOMUX_SUSPENDED] = &gsbi12,
343 },
344 },
345 {
346 .gpio = 45, /* GSBI12 I2C QUP SCL */
347 .settings = {
348 [GPIOMUX_SUSPENDED] = &gsbi12,
349 },
350 },
351 {
352 .gpio = 73, /* GSBI10 I2C QUP SDA */
353 .settings = {
354 [GPIOMUX_SUSPENDED] = &gsbi10,
355 },
356 },
357 {
358 .gpio = 74, /* GSBI10 I2C QUP SCL */
359 .settings = {
360 [GPIOMUX_SUSPENDED] = &gsbi10,
361 },
362 },
363};
364
365static struct msm_gpiomux_config msm8960_slimbus_config[] __initdata = {
366 {
367 .gpio = 60, /* slimbus data */
368 .settings = {
369 [GPIOMUX_SUSPENDED] = &slimbus,
370 },
371 },
372 {
373 .gpio = 61, /* slimbus clk */
374 .settings = {
375 [GPIOMUX_SUSPENDED] = &slimbus,
376 },
377 },
378};
379
380static struct msm_gpiomux_config msm8960_audio_codec_configs[] __initdata = {
381 {
382 .gpio = 59,
383 .settings = {
384 [GPIOMUX_SUSPENDED] = &cdc_mclk,
385 },
386 },
387};
388
389static struct msm_gpiomux_config msm8960_audio_auxpcm_configs[] __initdata = {
390 {
391 .gpio = 63,
392 .settings = {
393 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
394 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
395 },
396 },
397 {
398 .gpio = 64,
399 .settings = {
400 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
401 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
402 },
403 },
404 {
405 .gpio = 65,
406 .settings = {
407 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
408 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
409 },
410 },
411 {
412 .gpio = 66,
413 .settings = {
414 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
415 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
416 },
417 },
418};
419
420static struct msm_gpiomux_config wcnss_5wire_interface[] = {
421 {
422 .gpio = 84,
423 .settings = {
424 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
425 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
426 },
427 },
428 {
429 .gpio = 85,
430 .settings = {
431 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
432 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
433 },
434 },
435 {
436 .gpio = 86,
437 .settings = {
438 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
439 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
440 },
441 },
442 {
443 .gpio = 87,
444 .settings = {
445 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
446 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
447 },
448 },
449 {
450 .gpio = 88,
451 .settings = {
452 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
453 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
454 },
455 },
456};
457
Amy Malochef3c9db42011-12-08 15:17:35 -0800458static struct msm_gpiomux_config msm8960_atmel_configs[] __initdata = {
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800459 { /* TS INTERRUPT */
460 .gpio = 11,
461 .settings = {
Amy Malochef3c9db42011-12-08 15:17:35 -0800462 [GPIOMUX_ACTIVE] = &atmel_int_act_cfg,
463 [GPIOMUX_SUSPENDED] = &atmel_int_sus_cfg,
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800464 },
465 },
Amy Malochef3c9db42011-12-08 15:17:35 -0800466 { /* TS LDO ENABLE */
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800467 .gpio = 50,
468 .settings = {
Amy Malochef3c9db42011-12-08 15:17:35 -0800469 [GPIOMUX_ACTIVE] = &atmel_ldo_en_act_cfg,
470 [GPIOMUX_SUSPENDED] = &atmel_ldo_en_sus_cfg,
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800471 },
472 },
473 { /* TS RESOUT */
474 .gpio = 52,
475 .settings = {
Amy Malochef3c9db42011-12-08 15:17:35 -0800476 [GPIOMUX_ACTIVE] = &atmel_resout_act_cfg,
477 [GPIOMUX_SUSPENDED] = &atmel_resout_sus_cfg,
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800478 },
479 },
480};
481
482#ifdef CONFIG_USB_EHCI_MSM_HSIC
483static struct msm_gpiomux_config msm8960_hsic_configs[] = {
484 {
485 .gpio = 150, /*HSIC_STROBE */
486 .settings = {
487 [GPIOMUX_ACTIVE] = &hsic_act_cfg,
488 [GPIOMUX_SUSPENDED] = &hsic_sus_cfg,
489 },
490 },
491 {
492 .gpio = 151, /* HSIC_DATA */
493 .settings = {
494 [GPIOMUX_ACTIVE] = &hsic_act_cfg,
495 [GPIOMUX_SUSPENDED] = &hsic_sus_cfg,
496 },
497 },
498 {
499 .gpio = 91, /* HSIC_HUB_RESET */
500 .settings = {
501 [GPIOMUX_ACTIVE] = &hsic_hub_act_cfg,
502 [GPIOMUX_SUSPENDED] = &hsic_sus_cfg,
503 },
504 },
505};
506#endif
507
508static struct msm_gpiomux_config hap_lvl_shft_config[] __initdata = {
509 {
510 .gpio = 47,
511 .settings = {
512 [GPIOMUX_SUSPENDED] = &hap_lvl_shft_suspended_config,
513 [GPIOMUX_ACTIVE] = &hap_lvl_shft_active_config,
514 },
515 },
516};
517
518static struct msm_gpiomux_config mdm_configs[] __initdata = {
519 /* AP2MDM_STATUS */
520 {
521 .gpio = 94,
522 .settings = {
523 [GPIOMUX_SUSPENDED] = &ap2mdm_cfg,
524 }
525 },
526 /* MDM2AP_STATUS */
527 {
528 .gpio = 69,
529 .settings = {
530 [GPIOMUX_SUSPENDED] = &mdm2ap_status_cfg,
531 }
532 },
533 /* MDM2AP_ERRFATAL */
534 {
535 .gpio = 70,
536 .settings = {
537 [GPIOMUX_SUSPENDED] = &mdm2ap_errfatal_cfg,
538 }
539 },
540 /* AP2MDM_ERRFATAL */
541 {
542 .gpio = 95,
543 .settings = {
544 [GPIOMUX_SUSPENDED] = &ap2mdm_cfg,
545 }
546 },
547 /* AP2MDM_KPDPWR_N */
548 {
549 .gpio = 81,
550 .settings = {
551 [GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg,
552 }
553 },
554 /* AP2MDM_PMIC_RESET_N */
555 {
556 .gpio = 80,
557 .settings = {
558 [GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg,
559 }
560 }
561};
562
563static struct msm_gpiomux_config msm8960_mdp_vsync_configs[] __initdata = {
564 {
565 .gpio = 0,
566 .settings = {
567 [GPIOMUX_ACTIVE] = &mdp_vsync_active_cfg,
568 [GPIOMUX_SUSPENDED] = &mdp_vsync_suspend_cfg,
569 },
570 }
571};
572
573#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
574static struct msm_gpiomux_config msm8960_hdmi_configs[] __initdata = {
575 {
576 .gpio = 99,
577 .settings = {
578 [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
579 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
580 },
581 },
582 {
583 .gpio = 100,
584 .settings = {
585 [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
586 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
587 },
588 },
589 {
590 .gpio = 101,
591 .settings = {
592 [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
593 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
594 },
595 },
596 {
597 .gpio = 102,
598 .settings = {
599 [GPIOMUX_ACTIVE] = &hdmi_active_2_cfg,
600 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
601 },
602 },
603};
604#endif
605
606int __init msm8930_init_gpiomux(void)
607{
608 int rc = msm_gpiomux_init(NR_GPIO_IRQS);
609 if (rc) {
610 pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc);
611 return rc;
612 }
613
614#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
615 msm_gpiomux_install(msm8960_ethernet_configs,
616 ARRAY_SIZE(msm8960_ethernet_configs));
617#endif
618
619 msm_gpiomux_install(msm8960_gsbi_configs,
620 ARRAY_SIZE(msm8960_gsbi_configs));
621
Amy Malochef3c9db42011-12-08 15:17:35 -0800622 msm_gpiomux_install(msm8960_atmel_configs,
623 ARRAY_SIZE(msm8960_atmel_configs));
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800624
625 msm_gpiomux_install(msm8960_slimbus_config,
626 ARRAY_SIZE(msm8960_slimbus_config));
627
628 msm_gpiomux_install(msm8960_audio_codec_configs,
629 ARRAY_SIZE(msm8960_audio_codec_configs));
630
631 msm_gpiomux_install(msm8960_audio_auxpcm_configs,
632 ARRAY_SIZE(msm8960_audio_auxpcm_configs));
633
634 msm_gpiomux_install(wcnss_5wire_interface,
635 ARRAY_SIZE(wcnss_5wire_interface));
636
637 if (machine_is_msm8930_mtp() || machine_is_msm8930_fluid() ||
638 machine_is_msm8930_cdp())
639 msm_gpiomux_install(hap_lvl_shft_config,
640 ARRAY_SIZE(hap_lvl_shft_config));
641
642 if (PLATFORM_IS_CHARM25())
643 msm_gpiomux_install(mdm_configs,
644 ARRAY_SIZE(mdm_configs));
645
646#ifdef CONFIG_USB_EHCI_MSM_HSIC
647 if ((SOCINFO_VERSION_MAJOR(socinfo_get_version()) != 1) &&
648 !machine_is_msm8930_mtp() &&
649 !machine_is_msm8930_fluid())
650 msm_gpiomux_install(msm8960_hsic_configs,
651 ARRAY_SIZE(msm8960_hsic_configs));
652#endif
653
654#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
655 msm_gpiomux_install(msm8960_hdmi_configs,
656 ARRAY_SIZE(msm8960_hdmi_configs));
657#endif
658
659 msm_gpiomux_install(msm8960_mdp_vsync_configs,
660 ARRAY_SIZE(msm8960_mdp_vsync_configs));
661 return 0;
662}