# Copyright 2022-2024 NXP
# SPDX-License-Identifier: Apache-2.0

description: |
  NXP PORT pinctrl node. This node will define pin configurations in pin
  groups, and has the 'pinctrl' node identifier in the SOC's devicetree. Each
  group within the pin configuration defines the pin configuration for a
  peripheral, and each numbered subgroup in the pin group defines all the pins
  for that peripheral with the same configuration properties. The 'pins'
  property in a group selects the pins to be configured, and the remaining
  properties set configuration values for those pins. Here is an example
  group for UART0 pins:

  uart0_default: uart0_default {
    group0 {
      pins = <UART0_RX_PTB16
        UART0_TX_PTB17>;
      drive-strength = "low";
      slew-rate = "fast";
      };
  };

  If only the required properties are supplied, the pin configuration register
  will be assigned the following values:
  PCR_PS=0,
  PCR_PE=0,
  PCR_ODE=0,
  PCR_SRE=<slew-rate selection>,
  PCR_DSE=<drive-strength selection>,
  PCR_PFE=0

compatible: "nxp,port-pinctrl"

include: base.yaml

child-binding:
  description: NXP PORT pin controller pin group
  child-binding:
    description: |
      NXP PORT pin controller pin configuration node

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

    properties:
      pinmux:
        required: true
        type: array
        description: |
          Pin mux selections for this group. See the soc level pinctrl DTSI file
          in NXP's HAL for a defined list of these options
      drive-strength:
        required: true
        type: string
        enum:
          - "low"
          - "high"
        description: |
          Pin output drive strength. Sets the DSE field in the PORTx_PCRn register.
          0 DSE_0- low drive strength when pin is configured as output
          1 DSE_1- high drive strength when pin is configured as output
      slew-rate:
        type: string
        enum:
          - "fast"
          - "slow"
        description: |
          Pin output slew rate. Sets the SRE field in the PORTx_PCRn register.
          0 SRE_0_fast- fast slew rate when pin is configured as output
          1 SRE_1_slow- slow slew rate when pin is configured as output
      nxp,passive-filter:
        type: boolean
        description: |
          Enable passive filter on pin. Sets the PFE field in the PORTx_PCRn register.
