diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2015-02-27 12:38:02 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2015-03-09 13:10:56 -0400 |
commit | 05c5f265c6f72750d2a60f75ff3cfefe47379210 (patch) | |
tree | e5da0868abe619f969c6df7c78f53efc3d7a4041 | |
parent | eaef1279fa349db0cbec953e745d91db019a729e (diff) |
pinctrl: sh-pfc: Do not overwrite bias configuration
After the last user of the in_pd/in_pu bias parameters of the _PCRH()
macro was removed in commit 80da8e02d22caaef ("sh-pfc: r8a7740: Add bias
(pull-up/down) pinconf support"), bias parameters are supposed to be
configured using the generic pinctl mechanism, which calls the
.set_bias() method.
However, the PORTCR() macro still represents the control register as
consisting of two 4-bit fields. Hence the bias configuration in the
uppermost 2 bits is always overwritten with zeroes when a pin is
configured for GPIO, disabling any previously configured bias.
Use the variable config register macro instead, to represent the
register as having 4 fields, and to make sure only the input/output
control and function fields are touched.
This affects R-Mobile APE6 (r8a73a4), R-Mobile A1 (r8a7740), SH-Mobile
AP4 (sh7372), and SH-Mobile AG5 (sh73a0).
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/pinctrl/sh-pfc/sh_pfc.h | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/drivers/pinctrl/sh-pfc/sh_pfc.h b/drivers/pinctrl/sh-pfc/sh_pfc.h index c83728626906..ed5cf4192fa1 100644 --- a/drivers/pinctrl/sh-pfc/sh_pfc.h +++ b/drivers/pinctrl/sh-pfc/sh_pfc.h | |||
@@ -302,20 +302,21 @@ struct sh_pfc_soc_info { | |||
302 | /* | 302 | /* |
303 | * PORTnCR macro | 303 | * PORTnCR macro |
304 | */ | 304 | */ |
305 | #define _PCRH(in, in_pd, in_pu, out) \ | ||
306 | 0, (out), (in), 0, \ | ||
307 | 0, 0, 0, 0, \ | ||
308 | 0, 0, (in_pd), 0, \ | ||
309 | 0, 0, (in_pu), 0 | ||
310 | |||
311 | #define PORTCR(nr, reg) \ | 305 | #define PORTCR(nr, reg) \ |
312 | { \ | 306 | { \ |
313 | PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \ | 307 | PINMUX_CFG_REG_VAR("PORT" nr "CR", reg, 8, 2, 2, 1, 3) {\ |
314 | _PCRH(PORT##nr##_IN, 0, 0, PORT##nr##_OUT), \ | 308 | /* PULMD[1:0], handled by .set_bias() */ \ |
315 | PORT##nr##_FN0, PORT##nr##_FN1, \ | 309 | 0, 0, 0, 0, \ |
316 | PORT##nr##_FN2, PORT##nr##_FN3, \ | 310 | /* IE and OE */ \ |
317 | PORT##nr##_FN4, PORT##nr##_FN5, \ | 311 | 0, PORT##nr##_OUT, PORT##nr##_IN, 0, \ |
318 | PORT##nr##_FN6, PORT##nr##_FN7 } \ | 312 | /* SEC, not supported */ \ |
313 | 0, 0, \ | ||
314 | /* PTMD[2:0] */ \ | ||
315 | PORT##nr##_FN0, PORT##nr##_FN1, \ | ||
316 | PORT##nr##_FN2, PORT##nr##_FN3, \ | ||
317 | PORT##nr##_FN4, PORT##nr##_FN5, \ | ||
318 | PORT##nr##_FN6, PORT##nr##_FN7 \ | ||
319 | } \ | ||
319 | } | 320 | } |
320 | 321 | ||
321 | #endif /* __SH_PFC_H */ | 322 | #endif /* __SH_PFC_H */ |