# Copyright (c) 2022 NXP
# SPDX-License-Identifier: Apache-2.0

description: |
  The node has the 'pinctrl' node label set in MCUX SoC's devicetree. These
  nodes can be autogenerated using the MCUXpresso config tools combined with
  the imx_dts_gen.py script in NXP's HAL. The mux, mode, input, daisy, and cfg
  fields in a group select the pins to be configured, and the remaining
  devicetree properties set configuration values for those pins

  Note that the soc level iomuxc dts file can be examined to find the possible
  pinmux options. Here are the affects of each property on the
  IOMUXC SW_PAD_CTL register:
  bias-pull-up: PE=1, PS=<bias-pull-up-value index>
  bias-pull-down: PE=1, PS=0
  input-schmitt-enable: HYS=1
  slew-rate: SRE=<enum idx>
  drive-strength: DSE=<enum idx>
  input-enable: SION=1 (in SW_PAD_CTL_MUX register)

  If only required properties are supplied, the pin will have the following
  configuration:
  HYS=0,
  PS=0,
  PE=0
  SRE=<slew-rate>,
  DSE=<drive-strength>,
  SION=0,

  Note that pins marked with LPSR can only have their PE and PS registers
  configured


compatible: "nxp,imx7d-pinctrl"

include: base.yaml

child-binding:
  description: iMX pin controller pin group
  child-binding:
    description: |
      iMX pin controller pin configuration node.

    include:
      - name: pincfg-node.yaml
        property-allowlist:
          - input-schmitt-enable
          - input-enable
          - bias-pull-up
          - bias-pull-down

    properties:
      pinmux:
        required: true
        type: phandles
        description: |
          Pin mux selections for this group. See the soc level iomuxc DTSI file
          for a defined list of these options.
      drive-strength:
        required: true
        type: string
        enum:
          - "x1"
          - "x4"
          - "x2"
          - "x6"
        description: |
          Pin output drive strength. Sets the DSE field in the IOMUXC peripheral.
      slew-rate:
        required: true
        type: string
        enum:
          - "fast"
          - "slow"
        description: |
          Select slew rate for pin. Corresponds to SRE field in IOMUXC peripheral
          0 FAST — Fast Frequency Slew Rate
          1 SLOW — Slow Frequency Slew Rate
      bias-pull-up-value:
        type: string
        default: "100k"
        enum:
          - "unused"
          - "5k"
          - "47k"
          - "100k"
        description: |
          Select pull up resistor value. Sets PS field in IOMUXC peripheral.
          Default of 100k as this is most common default register value for
          SOC pads.
          01: 5K- 5K pull up resistor
          10: 47K- 47K pull up resistor
          11: 100K- 100K pull up resistor
