summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2010-05-27 19:04:18 +0530
committerGary King <gking@nvidia.com>2010-05-29 14:04:05 -0700
commit656ecf6fc28aa39f6bd5ae6ca3abbdcfd13cf104 (patch)
tree8f455ba23eb48d8a6639ec8715d2bfdb825f679c
parent7aefa6254a6cd672c962c4ff5e6f37874aef0109 (diff)
tegra: Handling multiplexed pin configuration properly.
In the multplexed pinmux option, it is require to unconfigure the current configured pinmux and need to move the pingroup to safe option. The function NvRmPinMuxConfigSelect() was not handling properly the request for selecting the multiplexed pinmux option. It is fixed now. Tested on harmony. Change-Id: If8f2585f4a499b89f72fd13c735ce8eb67e657c4 Reviewed-on: http://git-master/r/1717 Reviewed-by: Youngjin Kim <nkim@nvidia.com> Tested-by: Youngjin Kim <nkim@nvidia.com> Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
-rwxr-xr-xarch/arm/mach-tegra/nvrm/core/common/nvrm_pinmux.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/nvrm/core/common/nvrm_pinmux.c b/arch/arm/mach-tegra/nvrm/core/common/nvrm_pinmux.c
index 2c5ee2babbba..d5b277040271 100755
--- a/arch/arm/mach-tegra/nvrm/core/common/nvrm_pinmux.c
+++ b/arch/arm/mach-tegra/nvrm/core/common/nvrm_pinmux.c
@@ -327,6 +327,8 @@ void NvRmPinMuxConfigSelect(
{
struct tegra_pingroup_config *pin_config;
int len = 0;
+ NvU32 newConfiguration = Configuration;
+ int isNonMultiplexed = true;
NV_ASSERT(hDevice);
if (!hDevice)
@@ -334,13 +336,21 @@ void NvRmPinMuxConfigSelect(
if (Instance >= iomodule_devlist[IoModule].t_inst)
return;
+ /* For multiplexed config, get the 0 configuration and
+ Cancel the current setting */
+ if (Configuration == NVODM_QUERY_PINMAP_MULTIPLEXED)
+ {
+ newConfiguration = 0;
+ isNonMultiplexed = false;
+ }
+
if (iomodule_devlist[IoModule].dev_list[Instance] != NULL)
{
pin_config = tegra_pinmux_get(iomodule_devlist[IoModule].dev_list[Instance],
- Configuration, &len);
+ newConfiguration, &len);
if (pin_config != NULL)
{
- tegra_pinmux_config_pinmux_table(pin_config, len, true);
+ tegra_pinmux_config_pinmux_table(pin_config, len, isNonMultiplexed);
}
}
}