1# Copyright (c) 2022 NXP
2# SPDX-License-Identifier: Apache-2.0
3
4description: |
5  This compatible binding should be applied to the device's iomuxc DTS node.
6  the DTS node will be populated with all pinmux options for the specific SOC.
7  These options can then be used in a pinctrl node with the "nxp,mcux-rt-pinctrl"
8  compatible string to define pin groups.
9
10  The user should not edit the bindings defined within this node to make pinmux
11  selections, but should instead edit the pinctrl groups for their board.
12
13compatible: "nxp,imx-iomuxc"
14
15include:
16  - name: base.yaml
17
18properties:
19  reg:
20    required: true
21
22child-binding:
23  description: MCUX RT pin mux option
24  properties:
25    pinmux:
26      required: true
27      type: array
28      description: |
29        An array of values defining the pin mux selection, in the following format:
30        <mux_register, mux_val, input_reg, daisy_val, cfg_reg>
31        mux_register: register that will be written to make mux selection
32        mux_val: value to write to mux_register
33        input_reg: peripheral register that will direct peripheral signal to pin
34        daisy_val: value to write to input_reg
35        cfg_reg: register that will configure pin pull, drive strength, and open drain
36    gpr:
37      type: array
38      description: |
39        An array of values defining the GPR bit write required, if one exists.
40        Some IOMUXC options require writing to an IOMUXC_GPR register to select
41        them. This array has the following elements:
42        <gpr_reg, gpr_shift, gpr_val>
43        gpr_reg: GPR register address to write to
44        gpr_shift: shift to apply to value before writing
45        gpr_val: value to write
46    # Note: the below properties should ideally be an enum. However, the pinctrl driver
47    # will need to initialize the pin configuration register differently based on
48    # the type of register provided, and it does so using the IF_ENABLED macro. This
49    # macro cannot work using preprocessor equality statements (like DT_ENUM_IDX(prop) == val),
50    # so we cannot use an enum and instead must use individual properties.
51    pin-pue:
52      type: boolean
53      description: |
54          RT11xx parts have multiple types of IOMUXC registers defined, with
55          different register layouts. This property can be set to indicate
56          to the pinctrl driver the type of register this pinmux represents,
57          and should not be modified by the user.
58    pin-pdrv:
59      type: boolean
60      description: |
61          RT11xx parts have multiple types of IOMUXC registers defined, with
62          different register layouts. This property can be set to indicate
63          to the pinctrl driver the type of register this pinmux represents,
64          and should not be modified by the user.
65    pin-lpsr:
66      type: boolean
67      description: |
68          RT11xx parts have multiple types of IOMUXC registers defined, with
69          different register layouts. This property can be set to indicate
70          to the pinctrl driver the type of register this pinmux represents,
71          and should not be modified by the user.
72    pin-snvs:
73      type: boolean
74      description: |
75          RT11xx parts have multiple types of IOMUXC registers defined, with
76          different register layouts. This property can be set to indicate
77          to the pinctrl driver the type of register this pinmux represents,
78          and should not be modified by the user.
79