summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorKerwin Wan <kerwinw@nvidia.com>2014-06-20 13:46:41 +0800
committerMandar Padmawar <mpadmawar@nvidia.com>2014-06-23 02:10:23 -0700
commit6dd2efb24c3c23bd365f54bab20e0b3811ca6067 (patch)
treee726b42b5cb8c332bf4794f03f5522cdedd18b9c /drivers/pinctrl
parent397ce28d1841853103bc028080dfb00656211b9e (diff)
pinctrl: tegra: fix tegra_pinctrl_disable
The value written to mux_reg should be from 0 to 3 to select the proper function. Change-Id: Ie056189332c839588eeca1d210f264482a73995a Signed-off-by: Kerwin Wan <kerwinw@nvidia.com> Reviewed-on: http://git-master/r/426477 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pinctrl-tegra.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c
index cabdda69fe76..528b8c534413 100644
--- a/drivers/pinctrl/pinctrl-tegra.c
+++ b/drivers/pinctrl/pinctrl-tegra.c
@@ -415,6 +415,7 @@ static void tegra_pinctrl_disable(struct pinctrl_dev *pctldev,
const struct tegra_pingroup *g;
u32 val;
unsigned long flags;
+ int i;
g = &pmx->soc->groups[group];
@@ -425,7 +426,11 @@ static void tegra_pinctrl_disable(struct pinctrl_dev *pctldev,
val = pmx_readl(pmx, g->mux_bank, g->mux_reg);
val &= ~(0x3 << g->mux_bit);
- val |= g->func_safe << g->mux_bit;
+ for (i = 0; i < ARRAY_SIZE(g->funcs); i++) {
+ if (g->funcs[i] == g->func_safe)
+ break;
+ }
+ val |= i << g->mux_bit;
pmx_writel(pmx, val, g->mux_bank, g->mux_reg);
spin_unlock_irqrestore(&mux_lock, flags);