1 /*
2  * Copyright (C) 2010 Nokia
3  * Copyright (C) 2010 Texas Instruments
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation.
8  */
9 
10 #include <linux/module.h>
11 #include <linux/init.h>
12 
13 #include "mux.h"
14 
15 #ifdef CONFIG_OMAP_MUX
16 
17 #define _OMAP2420_MUXENTRY(M0, g, m0, m1, m2, m3, m4, m5, m6, m7)		\
18 {									\
19 	.reg_offset	= (OMAP2420_CONTROL_PADCONF_##M0##_OFFSET),	\
20 	.gpio		= (g),						\
21 	.muxnames	= { m0, m1, m2, m3, m4, m5, m6, m7 },		\
22 }
23 
24 #else
25 
26 #define _OMAP2420_MUXENTRY(M0, g, m0, m1, m2, m3, m4, m5, m6, m7)		\
27 {									\
28 	.reg_offset	= (OMAP2420_CONTROL_PADCONF_##M0##_OFFSET),	\
29 	.gpio		= (g),						\
30 }
31 
32 #endif
33 
34 #define _OMAP2420_BALLENTRY(M0, bb, bt)					\
35 {									\
36 	.reg_offset	= (OMAP2420_CONTROL_PADCONF_##M0##_OFFSET),	\
37 	.balls		= { bb, bt },					\
38 }
39 
40 /*
41  * Superset of all mux modes for omap2420
42  */
43 static struct omap_mux __initdata omap2420_muxmodes[] = {
44 	_OMAP2420_MUXENTRY(CAM_D0, 54,
45 		"cam_d0", "hw_dbg2", "sti_dout", "gpio_54",
46 		NULL, NULL, "etk_d2", NULL),
47 	_OMAP2420_MUXENTRY(CAM_D1, 53,
48 		"cam_d1", "hw_dbg3", "sti_din", "gpio_53",
49 		NULL, NULL, "etk_d3", NULL),
50 	_OMAP2420_MUXENTRY(CAM_D2, 52,
51 		"cam_d2", "hw_dbg4", "mcbsp1_clkx", "gpio_52",
52 		NULL, NULL, "etk_d4", NULL),
53 	_OMAP2420_MUXENTRY(CAM_D3, 51,
54 		"cam_d3", "hw_dbg5", "mcbsp1_dr", "gpio_51",
55 		NULL, NULL, "etk_d5", NULL),
56 	_OMAP2420_MUXENTRY(CAM_D4, 50,
57 		"cam_d4", "hw_dbg6", "mcbsp1_fsr", "gpio_50",
58 		NULL, NULL, "etk_d6", NULL),
59 	_OMAP2420_MUXENTRY(CAM_D5, 49,
60 		"cam_d5", "hw_dbg7", "mcbsp1_clkr", "gpio_49",
61 		NULL, NULL, "etk_d7", NULL),
62 	_OMAP2420_MUXENTRY(CAM_D6, 0,
63 		"cam_d6", "hw_dbg8", NULL, NULL,
64 		NULL, NULL, "etk_d8", NULL),
65 	_OMAP2420_MUXENTRY(CAM_D7, 0,
66 		"cam_d7", "hw_dbg9", NULL, NULL,
67 		NULL, NULL, "etk_d9", NULL),
68 	_OMAP2420_MUXENTRY(CAM_D8, 54,
69 		"cam_d8", "hw_dbg10", NULL, "gpio_54",
70 		NULL, NULL, "etk_d10", NULL),
71 	_OMAP2420_MUXENTRY(CAM_D9, 53,
72 		"cam_d9", "hw_dbg11", NULL, "gpio_53",
73 		NULL, NULL, "etk_d11", NULL),
74 	_OMAP2420_MUXENTRY(CAM_HS, 55,
75 		"cam_hs", "hw_dbg1", "mcbsp1_dx", "gpio_55",
76 		NULL, NULL, "etk_d1", NULL),
77 	_OMAP2420_MUXENTRY(CAM_LCLK, 57,
78 		"cam_lclk", NULL, "mcbsp_clks", "gpio_57",
79 		NULL, NULL, "etk_c1", NULL),
80 	_OMAP2420_MUXENTRY(CAM_VS, 56,
81 		"cam_vs", "hw_dbg0", "mcbsp1_fsx", "gpio_56",
82 		NULL, NULL, "etk_d0", NULL),
83 	_OMAP2420_MUXENTRY(CAM_XCLK, 0,
84 		"cam_xclk", NULL, "sti_clk", NULL,
85 		NULL, NULL, "etk_c2", NULL),
86 	_OMAP2420_MUXENTRY(DSS_ACBIAS, 48,
87 		"dss_acbias", NULL, "mcbsp2_fsx", "gpio_48",
88 		NULL, NULL, NULL, NULL),
89 	_OMAP2420_MUXENTRY(DSS_DATA10, 40,
90 		"dss_data10", NULL, NULL, "gpio_40",
91 		NULL, NULL, NULL, NULL),
92 	_OMAP2420_MUXENTRY(DSS_DATA11, 41,
93 		"dss_data11", NULL, NULL, "gpio_41",
94 		NULL, NULL, NULL, NULL),
95 	_OMAP2420_MUXENTRY(DSS_DATA12, 42,
96 		"dss_data12", NULL, NULL, "gpio_42",
97 		NULL, NULL, NULL, NULL),
98 	_OMAP2420_MUXENTRY(DSS_DATA13, 43,
99 		"dss_data13", NULL, NULL, "gpio_43",
100 		NULL, NULL, NULL, NULL),
101 	_OMAP2420_MUXENTRY(DSS_DATA14, 44,
102 		"dss_data14", NULL, NULL, "gpio_44",
103 		NULL, NULL, NULL, NULL),
104 	_OMAP2420_MUXENTRY(DSS_DATA15, 45,
105 		"dss_data15", NULL, NULL, "gpio_45",
106 		NULL, NULL, NULL, NULL),
107 	_OMAP2420_MUXENTRY(DSS_DATA16, 46,
108 		"dss_data16", NULL, NULL, "gpio_46",
109 		NULL, NULL, NULL, NULL),
110 	_OMAP2420_MUXENTRY(DSS_DATA17, 47,
111 		"dss_data17", NULL, NULL, "gpio_47",
112 		NULL, NULL, NULL, NULL),
113 	_OMAP2420_MUXENTRY(DSS_DATA8, 38,
114 		"dss_data8", NULL, NULL, "gpio_38",
115 		NULL, NULL, NULL, NULL),
116 	_OMAP2420_MUXENTRY(DSS_DATA9, 39,
117 		"dss_data9", NULL, NULL, "gpio_39",
118 		NULL, NULL, NULL, NULL),
119 	_OMAP2420_MUXENTRY(EAC_AC_DIN, 115,
120 		"eac_ac_din", "mcbsp2_dr", NULL, "gpio_115",
121 		NULL, NULL, NULL, NULL),
122 	_OMAP2420_MUXENTRY(EAC_AC_DOUT, 116,
123 		"eac_ac_dout", "mcbsp2_dx", NULL, "gpio_116",
124 		NULL, NULL, NULL, NULL),
125 	_OMAP2420_MUXENTRY(EAC_AC_FS, 114,
126 		"eac_ac_fs", "mcbsp2_fsx", NULL, "gpio_114",
127 		NULL, NULL, NULL, NULL),
128 	_OMAP2420_MUXENTRY(EAC_AC_MCLK, 117,
129 		"eac_ac_mclk", NULL, NULL, "gpio_117",
130 		NULL, NULL, NULL, NULL),
131 	_OMAP2420_MUXENTRY(EAC_AC_RST, 118,
132 		"eac_ac_rst", "eac_bt_din", NULL, "gpio_118",
133 		NULL, NULL, NULL, NULL),
134 	_OMAP2420_MUXENTRY(EAC_AC_SCLK, 113,
135 		"eac_ac_sclk", "mcbsp2_clkx", NULL, "gpio_113",
136 		NULL, NULL, NULL, NULL),
137 	_OMAP2420_MUXENTRY(EAC_BT_DIN, 73,
138 		"eac_bt_din", NULL, NULL, "gpio_73",
139 		NULL, NULL, "etk_d9", NULL),
140 	_OMAP2420_MUXENTRY(EAC_BT_DOUT, 74,
141 		"eac_bt_dout", NULL, "sti_clk", "gpio_74",
142 		NULL, NULL, "etk_d8", NULL),
143 	_OMAP2420_MUXENTRY(EAC_BT_FS, 72,
144 		"eac_bt_fs", NULL, NULL, "gpio_72",
145 		NULL, NULL, "etk_d10", NULL),
146 	_OMAP2420_MUXENTRY(EAC_BT_SCLK, 71,
147 		"eac_bt_sclk", NULL, NULL, "gpio_71",
148 		NULL, NULL, "etk_d11", NULL),
149 	_OMAP2420_MUXENTRY(GPIO_119, 119,
150 		"gpio_119", NULL, "sti_din", "gpio_119",
151 		NULL, "sys_boot0", "etk_d12", NULL),
152 	_OMAP2420_MUXENTRY(GPIO_120, 120,
153 		"gpio_120", NULL, "sti_dout", "gpio_120",
154 		"cam_d9", "sys_boot1", "etk_d13", NULL),
155 	_OMAP2420_MUXENTRY(GPIO_121, 121,
156 		"gpio_121", NULL, NULL, "gpio_121",
157 		"jtag_emu2", "sys_boot2", "etk_d14", NULL),
158 	_OMAP2420_MUXENTRY(GPIO_122, 122,
159 		"gpio_122", NULL, NULL, "gpio_122",
160 		"jtag_emu3", "sys_boot3", "etk_d15", NULL),
161 	_OMAP2420_MUXENTRY(GPIO_124, 124,
162 		"gpio_124", NULL, NULL, "gpio_124",
163 		NULL, "sys_boot5", NULL, NULL),
164 	_OMAP2420_MUXENTRY(GPIO_125, 125,
165 		"gpio_125", "sys_jtagsel1", "sys_jtagsel2", "gpio_125",
166 		NULL, NULL, NULL, NULL),
167 	_OMAP2420_MUXENTRY(GPIO_36, 36,
168 		"gpio_36", NULL, NULL, "gpio_36",
169 		NULL, "sys_boot4", NULL, NULL),
170 	_OMAP2420_MUXENTRY(GPIO_62, 62,
171 		"gpio_62", "uart1_rx", "usb1_dat", "gpio_62",
172 		NULL, NULL, NULL, NULL),
173 	_OMAP2420_MUXENTRY(GPIO_6, 6,
174 		"gpio_6", "tv_detpulse", NULL, "gpio_6",
175 		NULL, NULL, NULL, NULL),
176 	_OMAP2420_MUXENTRY(GPMC_A10, 3,
177 		"gpmc_a10", NULL, "sys_ndmareq5", "gpio_3",
178 		NULL, NULL, NULL, NULL),
179 	_OMAP2420_MUXENTRY(GPMC_A1, 12,
180 		"gpmc_a1", "dss_data18", NULL, "gpio_12",
181 		NULL, NULL, NULL, NULL),
182 	_OMAP2420_MUXENTRY(GPMC_A2, 11,
183 		"gpmc_a2", "dss_data19", NULL, "gpio_11",
184 		NULL, NULL, NULL, NULL),
185 	_OMAP2420_MUXENTRY(GPMC_A3, 10,
186 		"gpmc_a3", "dss_data20", NULL, "gpio_10",
187 		NULL, NULL, NULL, NULL),
188 	_OMAP2420_MUXENTRY(GPMC_A4, 9,
189 		"gpmc_a4", "dss_data21", NULL, "gpio_9",
190 		NULL, NULL, NULL, NULL),
191 	_OMAP2420_MUXENTRY(GPMC_A5, 8,
192 		"gpmc_a5", "dss_data22", NULL, "gpio_8",
193 		NULL, NULL, NULL, NULL),
194 	_OMAP2420_MUXENTRY(GPMC_A6, 7,
195 		"gpmc_a6", "dss_data23", NULL, "gpio_7",
196 		NULL, NULL, NULL, NULL),
197 	_OMAP2420_MUXENTRY(GPMC_A7, 6,
198 		"gpmc_a7", NULL, "sys_ndmareq2", "gpio_6",
199 		NULL, NULL, NULL, NULL),
200 	_OMAP2420_MUXENTRY(GPMC_A8, 5,
201 		"gpmc_a8", NULL, "sys_ndmareq3", "gpio_5",
202 		NULL, NULL, NULL, NULL),
203 	_OMAP2420_MUXENTRY(GPMC_A9, 4,
204 		"gpmc_a9", NULL, "sys_ndmareq4", "gpio_4",
205 		NULL, NULL, NULL, NULL),
206 	_OMAP2420_MUXENTRY(GPMC_CLK, 21,
207 		"gpmc_clk", NULL, NULL, "gpio_21",
208 		NULL, NULL, NULL, NULL),
209 	_OMAP2420_MUXENTRY(GPMC_D10, 18,
210 		"gpmc_d10", "ssi2_rdy_rx", NULL, "gpio_18",
211 		NULL, NULL, NULL, NULL),
212 	_OMAP2420_MUXENTRY(GPMC_D11, 17,
213 		"gpmc_d11", "ssi2_flag_rx", NULL, "gpio_17",
214 		NULL, NULL, NULL, NULL),
215 	_OMAP2420_MUXENTRY(GPMC_D12, 16,
216 		"gpmc_d12", "ssi2_dat_rx", NULL, "gpio_16",
217 		NULL, NULL, NULL, NULL),
218 	_OMAP2420_MUXENTRY(GPMC_D13, 15,
219 		"gpmc_d13", "ssi2_rdy_tx", NULL, "gpio_15",
220 		NULL, NULL, NULL, NULL),
221 	_OMAP2420_MUXENTRY(GPMC_D14, 14,
222 		"gpmc_d14", "ssi2_flag_tx", NULL, "gpio_14",
223 		NULL, NULL, NULL, NULL),
224 	_OMAP2420_MUXENTRY(GPMC_D15, 13,
225 		"gpmc_d15", "ssi2_dat_tx", NULL, "gpio_13",
226 		NULL, NULL, NULL, NULL),
227 	_OMAP2420_MUXENTRY(GPMC_D8, 20,
228 		"gpmc_d8", NULL, NULL, "gpio_20",
229 		NULL, NULL, NULL, NULL),
230 	_OMAP2420_MUXENTRY(GPMC_D9, 19,
231 		"gpmc_d9", "ssi2_wake", NULL, "gpio_19",
232 		NULL, NULL, NULL, NULL),
233 	_OMAP2420_MUXENTRY(GPMC_NBE0, 29,
234 		"gpmc_nbe0", NULL, NULL, "gpio_29",
235 		NULL, NULL, NULL, NULL),
236 	_OMAP2420_MUXENTRY(GPMC_NBE1, 30,
237 		"gpmc_nbe1", NULL, NULL, "gpio_30",
238 		NULL, NULL, NULL, NULL),
239 	_OMAP2420_MUXENTRY(GPMC_NCS1, 22,
240 		"gpmc_ncs1", NULL, NULL, "gpio_22",
241 		NULL, NULL, NULL, NULL),
242 	_OMAP2420_MUXENTRY(GPMC_NCS2, 23,
243 		"gpmc_ncs2", NULL, NULL, "gpio_23",
244 		NULL, NULL, NULL, NULL),
245 	_OMAP2420_MUXENTRY(GPMC_NCS3, 24,
246 		"gpmc_ncs3", "gpmc_io_dir", NULL, "gpio_24",
247 		NULL, NULL, NULL, NULL),
248 	_OMAP2420_MUXENTRY(GPMC_NCS4, 25,
249 		"gpmc_ncs4", NULL, NULL, "gpio_25",
250 		NULL, NULL, NULL, NULL),
251 	_OMAP2420_MUXENTRY(GPMC_NCS5, 26,
252 		"gpmc_ncs5", NULL, NULL, "gpio_26",
253 		NULL, NULL, NULL, NULL),
254 	_OMAP2420_MUXENTRY(GPMC_NCS6, 27,
255 		"gpmc_ncs6", NULL, NULL, "gpio_27",
256 		NULL, NULL, NULL, NULL),
257 	_OMAP2420_MUXENTRY(GPMC_NCS7, 28,
258 		"gpmc_ncs7", "gpmc_io_dir", "gpio_28", NULL,
259 		NULL, NULL, NULL, NULL),
260 	_OMAP2420_MUXENTRY(GPMC_NWP, 31,
261 		"gpmc_nwp", NULL, NULL, "gpio_31",
262 		NULL, NULL, NULL, NULL),
263 	_OMAP2420_MUXENTRY(GPMC_WAIT1, 33,
264 		"gpmc_wait1", NULL, NULL, "gpio_33",
265 		NULL, NULL, NULL, NULL),
266 	_OMAP2420_MUXENTRY(GPMC_WAIT2, 34,
267 		"gpmc_wait2", NULL, NULL, "gpio_34",
268 		NULL, NULL, NULL, NULL),
269 	_OMAP2420_MUXENTRY(GPMC_WAIT3, 35,
270 		"gpmc_wait3", NULL, NULL, "gpio_35",
271 		NULL, NULL, NULL, NULL),
272 	_OMAP2420_MUXENTRY(HDQ_SIO, 101,
273 		"hdq_sio", "usb2_tllse0", "sys_altclk", "gpio_101",
274 		NULL, NULL, NULL, NULL),
275 	_OMAP2420_MUXENTRY(I2C2_SCL, 99,
276 		"i2c2_scl", NULL, "gpt9_pwm_evt", "gpio_99",
277 		NULL, NULL, NULL, NULL),
278 	_OMAP2420_MUXENTRY(I2C2_SDA, 100,
279 		"i2c2_sda", NULL, "spi2_ncs1", "gpio_100",
280 		NULL, NULL, NULL, NULL),
281 	_OMAP2420_MUXENTRY(JTAG_EMU0, 127,
282 		"jtag_emu0", NULL, NULL, "gpio_127",
283 		NULL, NULL, NULL, NULL),
284 	_OMAP2420_MUXENTRY(JTAG_EMU1, 126,
285 		"jtag_emu1", NULL, NULL, "gpio_126",
286 		NULL, NULL, NULL, NULL),
287 	_OMAP2420_MUXENTRY(MCBSP1_CLKR, 92,
288 		"mcbsp1_clkr", "ssi2_dat_tx", "vlynq_tx1", "gpio_92",
289 		NULL, NULL, NULL, NULL),
290 	_OMAP2420_MUXENTRY(MCBSP1_CLKX, 98,
291 		"mcbsp1_clkx", "ssi2_wake", "vlynq_nla", "gpio_98",
292 		NULL, NULL, NULL, NULL),
293 	_OMAP2420_MUXENTRY(MCBSP1_DR, 95,
294 		"mcbsp1_dr", "ssi2_dat_rx", "vlynq_rx1", "gpio_95",
295 		NULL, NULL, NULL, NULL),
296 	_OMAP2420_MUXENTRY(MCBSP1_DX, 94,
297 		"mcbsp1_dx", "ssi2_rdy_tx", "vlynq_clk", "gpio_94",
298 		NULL, NULL, NULL, NULL),
299 	_OMAP2420_MUXENTRY(MCBSP1_FSR, 93,
300 		"mcbsp1_fsr", "ssi2_flag_tx", "vlynq_tx0", "gpio_93",
301 		"spi2_ncs1", NULL, NULL, NULL),
302 	_OMAP2420_MUXENTRY(MCBSP1_FSX, 97,
303 		"mcbsp1_fsx", "ssi2_rdy_rx", NULL, "gpio_97",
304 		NULL, NULL, NULL, NULL),
305 	_OMAP2420_MUXENTRY(MCBSP2_CLKX, 12,
306 		"mcbsp2_clkx", NULL, "dss_data23", "gpio_12",
307 		NULL, NULL, NULL, NULL),
308 	_OMAP2420_MUXENTRY(MCBSP2_DR, 11,
309 		"mcbsp2_dr", NULL, "dss_data22", "gpio_11",
310 		NULL, NULL, NULL, NULL),
311 	_OMAP2420_MUXENTRY(MCBSP_CLKS, 96,
312 		"mcbsp_clks", "ssi2_flag_rx", "vlynq_rx0", "gpio_96",
313 		NULL, NULL, NULL, NULL),
314 	_OMAP2420_MUXENTRY(MMC_CLKI, 59,
315 		"sdmmc_clki", "ms_clki", NULL, "gpio_59",
316 		NULL, NULL, NULL, NULL),
317 	_OMAP2420_MUXENTRY(MMC_CLKO, 0,
318 		"sdmmc_clko", "ms_clko", NULL, NULL,
319 		NULL, NULL, NULL, NULL),
320 	_OMAP2420_MUXENTRY(MMC_CMD_DIR, 8,
321 		"sdmmc_cmd_dir", NULL, NULL, "gpio_8",
322 		NULL, NULL, NULL, NULL),
323 	_OMAP2420_MUXENTRY(MMC_CMD, 0,
324 		"sdmmc_cmd", "ms_bs", NULL, NULL,
325 		NULL, NULL, NULL, NULL),
326 	_OMAP2420_MUXENTRY(MMC_DAT_DIR0, 7,
327 		"sdmmc_dat_dir0", "ms_dat0_dir", NULL, "gpio_7",
328 		NULL, NULL, NULL, NULL),
329 	_OMAP2420_MUXENTRY(MMC_DAT0, 0,
330 		"sdmmc_dat0", "ms_dat0", NULL, NULL,
331 		NULL, NULL, NULL, NULL),
332 	_OMAP2420_MUXENTRY(MMC_DAT_DIR1, 78,
333 		"sdmmc_dat_dir1", "ms_datu_dir", "uart2_rts", "gpio_78",
334 		NULL, NULL, NULL, NULL),
335 	_OMAP2420_MUXENTRY(MMC_DAT1, 75,
336 		"sdmmc_dat1", "ms_dat1", NULL, "gpio_75",
337 		NULL, NULL, NULL, NULL),
338 	_OMAP2420_MUXENTRY(MMC_DAT_DIR2, 79,
339 		"sdmmc_dat_dir2", "ms_datu_dir", "uart2_tx", "gpio_79",
340 		NULL, NULL, NULL, NULL),
341 	_OMAP2420_MUXENTRY(MMC_DAT2, 76,
342 		"sdmmc_dat2", "ms_dat2", "uart2_cts", "gpio_76",
343 		NULL, NULL, NULL, NULL),
344 	_OMAP2420_MUXENTRY(MMC_DAT_DIR3, 80,
345 		"sdmmc_dat_dir3", "ms_datu_dir", "uart2_rx", "gpio_80",
346 		NULL, NULL, NULL, NULL),
347 	_OMAP2420_MUXENTRY(MMC_DAT3, 77,
348 		"sdmmc_dat3", "ms_dat3", NULL, "gpio_77",
349 		NULL, NULL, NULL, NULL),
350 	_OMAP2420_MUXENTRY(SDRC_A12, 2,
351 		"sdrc_a12", NULL, NULL, "gpio_2",
352 		NULL, NULL, NULL, NULL),
353 	_OMAP2420_MUXENTRY(SDRC_A13, 1,
354 		"sdrc_a13", NULL, NULL, "gpio_1",
355 		NULL, NULL, NULL, NULL),
356 	_OMAP2420_MUXENTRY(SDRC_A14, 0,
357 		"sdrc_a14", NULL, NULL, "gpio_0",
358 		NULL, NULL, NULL, NULL),
359 	_OMAP2420_MUXENTRY(SDRC_CKE1, 38,
360 		"sdrc_cke1", NULL, NULL, "gpio_38",
361 		NULL, NULL, NULL, NULL),
362 	_OMAP2420_MUXENTRY(SDRC_NCS1, 37,
363 		"sdrc_ncs1", NULL, NULL, "gpio_37",
364 		NULL, NULL, NULL, NULL),
365 	_OMAP2420_MUXENTRY(SPI1_CLK, 81,
366 		"spi1_clk", NULL, NULL, "gpio_81",
367 		NULL, NULL, NULL, NULL),
368 	_OMAP2420_MUXENTRY(SPI1_NCS0, 84,
369 		"spi1_ncs0", NULL, NULL, "gpio_84",
370 		NULL, NULL, NULL, NULL),
371 	_OMAP2420_MUXENTRY(SPI1_NCS1, 85,
372 		"spi1_ncs1", NULL, NULL, "gpio_85",
373 		NULL, NULL, NULL, NULL),
374 	_OMAP2420_MUXENTRY(SPI1_NCS2, 86,
375 		"spi1_ncs2", NULL, NULL, "gpio_86",
376 		NULL, NULL, NULL, NULL),
377 	_OMAP2420_MUXENTRY(SPI1_NCS3, 87,
378 		"spi1_ncs3", NULL, NULL, "gpio_87",
379 		NULL, NULL, NULL, NULL),
380 	_OMAP2420_MUXENTRY(SPI1_SIMO, 82,
381 		"spi1_simo", NULL, NULL, "gpio_82",
382 		NULL, NULL, NULL, NULL),
383 	_OMAP2420_MUXENTRY(SPI1_SOMI, 83,
384 		"spi1_somi", NULL, NULL, "gpio_83",
385 		NULL, NULL, NULL, NULL),
386 	_OMAP2420_MUXENTRY(SPI2_CLK, 88,
387 		"spi2_clk", NULL, NULL, "gpio_88",
388 		NULL, NULL, NULL, NULL),
389 	_OMAP2420_MUXENTRY(SPI2_NCS0, 91,
390 		"spi2_ncs0", "gpt12_pwm_evt", NULL, "gpio_91",
391 		NULL, NULL, NULL, NULL),
392 	_OMAP2420_MUXENTRY(SPI2_SIMO, 89,
393 		"spi2_simo", "gpt10_pwm_evt", NULL, "gpio_89",
394 		NULL, NULL, NULL, NULL),
395 	_OMAP2420_MUXENTRY(SPI2_SOMI, 90,
396 		"spi2_somi", "gpt11_pwm_evt", NULL, "gpio_90",
397 		NULL, NULL, NULL, NULL),
398 	_OMAP2420_MUXENTRY(SSI1_DAT_RX, 63,
399 		"ssi1_dat_rx", "eac_md_sclk", NULL, "gpio_63",
400 		NULL, NULL, NULL, NULL),
401 	_OMAP2420_MUXENTRY(SSI1_DAT_TX, 59,
402 		"ssi1_dat_tx", "uart1_tx", "usb1_se0", "gpio_59",
403 		NULL, NULL, NULL, NULL),
404 	_OMAP2420_MUXENTRY(SSI1_FLAG_RX, 64,
405 		"ssi1_flag_rx", "eac_md_din", NULL, "gpio_64",
406 		NULL, NULL, NULL, NULL),
407 	_OMAP2420_MUXENTRY(SSI1_FLAG_TX, 25,
408 		"ssi1_flag_tx", "uart1_rts", "usb1_rcv", "gpio_25",
409 		NULL, NULL, NULL, NULL),
410 	_OMAP2420_MUXENTRY(SSI1_RDY_RX, 65,
411 		"ssi1_rdy_rx", "eac_md_dout", NULL, "gpio_65",
412 		NULL, NULL, NULL, NULL),
413 	_OMAP2420_MUXENTRY(SSI1_RDY_TX, 61,
414 		"ssi1_rdy_tx", "uart1_cts", "usb1_txen", "gpio_61",
415 		NULL, NULL, NULL, NULL),
416 	_OMAP2420_MUXENTRY(SSI1_WAKE, 66,
417 		"ssi1_wake", "eac_md_fs", NULL, "gpio_66",
418 		NULL, NULL, NULL, NULL),
419 	_OMAP2420_MUXENTRY(SYS_CLKOUT, 123,
420 		"sys_clkout", NULL, NULL, "gpio_123",
421 		NULL, NULL, NULL, NULL),
422 	_OMAP2420_MUXENTRY(SYS_CLKREQ, 52,
423 		"sys_clkreq", NULL, NULL, "gpio_52",
424 		NULL, NULL, NULL, NULL),
425 	_OMAP2420_MUXENTRY(SYS_NIRQ, 60,
426 		"sys_nirq", NULL, NULL, "gpio_60",
427 		NULL, NULL, NULL, NULL),
428 	_OMAP2420_MUXENTRY(UART1_CTS, 32,
429 		"uart1_cts", NULL, "dss_data18", "gpio_32",
430 		NULL, NULL, NULL, NULL),
431 	_OMAP2420_MUXENTRY(UART1_RTS, 8,
432 		"uart1_rts", NULL, "dss_data19", "gpio_8",
433 		NULL, NULL, NULL, NULL),
434 	_OMAP2420_MUXENTRY(UART1_RX, 10,
435 		"uart1_rx", NULL, "dss_data21", "gpio_10",
436 		NULL, NULL, NULL, NULL),
437 	_OMAP2420_MUXENTRY(UART1_TX, 9,
438 		"uart1_tx", NULL, "dss_data20", "gpio_9",
439 		NULL, NULL, NULL, NULL),
440 	_OMAP2420_MUXENTRY(UART2_CTS, 67,
441 		"uart2_cts", "usb1_rcv", "gpt9_pwm_evt", "gpio_67",
442 		NULL, NULL, NULL, NULL),
443 	_OMAP2420_MUXENTRY(UART2_RTS, 68,
444 		"uart2_rts", "usb1_txen", "gpt10_pwm_evt", "gpio_68",
445 		NULL, NULL, NULL, NULL),
446 	_OMAP2420_MUXENTRY(UART2_RX, 70,
447 		"uart2_rx", "usb1_dat", "gpt12_pwm_evt", "gpio_70",
448 		NULL, NULL, NULL, NULL),
449 	_OMAP2420_MUXENTRY(UART2_TX, 69,
450 		"uart2_tx", "usb1_se0", "gpt11_pwm_evt", "gpio_69",
451 		NULL, NULL, NULL, NULL),
452 	_OMAP2420_MUXENTRY(UART3_CTS_RCTX, 102,
453 		"uart3_cts_rctx", "uart3_rx_irrx", NULL, "gpio_102",
454 		NULL, NULL, NULL, NULL),
455 	_OMAP2420_MUXENTRY(UART3_RTS_SD, 103,
456 		"uart3_rts_sd", "uart3_tx_irtx", NULL, "gpio_103",
457 		NULL, NULL, NULL, NULL),
458 	_OMAP2420_MUXENTRY(UART3_RX_IRRX, 105,
459 		"uart3_rx_irrx", NULL, NULL, "gpio_105",
460 		NULL, NULL, NULL, NULL),
461 	_OMAP2420_MUXENTRY(UART3_TX_IRTX, 104,
462 		"uart3_tx_irtx", "uart3_cts_rctx", NULL, "gpio_104",
463 		NULL, NULL, NULL, NULL),
464 	_OMAP2420_MUXENTRY(USB0_DAT, 112,
465 		"usb0_dat", "uart3_rx_irrx", "uart2_rx", "gpio_112",
466 		"uart2_tx", NULL, NULL, NULL),
467 	_OMAP2420_MUXENTRY(USB0_PUEN, 106,
468 		"usb0_puen", "mcbsp2_dx", NULL, "gpio_106",
469 		NULL, NULL, NULL, NULL),
470 	_OMAP2420_MUXENTRY(USB0_RCV, 109,
471 		"usb0_rcv", "mcbsp2_fsx", NULL, "gpio_109",
472 		"uart2_cts", NULL, NULL, NULL),
473 	_OMAP2420_MUXENTRY(USB0_SE0, 111,
474 		"usb0_se0", "uart3_tx_irtx", "uart2_tx", "gpio_111",
475 		"uart2_rx", NULL, NULL, NULL),
476 	_OMAP2420_MUXENTRY(USB0_TXEN, 110,
477 		"usb0_txen", "uart3_cts_rctx", "uart2_cts", "gpio_110",
478 		NULL, NULL, NULL, NULL),
479 	_OMAP2420_MUXENTRY(USB0_VM, 108,
480 		"usb0_vm", "mcbsp2_clkx", NULL, "gpio_108",
481 		"uart2_rx", NULL, NULL, NULL),
482 	_OMAP2420_MUXENTRY(USB0_VP, 107,
483 		"usb0_vp", "mcbsp2_dr", NULL, "gpio_107",
484 		NULL, NULL, NULL, NULL),
485 	_OMAP2420_MUXENTRY(VLYNQ_CLK, 13,
486 		"vlynq_clk", "usb2_se0", "sys_ndmareq0", "gpio_13",
487 		NULL, NULL, NULL, NULL),
488 	_OMAP2420_MUXENTRY(VLYNQ_NLA, 58,
489 		"vlynq_nla", NULL, NULL, "gpio_58",
490 		"cam_d6", NULL, NULL, NULL),
491 	_OMAP2420_MUXENTRY(VLYNQ_RX0, 15,
492 		"vlynq_rx0", "usb2_tllse0", NULL, "gpio_15",
493 		"cam_d7", NULL, NULL, NULL),
494 	_OMAP2420_MUXENTRY(VLYNQ_RX1, 14,
495 		"vlynq_rx1", "usb2_rcv", "sys_ndmareq1", "gpio_14",
496 		"cam_d8", NULL, NULL, NULL),
497 	_OMAP2420_MUXENTRY(VLYNQ_TX0, 17,
498 		"vlynq_tx0", "usb2_txen", NULL, "gpio_17",
499 		NULL, NULL, NULL, NULL),
500 	_OMAP2420_MUXENTRY(VLYNQ_TX1, 16,
501 		"vlynq_tx1", "usb2_dat", "sys_clkout2", "gpio_16",
502 		NULL, NULL, NULL, NULL),
503 	{ .reg_offset = OMAP_MUX_TERMINATOR },
504 };
505 
506 /*
507  * Balls for 447-pin POP package
508  */
509 #ifdef CONFIG_DEBUG_FS
510 static struct omap_ball __initdata omap2420_pop_ball[] = {
511 	_OMAP2420_BALLENTRY(CAM_D0, "y4", NULL),
512 	_OMAP2420_BALLENTRY(CAM_D1, "y3", NULL),
513 	_OMAP2420_BALLENTRY(CAM_D2, "u7", NULL),
514 	_OMAP2420_BALLENTRY(CAM_D3, "ab3", NULL),
515 	_OMAP2420_BALLENTRY(CAM_D4, "v2", NULL),
516 	_OMAP2420_BALLENTRY(CAM_D5, "ad3", NULL),
517 	_OMAP2420_BALLENTRY(CAM_D6, "aa4", NULL),
518 	_OMAP2420_BALLENTRY(CAM_D7, "ab4", NULL),
519 	_OMAP2420_BALLENTRY(CAM_D8, "ac6", NULL),
520 	_OMAP2420_BALLENTRY(CAM_D9, "ac7", NULL),
521 	_OMAP2420_BALLENTRY(CAM_HS, "v4", NULL),
522 	_OMAP2420_BALLENTRY(CAM_LCLK, "ad6", NULL),
523 	_OMAP2420_BALLENTRY(CAM_VS, "p7", NULL),
524 	_OMAP2420_BALLENTRY(CAM_XCLK, "w4", NULL),
525 	_OMAP2420_BALLENTRY(DSS_ACBIAS, "ae8", NULL),
526 	_OMAP2420_BALLENTRY(DSS_DATA10, "ac12", NULL),
527 	_OMAP2420_BALLENTRY(DSS_DATA11, "ae11", NULL),
528 	_OMAP2420_BALLENTRY(DSS_DATA12, "ae13", NULL),
529 	_OMAP2420_BALLENTRY(DSS_DATA13, "ad13", NULL),
530 	_OMAP2420_BALLENTRY(DSS_DATA14, "ac13", NULL),
531 	_OMAP2420_BALLENTRY(DSS_DATA15, "y12", NULL),
532 	_OMAP2420_BALLENTRY(DSS_DATA16, "ad14", NULL),
533 	_OMAP2420_BALLENTRY(DSS_DATA17, "y13", NULL),
534 	_OMAP2420_BALLENTRY(DSS_DATA8, "ad11", NULL),
535 	_OMAP2420_BALLENTRY(DSS_DATA9, "ad12", NULL),
536 	_OMAP2420_BALLENTRY(EAC_AC_DIN, "ad19", NULL),
537 	_OMAP2420_BALLENTRY(EAC_AC_DOUT, "af22", NULL),
538 	_OMAP2420_BALLENTRY(EAC_AC_FS, "ad16", NULL),
539 	_OMAP2420_BALLENTRY(EAC_AC_MCLK, "y17", NULL),
540 	_OMAP2420_BALLENTRY(EAC_AC_RST, "ae22", NULL),
541 	_OMAP2420_BALLENTRY(EAC_AC_SCLK, "ac18", NULL),
542 	_OMAP2420_BALLENTRY(EAC_BT_DIN, "u8", NULL),
543 	_OMAP2420_BALLENTRY(EAC_BT_DOUT, "ad5", NULL),
544 	_OMAP2420_BALLENTRY(EAC_BT_FS, "w7", NULL),
545 	_OMAP2420_BALLENTRY(EAC_BT_SCLK, "ad4", NULL),
546 	_OMAP2420_BALLENTRY(GPIO_119, "af6", NULL),
547 	_OMAP2420_BALLENTRY(GPIO_120, "af4", NULL),
548 	_OMAP2420_BALLENTRY(GPIO_121, "ae6", NULL),
549 	_OMAP2420_BALLENTRY(GPIO_122, "w3", NULL),
550 	_OMAP2420_BALLENTRY(GPIO_124, "y19", NULL),
551 	_OMAP2420_BALLENTRY(GPIO_125, "ae24", NULL),
552 	_OMAP2420_BALLENTRY(GPIO_36, "y18", NULL),
553 	_OMAP2420_BALLENTRY(GPIO_6, "d6", NULL),
554 	_OMAP2420_BALLENTRY(GPIO_62, "ad18", NULL),
555 	_OMAP2420_BALLENTRY(GPMC_A1, "m8", NULL),
556 	_OMAP2420_BALLENTRY(GPMC_A10, "d5", NULL),
557 	_OMAP2420_BALLENTRY(GPMC_A2, "w9", NULL),
558 	_OMAP2420_BALLENTRY(GPMC_A3, "af10", NULL),
559 	_OMAP2420_BALLENTRY(GPMC_A4, "w8", NULL),
560 	_OMAP2420_BALLENTRY(GPMC_A5, "ae16", NULL),
561 	_OMAP2420_BALLENTRY(GPMC_A6, "af9", NULL),
562 	_OMAP2420_BALLENTRY(GPMC_A7, "e4", NULL),
563 	_OMAP2420_BALLENTRY(GPMC_A8, "j7", NULL),
564 	_OMAP2420_BALLENTRY(GPMC_A9, "ae18", NULL),
565 	_OMAP2420_BALLENTRY(GPMC_CLK, "p1", "l1"),
566 	_OMAP2420_BALLENTRY(GPMC_D10, "t1", "n1"),
567 	_OMAP2420_BALLENTRY(GPMC_D11, "u2", "p2"),
568 	_OMAP2420_BALLENTRY(GPMC_D12, "u1", "p1"),
569 	_OMAP2420_BALLENTRY(GPMC_D13, "p2", "m1"),
570 	_OMAP2420_BALLENTRY(GPMC_D14, "h2", "j2"),
571 	_OMAP2420_BALLENTRY(GPMC_D15, "h1", "k2"),
572 	_OMAP2420_BALLENTRY(GPMC_D8, "v1", "r1"),
573 	_OMAP2420_BALLENTRY(GPMC_D9, "y1", "t1"),
574 	_OMAP2420_BALLENTRY(GPMC_NBE0, "af12", "aa10"),
575 	_OMAP2420_BALLENTRY(GPMC_NBE1, "u3", NULL),
576 	_OMAP2420_BALLENTRY(GPMC_NCS1, "af14", "w1"),
577 	_OMAP2420_BALLENTRY(GPMC_NCS2, "g4", NULL),
578 	_OMAP2420_BALLENTRY(GPMC_NCS3, "t8", NULL),
579 	_OMAP2420_BALLENTRY(GPMC_NCS4, "h8", NULL),
580 	_OMAP2420_BALLENTRY(GPMC_NCS5, "k3", NULL),
581 	_OMAP2420_BALLENTRY(GPMC_NCS6, "m7", NULL),
582 	_OMAP2420_BALLENTRY(GPMC_NCS7, "p3", NULL),
583 	_OMAP2420_BALLENTRY(GPMC_NWP, "ae15", "y5"),
584 	_OMAP2420_BALLENTRY(GPMC_WAIT1, "ae20", "y8"),
585 	_OMAP2420_BALLENTRY(GPMC_WAIT2, "n2", NULL),
586 	_OMAP2420_BALLENTRY(GPMC_WAIT3, "t4", NULL),
587 	_OMAP2420_BALLENTRY(HDQ_SIO, "t23", NULL),
588 	_OMAP2420_BALLENTRY(I2C2_SCL, "l2", NULL),
589 	_OMAP2420_BALLENTRY(I2C2_SDA, "k19", NULL),
590 	_OMAP2420_BALLENTRY(JTAG_EMU0, "n24", NULL),
591 	_OMAP2420_BALLENTRY(JTAG_EMU1, "ac22", NULL),
592 	_OMAP2420_BALLENTRY(MCBSP1_CLKR, "y24", NULL),
593 	_OMAP2420_BALLENTRY(MCBSP1_CLKX, "t19", NULL),
594 	_OMAP2420_BALLENTRY(MCBSP1_DR, "u23", NULL),
595 	_OMAP2420_BALLENTRY(MCBSP1_DX, "r24", NULL),
596 	_OMAP2420_BALLENTRY(MCBSP1_FSR, "r20", NULL),
597 	_OMAP2420_BALLENTRY(MCBSP1_FSX, "r23", NULL),
598 	_OMAP2420_BALLENTRY(MCBSP2_CLKX, "t24", NULL),
599 	_OMAP2420_BALLENTRY(MCBSP2_DR, "p20", NULL),
600 	_OMAP2420_BALLENTRY(MCBSP_CLKS, "p23", NULL),
601 	_OMAP2420_BALLENTRY(MMC_CLKI, "c23", NULL),
602 	_OMAP2420_BALLENTRY(MMC_CLKO, "h23", NULL),
603 	_OMAP2420_BALLENTRY(MMC_CMD, "j23", NULL),
604 	_OMAP2420_BALLENTRY(MMC_CMD_DIR, "j24", NULL),
605 	_OMAP2420_BALLENTRY(MMC_DAT0, "h17", NULL),
606 	_OMAP2420_BALLENTRY(MMC_DAT_DIR0, "f23", NULL),
607 	_OMAP2420_BALLENTRY(MMC_DAT1, "g19", NULL),
608 	_OMAP2420_BALLENTRY(MMC_DAT_DIR1, "d23", NULL),
609 	_OMAP2420_BALLENTRY(MMC_DAT2, "h20", NULL),
610 	_OMAP2420_BALLENTRY(MMC_DAT_DIR2, "g23", NULL),
611 	_OMAP2420_BALLENTRY(MMC_DAT3, "d24", NULL),
612 	_OMAP2420_BALLENTRY(MMC_DAT_DIR3, "e23", NULL),
613 	_OMAP2420_BALLENTRY(SDRC_A12, "w26", "r21"),
614 	_OMAP2420_BALLENTRY(SDRC_A13, "w25", "aa15"),
615 	_OMAP2420_BALLENTRY(SDRC_A14, "aa26", "y12"),
616 	_OMAP2420_BALLENTRY(SDRC_CKE1, "ae25", "y13"),
617 	_OMAP2420_BALLENTRY(SDRC_NCS1, "y25", "t20"),
618 	_OMAP2420_BALLENTRY(SPI1_CLK, "y23", NULL),
619 	_OMAP2420_BALLENTRY(SPI1_NCS0, "w24", NULL),
620 	_OMAP2420_BALLENTRY(SPI1_NCS1, "w23", NULL),
621 	_OMAP2420_BALLENTRY(SPI1_NCS2, "v23", NULL),
622 	_OMAP2420_BALLENTRY(SPI1_NCS3, "u20", NULL),
623 	_OMAP2420_BALLENTRY(SPI1_SIMO, "h10", NULL),
624 	_OMAP2420_BALLENTRY(SPI1_SOMI, "v19", NULL),
625 	_OMAP2420_BALLENTRY(SPI2_CLK, "v24", NULL),
626 	_OMAP2420_BALLENTRY(SPI2_NCS0, "aa24", NULL),
627 	_OMAP2420_BALLENTRY(SPI2_SIMO, "u24", NULL),
628 	_OMAP2420_BALLENTRY(SPI2_SOMI, "v25", NULL),
629 	_OMAP2420_BALLENTRY(SSI1_DAT_RX, "w15", NULL),
630 	_OMAP2420_BALLENTRY(SSI1_DAT_TX, "w13", NULL),
631 	_OMAP2420_BALLENTRY(SSI1_FLAG_RX, "af11", NULL),
632 	_OMAP2420_BALLENTRY(SSI1_FLAG_TX, "ac15", NULL),
633 	_OMAP2420_BALLENTRY(SSI1_RDY_RX, "ac16", NULL),
634 	_OMAP2420_BALLENTRY(SSI1_RDY_TX, "af15", NULL),
635 	_OMAP2420_BALLENTRY(SSI1_WAKE, "ad15", NULL),
636 	_OMAP2420_BALLENTRY(SYS_CLKOUT, "ae19", NULL),
637 	_OMAP2420_BALLENTRY(SYS_CLKREQ, "ad20", NULL),
638 	_OMAP2420_BALLENTRY(SYS_NIRQ, "y20", NULL),
639 	_OMAP2420_BALLENTRY(UART1_CTS, "g20", NULL),
640 	_OMAP2420_BALLENTRY(UART1_RTS, "k20", NULL),
641 	_OMAP2420_BALLENTRY(UART1_RX, "t20", NULL),
642 	_OMAP2420_BALLENTRY(UART1_TX, "h12", NULL),
643 	_OMAP2420_BALLENTRY(UART2_CTS, "ac24", NULL),
644 	_OMAP2420_BALLENTRY(UART2_RTS, "w20", NULL),
645 	_OMAP2420_BALLENTRY(UART2_RX, "ad24", NULL),
646 	_OMAP2420_BALLENTRY(UART2_TX, "ab24", NULL),
647 	_OMAP2420_BALLENTRY(UART3_CTS_RCTX, "k24", NULL),
648 	_OMAP2420_BALLENTRY(UART3_RTS_SD, "m20", NULL),
649 	_OMAP2420_BALLENTRY(UART3_RX_IRRX, "h24", NULL),
650 	_OMAP2420_BALLENTRY(UART3_TX_IRTX, "g24", NULL),
651 	_OMAP2420_BALLENTRY(USB0_DAT, "j25", NULL),
652 	_OMAP2420_BALLENTRY(USB0_PUEN, "l23", NULL),
653 	_OMAP2420_BALLENTRY(USB0_RCV, "k23", NULL),
654 	_OMAP2420_BALLENTRY(USB0_SE0, "l24", NULL),
655 	_OMAP2420_BALLENTRY(USB0_TXEN, "m24", NULL),
656 	_OMAP2420_BALLENTRY(USB0_VM, "n23", NULL),
657 	_OMAP2420_BALLENTRY(USB0_VP, "m23", NULL),
658 	_OMAP2420_BALLENTRY(VLYNQ_CLK, "w12", NULL),
659 	_OMAP2420_BALLENTRY(VLYNQ_NLA, "ae10", NULL),
660 	_OMAP2420_BALLENTRY(VLYNQ_RX0, "ad7", NULL),
661 	_OMAP2420_BALLENTRY(VLYNQ_RX1, "w10", NULL),
662 	_OMAP2420_BALLENTRY(VLYNQ_TX0, "y15", NULL),
663 	_OMAP2420_BALLENTRY(VLYNQ_TX1, "w14", NULL),
664 	{ .reg_offset = OMAP_MUX_TERMINATOR },
665 };
666 #else
667 #define omap2420_pop_ball	 NULL
668 #endif
669 
omap2420_mux_init(struct omap_board_mux * board_subset,int flags)670 int __init omap2420_mux_init(struct omap_board_mux *board_subset, int flags)
671 {
672 	struct omap_ball *package_balls = NULL;
673 
674 	switch (flags & OMAP_PACKAGE_MASK) {
675 	case OMAP_PACKAGE_ZAC:
676 		package_balls = omap2420_pop_ball;
677 		break;
678 	case OMAP_PACKAGE_ZAF:
679 		/* REVISIT: Please add data */
680 	default:
681 		pr_warning("%s: No ball data available for omap2420 package\n",
682 				__func__);
683 	}
684 
685 	return omap_mux_init("core", OMAP_MUX_REG_8BIT | OMAP_MUX_GPIO_IN_MODE3,
686 			     OMAP2420_CONTROL_PADCONF_MUX_PBASE,
687 			     OMAP2420_CONTROL_PADCONF_MUX_SIZE,
688 			     omap2420_muxmodes, NULL, board_subset,
689 			     package_balls);
690 }
691