pinctrl: single: fix bias pull up/down handling in pin_config_set
authorChi Zhang <chizhang@asrmicro.com>
Thu, 7 Aug 2025 06:20:38 +0000 (14:20 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 18 Aug 2025 15:25:05 +0000 (17:25 +0200)
commit236152dd9b1675a35eee912e79e6c57ca6b6732f
tree2089e74b5210b2d1c9113dd20f8d0940e80d36b7
parent694a97ee25581630f70773d160fcc2364afe98c8
pinctrl: single: fix bias pull up/down handling in pin_config_set

In the pin_config_set function, when handling PIN_CONFIG_BIAS_PULL_DOWN or
PIN_CONFIG_BIAS_PULL_UP, the function calls pcs_pinconf_clear_bias()
which writes the register. However, the subsequent operations continue
using the stale 'data' value from before the register write, effectively
causing the bias clear operation to be overwritten and not take effect.

Fix this by reading the 'data' value from the register after calling
pcs_pinconf_clear_bias().

This bug seems to have existed when this code was first merged in commit
9dddb4df90d1 ("pinctrl: single: support generic pinconf").

Signed-off-by: Chi Zhang <chizhang@asrmicro.com>
Link: https://lore.kernel.org/20250807062038.13610-1-chizhang@asrmicro.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-single.c