diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2010-05-27 19:04:18 +0530 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-06-07 20:17:14 -0700 |
commit | 4f75652585f8cdec87ef6b959747b3b0a4603ba2 (patch) | |
tree | fd84e4a926ae2066903202a897364661f85d5423 /arch | |
parent | a4193e2ab7add3bf656198eb88b38cc2399ce57e (diff) |
[ARM/tegra] nvrm: handle 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.
Change-Id: I2869fedfaa9c47cd9af18581dc1555966138f145
Reviewed-on: http://git-master/r/2242
Reviewed-by: Gary King <gking@nvidia.com>
Tested-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r-- | 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 c792010a0849..dfcc20a70658 100644 --- 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); } } } |