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

description: |
  MCI IO MUX pin control node. This node defines pin configurations in pin
  groups, and has the 'pinctrl' node identifier in the SOC's devicetree. Each
  group within the pin configuration defines a peripheral's pin configuration.
  Each numbered subgroup represents pins with shared configuration for that
  peripheral. The 'pinmux' property of each group selects the pins to be
  configured with these properties. For example, here is a configuration
  for FLEXCOMM0 pins:

  pinmux_flexcomm0_usart: pinmux_flexcomm0_usart {
    group0 {
      pinmux = <IO_MUX_FC0_USART_DATA_IO2>,
              <IO_MUX_FC0_USART_DATA_IO3>;
      slew-rate = "normal";
    };
  };

  If only the required properties are supplied, the pin will be configured
  as normal drive strength and no pull. This corresponds to the following
  pin settings:
  PAD_PU_PD_ENx = (0x0 << pin_index)
  SR_CONFIGx = (0x2 << pin_index)

  Note

  Note the inherited pinctrl properties defined below have the following effects:
  bias-pull-up: PAD_PU_PD_ENx= (0x1 << pin_index)
  bias-pull-down: PAD_PU_PD_ENx= (0x10 << pin_index)

compatible: "nxp,mci-io-mux"

include:
  - name: base.yaml

child-binding:
  description: MCI IO MUX pin controller pin group
  child-binding:
    description: |
      MCI IO MUX pin controller pin configuration node
    include:
      - name: pincfg-node.yaml
        property-allowlist:
          - bias-pull-up
          - bias-pull-down
    properties:
      pinmux:
        required: true
        type: array
        description: |
          Pin mux selection for this group. See the SOC level pinctrl header
          file in NXP's HAL for a defined list of these options.
      slew-rate:
        required: true
        type: string
        enum:
          - "slow"
          - "normal"
          - "fast"
          - "ultra"
        description: |
          Pin output slew rate. Sets the GPIOxx_SR field in the SR_CONFIGx
          register.
          0 - slow slew rate
          1 - normal slew rate
          2 - fast slew rate
          3 - fastest slew rate (ultra)
