linux/arch/arm/mach-omap2/mux2420.c
<<
>>
Prefs
   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 */
  43static 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
 510static 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
 670int __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