From fb79dac2805ff303064c6c55e9b0a6d1e49d98a5 Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Wed, 5 Dec 2012 01:21:09 +0100 Subject: colibri_t30: MMC: fix SDMMC4B pinmux Fix two issues concerning SDMMC4B pinmux (e.g. using a regular SD card as the boot device instead of the on-module eMMC). First according to the TRM it is illegal to mux a certain function to two sets of balls (e.g. the regular SDMMC4 as well as the SDMMC4B muxing). Second make absolutely sure all unused balls are not only tri-stating their outputs but also disable their inputs to prevent any illegal internal states. --- arch/arm/mach-tegra/board-colibri_t30-pinmux.c | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/arch/arm/mach-tegra/board-colibri_t30-pinmux.c b/arch/arm/mach-tegra/board-colibri_t30-pinmux.c index 34a212d25364..d621160e2c39 100644 --- a/arch/arm/mach-tegra/board-colibri_t30-pinmux.c +++ b/arch/arm/mach-tegra/board-colibri_t30-pinmux.c @@ -131,15 +131,15 @@ static __initdata struct tegra_drive_pingroup_config colibri_t30_drive_pinmux[] static __initdata struct tegra_pingroup_config colibri_t30_pinmux[] = { //multiplexed KB_ROW_13 #ifdef COLIBRI_T30_SDMMC4B - DEFAULT_PINMUX(CAM_I2C_SCL, POPSDMMC4, PULL_UP, NORMAL, INPUT), + I2C_PINMUX(CAM_I2C_SCL, POPSDMMC4, PULL_UP, NORMAL, INPUT, DISABLE, DISABLE), #else - DEFAULT_PINMUX(CAM_I2C_SCL, I2C3, NORMAL, TRISTATE, INPUT), + DEFAULT_PINMUX(CAM_I2C_SCL, I2C3, NORMAL, TRISTATE, OUTPUT), #endif //multiplexed KB_ROW_14 #ifdef COLIBRI_T30_SDMMC4B - DEFAULT_PINMUX(CAM_I2C_SDA, POPSDMMC4, PULL_UP, NORMAL, INPUT), + I2C_PINMUX(CAM_I2C_SDA, POPSDMMC4, PULL_UP, NORMAL, INPUT, DISABLE, DISABLE), #else - DEFAULT_PINMUX(CAM_I2C_SDA, I2C3, NORMAL, TRISTATE, INPUT), + DEFAULT_PINMUX(CAM_I2C_SDA, I2C3, NORMAL, TRISTATE, OUTPUT), #endif //multiplexed KB_ROW_10 @@ -252,7 +252,7 @@ static __initdata struct tegra_pingroup_config colibri_t30_pinmux[] = { //multiplexed KB_ROW_11 #ifdef COLIBRI_T30_SDMMC4B - DEFAULT_PINMUX(GPIO_PCC1, POPSDMMC4, PULL_UP, NORMAL, INPUT), + DEFAULT_PINMUX(GPIO_PCC1, POPSDMMC4, NORMAL, NORMAL, INPUT), #else DEFAULT_PINMUX(GPIO_PCC1, RSVD1, NORMAL, TRISTATE, INPUT), #endif @@ -311,12 +311,12 @@ static __initdata struct tegra_pingroup_config colibri_t30_pinmux[] = { //multiplexed SDMMC4.B #ifdef COLIBRI_T30_SDMMC4B - DEFAULT_PINMUX(KB_ROW10, KBC, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(KB_ROW11, KBC, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(KB_ROW12, KBC, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(KB_ROW13, KBC, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(KB_ROW14, KBC, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(KB_ROW15, KBC, NORMAL, TRISTATE, INPUT), + DEFAULT_PINMUX(KB_ROW10, KBC, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(KB_ROW11, KBC, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(KB_ROW12, KBC, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(KB_ROW13, KBC, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(KB_ROW14, KBC, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(KB_ROW15, KBC, NORMAL, TRISTATE, OUTPUT), #else DEFAULT_PINMUX(KB_ROW10, SDMMC2, NORMAL, NORMAL, INPUT), DEFAULT_PINMUX(KB_ROW11, SDMMC2, PULL_UP, NORMAL, INPUT), @@ -441,17 +441,17 @@ static __initdata struct tegra_pingroup_config colibri_t30_pinmux[] = { //eMMC #ifdef COLIBRI_T30_SDMMC4B - DEFAULT_PINMUX(SDMMC4_CLK, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_CMD, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT0, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT1, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT2, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT3, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT4, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT5, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT6, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_DAT7, SDMMC4, NORMAL, TRISTATE, INPUT), - DEFAULT_PINMUX(SDMMC4_RST_N, RSVD1, NORMAL, TRISTATE, INPUT), + DEFAULT_PINMUX(SDMMC4_CLK, NAND, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_CMD, NAND, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT0, GMI, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT1, GMI, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT2, GMI, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT3, GMI, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT4, GMI, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT5, VGP3, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT6, VGP4, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_DAT7, VGP5, NORMAL, TRISTATE, OUTPUT), + DEFAULT_PINMUX(SDMMC4_RST_N, RSVD1, NORMAL, TRISTATE, OUTPUT), #else /* COLIBRI_T30_SDMMC4B */ DEFAULT_PINMUX(SDMMC4_CLK, SDMMC4, NORMAL, NORMAL, INPUT), DEFAULT_PINMUX(SDMMC4_CMD, SDMMC4, PULL_UP, NORMAL, INPUT), -- cgit v1.2.3