|
@@ -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);
|
|
|
}
|
|
|
|