diff options
author | Kerwin Wan <kerwinw@nvidia.com> | 2014-06-20 13:46:41 +0800 |
---|---|---|
committer | Mandar Padmawar <mpadmawar@nvidia.com> | 2014-06-23 02:10:23 -0700 |
commit | 6dd2efb24c3c23bd365f54bab20e0b3811ca6067 (patch) | |
tree | e726b42b5cb8c332bf4794f03f5522cdedd18b9c /drivers/pinctrl | |
parent | 397ce28d1841853103bc028080dfb00656211b9e (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.c | 7 |
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); |