summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2011-12-14 13:41:20 -0800
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-21 15:05:43 +0530
commit8b2b6d14763f1662507170dcb419053dce7877c2 (patch)
treef123b2398aed0271a52ec0250480b771f8fcd8ca
parent4fbd126f17e1b8db673129b754ab70c43f275302 (diff)
arm: tegra: Use generator macros for pinmux selectors
Replace the hand-crafted pinmux mux selector enumerators and name table with generator macros to avoid mismatches between them. Change-Id: I2e56bf89a4b29f33af00d0e4d2617ee13c554997 Signed-off-by: Scott Williams <scwilliams@nvidia.com> Reviewed-on: http://git-master/r/70088 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Mark Stadler <mastadler@nvidia.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Allen Martin <amartin@nvidia.com> Reviewed-by: Sachin Nikam <snikam@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/include/mach/pinmux.h243
-rw-r--r--arch/arm/mach-tegra/pinmux.c112
2 files changed, 130 insertions, 225 deletions
diff --git a/arch/arm/mach-tegra/include/mach/pinmux.h b/arch/arm/mach-tegra/include/mach/pinmux.h
index 6a2c18c52faa..5d50d798cb9b 100644
--- a/arch/arm/mach-tegra/include/mach/pinmux.h
+++ b/arch/arm/mach-tegra/include/mach/pinmux.h
@@ -26,127 +26,138 @@
#error "Undefined Tegra architecture"
#endif
+#define TEGRA_MUX_LIST \
+ TEGRA_MUX(NONE) \
+ TEGRA_MUX(AHB_CLK) \
+ TEGRA_MUX(APB_CLK) \
+ TEGRA_MUX(AUDIO_SYNC) \
+ TEGRA_MUX(CRT) \
+ TEGRA_MUX(DAP1) \
+ TEGRA_MUX(DAP2) \
+ TEGRA_MUX(DAP3) \
+ TEGRA_MUX(DAP4) \
+ TEGRA_MUX(DAP5) \
+ TEGRA_MUX(DISPLAYA) \
+ TEGRA_MUX(DISPLAYB) \
+ TEGRA_MUX(EMC_TEST0_DLL) \
+ TEGRA_MUX(EMC_TEST1_DLL) \
+ TEGRA_MUX(GMI) \
+ TEGRA_MUX(GMI_INT) \
+ TEGRA_MUX(HDMI) \
+ TEGRA_MUX(I2C1) \
+ TEGRA_MUX(I2C2) \
+ TEGRA_MUX(I2C3) \
+ TEGRA_MUX(IDE) \
+ TEGRA_MUX(IRDA) \
+ TEGRA_MUX(KBC) \
+ TEGRA_MUX(MIO) \
+ TEGRA_MUX(MIPI_HS) \
+ TEGRA_MUX(NAND) \
+ TEGRA_MUX(OSC) \
+ TEGRA_MUX(OWR) \
+ TEGRA_MUX(PCIE) \
+ TEGRA_MUX(PLLA_OUT) \
+ TEGRA_MUX(PLLC_OUT1) \
+ TEGRA_MUX(PLLM_OUT1) \
+ TEGRA_MUX(PLLP_OUT2) \
+ TEGRA_MUX(PLLP_OUT3) \
+ TEGRA_MUX(PLLP_OUT4) \
+ TEGRA_MUX(PWM) \
+ TEGRA_MUX(PWR_INTR) \
+ TEGRA_MUX(PWR_ON) \
+ TEGRA_MUX(RTCK) \
+ TEGRA_MUX(SDIO1) \
+ TEGRA_MUX(SDIO2) \
+ TEGRA_MUX(SDIO3) \
+ TEGRA_MUX(SDIO4) \
+ TEGRA_MUX(SFLASH) \
+ TEGRA_MUX(SPDIF) \
+ TEGRA_MUX(SPI1) \
+ TEGRA_MUX(SPI2) \
+ TEGRA_MUX(SPI2_ALT) \
+ TEGRA_MUX(SPI3) \
+ TEGRA_MUX(SPI4) \
+ TEGRA_MUX(TRACE) \
+ TEGRA_MUX(TWC) \
+ TEGRA_MUX(UARTA) \
+ TEGRA_MUX(UARTB) \
+ TEGRA_MUX(UARTC) \
+ TEGRA_MUX(UARTD) \
+ TEGRA_MUX(UARTE) \
+ TEGRA_MUX(ULPI) \
+ TEGRA_MUX(VI) \
+ TEGRA_MUX(VI_SENSOR_CLK) \
+ TEGRA_MUX(XIO) \
+ /* End of Tegra2 MUX selectors */ \
+ TEGRA_MUX(BLINK) \
+ TEGRA_MUX(CEC) \
+ TEGRA_MUX(CLK12) \
+ TEGRA_MUX(DAP) \
+ TEGRA_MUX(DAPSDMMC2) \
+ TEGRA_MUX(DDR) \
+ TEGRA_MUX(DEV3) \
+ TEGRA_MUX(DTV) \
+ TEGRA_MUX(VI_ALT1) \
+ TEGRA_MUX(VI_ALT2) \
+ TEGRA_MUX(VI_ALT3) \
+ TEGRA_MUX(EMC_DLL) \
+ TEGRA_MUX(EXTPERIPH1) \
+ TEGRA_MUX(EXTPERIPH2) \
+ TEGRA_MUX(EXTPERIPH3) \
+ TEGRA_MUX(GMI_ALT) \
+ TEGRA_MUX(HDA) \
+ TEGRA_MUX(HSI) \
+ TEGRA_MUX(I2C4) \
+ TEGRA_MUX(I2C5) \
+ TEGRA_MUX(I2CPWR) \
+ TEGRA_MUX(I2S0) \
+ TEGRA_MUX(I2S1) \
+ TEGRA_MUX(I2S2) \
+ TEGRA_MUX(I2S3) \
+ TEGRA_MUX(I2S4) \
+ TEGRA_MUX(NAND_ALT) \
+ TEGRA_MUX(POPSDIO4) \
+ TEGRA_MUX(POPSDMMC4) \
+ TEGRA_MUX(PWM0) \
+ TEGRA_MUX(PWM1) \
+ TEGRA_MUX(PWM2) \
+ TEGRA_MUX(PWM3) \
+ TEGRA_MUX(SATA) \
+ TEGRA_MUX(SPI5) \
+ TEGRA_MUX(SPI6) \
+ TEGRA_MUX(SYSCLK) \
+ TEGRA_MUX(VGP1) \
+ TEGRA_MUX(VGP2) \
+ TEGRA_MUX(VGP3) \
+ TEGRA_MUX(VGP4) \
+ TEGRA_MUX(VGP5) \
+ TEGRA_MUX(VGP6) \
+ /* End of Tegra3 MUX selectors */
+
enum tegra_mux_func {
- TEGRA_MUX_RSVD = 0x8000,
- TEGRA_MUX_RSVD0 = TEGRA_MUX_RSVD,
- TEGRA_MUX_RSVD1 = 0x8000,
- TEGRA_MUX_RSVD2 = 0x8001,
- TEGRA_MUX_RSVD3 = 0x8002,
- TEGRA_MUX_RSVD4 = 0x8003,
- TEGRA_MUX_INVALID = 0x4000,
- TEGRA_MUX_NONE = 0,
- TEGRA_MUX_AHB_CLK,
- TEGRA_MUX_APB_CLK,
- TEGRA_MUX_AUDIO_SYNC,
- TEGRA_MUX_CRT,
- TEGRA_MUX_DAP1,
- TEGRA_MUX_DAP2,
- TEGRA_MUX_DAP3,
- TEGRA_MUX_DAP4,
- TEGRA_MUX_DAP5,
- TEGRA_MUX_DISPLAYA,
- TEGRA_MUX_DISPLAYB,
- TEGRA_MUX_EMC_TEST0_DLL,
- TEGRA_MUX_EMC_TEST1_DLL,
- TEGRA_MUX_GMI,
- TEGRA_MUX_GMI_INT,
- TEGRA_MUX_HDMI,
- TEGRA_MUX_I2C,
- TEGRA_MUX_I2C1 = TEGRA_MUX_I2C,
- TEGRA_MUX_I2C2,
- TEGRA_MUX_I2C3,
- TEGRA_MUX_IDE,
- TEGRA_MUX_IRDA,
- TEGRA_MUX_KBC,
- TEGRA_MUX_MIO,
- TEGRA_MUX_MIPI_HS,
- TEGRA_MUX_NAND,
- TEGRA_MUX_OSC,
- TEGRA_MUX_OWR,
- TEGRA_MUX_PCIE,
- TEGRA_MUX_PLLA_OUT,
- TEGRA_MUX_PLLC_OUT1,
- TEGRA_MUX_PLLM_OUT1,
- TEGRA_MUX_PLLP_OUT2,
- TEGRA_MUX_PLLP_OUT3,
- TEGRA_MUX_PLLP_OUT4,
- TEGRA_MUX_PWM,
- TEGRA_MUX_PWR_INTR,
- TEGRA_MUX_PWR_ON,
- TEGRA_MUX_RTCK,
- TEGRA_MUX_SDIO1,
+#define TEGRA_MUX(mux) TEGRA_MUX_##mux,
+ TEGRA_MUX_LIST
+#undef TEGRA_MUX
+ TEGRA_MUX_SAFE, /* "Safe" default mux selector */
+ TEGRA_MAX_MUX, /* Number of mux selectors */
+ TEGRA_MUX_TEGRA2_LAST = TEGRA_MUX_XIO,
+ TEGRA_MUX_TEGRA3_LAST = TEGRA_MUX_VGP6,
+
+ /* Mux selector aliases */
+ TEGRA_MUX_I2C = TEGRA_MUX_I2C1,
TEGRA_MUX_SDMMC1 = TEGRA_MUX_SDIO1,
- TEGRA_MUX_SDIO2,
TEGRA_MUX_SDMMC2 = TEGRA_MUX_SDIO2,
- TEGRA_MUX_SDIO3,
TEGRA_MUX_SDMMC3 = TEGRA_MUX_SDIO3,
- TEGRA_MUX_SDIO4,
TEGRA_MUX_SDMMC4 = TEGRA_MUX_SDIO4,
- TEGRA_MUX_SFLASH,
- TEGRA_MUX_SPDIF,
- TEGRA_MUX_SPI1,
- TEGRA_MUX_SPI2,
- TEGRA_MUX_SPI2_ALT,
- TEGRA_MUX_SPI3,
- TEGRA_MUX_SPI4,
- TEGRA_MUX_TRACE,
- TEGRA_MUX_TWC,
- TEGRA_MUX_UARTA,
- TEGRA_MUX_UARTB,
- TEGRA_MUX_UARTC,
- TEGRA_MUX_UARTD,
- TEGRA_MUX_UARTE,
- TEGRA_MUX_ULPI,
- TEGRA_MUX_VI,
- TEGRA_MUX_VI_SENSOR_CLK,
- TEGRA_MUX_XIO,
-#ifndef CONFIG_ARCH_TEGRA_2x_SOC
- TEGRA_MUX_BLINK,
- TEGRA_MUX_CEC,
- TEGRA_MUX_CLK12,
- TEGRA_MUX_DAP,
- TEGRA_MUX_DAPSDMMC2,
- TEGRA_MUX_DDR,
- TEGRA_MUX_DEV3,
- TEGRA_MUX_DTV,
- TEGRA_MUX_VI_ALT1,
- TEGRA_MUX_VI_ALT2,
- TEGRA_MUX_VI_ALT3,
- TEGRA_MUX_EMC_DLL,
- TEGRA_MUX_EXTPERIPH1,
- TEGRA_MUX_EXTPERIPH2,
- TEGRA_MUX_EXTPERIPH3,
- TEGRA_MUX_GMI_ALT,
- TEGRA_MUX_HDA,
- TEGRA_MUX_HSI,
- TEGRA_MUX_I2C4,
- TEGRA_MUX_I2C5,
- TEGRA_MUX_I2CPWR,
- TEGRA_MUX_I2S0,
- TEGRA_MUX_I2S1,
- TEGRA_MUX_I2S2,
- TEGRA_MUX_I2S3,
- TEGRA_MUX_I2S4,
- TEGRA_MUX_NAND_ALT,
- TEGRA_MUX_POPSDIO4,
- TEGRA_MUX_POPSDMMC4,
- TEGRA_MUX_PWM0,
- TEGRA_MUX_PWM1,
- TEGRA_MUX_PWM2,
- TEGRA_MUX_PWM3,
- TEGRA_MUX_SATA,
- TEGRA_MUX_SPI5,
- TEGRA_MUX_SPI6,
- TEGRA_MUX_SYSCLK,
- TEGRA_MUX_VGP1,
- TEGRA_MUX_VGP2,
- TEGRA_MUX_VGP3,
- TEGRA_MUX_VGP4,
- TEGRA_MUX_VGP5,
- TEGRA_MUX_VGP6,
-#endif
- TEGRA_MUX_SAFE,
- TEGRA_MAX_MUX,
+
+ /* Special mux selector values */
+ TEGRA_MUX_INVALID = 0x4000,
+ TEGRA_MUX_RSVD = 0x8000,
+ TEGRA_MUX_RSVD0 = TEGRA_MUX_RSVD,
+ TEGRA_MUX_RSVD1 = 0x8001,
+ TEGRA_MUX_RSVD2 = 0x8002,
+ TEGRA_MUX_RSVD3 = 0x8003,
+ TEGRA_MUX_RSVD4 = 0x8004,
};
enum tegra_pullupdown {
diff --git a/arch/arm/mach-tegra/pinmux.c b/arch/arm/mach-tegra/pinmux.c
index 948fcd3d9746..5f4782b286a0 100644
--- a/arch/arm/mach-tegra/pinmux.c
+++ b/arch/arm/mach-tegra/pinmux.c
@@ -37,113 +37,10 @@ static const struct tegra_pingroup_desc *const pingroups = tegra_soc_pingroups;
static const struct tegra_drive_pingroup_desc *const drive_pingroups = tegra_soc_drive_pingroups;
static const int *gpio_to_pingroups_map = gpio_to_pingroup;
-
static char *tegra_mux_names[TEGRA_MAX_MUX] = {
- [TEGRA_MUX_AHB_CLK] = "AHB_CLK",
- [TEGRA_MUX_APB_CLK] = "APB_CLK",
- [TEGRA_MUX_AUDIO_SYNC] = "AUDIO_SYNC",
- [TEGRA_MUX_CRT] = "CRT",
- [TEGRA_MUX_DAP1] = "DAP1",
- [TEGRA_MUX_DAP2] = "DAP2",
- [TEGRA_MUX_DAP3] = "DAP3",
- [TEGRA_MUX_DAP4] = "DAP4",
- [TEGRA_MUX_DAP5] = "DAP5",
- [TEGRA_MUX_DISPLAYA] = "DISPLAYA",
- [TEGRA_MUX_DISPLAYB] = "DISPLAYB",
- [TEGRA_MUX_EMC_TEST0_DLL] = "EMC_TEST0_DLL",
- [TEGRA_MUX_EMC_TEST1_DLL] = "EMC_TEST1_DLL",
- [TEGRA_MUX_GMI] = "GMI",
- [TEGRA_MUX_GMI_INT] = "GMI_INT",
- [TEGRA_MUX_HDMI] = "HDMI",
- [TEGRA_MUX_I2C] = "I2C",
- [TEGRA_MUX_I2C2] = "I2C2",
- [TEGRA_MUX_I2C3] = "I2C3",
- [TEGRA_MUX_IDE] = "IDE",
- [TEGRA_MUX_IRDA] = "IRDA",
- [TEGRA_MUX_KBC] = "KBC",
- [TEGRA_MUX_MIO] = "MIO",
- [TEGRA_MUX_MIPI_HS] = "MIPI_HS",
- [TEGRA_MUX_NAND] = "NAND",
- [TEGRA_MUX_OSC] = "OSC",
- [TEGRA_MUX_OWR] = "OWR",
- [TEGRA_MUX_PCIE] = "PCIE",
- [TEGRA_MUX_PLLA_OUT] = "PLLA_OUT",
- [TEGRA_MUX_PLLC_OUT1] = "PLLC_OUT1",
- [TEGRA_MUX_PLLM_OUT1] = "PLLM_OUT1",
- [TEGRA_MUX_PLLP_OUT2] = "PLLP_OUT2",
- [TEGRA_MUX_PLLP_OUT3] = "PLLP_OUT3",
- [TEGRA_MUX_PLLP_OUT4] = "PLLP_OUT4",
- [TEGRA_MUX_PWM] = "PWM",
- [TEGRA_MUX_PWR_INTR] = "PWR_INTR",
- [TEGRA_MUX_PWR_ON] = "PWR_ON",
- [TEGRA_MUX_RTCK] = "RTCK",
- [TEGRA_MUX_SDIO1] = "SDIO1",
- [TEGRA_MUX_SDIO2] = "SDIO2",
- [TEGRA_MUX_SDIO3] = "SDIO3",
- [TEGRA_MUX_SDIO4] = "SDIO4",
- [TEGRA_MUX_SFLASH] = "SFLASH",
- [TEGRA_MUX_SPDIF] = "SPDIF",
- [TEGRA_MUX_SPI1] = "SPI1",
- [TEGRA_MUX_SPI2] = "SPI2",
- [TEGRA_MUX_SPI2_ALT] = "SPI2_ALT",
- [TEGRA_MUX_SPI3] = "SPI3",
- [TEGRA_MUX_SPI4] = "SPI4",
- [TEGRA_MUX_TRACE] = "TRACE",
- [TEGRA_MUX_TWC] = "TWC",
- [TEGRA_MUX_UARTA] = "UARTA",
- [TEGRA_MUX_UARTB] = "UARTB",
- [TEGRA_MUX_UARTC] = "UARTC",
- [TEGRA_MUX_UARTD] = "UARTD",
- [TEGRA_MUX_UARTE] = "UARTE",
- [TEGRA_MUX_ULPI] = "ULPI",
- [TEGRA_MUX_VI] = "VI",
- [TEGRA_MUX_VI_SENSOR_CLK] = "VI_SENSOR_CLK",
- [TEGRA_MUX_XIO] = "XIO",
-#ifndef CONFIG_ARCH_TEGRA_2x_SOC
- [TEGRA_MUX_BLINK] = "BLINK",
- [TEGRA_MUX_CEC] = "CEC",
- [TEGRA_MUX_CLK12] = "CLK12",
- [TEGRA_MUX_DAP] = "DAP",
- [TEGRA_MUX_DAPSDMMC2] = "DAPSDMMC2",
- [TEGRA_MUX_DDR] = "DDR",
- [TEGRA_MUX_DEV3] = "DEV3",
- [TEGRA_MUX_DTV] = "DTV",
- [TEGRA_MUX_VI_ALT1] = "VI_ALT1",
- [TEGRA_MUX_VI_ALT2] = "VI_ALT2",
- [TEGRA_MUX_VI_ALT3] = "VI_ALT3",
- [TEGRA_MUX_EMC_DLL] = "EMC_DLL",
- [TEGRA_MUX_EXTPERIPH1] = "EXTPERIPH1",
- [TEGRA_MUX_EXTPERIPH2] = "EXTPERIPH2",
- [TEGRA_MUX_EXTPERIPH3] = "EXTPERIPH3",
- [TEGRA_MUX_GMI_ALT] = "GMI_ALT",
- [TEGRA_MUX_HDA] = "HDA",
- [TEGRA_MUX_HSI] = "HSI",
- [TEGRA_MUX_I2C4] = "I2C4",
- [TEGRA_MUX_I2C5] = "I2C5",
- [TEGRA_MUX_I2CPWR] = "I2CPWR",
- [TEGRA_MUX_I2S0] = "I2S0",
- [TEGRA_MUX_I2S1] = "I2S1",
- [TEGRA_MUX_I2S2] = "I2S2",
- [TEGRA_MUX_I2S3] = "I2S3",
- [TEGRA_MUX_I2S4] = "I2S4",
- [TEGRA_MUX_NAND_ALT] = "NAND_ALT",
- [TEGRA_MUX_POPSDIO4] = "POPSDIO4",
- [TEGRA_MUX_POPSDMMC4] = "POPSDMMC4",
- [TEGRA_MUX_PWM0] = "PWM0",
- [TEGRA_MUX_PWM1] = "PWM1",
- [TEGRA_MUX_PWM2] = "PWM2",
- [TEGRA_MUX_PWM3] = "PWM3",
- [TEGRA_MUX_SATA] = "SATA",
- [TEGRA_MUX_SPI5] = "SPI5",
- [TEGRA_MUX_SPI6] = "SPI6",
- [TEGRA_MUX_SYSCLK] = "SYSCLK",
- [TEGRA_MUX_VGP1] = "VGP1",
- [TEGRA_MUX_VGP2] = "VGP2",
- [TEGRA_MUX_VGP3] = "VGP3",
- [TEGRA_MUX_VGP4] = "VGP4",
- [TEGRA_MUX_VGP5] = "VGP5",
- [TEGRA_MUX_VGP6] = "VGP6",
-#endif
+#define TEGRA_MUX(mux) [TEGRA_MUX_##mux] = #mux,
+ TEGRA_MUX_LIST
+#undef TEGRA_MUX
[TEGRA_MUX_SAFE] = "<safe>",
};
@@ -185,9 +82,6 @@ static const char *func_name(enum tegra_mux_func func)
if (func == TEGRA_MUX_RSVD4)
return "RSVD4";
- if (func == TEGRA_MUX_NONE)
- return "NONE";
-
if (func == TEGRA_MUX_INVALID)
return "INVALID";