]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pinctrl: renesas: rzg2l: Add support for configuring schmitt-trigger
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Fri, 4 Oct 2024 12:36:58 +0000 (13:36 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 14 Oct 2024 08:01:56 +0000 (10:01 +0200)
Add support for configuring the multiplexed pins as schmitt-trigger
inputs.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Link: https://lore.kernel.org/20241004123658.764557-4-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/pinctrl/renesas/pinctrl-rzg2l.c

index 8fbb27248160b96dd864f766a63eb9695d0729b1..5eefbace7d9122e0c56cd88ed5b6c2634e968158 100644 (file)
 #define PUPD(off)              (0x1C00 + (off) * 8)
 #define ISEL(off)              (0x2C00 + (off) * 8)
 #define NOD(off)               (0x3000 + (off) * 8)
+#define SMT(off)               (0x3400 + (off) * 8)
 #define SD_CH(off, ch)         ((off) + (ch) * 4)
 #define ETH_POC(off, ch)       ((off) + (ch) * 4)
 #define QSPI                   (0x3008)
 #define SR_MASK                        0x01
 #define PUPD_MASK              0x03
 #define NOD_MASK               0x01
+#define SMT_MASK               0x01
 
 #define PM_INPUT               0x1
 #define PM_OUTPUT              0x2
@@ -1352,6 +1354,15 @@ static int rzg2l_pinctrl_pinconf_get(struct pinctrl_dev *pctldev,
                        return -EINVAL;
                break;
 
+       case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
+               if (!(cfg & PIN_CFG_SMT))
+                       return -EINVAL;
+
+               arg = rzg2l_read_pin_config(pctrl, SMT(off), bit, SMT_MASK);
+               if (!arg)
+                       return -EINVAL;
+               break;
+
        case RENESAS_RZV2H_PIN_CONFIG_OUTPUT_IMPEDANCE:
                if (!(cfg & PIN_CFG_IOLH_RZV2H))
                        return -EINVAL;
@@ -1490,6 +1501,13 @@ static int rzg2l_pinctrl_pinconf_set(struct pinctrl_dev *pctldev,
                                             param == PIN_CONFIG_DRIVE_OPEN_DRAIN ? 1 : 0);
                        break;
 
+               case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
+                       if (!(cfg & PIN_CFG_SMT))
+                               return -EINVAL;
+
+                       rzg2l_rmw_pin_config(pctrl, SMT(off), bit, SMT_MASK, arg);
+                       break;
+
                case RENESAS_RZV2H_PIN_CONFIG_OUTPUT_IMPEDANCE:
                        if (!(cfg & PIN_CFG_IOLH_RZV2H))
                                return -EINVAL;