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

description: |
  Kinetis 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,kinetis-pinctrl"

include: base.yaml

child-binding:
  description: Kinetis pin controller pin group
  child-binding:
    description: |
      Kinetis pin controller pin configuration node

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

    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.
