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

description: |
  This compatible binding should be applied to the device's iomuxc DTS node.
  the DTS node will be populated with all pinmux options for the specific SOC.
  These options can then be used in a pinctrl node with the "nxp,mcux-rt-pinctrl"
  compatible string to define pin groups.

  The user should not edit the bindings defined within this node to make pinmux
  selections, but should instead edit the pinctrl groups for their board.

compatible: "nxp,imx-iomuxc"

include:
    - name: base.yaml

properties:
    reg:
      required: true

child-binding:
  description: MCUX RT pin mux option
  properties:
    pinmux:
      required: true
      type: array
      description: |
        An array of values defining the pin mux selection, in the following format:
        <mux_register, mux_val, input_reg, daisy_val, cfg_reg>
        mux_register: register that will be written to to make mux selection
        mux_val: value to write to mux_register
        input_reg: peripheral register that will direct peripheral signal to pin
        daisy_val: value to write to input_reg
        cfg_reg: register that will configure pin pull, drive strength, and open drain
    gpr:
      required: false
      type: array
      description: |
        An array of values defining the GPR bit write required, if one exists.
        Some IOMUXC options require writing to an IOMUXC_GPR register to select
        them. This array has the following elements:
        <gpr_reg, gpr_shift, gpr_val>
        gpr_reg: GPR register address to write to
        gpr_shift: shift to apply to value before writing
        gpr_val: value to write
    # Note: the below properties should ideally be an enum. However, the pinctrl driver
    # will need to initialize the pin configuration register differently based on
    # the type of register provided, and it does so using the IF_ENABLED macro. This
    # macro cannot work using preprocessor equality statements (like DT_ENUM_IDX(prop) == val),
    # so we cannot use an enum and instead must use individual properties.
    pin-pue:
      required: false
      type: boolean
      description: |
          RT11xx parts have multiple types of IOMUXC registers defined, with
          different register layouts. This property can be set to indicate
          to the pinctrl driver the type of register this pinmux represents,
          and should not be modified by the user.
    pin-pdrv:
      required: false
      type: boolean
      description: |
          RT11xx parts have multiple types of IOMUXC registers defined, with
          different register layouts. This property can be set to indicate
          to the pinctrl driver the type of register this pinmux represents,
          and should not be modified by the user.
    pin-lpsr:
      required: false
      type: boolean
      description: |
          RT11xx parts have multiple types of IOMUXC registers defined, with
          different register layouts. This property can be set to indicate
          to the pinctrl driver the type of register this pinmux represents,
          and should not be modified by the user.
    pin-snvs:
      required: false
      type: boolean
      description: |
          RT11xx parts have multiple types of IOMUXC registers defined, with
          different register layouts. This property can be set to indicate
          to the pinctrl driver the type of register this pinmux represents,
          and should not be modified by the user.
