# Copyright (c) 2020, Linaro Limited
# SPDX-License-Identifier: Apache-2.0

description: |
  Generic pin configuration schema

  Many data items that are represented in a pin configuration node are
  common and generic. Pin control bindings should use the properties
  defined below where they are applicable; not all of these properties are
  relevant or useful for all hardware or binding structures. Each
  individual binding document should state which of these generic
  properties, if any, are used, and the structure of the DT nodes that
  contain these properties.

  This is based on Linux, documentation:
    https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml

properties:
  bias-disable:
    type: boolean
    description: disable any pin bias

  bias-high-impedance:
    type: boolean
    description: high impedance mode ("third-state", "floating")

  bias-bus-hold:
    type: boolean
    description: latch weakly

  bias-pull-up:
    type: boolean
    description: enable pull-up resistor

  bias-pull-down:
    type: boolean
    description: enable pull-down resistor

  bias-pull-pin-default:
    type: boolean
    description: use pin's default pull state

  drive-push-pull:
    type: boolean
    description: drive actively high and low

  drive-open-drain:
    type: boolean
    description: drive with open drain (hardware AND)

  drive-open-source:
    type: boolean
    description: drive with open source (hardware OR)

  drive-strength:
    type: int
    description: maximum sink or source current in mA

  drive-strength-microamp:
    type: int
    description: maximum sink or source current in μA

  input-enable:
    type: boolean
    description: |
      enable input on pin (e.g. enable an input buffer, no effect on output)

  input-disable:
    type: boolean
    description: |
      disable input on pin (e.g. disable an input buffer, no effect on output)

  input-schmitt-enable:
    type: boolean
    description: enable schmitt-trigger mode

  input-schmitt-disable:
    type: boolean
    description: disable schmitt-trigger mode

  input-debounce:
    type: int
    description: |
      Takes the debounce time in μsec, as argument or 0 to disable debouncing

  power-source:
    type: int
    description: select between different power supplies

  low-power-enable:
    type: boolean
    description: enable low power mode

  low-power-disable:
    type: boolean
    description: disable low power mode

  output-disable:
    type: boolean
    description: disable output on a pin (e.g. disable an output buffer)

  output-enable:
    type: boolean
    description: |
      enable output on a pin without actively driving it (e.g. enable an output
      buffer)

  output-low:
    type: boolean
    description: set the pin to output mode with low level

  output-high:
    type: boolean
    description: set the pin to output mode with high level

  sleep-hardware-state:
    type: boolean
    description: |
      indicate this is sleep related state which will be programmed into
      the registers for the sleep state

  slew-rate:
    type: int
    description: set the slew rate

  skew-delay:
    type: int
    description: |
      This affects the expected clock skew on input pins and the delay
      before latching a value to an output pin. Typically indicates how
        many double-inverters are used to delay the signal.