mirror of
https://github.com/torvalds/linux.git
synced 2024-11-05 03:21:32 +00:00
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>
This commit is contained in:
parent
1a0840ae03
commit
051a58b462
@ -200,28 +200,17 @@ static const struct pinmux_ops msm_pinmux_ops = {
|
||||
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;
|
||||
@ -235,12 +224,6 @@ static int msm_config_reg(struct msm_pinctrl *pctrl,
|
||||
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;
|
||||
}
|
||||
|
||||
@ -278,17 +261,16 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
|
||||
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 */
|
||||
@ -336,7 +318,6 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
|
||||
unsigned mask;
|
||||
unsigned arg;
|
||||
unsigned bit;
|
||||
s16 reg;
|
||||
int ret;
|
||||
u32 val;
|
||||
int i;
|
||||
@ -347,7 +328,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
|
||||
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;
|
||||
|
||||
@ -396,10 +377,10 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user