summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorJunhui Liu <junhui.liu@pigmoral.tech>2026-03-12 16:42:42 +0800
committerLinus Walleij <linusw@kernel.org>2026-03-19 13:52:56 +0100
commitc3b0c06b73974d75c640a4ebc8678f8538654e5a (patch)
tree01853be4bfa36b7e452db4b0636fc5a6b8ea15a0 /drivers/pinctrl
parent9ba4ef6847ba53dea92efce47c9e044fbf6d6dcf (diff)
downloadlinux-next-c3b0c06b73974d75c640a4ebc8678f8538654e5a.tar.gz
linux-next-c3b0c06b73974d75c640a4ebc8678f8538654e5a.zip
pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
Return -ENOTSUPP instead of -EINVAL when encountering unsupported pin configuration parameters. This is more logical and allows the GPIO subsystem to gracefully handle unsupported parameters via functions like gpio_set_config_with_argument_optional(), which specifically ignores -ENOTSUPP but treats others as failure. Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech> Reviewed-by: Anand Moon <linux.amoon@gmail.com> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Yixun Lan <dlan@kernel.org> Signed-off-by: Linus Walleij <linusw@kernel.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/spacemit/pinctrl-k1.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacemit/pinctrl-k1.c
index 62cab6f6cd0a..b0be62b1c816 100644
--- a/drivers/pinctrl/spacemit/pinctrl-k1.c
+++ b/drivers/pinctrl/spacemit/pinctrl-k1.c
@@ -674,7 +674,7 @@ static int spacemit_pinconf_get(struct pinctrl_dev *pctldev,
arg = 0;
break;
default:
- return -EINVAL;
+ return -ENOTSUPP;
}
*config = pinconf_to_config_packed(param, arg);
@@ -740,7 +740,7 @@ static int spacemit_pinconf_generate_config(struct spacemit_pinctrl *pctrl,
}
break;
default:
- return -EINVAL;
+ return -ENOTSUPP;
}
}
@@ -814,10 +814,12 @@ static int spacemit_pinconf_set(struct pinctrl_dev *pctldev,
struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);
const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin);
u32 value;
+ int ret;
- if (spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
- configs, num_configs, &value))
- return -EINVAL;
+ ret = spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
+ configs, num_configs, &value);
+ if (ret)
+ return ret;
return spacemit_pin_set_config(pctrl, pin, value);
}
@@ -831,16 +833,17 @@ static int spacemit_pinconf_group_set(struct pinctrl_dev *pctldev,
const struct spacemit_pin *spin;
const struct group_desc *group;
u32 value;
- int i;
+ int i, ret;
group = pinctrl_generic_get_group(pctldev, gsel);
if (!group)
return -EINVAL;
spin = spacemit_get_pin(pctrl, group->grp.pins[0]);
- if (spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
- configs, num_configs, &value))
- return -EINVAL;
+ ret = spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
+ configs, num_configs, &value);
+ if (ret)
+ return ret;
for (i = 0; i < group->grp.npins; i++)
spacemit_pin_set_config(pctrl, group->grp.pins[i], value);