]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
pinctrl: generic: Add output-enable property
authorJacopo Mondi <jacopo+renesas@jmondi.org>
Thu, 22 Jun 2017 10:00:58 +0000 (12:00 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 29 Jun 2017 12:30:49 +0000 (14:30 +0200)
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: Rob Herring <robh@kernel.org>
[Added inline elaborations on buffer enabling/disabling]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
drivers/pinctrl/pinconf-generic.c
include/linux/pinctrl/pinconf-generic.h

index f01d154090dab1b3a8a58fee6a599459392aa1f8..2d4ef9f0fded84645158cc854ba6a1575bf9ac85 100644 (file)
@@ -251,14 +251,20 @@ drive-push-pull           - drive actively high and low
 drive-open-drain       - drive with open drain
 drive-open-source      - drive with open source
 drive-strength         - sink or source at most X mA
-input-enable           - enable input on pin (no effect on output)
-input-disable          - disable input on pin (no effect on output)
+input-enable           - enable input on pin (no effect on output, such as
+                         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-disable  - disable schmitt-trigger mode
 input-debounce         - debounce mode with debound time X
 power-source           - select between different power supplies
 low-power-enable       - enable 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-high            - set the pin to output mode with high level
 slew-rate              - set the slew rate
index 720a19fd38d2c6c24d30e5e1c7dcdf70cae0e590..fc0c230aa11f390f15aa416d0b38f7c411bd98ad 100644 (file)
@@ -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_ENABLE, "input schmitt enabled", NULL, false),
        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_POWER_SOURCE, "pin power source", "selector", true),
        PCONFDUMP(PIN_CONFIG_SLEW_RATE, "slew rate", NULL, true),
@@ -172,6 +173,8 @@ static const struct pinconf_generic_params dt_params[] = {
        { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
        { "low-power-disable", PIN_CONFIG_LOW_POWER_MODE, 0 },
        { "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-low", PIN_CONFIG_OUTPUT, 0, },
        { "power-source", PIN_CONFIG_POWER_SOURCE, 0 },
index 7620eb127cffc5edbc475457732a042bac357055..231d3075815adfa63d462a236e66f214c3216117 100644 (file)
  *     operation, if several modes of operation are supported these can be
  *     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.
- * @PIN_CONFIG_OUTPUT: this will configure the pin as an output. 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_OUTPUT_ENABLE: this will enable the pin's output mode
+ *     without driving a value there. For most platforms this reduces to
+ *     enable the output buffers and then let the pin controller current
+ *     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
  *     supplies, the argument to this parameter (on a custom format) tells
  *     the driver which alternative power source to use.
@@ -105,6 +111,7 @@ enum pin_config_param {
        PIN_CONFIG_INPUT_SCHMITT,
        PIN_CONFIG_INPUT_SCHMITT_ENABLE,
        PIN_CONFIG_LOW_POWER_MODE,
+       PIN_CONFIG_OUTPUT_ENABLE,
        PIN_CONFIG_OUTPUT,
        PIN_CONFIG_POWER_SOURCE,
        PIN_CONFIG_SLEW_RATE,