summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtiste Hsu <chhsu@nvidia.com>2011-07-18 14:41:58 +0800
committerManish Tuteja <mtuteja@nvidia.com>2011-07-20 03:45:19 -0700
commit2f0bf1bcfce76eb5ea460e32dd2eb826695718c8 (patch)
tree4a4d20ac6fdf601cbef92ed6fae5194b5f579070
parent835196496da8c426d1a7d6342faf525c900ea81f (diff)
ARM: tegra: das: Add port check before set DAP tristate
If tagra_dap_port_info_table.dac_port is tegra_das_port_none, das_set_pin_state() should not control tri-state for the DAP pingroup. Bug 824362 Change-Id: Id48945c21c0e383f5b43cc62ccc610af3a0fd2ee Signed-off-by: Artiste Hsu <chhsu@nvidia.com> Change-Id: I13bc31f0935547a0446c4e300ed0089042822e26 Reviewed-on: http://git-master/r/41489 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Yu-Fong (Foster) Cho <ycho@nvidia.com> Reviewed-by: Scott Peterson <speterson@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/tegra_das.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/arch/arm/mach-tegra/tegra_das.c b/arch/arm/mach-tegra/tegra_das.c
index 8e67705fbeeb..46deb244dea5 100644
--- a/arch/arm/mach-tegra/tegra_das.c
+++ b/arch/arm/mach-tegra/tegra_das.c
@@ -245,31 +245,41 @@ static int das_set_dap_ms_mode(u32 dap_port_idx, bool is_master_mode)
static int das_set_pin_state(bool normal)
{
+ const struct tegra_dap_property *dap_info =
+ &das_drv_data->pdata->tegra_dap_port_info_table[0];
mutex_lock(&das_drv_data->mlock);
if (normal) {
if (das_drv_data->tristate_count == 0) {
/* Enable the DAP outputs */
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP1,
- TEGRA_TRI_NORMAL);
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP2,
- TEGRA_TRI_NORMAL);
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP3,
- TEGRA_TRI_NORMAL);
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP4,
- TEGRA_TRI_NORMAL);
+ if (dap_info[0].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP1,
+ TEGRA_TRI_NORMAL);
+ if (dap_info[1].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP2,
+ TEGRA_TRI_NORMAL);
+ if (dap_info[2].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP3,
+ TEGRA_TRI_NORMAL);
+ if (dap_info[3].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP4,
+ TEGRA_TRI_NORMAL);
}
das_drv_data->tristate_count++;
} else {
das_drv_data->tristate_count--;
/* Tristate the DAP pinmux */
if (das_drv_data->tristate_count == 0) {
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP1,
+ if (dap_info[0].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP1,
TEGRA_TRI_TRISTATE);
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP2,
+ if (dap_info[1].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP2,
TEGRA_TRI_TRISTATE);
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP3,
+ if (dap_info[2].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP3,
TEGRA_TRI_TRISTATE);
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP4,
+ if (dap_info[3].dap_port != tegra_das_port_none)
+ tegra_pinmux_set_tristate(TEGRA_PINGROUP_DAP4,
TEGRA_TRI_TRISTATE);
}
}