pinctrl: at91-pio4: Enable Push-Pull configuration
authorRyan Wanner <Ryan.Wanner@microchip.com>
Wed, 17 May 2023 11:54:04 +0000 (13:54 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 24 May 2023 08:49:41 +0000 (10:49 +0200)
Enable push-pull configuration. Remove integer value argument from
open-drain configuration as it is discarded when pinconf function is
called from gpiolib. Add push-pull do debug and get functions.

Signed-off-by: Ryan Wanner <Ryan.Wanner@microchip.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/d898c31277f6bce6f7d830edf4332ff605498c7b.1684313910.git.Ryan.Wanner@microchip.com
[Fix two coding style issues]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-at91-pio4.c

index 2fe40ac..d402ac4 100644 (file)
@@ -762,6 +762,11 @@ static int atmel_conf_pin_config_group_get(struct pinctrl_dev *pctldev,
                        return -EINVAL;
                arg = 1;
                break;
+       case PIN_CONFIG_DRIVE_PUSH_PULL:
+               if (res & ATMEL_PIO_OPD_MASK)
+                       return -EINVAL;
+               arg = 1;
+               break;
        case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
                if (!(res & ATMEL_PIO_SCHMITT_MASK))
                        return -EINVAL;
@@ -827,10 +832,10 @@ static int atmel_conf_pin_config_group_set(struct pinctrl_dev *pctldev,
                        conf &= (~ATMEL_PIO_PUEN_MASK);
                        break;
                case PIN_CONFIG_DRIVE_OPEN_DRAIN:
-                       if (arg == 0)
-                               conf &= (~ATMEL_PIO_OPD_MASK);
-                       else
-                               conf |= ATMEL_PIO_OPD_MASK;
+                       conf |= ATMEL_PIO_OPD_MASK;
+                       break;
+               case PIN_CONFIG_DRIVE_PUSH_PULL:
+                       conf &= ~ATMEL_PIO_OPD_MASK;
                        break;
                case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
                        if (arg == 0)
@@ -948,6 +953,8 @@ static void atmel_conf_pin_config_dbg_show(struct pinctrl_dev *pctldev,
                seq_printf(s, "%s ", "debounce");
        if (conf & ATMEL_PIO_OPD_MASK)
                seq_printf(s, "%s ", "open-drain");
+       else
+               seq_printf(s, "%s ", "push-pull");
        if (conf & ATMEL_PIO_SCHMITT_MASK)
                seq_printf(s, "%s ", "schmitt");
        if (atmel_pioctrl->slew_rate_support && (conf & ATMEL_PIO_SR_MASK))