Merge branch 'ib-qcom-quad-spi' into devel
This commit is contained in:
commit
2a6ac65c94
@ -75,7 +75,9 @@ $defs:
|
|||||||
bias-pull-down: true
|
bias-pull-down: true
|
||||||
bias-pull-up: true
|
bias-pull-up: true
|
||||||
bias-disable: true
|
bias-disable: true
|
||||||
input-enable: true
|
input-enable: false
|
||||||
|
output-disable: true
|
||||||
|
output-enable: true
|
||||||
output-high: true
|
output-high: true
|
||||||
output-low: true
|
output-low: true
|
||||||
|
|
||||||
|
@ -323,6 +323,7 @@ static int msm_config_reg(struct msm_pinctrl *pctrl,
|
|||||||
break;
|
break;
|
||||||
case PIN_CONFIG_OUTPUT:
|
case PIN_CONFIG_OUTPUT:
|
||||||
case PIN_CONFIG_INPUT_ENABLE:
|
case PIN_CONFIG_INPUT_ENABLE:
|
||||||
|
case PIN_CONFIG_OUTPUT_ENABLE:
|
||||||
*bit = g->oe_bit;
|
*bit = g->oe_bit;
|
||||||
*mask = 1;
|
*mask = 1;
|
||||||
break;
|
break;
|
||||||
@ -414,11 +415,9 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
|
|||||||
val = msm_readl_io(pctrl, g);
|
val = msm_readl_io(pctrl, g);
|
||||||
arg = !!(val & BIT(g->in_bit));
|
arg = !!(val & BIT(g->in_bit));
|
||||||
break;
|
break;
|
||||||
case PIN_CONFIG_INPUT_ENABLE:
|
case PIN_CONFIG_OUTPUT_ENABLE:
|
||||||
/* Pin is output */
|
if (!arg)
|
||||||
if (arg)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
arg = 1;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
@ -502,9 +501,36 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
|
|||||||
arg = 1;
|
arg = 1;
|
||||||
break;
|
break;
|
||||||
case PIN_CONFIG_INPUT_ENABLE:
|
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;
|
arg = 0;
|
||||||
break;
|
break;
|
||||||
|
case PIN_CONFIG_OUTPUT_ENABLE:
|
||||||
|
arg = !!arg;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(pctrl->dev, "Unsupported config parameter: %x\n",
|
dev_err(pctrl->dev, "Unsupported config parameter: %x\n",
|
||||||
param);
|
param);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user