pinctrl: meson: fix bit manipulation of pin bias configuration
authorNeil Armstrong <narmstrong@baylibre.com>
Mon, 14 Dec 2020 18:39:07 +0000 (19:39 +0100)
committerNeil Armstrong <narmstrong@baylibre.com>
Mon, 14 Dec 2020 18:58:54 +0000 (19:58 +0100)
This fixes the wrong usage of clrsetbits_le32(), badly setting the set argument.

Fixes: c4c726c26b ("pinctrl: meson: add pinconf support")
Reported-by: Anton Arapov <arapov@gmail.com>
Reported-by: Otto Meier <gf435@gmx.net>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
drivers/pinctrl/meson/pinctrl-meson.c

index d4539b0..5065b62 100644 (file)
@@ -216,13 +216,13 @@ static int meson_pinconf_bias_set(struct udevice *dev, unsigned int pin,
        }
 
        /* othewise, enable the bias and select level */
-       clrsetbits_le32(priv->reg_pullen + reg, BIT(bit), 1);
+       clrsetbits_le32(priv->reg_pullen + reg, BIT(bit), BIT(bit));
        ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_PULL, &reg, &bit);
        if (ret)
                return ret;
 
        clrsetbits_le32(priv->reg_pull + reg, BIT(bit),
-                       param == PIN_CONFIG_BIAS_PULL_UP);
+                       (param == PIN_CONFIG_BIAS_PULL_UP ? BIT(bit) : 0));
 
        return 0;
 }