diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2010-05-27 19:04:18 +0530 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-05-29 14:04:05 -0700 |
commit | 656ecf6fc28aa39f6bd5ae6ca3abbdcfd13cf104 (patch) | |
tree | 8f455ba23eb48d8a6639ec8715d2bfdb825f679c | |
parent | 7aefa6254a6cd672c962c4ff5e6f37874aef0109 (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-x | arch/arm/mach-tegra/nvrm/core/common/nvrm_pinmux.c | 14 |
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); } } } |