Fix pull-up/pull-down configuration to honor the argument parameter: when argument is non-zero, enable the requested pull direction; when argument is zero, clear all pull bits to disable.
Signed-off-by: Eric Chung <[email protected]> --- v6: - Fix pull-up/pull-down configuration. --- drivers/pinctrl/spacemit/pinctrl-k1.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacemit/pinctrl-k1.c index 6ed511879da..454bc307ba3 100644 --- a/drivers/pinctrl/spacemit/pinctrl-k1.c +++ b/drivers/pinctrl/spacemit/pinctrl-k1.c @@ -425,11 +425,17 @@ static int spacemit_pinconf_set(struct udevice *dev, unsigned int pin_selector, break; case PIN_CONFIG_BIAS_PULL_DOWN: mask = PAD_PULLDOWN | PAD_PULLUP | PAD_PULL_EN; - clrsetbits_le32(addr, mask, PAD_PULLDOWN | PAD_PULL_EN); + if (argument) + clrsetbits_le32(addr, mask, PAD_PULLDOWN | PAD_PULL_EN); + else + clrbits_le32(addr, PAD_PULLDOWN | PAD_PULL_EN); break; case PIN_CONFIG_BIAS_PULL_UP: mask = PAD_PULLDOWN | PAD_PULLUP | PAD_PULL_EN; - clrsetbits_le32(addr, mask, PAD_PULLUP | PAD_PULL_EN); + if (argument) + clrsetbits_le32(addr, mask, PAD_PULLUP | PAD_PULL_EN); + else + clrbits_le32(addr, PAD_PULLUP | PAD_PULL_EN); break; case PIN_CONFIG_DRIVE_STRENGTH: io_type = IO_TYPE_1V8; -- 2.51.0
