summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2010-05-27 19:04:18 +0530
committerGary King <gking@nvidia.com>2010-06-07 20:17:14 -0700
commit4f75652585f8cdec87ef6b959747b3b0a4603ba2 (patch)
treefd84e4a926ae2066903202a897364661f85d5423 /arch
parenta4193e2ab7add3bf656198eb88b38cc2399ce57e (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.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 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);
}
}
}