# Copyright (c) 2022, 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:
  - name: base.yaml
  - name: pincfg-node-group.yaml
    child-binding:
      child-binding:
        property-allowlist:
          - drive-open-drain
          - bias-pull-up
          - bias-pull-down

child-binding:
  description: Kinetis pin controller pin group
  child-binding:
    description: |
      Kinetis pin controller pin configuration node
    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:
        required: true
        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.
