| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 | /* * Copyright (C) 2009 Nokia * Copyright (C) 2009 Texas Instruments * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/module.h>#include <linux/init.h>#include "mux.h"#ifdef CONFIG_OMAP_MUX#define _OMAP3_MUXENTRY(M0, g, m0, m1, m2, m3, m4, m5, m6, m7)		\{									\	.reg_offset	= (OMAP3_CONTROL_PADCONF_##M0##_OFFSET),	\	.gpio		= (g),						\	.muxnames	= { m0, m1, m2, m3, m4, m5, m6, m7 },		\}#else#define _OMAP3_MUXENTRY(M0, g, m0, m1, m2, m3, m4, m5, m6, m7)		\{									\	.reg_offset	= (OMAP3_CONTROL_PADCONF_##M0##_OFFSET),	\	.gpio		= (g),						\}#endif#define _OMAP3_BALLENTRY(M0, bb, bt)					\{									\	.reg_offset	= (OMAP3_CONTROL_PADCONF_##M0##_OFFSET),	\	.balls		= { bb, bt },					\}/* * Superset of all mux modes for omap3 */static struct omap_mux __initdata omap3_muxmodes[] = {	_OMAP3_MUXENTRY(CAM_D0, 99,		"cam_d0", NULL, NULL, NULL,		"gpio_99", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D1, 100,		"cam_d1", NULL, NULL, NULL,		"gpio_100", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D10, 109,		"cam_d10", NULL, NULL, NULL,		"gpio_109", "hw_dbg8", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D11, 110,		"cam_d11", NULL, NULL, NULL,		"gpio_110", "hw_dbg9", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D2, 101,		"cam_d2", NULL, NULL, NULL,		"gpio_101", "hw_dbg4", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D3, 102,		"cam_d3", NULL, NULL, NULL,		"gpio_102", "hw_dbg5", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D4, 103,		"cam_d4", NULL, NULL, NULL,		"gpio_103", "hw_dbg6", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D5, 104,		"cam_d5", NULL, NULL, NULL,		"gpio_104", "hw_dbg7", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D6, 105,		"cam_d6", NULL, NULL, NULL,		"gpio_105", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D7, 106,		"cam_d7", NULL, NULL, NULL,		"gpio_106", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D8, 107,		"cam_d8", NULL, NULL, NULL,		"gpio_107", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_D9, 108,		"cam_d9", NULL, NULL, NULL,		"gpio_108", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_FLD, 98,		"cam_fld", NULL, "cam_global_reset", NULL,		"gpio_98", "hw_dbg3", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_HS, 94,		"cam_hs", NULL, NULL, NULL,		"gpio_94", "hw_dbg0", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_PCLK, 97,		"cam_pclk", NULL, NULL, NULL,		"gpio_97", "hw_dbg2", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_STROBE, 126,		"cam_strobe", NULL, NULL, NULL,		"gpio_126", "hw_dbg11", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_VS, 95,		"cam_vs", NULL, NULL, NULL,		"gpio_95", "hw_dbg1", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_WEN, 167,		"cam_wen", NULL, "cam_shutter", NULL,		"gpio_167", "hw_dbg10", NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_XCLKA, 96,		"cam_xclka", NULL, NULL, NULL,		"gpio_96", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CAM_XCLKB, 111,		"cam_xclkb", NULL, NULL, NULL,		"gpio_111", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CSI2_DX0, 112,		"csi2_dx0", NULL, NULL, NULL,		"gpio_112", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CSI2_DX1, 114,		"csi2_dx1", NULL, NULL, NULL,		"gpio_114", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CSI2_DY0, 113,		"csi2_dy0", NULL, NULL, NULL,		"gpio_113", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(CSI2_DY1, 115,		"csi2_dy1", NULL, NULL, NULL,		"gpio_115", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_ACBIAS, 69,		"dss_acbias", NULL, NULL, NULL,		"gpio_69", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA0, 70,		"dss_data0", NULL, "uart1_cts", NULL,		"gpio_70", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA1, 71,		"dss_data1", NULL, "uart1_rts", NULL,		"gpio_71", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA10, 80,		"dss_data10", NULL, NULL, NULL,		"gpio_80", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA11, 81,		"dss_data11", NULL, NULL, NULL,		"gpio_81", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA12, 82,		"dss_data12", NULL, NULL, NULL,		"gpio_82", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA13, 83,		"dss_data13", NULL, NULL, NULL,		"gpio_83", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA14, 84,		"dss_data14", NULL, NULL, NULL,		"gpio_84", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA15, 85,		"dss_data15", NULL, NULL, NULL,		"gpio_85", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA16, 86,		"dss_data16", NULL, NULL, NULL,		"gpio_86", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA17, 87,		"dss_data17", NULL, NULL, NULL,		"gpio_87", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA18, 88,		"dss_data18", NULL, "mcspi3_clk", "dss_data0",		"gpio_88", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA19, 89,		"dss_data19", NULL, "mcspi3_simo", "dss_data1",		"gpio_89", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA20, 90,		"dss_data20", NULL, "mcspi3_somi", "dss_data2",		"gpio_90", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA21, 91,		"dss_data21", NULL, "mcspi3_cs0", "dss_data3",		"gpio_91", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA22, 92,		"dss_data22", NULL, "mcspi3_cs1", "dss_data4",		"gpio_92", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA23, 93,		"dss_data23", NULL, NULL, "dss_data5",		"gpio_93", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA2, 72,		"dss_data2", NULL, NULL, NULL,		"gpio_72", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA3, 73,		"dss_data3", NULL, NULL, NULL,		"gpio_73", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA4, 74,		"dss_data4", NULL, "uart3_rx_irrx", NULL,		"gpio_74", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA5, 75,		"dss_data5", NULL, "uart3_tx_irtx", NULL,		"gpio_75", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA6, 76,		"dss_data6", NULL, "uart1_tx", NULL,		"gpio_76", "hw_dbg14", NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA7, 77,		"dss_data7", NULL, "uart1_rx", NULL,		"gpio_77", "hw_dbg15", NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA8, 78,		"dss_data8", NULL, NULL, NULL,		"gpio_78", "hw_dbg16", NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_DATA9, 79,		"dss_data9", NULL, NULL, NULL,		"gpio_79", "hw_dbg17", NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_HSYNC, 67,		"dss_hsync", NULL, NULL, NULL,		"gpio_67", "hw_dbg13", NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_PCLK, 66,		"dss_pclk", NULL, NULL, NULL,		"gpio_66", "hw_dbg12", NULL, "safe_mode"),	_OMAP3_MUXENTRY(DSS_VSYNC, 68,		"dss_vsync", NULL, NULL, NULL,		"gpio_68", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(ETK_CLK, 12,		"etk_clk", "mcbsp5_clkx", "sdmmc3_clk", "hsusb1_stp",		"gpio_12", "mm1_rxdp", "hsusb1_tll_stp", "hw_dbg0"),	_OMAP3_MUXENTRY(ETK_CTL, 13,		"etk_ctl", NULL, "sdmmc3_cmd", "hsusb1_clk",		"gpio_13", NULL, "hsusb1_tll_clk", "hw_dbg1"),	_OMAP3_MUXENTRY(ETK_D0, 14,		"etk_d0", "mcspi3_simo", "sdmmc3_dat4", "hsusb1_data0",		"gpio_14", "mm1_rxrcv", "hsusb1_tll_data0", "hw_dbg2"),	_OMAP3_MUXENTRY(ETK_D1, 15,		"etk_d1", "mcspi3_somi", NULL, "hsusb1_data1",		"gpio_15", "mm1_txse0", "hsusb1_tll_data1", "hw_dbg3"),	_OMAP3_MUXENTRY(ETK_D10, 24,		"etk_d10", NULL, "uart1_rx", "hsusb2_clk",		"gpio_24", NULL, "hsusb2_tll_clk", "hw_dbg12"),	_OMAP3_MUXENTRY(ETK_D11, 25,		"etk_d11", NULL, NULL, "hsusb2_stp",		"gpio_25", "mm2_rxdp", "hsusb2_tll_stp", "hw_dbg13"),	_OMAP3_MUXENTRY(ETK_D12, 26,		"etk_d12", NULL, NULL, "hsusb2_dir",		"gpio_26", NULL, "hsusb2_tll_dir", "hw_dbg14"),	_OMAP3_MUXENTRY(ETK_D13, 27,		"etk_d13", NULL, NULL, "hsusb2_nxt",		"gpio_27", "mm2_rxdm", "hsusb2_tll_nxt", "hw_dbg15"),	_OMAP3_MUXENTRY(ETK_D14, 28,		"etk_d14", NULL, NULL, "hsusb2_data0",		"gpio_28", "mm2_rxrcv", "hsusb2_tll_data0", "hw_dbg16"),	_OMAP3_MUXENTRY(ETK_D15, 29,		"etk_d15", NULL, NULL, "hsusb2_data1",		"gpio_29", "mm2_txse0", "hsusb2_tll_data1", "hw_dbg17"),	_OMAP3_MUXENTRY(ETK_D2, 16,		"etk_d2", "mcspi3_cs0", NULL, "hsusb1_data2",		"gpio_16", "mm1_txdat", "hsusb1_tll_data2", "hw_dbg4"),	_OMAP3_MUXENTRY(ETK_D3, 17,		"etk_d3", "mcspi3_clk", "sdmmc3_dat3", "hsusb1_data7",		"gpio_17", NULL, "hsusb1_tll_data7", "hw_dbg5"),	_OMAP3_MUXENTRY(ETK_D4, 18,		"etk_d4", "mcbsp5_dr", "sdmmc3_dat0", "hsusb1_data4",		"gpio_18", NULL, "hsusb1_tll_data4", "hw_dbg6"),	_OMAP3_MUXENTRY(ETK_D5, 19,		"etk_d5", "mcbsp5_fsx", "sdmmc3_dat1", "hsusb1_data5",		"gpio_19", NULL, "hsusb1_tll_data5", "hw_dbg7"),	_OMAP3_MUXENTRY(ETK_D6, 20,		"etk_d6", "mcbsp5_dx", "sdmmc3_dat2", "hsusb1_data6",		"gpio_20", NULL, "hsusb1_tll_data6", "hw_dbg8"),	_OMAP3_MUXENTRY(ETK_D7, 21,		"etk_d7", "mcspi3_cs1", "sdmmc3_dat7", "hsusb1_data3",		"gpio_21", "mm1_txen_n", "hsusb1_tll_data3", "hw_dbg9"),	_OMAP3_MUXENTRY(ETK_D8, 22,		"etk_d8", "sys_drm_msecure", "sdmmc3_dat6", "hsusb1_dir",		"gpio_22", NULL, "hsusb1_tll_dir", "hw_dbg10"),	_OMAP3_MUXENTRY(ETK_D9, 23,		"etk_d9", "sys_secure_indicator", "sdmmc3_dat5", "hsusb1_nxt",		"gpio_23", "mm1_rxdm", "hsusb1_tll_nxt", "hw_dbg11"),	_OMAP3_MUXENTRY(GPMC_A1, 34,		"gpmc_a1", NULL, NULL, NULL,		"gpio_34", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A10, 43,		"gpmc_a10", "sys_ndmareq3", NULL, NULL,		"gpio_43", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A2, 35,		"gpmc_a2", NULL, NULL, NULL,		"gpio_35", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A3, 36,		"gpmc_a3", NULL, NULL, NULL,		"gpio_36", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A4, 37,		"gpmc_a4", NULL, NULL, NULL,		"gpio_37", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A5, 38,		"gpmc_a5", NULL, NULL, NULL,		"gpio_38", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A6, 39,		"gpmc_a6", NULL, NULL, NULL,		"gpio_39", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A7, 40,		"gpmc_a7", NULL, NULL, NULL,		"gpio_40", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A8, 41,		"gpmc_a8", NULL, NULL, NULL,		"gpio_41", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_A9, 42,		"gpmc_a9", "sys_ndmareq2", NULL, NULL,		"gpio_42", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_CLK, 59,		"gpmc_clk", NULL, NULL, NULL,		"gpio_59", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D10, 46,		"gpmc_d10", NULL, NULL, NULL,		"gpio_46", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D11, 47,		"gpmc_d11", NULL, NULL, NULL,		"gpio_47", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D12, 48,		"gpmc_d12", NULL, NULL, NULL,		"gpio_48", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D13, 49,		"gpmc_d13", NULL, NULL, NULL,		"gpio_49", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D14, 50,		"gpmc_d14", NULL, NULL, NULL,		"gpio_50", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D15, 51,		"gpmc_d15", NULL, NULL, NULL,		"gpio_51", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D8, 44,		"gpmc_d8", NULL, NULL, NULL,		"gpio_44", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_D9, 45,		"gpmc_d9", NULL, NULL, NULL,		"gpio_45", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NBE0_CLE, 60,		"gpmc_nbe0_cle", NULL, NULL, NULL,		"gpio_60", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NBE1, 61,		"gpmc_nbe1", NULL, NULL, NULL,		"gpio_61", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS1, 52,		"gpmc_ncs1", NULL, NULL, NULL,		"gpio_52", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS2, 53,		"gpmc_ncs2", NULL, NULL, NULL,		"gpio_53", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS3, 54,		"gpmc_ncs3", "sys_ndmareq0", NULL, NULL,		"gpio_54", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS4, 55,		"gpmc_ncs4", "sys_ndmareq1", "mcbsp4_clkx", "gpt9_pwm_evt",		"gpio_55", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS5, 56,		"gpmc_ncs5", "sys_ndmareq2", "mcbsp4_dr", "gpt10_pwm_evt",		"gpio_56", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS6, 57,		"gpmc_ncs6", "sys_ndmareq3", "mcbsp4_dx", "gpt11_pwm_evt",		"gpio_57", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NCS7, 58,		"gpmc_ncs7", "gpmc_io_dir", "mcbsp4_fsx", "gpt8_pwm_evt",		"gpio_58", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_NWP, 62,		"gpmc_nwp", NULL, NULL, NULL,		"gpio_62", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_WAIT1, 63,		"gpmc_wait1", NULL, NULL, NULL,		"gpio_63", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_WAIT2, 64,		"gpmc_wait2", NULL, NULL, NULL,		"gpio_64", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(GPMC_WAIT3, 65,		"gpmc_wait3", "sys_ndmareq1", NULL, NULL,		"gpio_65", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HDQ_SIO, 170,		"hdq_sio", "sys_altclk", "i2c2_sccbe", "i2c3_sccbe",		"gpio_170", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_CLK, 120,		"hsusb0_clk", NULL, NULL, NULL,		"gpio_120", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA0, 125,		"hsusb0_data0", NULL, "uart3_tx_irtx", NULL,		"gpio_125", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA1, 130,		"hsusb0_data1", NULL, "uart3_rx_irrx", NULL,		"gpio_130", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA2, 131,		"hsusb0_data2", NULL, "uart3_rts_sd", NULL,		"gpio_131", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA3, 169,		"hsusb0_data3", NULL, "uart3_cts_rctx", NULL,		"gpio_169", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA4, 188,		"hsusb0_data4", NULL, NULL, NULL,		"gpio_188", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA5, 189,		"hsusb0_data5", NULL, NULL, NULL,		"gpio_189", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA6, 190,		"hsusb0_data6", NULL, NULL, NULL,		"gpio_190", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DATA7, 191,		"hsusb0_data7", NULL, NULL, NULL,		"gpio_191", NULL, NULL, "safe_mode"),	_OMAP3_MUXENTRY(HSUSB0_DIR, 122,		"hsusb0_dir", NULL, NULL, NULL,
 |