[PATCH] 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 --- Hi Anton, Otto,
This should fix eMMC booting on Odroid-C2, could you have a quick try to confirm ?
Thanks, Neil
drivers/pinctrl/meson/pinctrl-meson.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
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, ®, &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; }

Hi Neil,
I tested it and it does fix the issue. I am able to boot from eMMC.
Thanks a lot! Anton
On Mon, Dec 14, 2020 at 7:48 PM Neil Armstrong narmstrong@baylibre.com wrote:
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
Hi Anton, Otto,
This should fix eMMC booting on Odroid-C2, could you have a quick try to confirm ?
Thanks, Neil
drivers/pinctrl/meson/pinctrl-meson.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
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, ®, &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;
}
2.25.1

On 14/12/2020 21:48, Anton Arapov wrote:
Hi Neil,
I tested it and it does fix the issue. I am able to boot from eMMC.
Thanks a lot! Anton
On Mon, Dec 14, 2020 at 7:48 PM Neil Armstrong narmstrong@baylibre.com wrote:
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
Hi Anton, Otto,
This should fix eMMC booting on Odroid-C2, could you have a quick try to confirm ?
Thanks, Neil
drivers/pinctrl/meson/pinctrl-meson.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
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, ®, &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;
}
2.25.1
Thanks for testing !
Applied to u-boot-amlogic
Neil

Hi,
I tested it also with newest U-boot DMI: Hardkernel Co., Ltd. ODROID-C2/ODROID-C2, BIOS 2021.01-rc3-00134-gf40825e18e-dirty 12/15/2020
and it definitly fixes the emmc boot issue.
Am 15.12.20 um 08:52 schrieb Neil Armstrong:
On 14/12/2020 21:48, Anton Arapov wrote:
Hi Neil,
I tested it and it does fix the issue. I am able to boot from eMMC.
Thanks a lot! Anton
On Mon, Dec 14, 2020 at 7:48 PM Neil Armstrong narmstrong@baylibre.com wrote:
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
Hi Anton, Otto,
This should fix eMMC booting on Odroid-C2, could you have a quick try to confirm ?
Thanks, Neil
drivers/pinctrl/meson/pinctrl-meson.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
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, ®, &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;
}
-- 2.25.1
Thanks for testing !
Applied to u-boot-amlogic
Neil
Thank you very much for this correct fix.
Best regards Otto
participants (3)
-
Anton Arapov
-
Neil Armstrong
-
Otto Meier