14 #include <linux/module.h>
19 #define DRIVER_NAME "spear1340-pinmux"
22 static const struct pinctrl_pin_desc spear1340_pins[] = {
25 PINCTRL_PIN(246,
"PLGPIO246"),
26 PINCTRL_PIN(247,
"PLGPIO247"),
27 PINCTRL_PIN(248,
"PLGPIO248"),
28 PINCTRL_PIN(249,
"PLGPIO249"),
29 PINCTRL_PIN(250,
"PLGPIO250"),
30 PINCTRL_PIN(251,
"PLGPIO251"),
35 #define PAD_FUNCTION_EN_1 0x668
36 #define PAD_FUNCTION_EN_2 0x66C
37 #define PAD_FUNCTION_EN_3 0x670
38 #define PAD_FUNCTION_EN_4 0x674
39 #define PAD_FUNCTION_EN_5 0x690
40 #define PAD_FUNCTION_EN_6 0x694
41 #define PAD_FUNCTION_EN_7 0x698
42 #define PAD_FUNCTION_EN_8 0x69C
45 #define PAD_SHARED_IP_EN_1 0x6A0
46 #define PAD_SHARED_IP_EN_2 0x6A4
54 #define PADS_AS_GPIO_REG0_MASK 0xFFFFFFFE
55 #define PADS_AS_GPIO_REGS_MASK 0xFFFFFFFF
56 #define PADS_AS_GPIO_REG7_MASK 0x07FFFFFF
59 #define FSMC_16_BIT_AND_KBD_ROW_COL_REG0_MASK 0x00000FFE
60 #define UART0_ENH_AND_GPT_REG0_MASK 0x0003F000
61 #define PWM1_AND_KBD_COL5_REG0_MASK 0x00040000
62 #define I2C1_REG0_MASK 0x01080000
63 #define SPDIF_IN_REG0_MASK 0x00100000
64 #define PWM2_AND_GPT0_TMR0_CPT_REG0_MASK 0x00400000
65 #define PWM3_AND_GPT0_TMR1_CLK_REG0_MASK 0x00800000
66 #define PWM0_AND_SSP0_CS1_REG0_MASK 0x02000000
67 #define VIP_AND_CAM3_REG0_MASK 0xFC200000
68 #define VIP_AND_CAM3_REG1_MASK 0x0000000F
69 #define VIP_REG1_MASK 0x00001EF0
70 #define VIP_AND_CAM2_REG1_MASK 0x007FE100
71 #define VIP_AND_CAM1_REG1_MASK 0xFF800000
72 #define VIP_AND_CAM1_REG2_MASK 0x00000003
73 #define VIP_AND_CAM0_REG2_MASK 0x00001FFC
74 #define SMI_REG2_MASK 0x0021E000
75 #define SSP0_REG2_MASK 0x001E0000
76 #define TS_AND_SSP0_CS2_REG2_MASK 0x00400000
77 #define UART0_REG2_MASK 0x01800000
78 #define UART1_REG2_MASK 0x06000000
79 #define I2S_IN_REG2_MASK 0xF8000000
80 #define DEVS_GRP_AND_MIPHY_DBG_REG3_MASK 0x000001FE
81 #define I2S_OUT_REG3_MASK 0x000001EF
82 #define I2S_IN_REG3_MASK 0x00000010
83 #define GMAC_REG3_MASK 0xFFFFFE00
84 #define GMAC_REG4_MASK 0x0000001F
85 #define DEVS_GRP_AND_MIPHY_DBG_REG4_MASK 0x7FFFFF20
86 #define SSP0_CS3_REG4_MASK 0x00000020
87 #define I2C0_REG4_MASK 0x000000C0
88 #define CEC0_REG4_MASK 0x00000100
89 #define CEC1_REG4_MASK 0x00000200
90 #define SPDIF_OUT_REG4_MASK 0x00000400
91 #define CLCD_REG4_MASK 0x7FFFF800
92 #define CLCD_AND_ARM_TRACE_REG4_MASK 0x80000000
93 #define CLCD_AND_ARM_TRACE_REG5_MASK 0xFFFFFFFF
94 #define CLCD_AND_ARM_TRACE_REG6_MASK 0x00000001
95 #define FSMC_PNOR_AND_MCIF_REG6_MASK 0x073FFFFE
96 #define MCIF_REG6_MASK 0xF8C00000
97 #define MCIF_REG7_MASK 0x000043FF
98 #define FSMC_8BIT_REG7_MASK 0x07FFBC00
101 #define PERIP_CFG 0x42C
103 #define SSP_CS_CTL_HW 0
104 #define SSP_CS_CTL_SW 1
105 #define SSP_CS_CTL_MASK 1
106 #define SSP_CS_CTL_SHIFT 21
107 #define SSP_CS_VAL_MASK 1
108 #define SSP_CS_VAL_SHIFT 20
109 #define SSP_CS_SEL_CS0 0
110 #define SSP_CS_SEL_CS1 1
111 #define SSP_CS_SEL_CS2 2
112 #define SSP_CS_SEL_MASK 3
113 #define SSP_CS_SEL_SHIFT 18
115 #define I2S_CHNL_2_0 (0)
116 #define I2S_CHNL_3_1 (1)
117 #define I2S_CHNL_5_1 (2)
118 #define I2S_CHNL_7_1 (3)
119 #define I2S_CHNL_PLAY_SHIFT (4)
120 #define I2S_CHNL_PLAY_MASK (3 << 4)
121 #define I2S_CHNL_REC_SHIFT (6)
122 #define I2S_CHNL_REC_MASK (3 << 6)
124 #define SPDIF_OUT_ENB_MASK (1 << 2)
125 #define SPDIF_OUT_ENB_SHIFT 2
127 #define MCIF_SEL_SD 1
128 #define MCIF_SEL_CF 2
129 #define MCIF_SEL_XD 3
130 #define MCIF_SEL_MASK 3
131 #define MCIF_SEL_SHIFT 0
133 #define GMAC_CLK_CFG 0x248
134 #define GMAC_PHY_IF_GMII_VAL (0 << 3)
135 #define GMAC_PHY_IF_RGMII_VAL (1 << 3)
136 #define GMAC_PHY_IF_SGMII_VAL (2 << 3)
137 #define GMAC_PHY_IF_RMII_VAL (4 << 3)
138 #define GMAC_PHY_IF_SEL_MASK (7 << 3)
139 #define GMAC_PHY_INPUT_ENB_VAL 0
140 #define GMAC_PHY_SYNT_ENB_VAL 1
141 #define GMAC_PHY_CLK_MASK 1
142 #define GMAC_PHY_CLK_SHIFT 2
143 #define GMAC_PHY_125M_PAD_VAL 0
144 #define GMAC_PHY_PLL2_VAL 1
145 #define GMAC_PHY_OSC3_VAL 2
146 #define GMAC_PHY_INPUT_CLK_MASK 3
147 #define GMAC_PHY_INPUT_CLK_SHIFT 0
149 #define PCIE_SATA_CFG 0x424
151 #define PCIE_CFG_DEVICE_PRESENT (1 << 11)
152 #define PCIE_CFG_POWERUP_RESET (1 << 10)
153 #define PCIE_CFG_CORE_CLK_EN (1 << 9)
154 #define PCIE_CFG_AUX_CLK_EN (1 << 8)
155 #define SATA_CFG_TX_CLK_EN (1 << 4)
156 #define SATA_CFG_RX_CLK_EN (1 << 3)
157 #define SATA_CFG_POWERUP_RESET (1 << 2)
158 #define SATA_CFG_PM_CLK_EN (1 << 1)
159 #define PCIE_SATA_SEL_PCIE (0)
160 #define PCIE_SATA_SEL_SATA (1)
161 #define SATA_PCIE_CFG_MASK 0xF1F
162 #define PCIE_CFG_VAL (PCIE_SATA_SEL_PCIE | PCIE_CFG_AUX_CLK_EN | \
163 PCIE_CFG_CORE_CLK_EN | PCIE_CFG_POWERUP_RESET |\
164 PCIE_CFG_DEVICE_PRESENT)
165 #define SATA_CFG_VAL (PCIE_SATA_SEL_SATA | SATA_CFG_PM_CLK_EN | \
166 SATA_CFG_POWERUP_RESET | SATA_CFG_RX_CLK_EN | \
171 #define KBD_ROW_COL_MASK (1 << 0)
174 #define GPT_MASK (1 << 1)
177 #define KBD_COL5_MASK (1 << 2)
180 #define GPT0_TMR0_CPT_MASK (1 << 3)
183 #define GPT0_TMR1_CLK_MASK (1 << 4)
186 #define SSP0_CS1_MASK (1 << 5)
189 #define CAM3_MASK (1 << 6)
192 #define CAM2_MASK (1 << 7)
195 #define CAM1_MASK (1 << 8)
198 #define CAM0_MASK (1 << 9)
201 #define SSP0_CS2_MASK (1 << 10)
204 #define MCIF_MASK (1 << 11)
207 #define ARM_TRACE_MASK (1 << 12)
210 #define MIPHY_DBG_MASK (1 << 13)
216 static const unsigned pads_as_gpio_pins[] = { 12, 88, 89, 251 };
255 .muxregs = pads_as_gpio_muxreg,
261 .name =
"pads_as_gpio_grp",
262 .pins = pads_as_gpio_pins,
264 .modemuxs = pads_as_gpio_modemux,
265 .nmodemuxs =
ARRAY_SIZE(pads_as_gpio_modemux),
268 static const char *
const pads_as_gpio_grps[] = {
"pads_as_gpio_grp" };
270 .name =
"pads_as_gpio",
271 .groups = pads_as_gpio_grps,
276 static const unsigned fsmc_8bit_pins[] = { 233, 234, 235, 236, 238, 239, 240,
277 241, 242, 243, 244, 245, 246, 247, 248, 249 };
288 .muxregs = fsmc_8bit_muxreg,
294 .name =
"fsmc_8bit_grp",
295 .pins = fsmc_8bit_pins,
297 .modemuxs = fsmc_8bit_modemux,
302 static const unsigned fsmc_16bit_pins[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
317 .muxregs = fsmc_16bit_muxreg,
323 .name =
"fsmc_16bit_grp",
324 .pins = fsmc_16bit_pins,
326 .modemuxs = fsmc_16bit_modemux,
331 static const unsigned fsmc_pnor_pins[] = { 192, 193, 194, 195, 196, 197, 198,
332 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
348 .muxregs = fsmc_pnor_muxreg,
354 .name =
"fsmc_pnor_grp",
355 .pins = fsmc_pnor_pins,
357 .modemuxs = fsmc_pnor_modemux,
361 static const char *
const fsmc_grps[] = {
"fsmc_8bit_grp",
"fsmc_16bit_grp",
370 static const unsigned keyboard_row_col_pins[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
372 static struct spear_muxreg keyboard_row_col_muxreg[] = {
386 .muxregs = keyboard_row_col_muxreg,
387 .nmuxregs =
ARRAY_SIZE(keyboard_row_col_muxreg),
392 .name =
"keyboard_row_col_grp",
393 .pins = keyboard_row_col_pins,
395 .modemuxs = keyboard_row_col_modemux,
396 .nmodemuxs =
ARRAY_SIZE(keyboard_row_col_modemux),
400 static const unsigned keyboard_col5_pins[] = { 17 };
415 .muxregs = keyboard_col5_muxreg,
421 .name =
"keyboard_col5_grp",
422 .pins = keyboard_col5_pins,
424 .modemuxs = keyboard_col5_modemux,
425 .nmodemuxs =
ARRAY_SIZE(keyboard_col5_modemux),
428 static const char *
const keyboard_grps[] = {
"keyboard_row_col_grp",
429 "keyboard_col5_grp" };
432 .groups = keyboard_grps,
437 static const unsigned spdif_in_pins[] = { 19 };
448 .muxregs = spdif_in_muxreg,
454 .name =
"spdif_in_grp",
455 .pins = spdif_in_pins,
457 .modemuxs = spdif_in_modemux,
461 static const char *
const spdif_in_grps[] = {
"spdif_in_grp" };
464 .groups = spdif_in_grps,
469 static const unsigned spdif_out_pins[] = { 137 };
484 .muxregs = spdif_out_muxreg,
490 .name =
"spdif_out_grp",
491 .pins = spdif_out_pins,
493 .modemuxs = spdif_out_modemux,
497 static const char *
const spdif_out_grps[] = {
"spdif_out_grp" };
500 .groups = spdif_out_grps,
505 static const unsigned gpt_0_1_pins[] = { 11, 12, 13, 14, 15, 16, 21, 22 };
524 .muxregs = gpt_0_1_muxreg,
530 .name =
"gpt_0_1_grp",
531 .pins = gpt_0_1_pins,
533 .modemuxs = gpt_0_1_modemux,
537 static const char *
const gpt_0_1_grps[] = {
"gpt_0_1_grp" };
540 .groups = gpt_0_1_grps,
545 static const unsigned pwm0_pins[] = { 24 };
560 .muxregs = pwm0_muxreg,
569 .modemuxs = pwm0_modemux,
574 static const unsigned pwm1_pins[] = { 17 };
589 .muxregs = pwm1_muxreg,
598 .modemuxs = pwm1_modemux,
603 static const unsigned pwm2_pins[] = { 21 };
618 .muxregs = pwm2_muxreg,
627 .modemuxs = pwm2_modemux,
632 static const unsigned pwm3_pins[] = { 22 };
647 .muxregs = pwm3_muxreg,
656 .modemuxs = pwm3_modemux,
660 static const char *
const pwm_grps[] = {
"pwm0_grp",
"pwm1_grp",
"pwm2_grp",
669 static const unsigned vip_mux_pins[] = { 35, 36, 37, 38, 40, 41, 42, 43 };
680 .muxregs = vip_mux_muxreg,
686 .name =
"vip_mux_grp",
687 .pins = vip_mux_pins,
689 .modemuxs = vip_mux_modemux,
694 static const unsigned vip_mux_cam0_pins[] = { 65, 66, 67, 68, 69, 70, 71, 72,
710 .muxregs = vip_mux_cam0_muxreg,
716 .name =
"vip_mux_cam0_grp",
717 .pins = vip_mux_cam0_pins,
719 .modemuxs = vip_mux_cam0_modemux,
720 .nmodemuxs =
ARRAY_SIZE(vip_mux_cam0_modemux),
724 static const unsigned vip_mux_cam1_pins[] = { 54, 55, 56, 57, 58, 59, 60, 61,
744 .muxregs = vip_mux_cam1_muxreg,
750 .name =
"vip_mux_cam1_grp",
751 .pins = vip_mux_cam1_pins,
753 .modemuxs = vip_mux_cam1_modemux,
754 .nmodemuxs =
ARRAY_SIZE(vip_mux_cam1_modemux),
758 static const unsigned vip_mux_cam2_pins[] = { 39, 44, 45, 46, 47, 48, 49, 50,
774 .muxregs = vip_mux_cam2_muxreg,
780 .name =
"vip_mux_cam2_grp",
781 .pins = vip_mux_cam2_pins,
783 .modemuxs = vip_mux_cam2_modemux,
784 .nmodemuxs =
ARRAY_SIZE(vip_mux_cam2_modemux),
788 static const unsigned vip_mux_cam3_pins[] = { 20, 25, 26, 27, 28, 29, 30, 31,
808 .muxregs = vip_mux_cam3_muxreg,
814 .name =
"vip_mux_cam3_grp",
815 .pins = vip_mux_cam3_pins,
817 .modemuxs = vip_mux_cam3_modemux,
818 .nmodemuxs =
ARRAY_SIZE(vip_mux_cam3_modemux),
821 static const char *
const vip_grps[] = {
"vip_mux_grp",
"vip_mux_cam0_grp" ,
822 "vip_mux_cam1_grp" ,
"vip_mux_cam2_grp",
"vip_mux_cam3_grp" };
830 static const unsigned cam0_pins[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75
846 .muxregs = cam0_muxreg,
855 .modemuxs = cam0_modemux,
859 static const char *
const cam0_grps[] = {
"cam0_grp" };
867 static const unsigned cam1_pins[] = { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
887 .muxregs = cam1_muxreg,
896 .modemuxs = cam1_modemux,
900 static const char *
const cam1_grps[] = {
"cam1_grp" };
908 static const unsigned cam2_pins[] = { 39, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53
924 .muxregs = cam2_muxreg,
933 .modemuxs = cam2_modemux,
937 static const char *
const cam2_grps[] = {
"cam2_grp" };
945 static const unsigned cam3_pins[] = { 20, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
965 .muxregs = cam3_muxreg,
974 .modemuxs = cam3_modemux,
978 static const char *
const cam3_grps[] = {
"cam3_grp" };
986 static const unsigned smi_pins[] = { 76, 77, 78, 79, 84 };
997 .muxregs = smi_muxreg,
1006 .modemuxs = smi_modemux,
1010 static const char *
const smi_grps[] = {
"smi_grp" };
1018 static const unsigned ssp0_pins[] = { 80, 81, 82, 83 };
1029 .muxregs = ssp0_muxreg,
1038 .modemuxs = ssp0_modemux,
1043 static const unsigned ssp0_cs1_pins[] = { 24 };
1058 .muxregs = ssp0_cs1_muxreg,
1064 .name =
"ssp0_cs1_grp",
1065 .pins = ssp0_cs1_pins,
1067 .modemuxs = ssp0_cs1_modemux,
1072 static const unsigned ssp0_cs2_pins[] = { 85 };
1087 .muxregs = ssp0_cs2_muxreg,
1093 .name =
"ssp0_cs2_grp",
1094 .pins = ssp0_cs2_pins,
1096 .modemuxs = ssp0_cs2_modemux,
1101 static const unsigned ssp0_cs3_pins[] = { 132 };
1112 .muxregs = ssp0_cs3_muxreg,
1118 .name =
"ssp0_cs3_grp",
1119 .pins = ssp0_cs3_pins,
1121 .modemuxs = ssp0_cs3_modemux,
1125 static const char *
const ssp0_grps[] = {
"ssp0_grp",
"ssp0_cs1_grp",
1126 "ssp0_cs2_grp",
"ssp0_cs3_grp" };
1129 .groups = ssp0_grps,
1134 static const unsigned uart0_pins[] = { 86, 87 };
1145 .muxregs = uart0_muxreg,
1151 .name =
"uart0_grp",
1154 .modemuxs = uart0_modemux,
1159 static const unsigned uart0_enh_pins[] = { 11, 12, 13, 14, 15, 16 };
1174 .muxregs = uart0_enh_muxreg,
1180 .name =
"uart0_enh_grp",
1181 .pins = uart0_enh_pins,
1183 .modemuxs = uart0_enh_modemux,
1187 static const char *
const uart0_grps[] = {
"uart0_grp",
"uart0_enh_grp" };
1190 .groups = uart0_grps,
1195 static const unsigned uart1_pins[] = { 88, 89 };
1206 .muxregs = uart1_muxreg,
1212 .name =
"uart1_grp",
1215 .modemuxs = uart1_modemux,
1219 static const char *
const uart1_grps[] = {
"uart1_grp" };
1222 .groups = uart1_grps,
1227 static const unsigned i2s_in_pins[] = { 90, 91, 92, 93, 94, 99 };
1242 .muxregs = i2s_in_muxreg,
1248 .name =
"i2s_in_grp",
1249 .pins = i2s_in_pins,
1251 .modemuxs = i2s_in_modemux,
1256 static const unsigned i2s_out_pins[] = { 95, 96, 97, 98, 100, 101, 102, 103 };
1267 .muxregs = i2s_out_muxreg,
1273 .name =
"i2s_out_grp",
1274 .pins = i2s_out_pins,
1276 .modemuxs = i2s_out_modemux,
1280 static const char *
const i2s_grps[] = {
"i2s_in_grp",
"i2s_out_grp" };
1288 static const unsigned gmac_pins[] = { 104, 105, 106, 107, 108, 109, 110, 111,
1289 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1290 126, 127, 128, 129, 130, 131 };
1291 #define GMAC_MUXREG \
1293 .reg = PAD_FUNCTION_EN_4, \
1294 .mask = GMAC_REG3_MASK, \
1295 .val = GMAC_REG3_MASK, \
1297 .reg = PAD_FUNCTION_EN_5, \
1298 .mask = GMAC_REG4_MASK, \
1299 .val = GMAC_REG4_MASK, \
1314 .muxregs = gmii_muxreg,
1323 .modemuxs = gmii_modemux,
1339 .muxregs = rgmii_muxreg,
1345 .name =
"rgmii_grp",
1348 .modemuxs = rgmii_modemux,
1364 .muxregs = rmii_muxreg,
1373 .modemuxs = rmii_modemux,
1389 .muxregs = sgmii_muxreg,
1395 .name =
"sgmii_grp",
1398 .modemuxs = sgmii_modemux,
1402 static const char *
const gmac_grps[] = {
"gmii_grp",
"rgmii_grp",
"rmii_grp",
1406 .groups = gmac_grps,
1411 static const unsigned i2c0_pins[] = { 133, 134 };
1422 .muxregs = i2c0_muxreg,
1431 .modemuxs = i2c0_modemux,
1435 static const char *
const i2c0_grps[] = {
"i2c0_grp" };
1438 .groups = i2c0_grps,
1443 static const unsigned i2c1_pins[] = { 18, 23 };
1454 .muxregs = i2c1_muxreg,
1463 .modemuxs = i2c1_modemux,
1467 static const char *
const i2c1_grps[] = {
"i2c1_grp" };
1470 .groups = i2c1_grps,
1475 static const unsigned cec0_pins[] = { 135 };
1486 .muxregs = cec0_muxreg,
1495 .modemuxs = cec0_modemux,
1499 static const char *
const cec0_grps[] = {
"cec0_grp" };
1502 .groups = cec0_grps,
1507 static const unsigned cec1_pins[] = { 136 };
1518 .muxregs = cec1_muxreg,
1527 .modemuxs = cec1_modemux,
1531 static const char *
const cec1_grps[] = {
"cec1_grp" };
1534 .groups = cec1_grps,
1539 static const unsigned mcif_pins[] = { 193, 194, 195, 196, 197, 198, 199, 200,
1540 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1541 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
1542 229, 230, 231, 232, 237 };
1543 #define MCIF_MUXREG \
1545 .reg = PAD_SHARED_IP_EN_1, \
1546 .mask = MCIF_MASK, \
1549 .reg = PAD_FUNCTION_EN_7, \
1550 .mask = FSMC_PNOR_AND_MCIF_REG6_MASK | MCIF_REG6_MASK, \
1551 .val = FSMC_PNOR_AND_MCIF_REG6_MASK | MCIF_REG6_MASK, \
1553 .reg = PAD_FUNCTION_EN_8, \
1554 .mask = MCIF_REG7_MASK, \
1555 .val = MCIF_REG7_MASK, \
1570 .muxregs = sdhci_muxreg,
1576 .name =
"sdhci_grp",
1579 .modemuxs = sdhci_modemux,
1583 static const char *
const sdhci_grps[] = {
"sdhci_grp" };
1586 .groups = sdhci_grps,
1602 .muxregs = cf_muxreg,
1611 .modemuxs = cf_modemux,
1615 static const char *
const cf_grps[] = {
"cf_grp" };
1634 .muxregs = xd_muxreg,
1643 .modemuxs = xd_modemux,
1647 static const char *
const xd_grps[] = {
"xd_grp" };
1655 static const unsigned clcd_pins[] = { 138, 139, 140, 141, 142, 143, 144, 145,
1656 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
1657 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
1658 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
1659 188, 189, 190, 191 };
1682 .muxregs = clcd_muxreg,
1691 .modemuxs = clcd_modemux,
1718 .muxregs = clcd_sleep_muxreg,
1724 .name =
"clcd_sleep_grp",
1727 .modemuxs = clcd_sleep_modemux,
1731 static const char *
const clcd_grps[] = {
"clcd_grp",
"clcd_sleep_grp" };
1734 .groups = clcd_grps,
1739 static const unsigned arm_trace_pins[] = { 158, 159, 160, 161, 162, 163, 164,
1740 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1741 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1742 193, 194, 195, 196, 197, 198, 199, 200 };
1765 .muxregs = arm_trace_muxreg,
1771 .name =
"arm_trace_grp",
1772 .pins = arm_trace_pins,
1774 .modemuxs = arm_trace_modemux,
1778 static const char *
const arm_trace_grps[] = {
"arm_trace_grp" };
1780 .name =
"arm_trace",
1781 .groups = arm_trace_grps,
1786 static const unsigned miphy_dbg_pins[] = { 96, 97, 98, 99, 100, 101, 102, 103,
1787 132, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
1788 148, 149, 150, 151, 152, 153, 154, 155, 156, 157 };
1803 .muxregs = miphy_dbg_muxreg,
1809 .name =
"miphy_dbg_grp",
1810 .pins = miphy_dbg_pins,
1812 .modemuxs = miphy_dbg_modemux,
1816 static const char *
const miphy_dbg_grps[] = {
"miphy_dbg_grp" };
1818 .name =
"miphy_dbg",
1819 .groups = miphy_dbg_grps,
1824 static const unsigned pcie_pins[] = { 250 };
1835 .muxregs = pcie_muxreg,
1844 .modemuxs = pcie_modemux,
1848 static const char *
const pcie_grps[] = {
"pcie_grp" };
1851 .groups = pcie_grps,
1856 static const unsigned sata_pins[] = { 250 };
1867 .muxregs = sata_muxreg,
1876 .modemuxs = sata_modemux,
1880 static const char *
const sata_grps[] = {
"sata_grp" };
1883 .groups = sata_grps,
1889 &pads_as_gpio_pingroup,
1890 &fsmc_8bit_pingroup,
1891 &fsmc_16bit_pingroup,
1892 &fsmc_pnor_pingroup,
1893 &keyboard_row_col_pingroup,
1894 &keyboard_col5_pingroup,
1896 &spdif_out_pingroup,
1903 &vip_mux_cam0_pingroup,
1904 &vip_mux_cam1_pingroup,
1905 &vip_mux_cam2_pingroup,
1906 &vip_mux_cam3_pingroup,
1917 &uart0_enh_pingroup,
1932 &clcd_sleep_pingroup,
1934 &arm_trace_pingroup,
1935 &miphy_dbg_pingroup,
1942 &pads_as_gpio_function,
1946 &spdif_out_function,
1968 &arm_trace_function,
1969 &miphy_dbg_function,
1975 .pins = spear1340_pins,
1977 .groups = spear1340_pingroups,
1979 .functions = spear1340_functions,
1980 .nfunctions =
ARRAY_SIZE(spear1340_functions),
1981 .modes_supported =
false,
1986 .compatible =
"st,spear1340-pinmux",
2005 .of_match_table = spear1340_pinctrl_of_match,
2007 .probe = spear1340_pinctrl_probe,
2011 static int __init spear1340_pinctrl_init(
void)
2017 static void __exit spear1340_pinctrl_exit(
void)