From: Neil Armstrong <narmstrong@baylibre.com>
Date: Mon, 14 Dec 2020 18:39:07 +0000 (+0100)
Subject: pinctrl: meson: fix bit manipulation of pin bias configuration
X-Git-Tag: v2025.01-rc5-pxa1908~2100^2
X-Git-Url: http://git.dujemihanovic.xyz/%22/icons/right.gif/static/%7B%7B%20.Permalink%20%7D%7D?a=commitdiff_plain;h=5ccd5d2cc98224108ae9fb09593a862c9caa5e80;p=u-boot.git

pinctrl: meson: fix bit manipulation of pin bias configuration

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>
---

diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index d4539b02d8..5065b62436 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -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;
 }