Commit 42556242 authored by Jacopo Mondi's avatar Jacopo Mondi Committed by Linus Walleij

pinctrl: generic: Add output-enable property

Add output-enable generic pin configuration property.
This properties allows enabling/disabling pin's output capabilities
without actually driving any value on the line.
Acked-by: default avatarRob Herring <robh@kernel.org>
[Added inline elaborations on buffer enabling/disabling]
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 61830619
...@@ -251,14 +251,20 @@ drive-push-pull - drive actively high and low ...@@ -251,14 +251,20 @@ drive-push-pull - drive actively high and low
drive-open-drain - drive with open drain drive-open-drain - drive with open drain
drive-open-source - drive with open source drive-open-source - drive with open source
drive-strength - sink or source at most X mA drive-strength - sink or source at most X mA
input-enable - enable input on pin (no effect on output) input-enable - enable input on pin (no effect on output, such as
input-disable - disable input on pin (no effect on output) enabling an input buffer)
input-disable - disable input on pin (no effect on output, such as
disabling an input buffer)
input-schmitt-enable - enable schmitt-trigger mode input-schmitt-enable - enable schmitt-trigger mode
input-schmitt-disable - disable schmitt-trigger mode input-schmitt-disable - disable schmitt-trigger mode
input-debounce - debounce mode with debound time X input-debounce - debounce mode with debound time X
power-source - select between different power supplies power-source - select between different power supplies
low-power-enable - enable low power mode low-power-enable - enable low power mode
low-power-disable - disable low power mode low-power-disable - disable low power mode
output-disable - disable output on a pin (such as disable an output
buffer)
output-enable - enable output on a pin without actively driving it
(such as enabling an output buffer)
output-low - set the pin to output mode with low level output-low - set the pin to output mode with low level
output-high - set the pin to output mode with high level output-high - set the pin to output mode with high level
slew-rate - set the slew rate slew-rate - set the slew rate
......
...@@ -44,6 +44,7 @@ static const struct pin_config_item conf_items[] = { ...@@ -44,6 +44,7 @@ static const struct pin_config_item conf_items[] = {
PCONFDUMP(PIN_CONFIG_INPUT_SCHMITT, "input schmitt trigger", NULL, false), PCONFDUMP(PIN_CONFIG_INPUT_SCHMITT, "input schmitt trigger", NULL, false),
PCONFDUMP(PIN_CONFIG_INPUT_SCHMITT_ENABLE, "input schmitt enabled", NULL, false), PCONFDUMP(PIN_CONFIG_INPUT_SCHMITT_ENABLE, "input schmitt enabled", NULL, false),
PCONFDUMP(PIN_CONFIG_LOW_POWER_MODE, "pin low power", "mode", true), PCONFDUMP(PIN_CONFIG_LOW_POWER_MODE, "pin low power", "mode", true),
PCONFDUMP(PIN_CONFIG_OUTPUT_ENABLE, "output enabled", NULL, false),
PCONFDUMP(PIN_CONFIG_OUTPUT, "pin output", "level", true), PCONFDUMP(PIN_CONFIG_OUTPUT, "pin output", "level", true),
PCONFDUMP(PIN_CONFIG_POWER_SOURCE, "pin power source", "selector", true), PCONFDUMP(PIN_CONFIG_POWER_SOURCE, "pin power source", "selector", true),
PCONFDUMP(PIN_CONFIG_SLEW_RATE, "slew rate", NULL, true), PCONFDUMP(PIN_CONFIG_SLEW_RATE, "slew rate", NULL, true),
...@@ -172,6 +173,8 @@ static const struct pinconf_generic_params dt_params[] = { ...@@ -172,6 +173,8 @@ static const struct pinconf_generic_params dt_params[] = {
{ "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 }, { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
{ "low-power-disable", PIN_CONFIG_LOW_POWER_MODE, 0 }, { "low-power-disable", PIN_CONFIG_LOW_POWER_MODE, 0 },
{ "low-power-enable", PIN_CONFIG_LOW_POWER_MODE, 1 }, { "low-power-enable", PIN_CONFIG_LOW_POWER_MODE, 1 },
{ "output-disable", PIN_CONFIG_OUTPUT_ENABLE, 0 },
{ "output-enable", PIN_CONFIG_OUTPUT_ENABLE, 1 },
{ "output-high", PIN_CONFIG_OUTPUT, 1, }, { "output-high", PIN_CONFIG_OUTPUT, 1, },
{ "output-low", PIN_CONFIG_OUTPUT, 0, }, { "output-low", PIN_CONFIG_OUTPUT, 0, },
{ "power-source", PIN_CONFIG_POWER_SOURCE, 0 }, { "power-source", PIN_CONFIG_POWER_SOURCE, 0 },
......
...@@ -73,10 +73,16 @@ ...@@ -73,10 +73,16 @@
* operation, if several modes of operation are supported these can be * operation, if several modes of operation are supported these can be
* passed in the argument on a custom form, else just use argument 1 * passed in the argument on a custom form, else just use argument 1
* to indicate low power mode, argument 0 turns low power mode off. * to indicate low power mode, argument 0 turns low power mode off.
* @PIN_CONFIG_OUTPUT: this will configure the pin as an output. Use argument * @PIN_CONFIG_OUTPUT_ENABLE: this will enable the pin's output mode
* 1 to indicate high level, argument 0 to indicate low level. (Please * without driving a value there. For most platforms this reduces to
* see Documentation/pinctrl.txt, section "GPIO mode pitfalls" for a * enable the output buffers and then let the pin controller current
* discussion around this parameter.) * configuration (eg. the currently selected mux function) drive values on
* the line. Use argument 1 to enable output mode, argument 0 to disable
* it.
* @PIN_CONFIG_OUTPUT: this will configure the pin as an output and drive a
* value on the line. Use argument 1 to indicate high level, argument 0 to
* indicate low level. (Please see Documentation/pinctrl.txt, section
* "GPIO mode pitfalls" for a discussion around this parameter.)
* @PIN_CONFIG_POWER_SOURCE: if the pin can select between different power * @PIN_CONFIG_POWER_SOURCE: if the pin can select between different power
* supplies, the argument to this parameter (on a custom format) tells * supplies, the argument to this parameter (on a custom format) tells
* the driver which alternative power source to use. * the driver which alternative power source to use.
...@@ -105,6 +111,7 @@ enum pin_config_param { ...@@ -105,6 +111,7 @@ enum pin_config_param {
PIN_CONFIG_INPUT_SCHMITT, PIN_CONFIG_INPUT_SCHMITT,
PIN_CONFIG_INPUT_SCHMITT_ENABLE, PIN_CONFIG_INPUT_SCHMITT_ENABLE,
PIN_CONFIG_LOW_POWER_MODE, PIN_CONFIG_LOW_POWER_MODE,
PIN_CONFIG_OUTPUT_ENABLE,
PIN_CONFIG_OUTPUT, PIN_CONFIG_OUTPUT,
PIN_CONFIG_POWER_SOURCE, PIN_CONFIG_POWER_SOURCE,
PIN_CONFIG_SLEW_RATE, PIN_CONFIG_SLEW_RATE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment