diff options
author | Stephen Boyd <sboyd@codeaurora.org> | 2014-03-07 01:44:46 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2014-03-12 10:12:29 -0400 |
commit | 051a58b4622f0e1b732acb750097c64bc00ddb93 (patch) | |
tree | bf61f73068a9c67b52ae8b7e705c80a2179474e1 | |
parent | 1a0840ae0370a532dcd86cfb2be8d5a8e5877cd9 (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.c | 29 |
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 = { | |||
200 | static int msm_config_reg(struct msm_pinctrl *pctrl, | 200 | static 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, ®, &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, ®, &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 | ||