summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2012-12-05 01:21:09 +0100
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2012-12-05 01:21:09 +0100
commitfb79dac2805ff303064c6c55e9b0a6d1e49d98a5 (patch)
treeba11cdfa1ccc8659431c58f3020427f0b0a12cd8
parentda3238b826f87e4825ecd860cf52e8dad1354eb1 (diff)
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.
-rw-r--r--arch/arm/mach-tegra/board-colibri_t30-pinmux.c44
1 files 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),