mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
43 lines
1.5 KiB
Diff
43 lines
1.5 KiB
Diff
|
From 07fe64ba213f36ca8f6ffd8c4d5893f022744fdb Mon Sep 17 00:00:00 2001
|
||
|
From: Maxime Ripard <maxime.ripard@free-electrons.com>
|
||
|
Date: Tue, 11 Oct 2016 17:46:01 +0200
|
||
|
Subject: pinctrl: sunxi: Handle bias disable
|
||
|
|
||
|
So far, putting NO_PULL in allwinner,pull was ignored, behaving like if
|
||
|
that property was not there at all.
|
||
|
|
||
|
Obviously, this is not the right thing to do, and in that case, we really
|
||
|
need to just disable the bias.
|
||
|
|
||
|
Acked-by: Chen-Yu Tsai <wens@csie.org>
|
||
|
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
|
||
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||
|
---
|
||
|
drivers/pinctrl/sunxi/pinctrl-sunxi.c | 8 ++++++++
|
||
|
1 file changed, 8 insertions(+)
|
||
|
|
||
|
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
|
||
|
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
|
||
|
@@ -165,6 +165,8 @@ static int sunxi_pctrl_parse_bias_prop(s
|
||
|
return -EINVAL;
|
||
|
|
||
|
switch (val) {
|
||
|
+ case SUN4I_PINCTRL_NO_PULL:
|
||
|
+ return PIN_CONFIG_BIAS_DISABLE;
|
||
|
case SUN4I_PINCTRL_PULL_UP:
|
||
|
return PIN_CONFIG_BIAS_PULL_UP;
|
||
|
case SUN4I_PINCTRL_PULL_DOWN:
|
||
|
@@ -401,6 +403,12 @@ static int sunxi_pconf_group_set(struct
|
||
|
| dlevel << sunxi_dlevel_offset(pin),
|
||
|
pctl->membase + sunxi_dlevel_reg(pin));
|
||
|
break;
|
||
|
+ case PIN_CONFIG_BIAS_DISABLE:
|
||
|
+ val = readl(pctl->membase + sunxi_pull_reg(pin));
|
||
|
+ mask = PULL_PINS_MASK << sunxi_pull_offset(pin);
|
||
|
+ writel((val & ~mask),
|
||
|
+ pctl->membase + sunxi_pull_reg(pin));
|
||
|
+ break;
|
||
|
case PIN_CONFIG_BIAS_PULL_UP:
|
||
|
val = readl(pctl->membase + sunxi_pull_reg(pin));
|
||
|
mask = PULL_PINS_MASK << sunxi_pull_offset(pin);
|