summaryrefslogtreecommitdiff
path: root/drivers/pinctrl/pinctrl-scmi.c
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@linaro.org>2026-03-23 22:01:22 +0300
committerLinus Walleij <linusw@kernel.org>2026-03-24 13:50:30 +0100
commitf20e81322f3a071db248f050c32713b503ae1fa4 (patch)
treedc366d1fd143442362c721a653ac0308d0a098d2 /drivers/pinctrl/pinctrl-scmi.c
parent37a584414d9ceca48f4367dcb829bf9dc6015988 (diff)
downloadlinux-next-f20e81322f3a071db248f050c32713b503ae1fa4.tar.gz
linux-next-f20e81322f3a071db248f050c32713b503ae1fa4.zip
pinctrl: scmi: ignore PIN_CONFIG_PERSIST_STATE
The PIN_CONFIG_PERSIST_STATE setting ensures that the pin state persists across a sleep or controller reset. The SCMI spec does not have an equivalent command to this so just ignore it. Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Linus Walleij <linusw@kernel.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-scmi.c')
-rw-r--r--drivers/pinctrl/pinctrl-scmi.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/pinctrl/pinctrl-scmi.c b/drivers/pinctrl/pinctrl-scmi.c
index de8c113bc61d..f22be6b7b82a 100644
--- a/drivers/pinctrl/pinctrl-scmi.c
+++ b/drivers/pinctrl/pinctrl-scmi.c
@@ -361,7 +361,7 @@ static int pinctrl_scmi_pinconf_set(struct pinctrl_dev *pctldev,
unsigned long *configs,
unsigned int num_configs)
{
- int i, ret;
+ int i, cnt, ret;
struct scmi_pinctrl *pmx = pinctrl_dev_get_drvdata(pctldev);
enum scmi_pinctrl_conf_type config_type[SCMI_NUM_CONFIGS];
u32 config_value[SCMI_NUM_CONFIGS];
@@ -377,17 +377,21 @@ static int pinctrl_scmi_pinconf_set(struct pinctrl_dev *pctldev,
if (ret)
return ret;
+ cnt = 0;
for (i = 0; i < num_configs; i++) {
param = pinconf_to_config_param(configs[i]);
- ret = pinctrl_scmi_map_pinconf_type_set(param, &p_config_type[i]);
+ if (param == PIN_CONFIG_PERSIST_STATE)
+ continue;
+ ret = pinctrl_scmi_map_pinconf_type_set(param, &p_config_type[cnt]);
if (ret) {
dev_err(pmx->dev, "Error map pinconf_type %d\n", ret);
goto free_config;
}
- p_config_value[i] = pinconf_to_config_argument(configs[i]);
+ p_config_value[cnt] = pinconf_to_config_argument(configs[i]);
+ cnt++;
}
- ret = pinctrl_ops->settings_conf(pmx->ph, pin, PIN_TYPE, num_configs,
+ ret = pinctrl_ops->settings_conf(pmx->ph, pin, PIN_TYPE, cnt,
p_config_type, p_config_value);
if (ret)
dev_err(pmx->dev, "Error parsing config %d\n", ret);