diff options
author | Scott Williams <scwilliams@nvidia.com> | 2011-12-14 13:41:20 -0800 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-21 15:05:43 +0530 |
commit | 8b2b6d14763f1662507170dcb419053dce7877c2 (patch) | |
tree | f123b2398aed0271a52ec0250480b771f8fcd8ca | |
parent | 4fbd126f17e1b8db673129b754ab70c43f275302 (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.h | 243 | ||||
-rw-r--r-- | arch/arm/mach-tegra/pinmux.c | 112 |
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"; |