Merge branch 'ib-qcom-quad-spi' into devel

This commit is contained in:
Linus Walleij 2023-03-29 10:47:18 +02:00
commit 2a6ac65c94
2 changed files with 34 additions and 6 deletions

View file

@ -75,7 +75,9 @@ $defs:
bias-pull-down: true
bias-pull-up: true
bias-disable: true
input-enable: true
input-enable: false
output-disable: true
output-enable: true
output-high: true
output-low: true

View file

@ -323,6 +323,7 @@ static int msm_config_reg(struct msm_pinctrl *pctrl,
break;
case PIN_CONFIG_OUTPUT:
case PIN_CONFIG_INPUT_ENABLE:
case PIN_CONFIG_OUTPUT_ENABLE:
*bit = g->oe_bit;
*mask = 1;
break;
@ -414,11 +415,9 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
val = msm_readl_io(pctrl, g);
arg = !!(val & BIT(g->in_bit));
break;
case PIN_CONFIG_INPUT_ENABLE:
/* Pin is output */
if (arg)
case PIN_CONFIG_OUTPUT_ENABLE:
if (!arg)
return -EINVAL;
arg = 1;
break;
default:
return -ENOTSUPP;
@ -502,9 +501,36 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
arg = 1;
break;
case PIN_CONFIG_INPUT_ENABLE:
/* disable output */
/*
* According to pinctrl documentation this should
* actually be a no-op.
*
* The docs are explicit that "this does not affect
* the pin's ability to drive output" but what we do
* here is to modify the output enable bit. Thus, to
* follow the docs we should remove that.
*
* The docs say that we should enable any relevant
* input buffer, but TLMM there is no input buffer that
* can be enabled/disabled. It's always on.
*
* The points above, explain why this _should_ be a
* no-op. However, for historical reasons and to
* support old device trees, we'll violate the docs
* still affect the output.
*
* It should further be noted that this old historical
* behavior actually overrides arg to 0. That means
* that "input-enable" and "input-disable" in a device
* tree would _both_ disable the output. We'll
* continue to preserve this behavior as well since
* we have no other use for this attribute.
*/
arg = 0;
break;
case PIN_CONFIG_OUTPUT_ENABLE:
arg = !!arg;
break;
default:
dev_err(pctrl->dev, "Unsupported config parameter: %x\n",
param);