blob: 5b632bd74a363efe53110b5c6fc984185114a78b [file] [log] [blame]
Patrick Laib593eaf2012-01-05 22:14:47 -08001/* Copyright (c) 2012, Code Aurora Forum. All rights reserved.
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -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 <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-8960.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,
Patrick Laib593eaf2012-01-05 22:14:47 -080087 .pull = GPIOMUX_PULL_DOWN,
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -080088 },
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
123static struct gpiomux_setting cyts_resout_sus_cfg = {
124 .func = GPIOMUX_FUNC_GPIO,
125 .drv = GPIOMUX_DRV_6MA,
126 .pull = GPIOMUX_PULL_UP,
127};
128
129static struct gpiomux_setting cyts_resout_act_cfg = {
130 .func = GPIOMUX_FUNC_GPIO,
131 .drv = GPIOMUX_DRV_6MA,
132 .pull = GPIOMUX_PULL_UP,
133};
134
135static struct gpiomux_setting cyts_sleep_sus_cfg = {
136 .func = GPIOMUX_FUNC_GPIO,
137 .drv = GPIOMUX_DRV_6MA,
138 .pull = GPIOMUX_PULL_DOWN,
139};
140
141static struct gpiomux_setting cyts_sleep_act_cfg = {
142 .func = GPIOMUX_FUNC_GPIO,
143 .drv = GPIOMUX_DRV_6MA,
144 .pull = GPIOMUX_PULL_DOWN,
145};
146
147static struct gpiomux_setting cyts_int_act_cfg = {
148 .func = GPIOMUX_FUNC_GPIO,
149 .drv = GPIOMUX_DRV_8MA,
150 .pull = GPIOMUX_PULL_UP,
151};
152
153static struct gpiomux_setting cyts_int_sus_cfg = {
154 .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,
Joel King1c607312012-01-13 16:41:44 -0800213 .pull = GPIOMUX_PULL_DOWN,
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800214};
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};
Eugene Yasman67592342011-12-11 13:12:36 +0200246
247static struct gpiomux_setting hdmi_active_3_cfg = {
248 .func = GPIOMUX_FUNC_GPIO,
249 .drv = GPIOMUX_DRV_2MA,
Eugene Yasmana2db4162011-12-13 09:28:22 +0200250 .pull = GPIOMUX_PULL_UP,
Eugene Yasman67592342011-12-11 13:12:36 +0200251 .dir = GPIOMUX_IN,
252};
253
254static struct gpiomux_setting hdmi_active_4_cfg = {
255 .func = GPIOMUX_FUNC_GPIO,
256 .drv = GPIOMUX_DRV_2MA,
257 .pull = GPIOMUX_PULL_UP,
258 .dir = GPIOMUX_OUT_HIGH,
259};
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800260#endif
261
262#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
263static struct msm_gpiomux_config msm8960_ethernet_configs[] = {
264 {
265 .gpio = 90,
266 .settings = {
267 [GPIOMUX_SUSPENDED] = &gpio_eth_config,
268 }
269 },
270 {
271 .gpio = 89,
272 .settings = {
273 [GPIOMUX_SUSPENDED] = &gpio_eth_config,
274 }
275 },
276};
277#endif
278
279static struct msm_gpiomux_config msm8960_gsbi_configs[] __initdata = {
280 {
281 .gpio = 6, /* GSBI1 QUP SPI_DATA_MOSI */
282 .settings = {
283 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
284 [GPIOMUX_ACTIVE] = &spi_active,
285 },
286 },
287 {
288 .gpio = 7, /* GSBI1 QUP SPI_DATA_MISO */
289 .settings = {
290 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
291 [GPIOMUX_ACTIVE] = &spi_active,
292 },
293 },
294 {
295 .gpio = 8, /* GSBI1 QUP SPI_CS_N */
296 .settings = {
297 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
298 [GPIOMUX_ACTIVE] = &spi_active,
299 },
300 },
301 {
302 .gpio = 9, /* GSBI1 QUP SPI_CLK */
303 .settings = {
304 [GPIOMUX_SUSPENDED] = &spi_suspended_config,
305 [GPIOMUX_ACTIVE] = &spi_active,
306 },
307 },
308 {
309 .gpio = 14, /* GSBI1 SPI_CS_1 */
310 .settings = {
311 [GPIOMUX_SUSPENDED] = &spi_suspended_config2,
312 [GPIOMUX_ACTIVE] = &spi_active_config2,
313 },
314 },
315 {
316 .gpio = 16, /* GSBI3 I2C QUP SDA */
317 .settings = {
318 [GPIOMUX_SUSPENDED] = &gsbi3_suspended_cfg,
319 [GPIOMUX_ACTIVE] = &gsbi3_active_cfg,
320 },
321 },
322 {
323 .gpio = 17, /* GSBI3 I2C QUP SCL */
324 .settings = {
325 [GPIOMUX_SUSPENDED] = &gsbi3_suspended_cfg,
326 [GPIOMUX_ACTIVE] = &gsbi3_active_cfg,
327 },
328 },
329 {
330 .gpio = 22, /* GSBI5 UART2 */
331 .settings = {
332 [GPIOMUX_SUSPENDED] = &gsbi5,
333 },
334 },
335 {
336 .gpio = 23, /* GSBI5 UART2 */
337 .settings = {
338 [GPIOMUX_SUSPENDED] = &gsbi5,
339 },
340 },
341 {
342 .gpio = 24, /* GSBI5 UART2 */
343 .settings = {
344 [GPIOMUX_SUSPENDED] = &gsbi5,
345 },
346 },
347 {
348 .gpio = 25, /* GSBI5 UART2 */
349 .settings = {
350 [GPIOMUX_SUSPENDED] = &gsbi5,
351 },
352 },
353 {
354 .gpio = 44, /* GSBI12 I2C QUP SDA */
355 .settings = {
356 [GPIOMUX_SUSPENDED] = &gsbi12,
357 },
358 },
359 {
360 .gpio = 45, /* GSBI12 I2C QUP SCL */
361 .settings = {
362 [GPIOMUX_SUSPENDED] = &gsbi12,
363 },
364 },
365 {
366 .gpio = 73, /* GSBI10 I2C QUP SDA */
367 .settings = {
368 [GPIOMUX_SUSPENDED] = &gsbi10,
369 },
370 },
371 {
372 .gpio = 74, /* GSBI10 I2C QUP SCL */
373 .settings = {
374 [GPIOMUX_SUSPENDED] = &gsbi10,
375 },
376 },
377};
378
379static struct msm_gpiomux_config msm8960_slimbus_config[] __initdata = {
380 {
381 .gpio = 60, /* slimbus data */
382 .settings = {
383 [GPIOMUX_SUSPENDED] = &slimbus,
384 },
385 },
386 {
387 .gpio = 61, /* slimbus clk */
388 .settings = {
389 [GPIOMUX_SUSPENDED] = &slimbus,
390 },
391 },
392};
393
394static struct msm_gpiomux_config msm8960_audio_codec_configs[] __initdata = {
395 {
396 .gpio = 59,
397 .settings = {
398 [GPIOMUX_SUSPENDED] = &cdc_mclk,
399 },
400 },
401};
402
403static struct msm_gpiomux_config msm8960_audio_auxpcm_configs[] __initdata = {
404 {
405 .gpio = 63,
406 .settings = {
407 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
408 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
409 },
410 },
411 {
412 .gpio = 64,
413 .settings = {
414 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
415 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
416 },
417 },
418 {
419 .gpio = 65,
420 .settings = {
421 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
422 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
423 },
424 },
425 {
426 .gpio = 66,
427 .settings = {
428 [GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
429 [GPIOMUX_ACTIVE] = &audio_auxpcm[1],
430 },
431 },
432};
433
434static struct msm_gpiomux_config wcnss_5wire_interface[] = {
435 {
436 .gpio = 84,
437 .settings = {
438 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
439 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
440 },
441 },
442 {
443 .gpio = 85,
444 .settings = {
445 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
446 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
447 },
448 },
449 {
450 .gpio = 86,
451 .settings = {
452 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
453 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
454 },
455 },
456 {
457 .gpio = 87,
458 .settings = {
459 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
460 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
461 },
462 },
463 {
464 .gpio = 88,
465 .settings = {
466 [GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
467 [GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
468 },
469 },
470};
471
472static struct msm_gpiomux_config msm8960_cyts_configs[] __initdata = {
473 { /* TS INTERRUPT */
474 .gpio = 11,
475 .settings = {
476 [GPIOMUX_ACTIVE] = &cyts_int_act_cfg,
477 [GPIOMUX_SUSPENDED] = &cyts_int_sus_cfg,
478 },
479 },
480 { /* TS SLEEP */
481 .gpio = 50,
482 .settings = {
483 [GPIOMUX_ACTIVE] = &cyts_sleep_act_cfg,
484 [GPIOMUX_SUSPENDED] = &cyts_sleep_sus_cfg,
485 },
486 },
487 { /* TS RESOUT */
488 .gpio = 52,
489 .settings = {
490 [GPIOMUX_ACTIVE] = &cyts_resout_act_cfg,
491 [GPIOMUX_SUSPENDED] = &cyts_resout_sus_cfg,
492 },
493 },
494};
495
496#ifdef CONFIG_USB_EHCI_MSM_HSIC
497static struct msm_gpiomux_config msm8960_hsic_configs[] = {
498 {
499 .gpio = 150, /*HSIC_STROBE */
500 .settings = {
501 [GPIOMUX_ACTIVE] = &hsic_act_cfg,
502 [GPIOMUX_SUSPENDED] = &hsic_sus_cfg,
503 },
504 },
505 {
506 .gpio = 151, /* HSIC_DATA */
507 .settings = {
508 [GPIOMUX_ACTIVE] = &hsic_act_cfg,
509 [GPIOMUX_SUSPENDED] = &hsic_sus_cfg,
510 },
511 },
512 {
513 .gpio = 91, /* HSIC_HUB_RESET */
514 .settings = {
515 [GPIOMUX_ACTIVE] = &hsic_hub_act_cfg,
516 [GPIOMUX_SUSPENDED] = &hsic_sus_cfg,
517 },
518 },
519};
520#endif
521
522static struct msm_gpiomux_config hap_lvl_shft_config[] __initdata = {
523 {
524 .gpio = 47,
525 .settings = {
526 [GPIOMUX_SUSPENDED] = &hap_lvl_shft_suspended_config,
527 [GPIOMUX_ACTIVE] = &hap_lvl_shft_active_config,
528 },
529 },
530};
531
532static struct msm_gpiomux_config mdm_configs[] __initdata = {
533 /* AP2MDM_STATUS */
534 {
535 .gpio = 94,
536 .settings = {
537 [GPIOMUX_SUSPENDED] = &ap2mdm_cfg,
538 }
539 },
540 /* MDM2AP_STATUS */
541 {
542 .gpio = 69,
543 .settings = {
544 [GPIOMUX_SUSPENDED] = &mdm2ap_status_cfg,
545 }
546 },
547 /* MDM2AP_ERRFATAL */
548 {
549 .gpio = 70,
550 .settings = {
551 [GPIOMUX_SUSPENDED] = &mdm2ap_errfatal_cfg,
552 }
553 },
554 /* AP2MDM_ERRFATAL */
555 {
556 .gpio = 95,
557 .settings = {
558 [GPIOMUX_SUSPENDED] = &ap2mdm_cfg,
559 }
560 },
561 /* AP2MDM_KPDPWR_N */
562 {
563 .gpio = 81,
564 .settings = {
565 [GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg,
566 }
567 },
568 /* AP2MDM_PMIC_RESET_N */
569 {
570 .gpio = 80,
571 .settings = {
572 [GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg,
573 }
574 }
575};
576
577static struct msm_gpiomux_config msm8960_mdp_vsync_configs[] __initdata = {
578 {
579 .gpio = 0,
580 .settings = {
581 [GPIOMUX_ACTIVE] = &mdp_vsync_active_cfg,
582 [GPIOMUX_SUSPENDED] = &mdp_vsync_suspend_cfg,
583 },
584 }
585};
586
587#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
588static struct msm_gpiomux_config msm8960_hdmi_configs[] __initdata = {
589 {
590 .gpio = 99,
591 .settings = {
592 [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
593 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
594 },
595 },
596 {
597 .gpio = 100,
598 .settings = {
599 [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
600 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
601 },
602 },
603 {
604 .gpio = 101,
605 .settings = {
606 [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
607 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
608 },
609 },
610 {
611 .gpio = 102,
612 .settings = {
613 [GPIOMUX_ACTIVE] = &hdmi_active_2_cfg,
614 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
615 },
616 },
Eugene Yasman67592342011-12-11 13:12:36 +0200617 {
618 .gpio = 15,
619 .settings = {
620 [GPIOMUX_ACTIVE] = &hdmi_active_3_cfg,
621 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
622 },
623 },
624 {
625 .gpio = 66,
626 .settings = {
627 [GPIOMUX_ACTIVE] = &hdmi_active_4_cfg,
628 [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
629 },
630 },
Stepan Moskovchenko3b09bf52011-12-06 20:40:53 -0800631};
632#endif
633
634int __init msm8960_init_gpiomux(void)
635{
636 int rc = msm_gpiomux_init(NR_GPIO_IRQS);
637 if (rc) {
638 pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc);
639 return rc;
640 }
641
642#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
643 msm_gpiomux_install(msm8960_ethernet_configs,
644 ARRAY_SIZE(msm8960_ethernet_configs));
645#endif
646
647 msm_gpiomux_install(msm8960_gsbi_configs,
648 ARRAY_SIZE(msm8960_gsbi_configs));
649
650 msm_gpiomux_install(msm8960_cyts_configs,
651 ARRAY_SIZE(msm8960_cyts_configs));
652
653 msm_gpiomux_install(msm8960_slimbus_config,
654 ARRAY_SIZE(msm8960_slimbus_config));
655
656 msm_gpiomux_install(msm8960_audio_codec_configs,
657 ARRAY_SIZE(msm8960_audio_codec_configs));
658
659 msm_gpiomux_install(msm8960_audio_auxpcm_configs,
660 ARRAY_SIZE(msm8960_audio_auxpcm_configs));
661
662 msm_gpiomux_install(wcnss_5wire_interface,
663 ARRAY_SIZE(wcnss_5wire_interface));
664
665 if (machine_is_msm8960_mtp() || machine_is_msm8960_fluid() ||
666 machine_is_msm8960_liquid() || machine_is_msm8960_cdp())
667 msm_gpiomux_install(hap_lvl_shft_config,
668 ARRAY_SIZE(hap_lvl_shft_config));
669
670 if (PLATFORM_IS_CHARM25())
671 msm_gpiomux_install(mdm_configs,
672 ARRAY_SIZE(mdm_configs));
673
674#ifdef CONFIG_USB_EHCI_MSM_HSIC
675 if ((SOCINFO_VERSION_MAJOR(socinfo_get_version()) != 1) &&
676 (PLATFORM_IS_CHARM25() || machine_is_msm8960_liquid()))
677 msm_gpiomux_install(msm8960_hsic_configs,
678 ARRAY_SIZE(msm8960_hsic_configs));
679#endif
680
681#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
682 msm_gpiomux_install(msm8960_hdmi_configs,
683 ARRAY_SIZE(msm8960_hdmi_configs));
684#endif
685
686 msm_gpiomux_install(msm8960_mdp_vsync_configs,
687 ARRAY_SIZE(msm8960_mdp_vsync_configs));
688
689 return 0;
690}