pinctrl: sunxi: Fix PIN_CONFIG_BIAS_PULL_{DOWN,UP} argument
authorChen-Yu Tsai <wens@csie.org>
Fri, 11 Nov 2016 09:50:34 +0000 (17:50 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 15 Nov 2016 09:17:45 +0000 (10:17 +0100)
According to pinconf-generic.h, the argument for
PIN_CONFIG_BIAS_PULL_{DOWN,UP} is non-zero if the bias is enabled
with a pull up/down resistor, zero if it is directly connected
to VDD or ground.

Since Allwinner hardware uses a weak pull resistor internally,
the argument should be 1.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/sunxi/pinctrl-sunxi.c

index e199d95af8c02c84bf396507287b21b0281ef49e..e04edda8629d52849809c9c096905b1f169e14e5 100644 (file)
@@ -291,12 +291,16 @@ static unsigned long *sunxi_pctrl_build_pin_config(struct device_node *node,
 
        if (sunxi_pctrl_has_bias_prop(node)) {
                int pull = sunxi_pctrl_parse_bias_prop(node);
+               int arg = 0;
                if (pull < 0) {
                        ret = pull;
                        goto err_free;
                }
 
-               pinconfig[idx++] = pinconf_to_config_packed(pull, 0);
+               if (pull != PIN_CONFIG_BIAS_DISABLE)
+                       arg = 1; /* hardware uses weak pull resistors */
+
+               pinconfig[idx++] = pinconf_to_config_packed(pull, arg);
        }