Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 051a58b4 authored by Stephen Boyd's avatar Stephen Boyd Committed by Linus Walleij
Browse files

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: default avatarStephen Boyd <sboyd@codeaurora.org>
Acked-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 1a0840ae
Loading
Loading
Loading
Loading
+5 −24
Original line number Diff line number Diff line
@@ -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, &reg, &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, &reg, &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);
	}