summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-harmony-pinmux.c
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2011-06-21 13:25:21 -0600
committerDan Willemsen <dwillemsen@nvidia.com>2012-03-23 20:55:19 -0700
commita42e1be6c42360b3787f6153d202927d4a78b28a (patch)
tree8b6e17388a49ae532d7d3151c0a9bb5b88619dd7 /arch/arm/mach-tegra/board-harmony-pinmux.c
parented23d602876474884e18ca8fb20d0afcb0d70a1a (diff)
ARM: Tegra: Harmony: Fix I2C timeouts during boot
I2C device drivers can include a list of known addresses for the device. When an I2C bus driver or I2C device driver is registered, whichever is later, the I2C core will probe each of these addresses to see if a supported device is present. If an I2C bus is not correctly configured in HW (pinmux'd out to actual pins, and those pins pulled up), then I2C accesses to non-existent devices may hang, since the I2C signals will not "generate" a NAK, and hence in generate an incorrect ACK. This causes the aforementioned probing to time out rather than immediately generate a NAK. This significantly slows the kernel boot process. This change fixes all I2C busses to be correctly configured in HW such that these timeouts will not occur. Signed-off-by: Stephen Warren <swarren@nvidia.com> Change-Id: I9d223bcf1a99d4ea2fed1cb5de9705c1814e30fd Rebase-Id: R70d4ea020084d87f33220aa98c06b60bebffdab1
Diffstat (limited to 'arch/arm/mach-tegra/board-harmony-pinmux.c')
-rw-r--r--arch/arm/mach-tegra/board-harmony-pinmux.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/board-harmony-pinmux.c b/arch/arm/mach-tegra/board-harmony-pinmux.c
index 02664c5bf0de..c7019e129ec0 100644
--- a/arch/arm/mach-tegra/board-harmony-pinmux.c
+++ b/arch/arm/mach-tegra/board-harmony-pinmux.c
@@ -46,7 +46,7 @@ static __initdata struct tegra_pingroup_config harmony_pinmux[] = {
{TEGRA_PINGROUP_DTC, TEGRA_MUX_RSVD1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_DTD, TEGRA_MUX_SDIO2, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_DTE, TEGRA_MUX_RSVD1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
- {TEGRA_PINGROUP_DTF, TEGRA_MUX_I2C3, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
+ {TEGRA_PINGROUP_DTF, TEGRA_MUX_I2C3, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_GMA, TEGRA_MUX_SDIO4, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_GMB, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_GMC, TEGRA_MUX_UARTD, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
@@ -107,7 +107,7 @@ static __initdata struct tegra_pingroup_config harmony_pinmux[] = {
{TEGRA_PINGROUP_LVS, TEGRA_MUX_DISPLAYA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_OWC, TEGRA_MUX_RSVD2, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_PMC, TEGRA_MUX_PWR_ON, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
- {TEGRA_PINGROUP_PTA, TEGRA_MUX_HDMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
+ {TEGRA_PINGROUP_PTA, TEGRA_MUX_HDMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_RM, TEGRA_MUX_I2C, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_SDB, TEGRA_MUX_PWM, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SDC, TEGRA_MUX_PWM, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},