Commit f20e8132 authored by Dan Carpenter's avatar Dan Carpenter Committed by Linus Walleij
Browse files

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: default avatarDan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: default avatarLinus Walleij <linusw@kernel.org>
Signed-off-by: default avatarLinus Walleij <linusw@kernel.org>
parent 37a58441
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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);