pinctrl: renesas: rzg2l: Return -EINVAL if the pin doesn't support PIN_CFG_OEN
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Tue, 23 Jul 2024 16:47:44 +0000 (17:47 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 2 Aug 2024 09:25:31 +0000 (11:25 +0200)
Update the rzg2l_pinctrl_pinconf_get() function to return -EINVAL for
PIN_CONFIG_OUTPUT_ENABLE config if the pin doesn't support the PIN_CFG_OEN
configuration.

-EINVAL is a valid error when dumping the pin configurations. Returning
-EOPNOTSUPP for a pin that does not support PIN_CFG_OEN resulted in the
message 'ERROR READING CONFIG SETTING 16' being printed during dumping
pinconf-pins.

For consistency do similar change in rzg2l_pinctrl_pinconf_set() for
PIN_CONFIG_OUTPUT_ENABLE config.

Fixes: a9024a323af2 ("pinctrl: renesas: rzg2l: Clean up and refactor OEN read/write functions")
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Tested-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20240723164744.505233-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/pinctrl/renesas/pinctrl-rzg2l.c

index 6321805..3ef20f2 100644 (file)
@@ -1261,7 +1261,9 @@ static int rzg2l_pinctrl_pinconf_get(struct pinctrl_dev *pctldev,
                break;
 
        case PIN_CONFIG_OUTPUT_ENABLE:
-               if (!pctrl->data->oen_read || !(cfg & PIN_CFG_OEN))
+               if (!(cfg & PIN_CFG_OEN))
+                       return -EINVAL;
+               if (!pctrl->data->oen_read)
                        return -EOPNOTSUPP;
                arg = pctrl->data->oen_read(pctrl, _pin);
                if (!arg)
@@ -1402,7 +1404,9 @@ static int rzg2l_pinctrl_pinconf_set(struct pinctrl_dev *pctldev,
 
                case PIN_CONFIG_OUTPUT_ENABLE:
                        arg = pinconf_to_config_argument(_configs[i]);
-                       if (!pctrl->data->oen_write || !(cfg & PIN_CFG_OEN))
+                       if (!(cfg & PIN_CFG_OEN))
+                               return -EINVAL;
+                       if (!pctrl->data->oen_write)
                                return -EOPNOTSUPP;
                        ret = pctrl->data->oen_write(pctrl, _pin, !!arg);
                        if (ret)