aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@codeaurora.org>2014-03-07 01:44:46 -0500
committerLinus Walleij <linus.walleij@linaro.org>2014-03-12 10:12:29 -0400
commit051a58b4622f0e1b732acb750097c64bc00ddb93 (patch)
treebf61f73068a9c67b52ae8b7e705c80a2179474e1
parent1a0840ae0370a532dcd86cfb2be8d5a8e5877cd9 (diff)
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>
-rw-r--r--drivers/pinctrl/pinctrl-msm.c29
1 files changed, 5 insertions, 24 deletions
diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index b0417719a809..19d2feb0674f 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -200,28 +200,17 @@ static const struct pinmux_ops msm_pinmux_ops = {
200static int msm_config_reg(struct msm_pinctrl *pctrl, 200static int msm_config_reg(struct msm_pinctrl *pctrl,
201 const struct msm_pingroup *g, 201 const struct msm_pingroup *g,
202 unsigned param, 202 unsigned param,
203 s16 *reg,
204 unsigned *mask, 203 unsigned *mask,
205 unsigned *bit) 204 unsigned *bit)
206{ 205{
207 switch (param) { 206 switch (param) {
208 case PIN_CONFIG_BIAS_DISABLE: 207 case PIN_CONFIG_BIAS_DISABLE:
209 *reg = g->ctl_reg;
210 *bit = g->pull_bit;
211 *mask = 3;
212 break;
213 case PIN_CONFIG_BIAS_PULL_DOWN: 208 case PIN_CONFIG_BIAS_PULL_DOWN:
214 *reg = g->ctl_reg;
215 *bit = g->pull_bit;
216 *mask = 3;
217 break;
218 case PIN_CONFIG_BIAS_PULL_UP: 209 case PIN_CONFIG_BIAS_PULL_UP:
219 *reg = g->ctl_reg;
220 *bit = g->pull_bit; 210 *bit = g->pull_bit;
221 *mask = 3; 211 *mask = 3;
222 break; 212 break;
223 case PIN_CONFIG_DRIVE_STRENGTH: 213 case PIN_CONFIG_DRIVE_STRENGTH:
224 *reg = g->ctl_reg;
225 *bit = g->drv_bit; 214 *bit = g->drv_bit;
226 *mask = 7; 215 *mask = 7;
227 break; 216 break;
@@ -235,12 +224,6 @@ static int msm_config_reg(struct msm_pinctrl *pctrl,
235 return -ENOTSUPP; 224 return -ENOTSUPP;
236 } 225 }
237 226
238 if (*reg < 0) {
239 dev_err(pctrl->dev, "Config param %04x not supported on group %s\n",
240 param, g->name);
241 return -ENOTSUPP;
242 }
243
244 return 0; 227 return 0;
245} 228}
246 229
@@ -278,17 +261,16 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
278 unsigned mask; 261 unsigned mask;
279 unsigned arg; 262 unsigned arg;
280 unsigned bit; 263 unsigned bit;
281 s16 reg;
282 int ret; 264 int ret;
283 u32 val; 265 u32 val;
284 266
285 g = &pctrl->soc->groups[group]; 267 g = &pctrl->soc->groups[group];
286 268
287 ret = msm_config_reg(pctrl, g, param, &reg, &mask, &bit); 269 ret = msm_config_reg(pctrl, g, param, &mask, &bit);
288 if (ret < 0) 270 if (ret < 0)
289 return ret; 271 return ret;
290 272
291 val = readl(pctrl->regs + reg); 273 val = readl(pctrl->regs + g->ctl_reg);
292 arg = (val >> bit) & mask; 274 arg = (val >> bit) & mask;
293 275
294 /* Convert register value to pinconf value */ 276 /* Convert register value to pinconf value */
@@ -336,7 +318,6 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
336 unsigned mask; 318 unsigned mask;
337 unsigned arg; 319 unsigned arg;
338 unsigned bit; 320 unsigned bit;
339 s16 reg;
340 int ret; 321 int ret;
341 u32 val; 322 u32 val;
342 int i; 323 int i;
@@ -347,7 +328,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
347 param = pinconf_to_config_param(configs[i]); 328 param = pinconf_to_config_param(configs[i]);
348 arg = pinconf_to_config_argument(configs[i]); 329 arg = pinconf_to_config_argument(configs[i]);
349 330
350 ret = msm_config_reg(pctrl, g, param, &reg, &mask, &bit); 331 ret = msm_config_reg(pctrl, g, param, &mask, &bit);
351 if (ret < 0) 332 if (ret < 0)
352 return ret; 333 return ret;
353 334
@@ -396,10 +377,10 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
396 } 377 }
397 378
398 spin_lock_irqsave(&pctrl->lock, flags); 379 spin_lock_irqsave(&pctrl->lock, flags);
399 val = readl(pctrl->regs + reg); 380 val = readl(pctrl->regs + g->ctl_reg);
400 val &= ~(mask << bit); 381 val &= ~(mask << bit);
401 val |= arg << bit; 382 val |= arg << bit;
402 writel(val, pctrl->regs + reg); 383 writel(val, pctrl->regs + g->ctl_reg);
403 spin_unlock_irqrestore(&pctrl->lock, flags); 384 spin_unlock_irqrestore(&pctrl->lock, flags);
404 } 385 }
405 386