1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
6 #include <linux/module.h>
8 #include <linux/platform_device.h>
10 #include "pinctrl-msm.h"
12 #define REG_SIZE 0x1000
13 #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \
15 .grp = PINCTRL_PINGROUP("gpio" #id, \
17 ARRAY_SIZE(gpio##id##_pins)), \
19 msm_mux_gpio, /* gpio mode */ \
31 .ctl_reg = REG_SIZE * id, \
32 .io_reg = 0x4 + REG_SIZE * id, \
33 .intr_cfg_reg = 0x8 + REG_SIZE * id, \
34 .intr_status_reg = 0xc + REG_SIZE * id, \
35 .intr_target_reg = 0x8 + REG_SIZE * id, \
42 .intr_enable_bit = 0, \
43 .intr_status_bit = 0, \
44 .intr_target_bit = 5, \
45 .intr_target_kpss_val = 3, \
46 .intr_raw_status_bit = 4, \
47 .intr_polarity_bit = 1, \
48 .intr_detection_bit = 2, \
49 .intr_detection_width = 2, \
52 static const struct pinctrl_pin_desc ipq5332_pins
[] = {
53 PINCTRL_PIN(0, "GPIO_0"),
54 PINCTRL_PIN(1, "GPIO_1"),
55 PINCTRL_PIN(2, "GPIO_2"),
56 PINCTRL_PIN(3, "GPIO_3"),
57 PINCTRL_PIN(4, "GPIO_4"),
58 PINCTRL_PIN(5, "GPIO_5"),
59 PINCTRL_PIN(6, "GPIO_6"),
60 PINCTRL_PIN(7, "GPIO_7"),
61 PINCTRL_PIN(8, "GPIO_8"),
62 PINCTRL_PIN(9, "GPIO_9"),
63 PINCTRL_PIN(10, "GPIO_10"),
64 PINCTRL_PIN(11, "GPIO_11"),
65 PINCTRL_PIN(12, "GPIO_12"),
66 PINCTRL_PIN(13, "GPIO_13"),
67 PINCTRL_PIN(14, "GPIO_14"),
68 PINCTRL_PIN(15, "GPIO_15"),
69 PINCTRL_PIN(16, "GPIO_16"),
70 PINCTRL_PIN(17, "GPIO_17"),
71 PINCTRL_PIN(18, "GPIO_18"),
72 PINCTRL_PIN(19, "GPIO_19"),
73 PINCTRL_PIN(20, "GPIO_20"),
74 PINCTRL_PIN(21, "GPIO_21"),
75 PINCTRL_PIN(22, "GPIO_22"),
76 PINCTRL_PIN(23, "GPIO_23"),
77 PINCTRL_PIN(24, "GPIO_24"),
78 PINCTRL_PIN(25, "GPIO_25"),
79 PINCTRL_PIN(26, "GPIO_26"),
80 PINCTRL_PIN(27, "GPIO_27"),
81 PINCTRL_PIN(28, "GPIO_28"),
82 PINCTRL_PIN(29, "GPIO_29"),
83 PINCTRL_PIN(30, "GPIO_30"),
84 PINCTRL_PIN(31, "GPIO_31"),
85 PINCTRL_PIN(32, "GPIO_32"),
86 PINCTRL_PIN(33, "GPIO_33"),
87 PINCTRL_PIN(34, "GPIO_34"),
88 PINCTRL_PIN(35, "GPIO_35"),
89 PINCTRL_PIN(36, "GPIO_36"),
90 PINCTRL_PIN(37, "GPIO_37"),
91 PINCTRL_PIN(38, "GPIO_38"),
92 PINCTRL_PIN(39, "GPIO_39"),
93 PINCTRL_PIN(40, "GPIO_40"),
94 PINCTRL_PIN(41, "GPIO_41"),
95 PINCTRL_PIN(42, "GPIO_42"),
96 PINCTRL_PIN(43, "GPIO_43"),
97 PINCTRL_PIN(44, "GPIO_44"),
98 PINCTRL_PIN(45, "GPIO_45"),
99 PINCTRL_PIN(46, "GPIO_46"),
100 PINCTRL_PIN(47, "GPIO_47"),
101 PINCTRL_PIN(48, "GPIO_48"),
102 PINCTRL_PIN(49, "GPIO_49"),
103 PINCTRL_PIN(50, "GPIO_50"),
104 PINCTRL_PIN(51, "GPIO_51"),
105 PINCTRL_PIN(52, "GPIO_52"),
108 #define DECLARE_MSM_GPIO_PINS(pin) \
109 static const unsigned int gpio##pin##_pins[] = { pin }
110 DECLARE_MSM_GPIO_PINS(0);
111 DECLARE_MSM_GPIO_PINS(1);
112 DECLARE_MSM_GPIO_PINS(2);
113 DECLARE_MSM_GPIO_PINS(3);
114 DECLARE_MSM_GPIO_PINS(4);
115 DECLARE_MSM_GPIO_PINS(5);
116 DECLARE_MSM_GPIO_PINS(6);
117 DECLARE_MSM_GPIO_PINS(7);
118 DECLARE_MSM_GPIO_PINS(8);
119 DECLARE_MSM_GPIO_PINS(9);
120 DECLARE_MSM_GPIO_PINS(10);
121 DECLARE_MSM_GPIO_PINS(11);
122 DECLARE_MSM_GPIO_PINS(12);
123 DECLARE_MSM_GPIO_PINS(13);
124 DECLARE_MSM_GPIO_PINS(14);
125 DECLARE_MSM_GPIO_PINS(15);
126 DECLARE_MSM_GPIO_PINS(16);
127 DECLARE_MSM_GPIO_PINS(17);
128 DECLARE_MSM_GPIO_PINS(18);
129 DECLARE_MSM_GPIO_PINS(19);
130 DECLARE_MSM_GPIO_PINS(20);
131 DECLARE_MSM_GPIO_PINS(21);
132 DECLARE_MSM_GPIO_PINS(22);
133 DECLARE_MSM_GPIO_PINS(23);
134 DECLARE_MSM_GPIO_PINS(24);
135 DECLARE_MSM_GPIO_PINS(25);
136 DECLARE_MSM_GPIO_PINS(26);
137 DECLARE_MSM_GPIO_PINS(27);
138 DECLARE_MSM_GPIO_PINS(28);
139 DECLARE_MSM_GPIO_PINS(29);
140 DECLARE_MSM_GPIO_PINS(30);
141 DECLARE_MSM_GPIO_PINS(31);
142 DECLARE_MSM_GPIO_PINS(32);
143 DECLARE_MSM_GPIO_PINS(33);
144 DECLARE_MSM_GPIO_PINS(34);
145 DECLARE_MSM_GPIO_PINS(35);
146 DECLARE_MSM_GPIO_PINS(36);
147 DECLARE_MSM_GPIO_PINS(37);
148 DECLARE_MSM_GPIO_PINS(38);
149 DECLARE_MSM_GPIO_PINS(39);
150 DECLARE_MSM_GPIO_PINS(40);
151 DECLARE_MSM_GPIO_PINS(41);
152 DECLARE_MSM_GPIO_PINS(42);
153 DECLARE_MSM_GPIO_PINS(43);
154 DECLARE_MSM_GPIO_PINS(44);
155 DECLARE_MSM_GPIO_PINS(45);
156 DECLARE_MSM_GPIO_PINS(46);
157 DECLARE_MSM_GPIO_PINS(47);
158 DECLARE_MSM_GPIO_PINS(48);
159 DECLARE_MSM_GPIO_PINS(49);
160 DECLARE_MSM_GPIO_PINS(50);
161 DECLARE_MSM_GPIO_PINS(51);
162 DECLARE_MSM_GPIO_PINS(52);
164 enum ipq5332_functions
{
193 msm_mux_core_voltage
,
228 msm_mux_qdss_cti_trig_in_a0
,
229 msm_mux_qdss_cti_trig_in_a1
,
230 msm_mux_qdss_cti_trig_in_b0
,
231 msm_mux_qdss_cti_trig_in_b1
,
232 msm_mux_qdss_cti_trig_out_a0
,
233 msm_mux_qdss_cti_trig_out_a1
,
234 msm_mux_qdss_cti_trig_out_b0
,
235 msm_mux_qdss_cti_trig_out_b1
,
236 msm_mux_qdss_traceclk_a
,
237 msm_mux_qdss_traceclk_b
,
238 msm_mux_qdss_tracectl_a
,
239 msm_mux_qdss_tracectl_b
,
240 msm_mux_qdss_tracedata_a
,
241 msm_mux_qdss_tracedata_b
,
263 static const char * const gpio_groups
[] = {
264 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
265 "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
266 "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
267 "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
268 "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
269 "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
270 "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
271 "gpio50", "gpio51", "gpio52",
274 static const char * const atest_char_groups
[] = {
278 static const char * const atest_char0_groups
[] = {
282 static const char * const atest_char1_groups
[] = {
286 static const char * const atest_char2_groups
[] = {
290 static const char * const atest_char3_groups
[] = {
294 static const char * const atest_tic_groups
[] = {
298 static const char * const audio_pri_groups
[] = {
299 "gpio29", "gpio30", "gpio31", "gpio32",
302 static const char * const audio_pri0_groups
[] = {
306 static const char * const audio_pri1_groups
[] = {
310 static const char * const audio_sec_groups
[] = {
311 "gpio33", "gpio34", "gpio35", "gpio36",
314 static const char * const audio_sec0_groups
[] = {
318 static const char * const audio_sec1_groups
[] = {
322 static const char * const blsp0_i2c_groups
[] = {
326 static const char * const blsp0_spi_groups
[] = {
327 "gpio14", "gpio15", "gpio16", "gpio17",
330 static const char * const blsp0_uart0_groups
[] = {
334 static const char * const blsp0_uart1_groups
[] = {
338 static const char * const blsp1_i2c0_groups
[] = {
342 static const char * const blsp1_i2c1_groups
[] = {
346 static const char * const blsp1_spi0_groups
[] = {
347 "gpio29", "gpio30", "gpio31", "gpio32",
350 static const char * const blsp1_spi1_groups
[] = {
351 "gpio25", "gpio26", "gpio27", "gpio28",
354 static const char * const blsp1_uart0_groups
[] = {
355 "gpio14", "gpio15", "gpio16", "gpio17",
358 static const char * const blsp1_uart1_groups
[] = {
359 "gpio25", "gpio26", "gpio27", "gpio28",
362 static const char * const blsp1_uart2_groups
[] = {
363 "gpio33", "gpio34", "gpio35", "gpio36",
366 static const char * const blsp2_i2c0_groups
[] = {
370 static const char * const blsp2_i2c1_groups
[] = {
374 static const char * const blsp2_spi_groups
[] = {
378 static const char * const blsp2_spi0_groups
[] = {
379 "gpio33", "gpio34", "gpio35", "gpio36",
382 static const char * const blsp2_spi1_groups
[] = {
383 "gpio40", "gpio41", "gpio42", "gpio52",
386 static const char * const core_voltage_groups
[] = {
390 static const char * const cri_trng0_groups
[] = {
394 static const char * const cri_trng1_groups
[] = {
398 static const char * const cri_trng2_groups
[] = {
402 static const char * const cri_trng3_groups
[] = {
406 static const char * const cxc_clk_groups
[] = {
410 static const char * const cxc_data_groups
[] = {
414 static const char * const dbg_out_groups
[] = {
418 static const char * const gcc_plltest_groups
[] = {
422 static const char * const gcc_tlmm_groups
[] = {
426 static const char * const lock_det_groups
[] = {
430 static const char * const mac0_groups
[] = {
434 static const char * const mac1_groups
[] = {
438 static const char * const mdc0_groups
[] = {
442 static const char * const mdc1_groups
[] = {
446 static const char * const mdio0_groups
[] = {
450 static const char * const mdio1_groups
[] = {
454 static const char * const pc_groups
[] = {
458 static const char * const pcie0_clk_groups
[] = {
462 static const char * const pcie0_wake_groups
[] = {
466 static const char * const pcie1_clk_groups
[] = {
470 static const char * const pcie1_wake_groups
[] = {
474 static const char * const pcie2_clk_groups
[] = {
478 static const char * const pcie2_wake_groups
[] = {
482 static const char * const pll_test_groups
[] = {
486 static const char * const prng_rosc0_groups
[] = {
490 static const char * const prng_rosc1_groups
[] = {
494 static const char * const prng_rosc2_groups
[] = {
498 static const char * const prng_rosc3_groups
[] = {
502 static const char * const pta_groups
[] = {
503 "gpio49", "gpio50", "gpio51",
506 static const char * const pwm0_groups
[] = {
507 "gpio43", "gpio44", "gpio45", "gpio46",
510 static const char * const pwm1_groups
[] = {
511 "gpio29", "gpio30", "gpio31", "gpio32",
514 static const char * const pwm2_groups
[] = {
515 "gpio25", "gpio26", "gpio27", "gpio28",
518 static const char * const pwm3_groups
[] = {
519 "gpio8", "gpio9", "gpio10", "gpio11",
522 static const char * const qdss_cti_trig_in_a0_groups
[] = {
526 static const char * const qdss_cti_trig_in_a1_groups
[] = {
530 static const char * const qdss_cti_trig_in_b0_groups
[] = {
534 static const char * const qdss_cti_trig_in_b1_groups
[] = {
538 static const char * const qdss_cti_trig_out_a0_groups
[] = {
542 static const char * const qdss_cti_trig_out_a1_groups
[] = {
546 static const char * const qdss_cti_trig_out_b0_groups
[] = {
550 static const char * const qdss_cti_trig_out_b1_groups
[] = {
554 static const char * const qdss_traceclk_a_groups
[] = {
558 static const char * const qdss_traceclk_b_groups
[] = {
562 static const char * const qdss_tracectl_a_groups
[] = {
566 static const char * const qdss_tracectl_b_groups
[] = {
570 static const char * const qdss_tracedata_a_groups
[] = {
571 "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", "gpio15", "gpio16",
572 "gpio17", "gpio18", "gpio19", "gpio20", "gpio22", "gpio24", "gpio25",
576 static const char * const qdss_tracedata_b_groups
[] = {
577 "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
578 "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
582 static const char * const qspi_clk_groups
[] = {
586 static const char * const qspi_cs_groups
[] = {
590 static const char * const qspi_data_groups
[] = {
591 "gpio8", "gpio9", "gpio10", "gpio11",
594 static const char * const resout_groups
[] = {
598 static const char * const rx0_groups
[] = {
602 static const char * const rx1_groups
[] = {
606 static const char * const sdc_clk_groups
[] = {
610 static const char * const sdc_cmd_groups
[] = {
614 static const char * const sdc_data_groups
[] = {
615 "gpio8", "gpio9", "gpio10", "gpio11",
618 static const char * const tsens_max_groups
[] = {
622 static const char * const wci_txd_groups
[] = {
623 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
624 "gpio36", "gpio43", "gpio45",
627 static const char * const wci_rxd_groups
[] = {
628 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
629 "gpio35", "gpio36", "gpio43", "gpio45",
632 static const char * const wsi_clk_groups
[] = {
636 static const char * const wsi_clk3_groups
[] = {
640 static const char * const wsi_data_groups
[] = {
644 static const char * const wsi_data3_groups
[] = {
648 static const char * const wsis_reset_groups
[] = {
652 static const char * const xfem_groups
[] = {
653 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
656 static const struct pinfunction ipq5332_functions
[] = {
657 MSM_PIN_FUNCTION(atest_char
),
658 MSM_PIN_FUNCTION(atest_char0
),
659 MSM_PIN_FUNCTION(atest_char1
),
660 MSM_PIN_FUNCTION(atest_char2
),
661 MSM_PIN_FUNCTION(atest_char3
),
662 MSM_PIN_FUNCTION(atest_tic
),
663 MSM_PIN_FUNCTION(audio_pri
),
664 MSM_PIN_FUNCTION(audio_pri0
),
665 MSM_PIN_FUNCTION(audio_pri1
),
666 MSM_PIN_FUNCTION(audio_sec
),
667 MSM_PIN_FUNCTION(audio_sec0
),
668 MSM_PIN_FUNCTION(audio_sec1
),
669 MSM_PIN_FUNCTION(blsp0_i2c
),
670 MSM_PIN_FUNCTION(blsp0_spi
),
671 MSM_PIN_FUNCTION(blsp0_uart0
),
672 MSM_PIN_FUNCTION(blsp0_uart1
),
673 MSM_PIN_FUNCTION(blsp1_i2c0
),
674 MSM_PIN_FUNCTION(blsp1_i2c1
),
675 MSM_PIN_FUNCTION(blsp1_spi0
),
676 MSM_PIN_FUNCTION(blsp1_spi1
),
677 MSM_PIN_FUNCTION(blsp1_uart0
),
678 MSM_PIN_FUNCTION(blsp1_uart1
),
679 MSM_PIN_FUNCTION(blsp1_uart2
),
680 MSM_PIN_FUNCTION(blsp2_i2c0
),
681 MSM_PIN_FUNCTION(blsp2_i2c1
),
682 MSM_PIN_FUNCTION(blsp2_spi
),
683 MSM_PIN_FUNCTION(blsp2_spi0
),
684 MSM_PIN_FUNCTION(blsp2_spi1
),
685 MSM_PIN_FUNCTION(core_voltage
),
686 MSM_PIN_FUNCTION(cri_trng0
),
687 MSM_PIN_FUNCTION(cri_trng1
),
688 MSM_PIN_FUNCTION(cri_trng2
),
689 MSM_PIN_FUNCTION(cri_trng3
),
690 MSM_PIN_FUNCTION(cxc_clk
),
691 MSM_PIN_FUNCTION(cxc_data
),
692 MSM_PIN_FUNCTION(dbg_out
),
693 MSM_PIN_FUNCTION(gcc_plltest
),
694 MSM_PIN_FUNCTION(gcc_tlmm
),
695 MSM_PIN_FUNCTION(gpio
),
696 MSM_PIN_FUNCTION(lock_det
),
697 MSM_PIN_FUNCTION(mac0
),
698 MSM_PIN_FUNCTION(mac1
),
699 MSM_PIN_FUNCTION(mdc0
),
700 MSM_PIN_FUNCTION(mdc1
),
701 MSM_PIN_FUNCTION(mdio0
),
702 MSM_PIN_FUNCTION(mdio1
),
703 MSM_PIN_FUNCTION(pc
),
704 MSM_PIN_FUNCTION(pcie0_clk
),
705 MSM_PIN_FUNCTION(pcie0_wake
),
706 MSM_PIN_FUNCTION(pcie1_clk
),
707 MSM_PIN_FUNCTION(pcie1_wake
),
708 MSM_PIN_FUNCTION(pcie2_clk
),
709 MSM_PIN_FUNCTION(pcie2_wake
),
710 MSM_PIN_FUNCTION(pll_test
),
711 MSM_PIN_FUNCTION(prng_rosc0
),
712 MSM_PIN_FUNCTION(prng_rosc1
),
713 MSM_PIN_FUNCTION(prng_rosc2
),
714 MSM_PIN_FUNCTION(prng_rosc3
),
715 MSM_PIN_FUNCTION(pta
),
716 MSM_PIN_FUNCTION(pwm0
),
717 MSM_PIN_FUNCTION(pwm1
),
718 MSM_PIN_FUNCTION(pwm2
),
719 MSM_PIN_FUNCTION(pwm3
),
720 MSM_PIN_FUNCTION(qdss_cti_trig_in_a0
),
721 MSM_PIN_FUNCTION(qdss_cti_trig_in_a1
),
722 MSM_PIN_FUNCTION(qdss_cti_trig_in_b0
),
723 MSM_PIN_FUNCTION(qdss_cti_trig_in_b1
),
724 MSM_PIN_FUNCTION(qdss_cti_trig_out_a0
),
725 MSM_PIN_FUNCTION(qdss_cti_trig_out_a1
),
726 MSM_PIN_FUNCTION(qdss_cti_trig_out_b0
),
727 MSM_PIN_FUNCTION(qdss_cti_trig_out_b1
),
728 MSM_PIN_FUNCTION(qdss_traceclk_a
),
729 MSM_PIN_FUNCTION(qdss_traceclk_b
),
730 MSM_PIN_FUNCTION(qdss_tracectl_a
),
731 MSM_PIN_FUNCTION(qdss_tracectl_b
),
732 MSM_PIN_FUNCTION(qdss_tracedata_a
),
733 MSM_PIN_FUNCTION(qdss_tracedata_b
),
734 MSM_PIN_FUNCTION(qspi_data
),
735 MSM_PIN_FUNCTION(qspi_clk
),
736 MSM_PIN_FUNCTION(qspi_cs
),
737 MSM_PIN_FUNCTION(resout
),
738 MSM_PIN_FUNCTION(rx0
),
739 MSM_PIN_FUNCTION(rx1
),
740 MSM_PIN_FUNCTION(sdc_data
),
741 MSM_PIN_FUNCTION(sdc_clk
),
742 MSM_PIN_FUNCTION(sdc_cmd
),
743 MSM_PIN_FUNCTION(tsens_max
),
744 MSM_PIN_FUNCTION(wci_txd
),
745 MSM_PIN_FUNCTION(wci_rxd
),
746 MSM_PIN_FUNCTION(wsi_clk
),
747 MSM_PIN_FUNCTION(wsi_clk3
),
748 MSM_PIN_FUNCTION(wsi_data
),
749 MSM_PIN_FUNCTION(wsi_data3
),
750 MSM_PIN_FUNCTION(wsis_reset
),
751 MSM_PIN_FUNCTION(xfem
),
754 static const struct msm_pingroup ipq5332_groups
[] = {
755 PINGROUP(0, atest_char0
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
756 PINGROUP(1, atest_char1
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
757 PINGROUP(2, atest_char2
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
758 PINGROUP(3, atest_char3
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
759 PINGROUP(4, qdss_cti_trig_out_a0
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
760 PINGROUP(5, qdss_cti_trig_in_a0
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
761 PINGROUP(6, qdss_cti_trig_out_a1
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
762 PINGROUP(7, qdss_cti_trig_in_a1
, wci_txd
, wci_rxd
, xfem
, _
, _
, _
, _
, _
),
763 PINGROUP(8, sdc_data
, qspi_data
, pwm3
, qdss_traceclk_a
, _
, _
, _
, _
, _
),
764 PINGROUP(9, sdc_data
, qspi_data
, pwm3
, qdss_tracectl_a
, _
, atest_tic
, _
, _
, _
),
765 PINGROUP(10, sdc_data
, qspi_data
, pwm3
, qdss_tracedata_a
, _
, _
, _
, _
, _
),
766 PINGROUP(11, sdc_data
, qspi_data
, pwm3
, qdss_tracedata_a
, _
, _
, _
, _
, _
),
767 PINGROUP(12, sdc_cmd
, qspi_cs
, qdss_tracedata_a
, _
, _
, _
, _
, _
, _
),
768 PINGROUP(13, sdc_clk
, qspi_clk
, qdss_tracedata_a
, _
, _
, _
, _
, _
, _
),
769 PINGROUP(14, blsp0_spi
, blsp1_uart0
, qdss_tracedata_a
, _
, _
, _
, _
, _
, _
),
770 PINGROUP(15, blsp0_spi
, blsp1_uart0
, qdss_tracedata_a
, _
, _
, _
, _
, _
, _
),
771 PINGROUP(16, blsp0_spi
, blsp0_i2c
, blsp1_uart0
, _
, qdss_tracedata_a
, _
, _
, _
, _
),
772 PINGROUP(17, blsp0_spi
, blsp0_i2c
, blsp1_uart0
, _
, cri_trng0
, qdss_tracedata_a
, _
, _
, _
),
773 PINGROUP(18, blsp0_uart0
, mac0
, _
, cri_trng1
, qdss_tracedata_a
, _
, _
, _
, _
),
774 PINGROUP(19, blsp0_uart0
, mac1
, _
, cri_trng2
, qdss_tracedata_a
, _
, _
, _
, _
),
775 PINGROUP(20, resout
, _
, cri_trng3
, qdss_tracedata_a
, _
, _
, _
, _
, _
),
776 PINGROUP(21, core_voltage
, _
, _
, _
, _
, _
, _
, _
, _
),
777 PINGROUP(22, _
, prng_rosc0
, qdss_tracedata_a
, _
, _
, _
, _
, _
, _
),
778 PINGROUP(23, core_voltage
, _
, _
, _
, _
, _
, _
, _
, _
),
779 PINGROUP(24, _
, prng_rosc1
, qdss_tracedata_a
, _
, _
, _
, _
, _
, _
),
780 PINGROUP(25, mdc0
, blsp1_uart1
, blsp1_spi1
, pwm2
, _
, _
, prng_rosc2
, qdss_tracedata_a
, _
),
781 PINGROUP(26, mdio0
, blsp1_uart1
, blsp1_spi1
, pwm2
, _
, _
, prng_rosc3
, qdss_tracedata_a
, _
),
782 PINGROUP(27, mdc1
, blsp0_uart1
, blsp1_uart1
, blsp1_spi1
, pwm2
, _
, _
, qdss_tracedata_a
, _
),
783 PINGROUP(28, mdio1
, blsp0_uart1
, blsp1_uart1
, blsp1_spi1
, pwm2
, _
, tsens_max
, _
, _
),
784 PINGROUP(29, audio_pri
, blsp1_spi0
, blsp1_i2c0
, pwm1
, _
, qdss_tracedata_b
, _
, _
, _
),
785 PINGROUP(30, audio_pri
, blsp1_spi0
, blsp1_i2c0
, pwm1
, audio_sec0
, audio_sec0
, _
, qdss_tracedata_b
, _
),
786 PINGROUP(31, audio_pri
, blsp1_spi0
, pwm1
, _
, qdss_tracedata_b
, _
, _
, _
, _
),
787 PINGROUP(32, audio_pri
, blsp1_spi0
, pwm1
, _
, qdss_tracedata_b
, _
, _
, _
, _
),
788 PINGROUP(33, audio_sec
, blsp1_uart2
, blsp2_i2c1
, blsp2_spi0
, _
, qdss_tracedata_b
, _
, _
, _
),
789 PINGROUP(34, audio_sec
, blsp1_uart2
, blsp2_i2c1
, blsp2_spi0
, audio_pri0
, audio_pri0
, _
, qdss_tracedata_b
, _
),
790 PINGROUP(35, audio_sec
, blsp1_uart2
, pc
, wci_rxd
, blsp2_spi0
, _
, qdss_tracedata_b
, _
, _
),
791 PINGROUP(36, audio_sec
, blsp1_uart2
, wci_txd
, wci_rxd
, blsp2_spi0
, _
, qdss_tracedata_b
, _
, _
),
792 PINGROUP(37, pcie0_clk
, blsp2_spi
, _
, qdss_tracedata_b
, _
, _
, _
, _
, _
),
793 PINGROUP(38, _
, qdss_tracedata_b
, _
, _
, _
, _
, _
, _
, _
),
794 PINGROUP(39, pcie0_wake
, _
, qdss_tracedata_b
, _
, _
, _
, _
, _
, _
),
795 PINGROUP(40, wsi_clk
, blsp1_i2c1
, blsp2_spi1
, _
, _
, qdss_tracedata_b
, _
, _
, _
),
796 PINGROUP(41, wsi_data
, blsp1_i2c1
, blsp2_spi1
, _
, _
, qdss_tracedata_b
, _
, wsis_reset
, _
),
797 PINGROUP(42, wsi_clk
, blsp2_spi1
, _
, qdss_tracedata_b
, _
, _
, _
, _
, _
),
798 PINGROUP(43, pcie2_clk
, wci_txd
, wci_rxd
, blsp2_i2c0
, pwm0
, audio_pri1
, audio_pri1
, _
, gcc_plltest
),
799 PINGROUP(44, pwm0
, _
, gcc_tlmm
, qdss_tracectl_b
, _
, wsi_data3
, _
, _
, _
),
800 PINGROUP(45, pcie2_wake
, wci_txd
, wci_rxd
, blsp2_i2c0
, rx1
, pwm0
, audio_sec1
, audio_sec1
, _
),
801 PINGROUP(46, pcie1_clk
, atest_char
, pwm0
, _
, qdss_cti_trig_out_b0
, _
, _
, _
, _
),
802 PINGROUP(47, _
, qdss_cti_trig_in_b0
, _
, _
, _
, _
, _
, _
, _
),
803 PINGROUP(48, pcie1_wake
, rx0
, dbg_out
, qdss_cti_trig_out_b1
, _
, _
, _
, _
, _
),
804 PINGROUP(49, pta
, cxc_clk
, pll_test
, _
, qdss_cti_trig_in_b1
, _
, _
, _
, _
),
805 PINGROUP(50, pta
, cxc_data
, _
, _
, _
, _
, _
, _
, _
),
806 PINGROUP(51, pta
, lock_det
, _
, _
, _
, _
, _
, _
, _
),
807 PINGROUP(52, wsi_data
, blsp2_spi1
, _
, qdss_tracedata_b
, _
, _
, _
, _
, _
),
810 static const struct msm_pinctrl_soc_data ipq5332_pinctrl
= {
811 .pins
= ipq5332_pins
,
812 .npins
= ARRAY_SIZE(ipq5332_pins
),
813 .functions
= ipq5332_functions
,
814 .nfunctions
= ARRAY_SIZE(ipq5332_functions
),
815 .groups
= ipq5332_groups
,
816 .ngroups
= ARRAY_SIZE(ipq5332_groups
),
820 static int ipq5332_pinctrl_probe(struct platform_device
*pdev
)
822 return msm_pinctrl_probe(pdev
, &ipq5332_pinctrl
);
825 static const struct of_device_id ipq5332_pinctrl_of_match
[] = {
826 { .compatible
= "qcom,ipq5332-tlmm", },
829 MODULE_DEVICE_TABLE(of
, ipq5332_pinctrl_of_match
);
831 static struct platform_driver ipq5332_pinctrl_driver
= {
833 .name
= "ipq5332-tlmm",
834 .of_match_table
= ipq5332_pinctrl_of_match
,
836 .probe
= ipq5332_pinctrl_probe
,
837 .remove
= msm_pinctrl_remove
,
840 static int __init
ipq5332_pinctrl_init(void)
842 return platform_driver_register(&ipq5332_pinctrl_driver
);
844 arch_initcall(ipq5332_pinctrl_init
);
846 static void __exit
ipq5332_pinctrl_exit(void)
848 platform_driver_unregister(&ipq5332_pinctrl_driver
);
850 module_exit(ipq5332_pinctrl_exit
);
852 MODULE_DESCRIPTION("QTI IPQ5332 TLMM driver");
853 MODULE_LICENSE("GPL");