diff options
author | Wenyou Yang <wenyou.yang@atmel.com> | 2014-09-11 10:40:15 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2014-09-23 10:59:55 -0400 |
commit | 3d78427397daea47b5a38642f46f75ef993de571 (patch) | |
tree | cec67819ee95331748d6c128ee78565511a42a76 | |
parent | 7471725f618b95d2a61a4bf789dbdc5c7805ffa9 (diff) |
pinctrl: at91: disable PD or PU before enabling PU or PD
Disable Pull-Down or Pull-Up property before enabling Pull-Up or
Pull-Down, because the pin's Pull-Up and Pull-Down property is
mutually exclusive.
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/pinctrl/pinctrl-at91.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c index 51d094cc3f10..09de74964276 100644 --- a/drivers/pinctrl/pinctrl-at91.c +++ b/drivers/pinctrl/pinctrl-at91.c | |||
@@ -371,6 +371,9 @@ static unsigned at91_mux_get_pullup(void __iomem *pio, unsigned pin) | |||
371 | 371 | ||
372 | static void at91_mux_set_pullup(void __iomem *pio, unsigned mask, bool on) | 372 | static void at91_mux_set_pullup(void __iomem *pio, unsigned mask, bool on) |
373 | { | 373 | { |
374 | if (on) | ||
375 | writel_relaxed(mask, pio + PIO_PPDDR); | ||
376 | |||
374 | writel_relaxed(mask, pio + (on ? PIO_PUER : PIO_PUDR)); | 377 | writel_relaxed(mask, pio + (on ? PIO_PUER : PIO_PUDR)); |
375 | } | 378 | } |
376 | 379 | ||
@@ -499,6 +502,9 @@ static bool at91_mux_pio3_get_pulldown(void __iomem *pio, unsigned pin) | |||
499 | 502 | ||
500 | static void at91_mux_pio3_set_pulldown(void __iomem *pio, unsigned mask, bool is_on) | 503 | static void at91_mux_pio3_set_pulldown(void __iomem *pio, unsigned mask, bool is_on) |
501 | { | 504 | { |
505 | if (is_on) | ||
506 | __raw_writel(mask, pio + PIO_PUDR); | ||
507 | |||
502 | __raw_writel(mask, pio + (is_on ? PIO_PPDER : PIO_PPDDR)); | 508 | __raw_writel(mask, pio + (is_on ? PIO_PPDER : PIO_PPDDR)); |
503 | } | 509 | } |
504 | 510 | ||