111 lines
2.9 KiB
Diff
111 lines
2.9 KiB
Diff
From 2d9ffb1a3f87396c3b792124870ef63fc27c568f Mon Sep 17 00:00:00 2001
|
|
From: Stephen Boyd <sboyd@codeaurora.org>
|
|
Date: Thu, 6 Mar 2014 22:44:46 -0800
|
|
Subject: [PATCH 032/182] pinctrl: msm: Simplify msm_config_reg() and callers
|
|
|
|
We don't need to check for a negative reg here because reg is
|
|
always the same and is always non-negative. Also, collapse the
|
|
switch statement down for the duplicate cases.
|
|
|
|
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
|
Acked-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
---
|
|
drivers/pinctrl/pinctrl-msm.c | 29 +++++------------------------
|
|
1 file changed, 5 insertions(+), 24 deletions(-)
|
|
|
|
--- a/drivers/pinctrl/pinctrl-msm.c
|
|
+++ b/drivers/pinctrl/pinctrl-msm.c
|
|
@@ -200,28 +200,17 @@ static const struct pinmux_ops msm_pinmu
|
|
static int msm_config_reg(struct msm_pinctrl *pctrl,
|
|
const struct msm_pingroup *g,
|
|
unsigned param,
|
|
- s16 *reg,
|
|
unsigned *mask,
|
|
unsigned *bit)
|
|
{
|
|
switch (param) {
|
|
case PIN_CONFIG_BIAS_DISABLE:
|
|
- *reg = g->ctl_reg;
|
|
- *bit = g->pull_bit;
|
|
- *mask = 3;
|
|
- break;
|
|
case PIN_CONFIG_BIAS_PULL_DOWN:
|
|
- *reg = g->ctl_reg;
|
|
- *bit = g->pull_bit;
|
|
- *mask = 3;
|
|
- break;
|
|
case PIN_CONFIG_BIAS_PULL_UP:
|
|
- *reg = g->ctl_reg;
|
|
*bit = g->pull_bit;
|
|
*mask = 3;
|
|
break;
|
|
case PIN_CONFIG_DRIVE_STRENGTH:
|
|
- *reg = g->ctl_reg;
|
|
*bit = g->drv_bit;
|
|
*mask = 7;
|
|
break;
|
|
@@ -230,12 +219,6 @@ static int msm_config_reg(struct msm_pin
|
|
return -ENOTSUPP;
|
|
}
|
|
|
|
- if (*reg < 0) {
|
|
- dev_err(pctrl->dev, "Config param %04x not supported on group %s\n",
|
|
- param, g->name);
|
|
- return -ENOTSUPP;
|
|
- }
|
|
-
|
|
return 0;
|
|
}
|
|
|
|
@@ -273,17 +256,16 @@ static int msm_config_group_get(struct p
|
|
unsigned mask;
|
|
unsigned arg;
|
|
unsigned bit;
|
|
- s16 reg;
|
|
int ret;
|
|
u32 val;
|
|
|
|
g = &pctrl->soc->groups[group];
|
|
|
|
- ret = msm_config_reg(pctrl, g, param, ®, &mask, &bit);
|
|
+ ret = msm_config_reg(pctrl, g, param, &mask, &bit);
|
|
if (ret < 0)
|
|
return ret;
|
|
|
|
- val = readl(pctrl->regs + reg);
|
|
+ val = readl(pctrl->regs + g->ctl_reg);
|
|
arg = (val >> bit) & mask;
|
|
|
|
/* Convert register value to pinconf value */
|
|
@@ -323,7 +305,6 @@ static int msm_config_group_set(struct p
|
|
unsigned mask;
|
|
unsigned arg;
|
|
unsigned bit;
|
|
- s16 reg;
|
|
int ret;
|
|
u32 val;
|
|
int i;
|
|
@@ -334,7 +315,7 @@ static int msm_config_group_set(struct p
|
|
param = pinconf_to_config_param(configs[i]);
|
|
arg = pinconf_to_config_argument(configs[i]);
|
|
|
|
- ret = msm_config_reg(pctrl, g, param, ®, &mask, &bit);
|
|
+ ret = msm_config_reg(pctrl, g, param, &mask, &bit);
|
|
if (ret < 0)
|
|
return ret;
|
|
|
|
@@ -369,10 +350,10 @@ static int msm_config_group_set(struct p
|
|
}
|
|
|
|
spin_lock_irqsave(&pctrl->lock, flags);
|
|
- val = readl(pctrl->regs + reg);
|
|
+ val = readl(pctrl->regs + g->ctl_reg);
|
|
val &= ~(mask << bit);
|
|
val |= arg << bit;
|
|
- writel(val, pctrl->regs + reg);
|
|
+ writel(val, pctrl->regs + g->ctl_reg);
|
|
spin_unlock_irqrestore(&pctrl->lock, flags);
|
|
}
|
|
|