1# Copyright (c) 2022 NXP
2# SPDX-License-Identifier: Apache-2.0
3
4description: |
5  The node has the 'pinctrl' node label set in MCUX SoC's devicetree. These
6  nodes can be autogenerated using the MCUXpresso config tools combined with
7  the imx_dts_gen.py script in NXP's HAL. The mux, mode, input, daisy, and cfg
8  fields in a group select the pins to be configured, and the remaining
9  devicetree properties set configuration values for those pins
10  for example, here is an group configuring LPUART1 pins:
11
12  group0 {
13    pinmux = <&iomuxc_uart2_rxd_uart_rx_uart2_rx,
14      &iomuxc_uart2_txd_uart_tx_uart2_tx>;
15      bias-pull-up;
16      slew-rate = "slow";
17      drive-strength = "x1";
18  };
19
20  This will select UART2_RXD as UART2 rx, and UART2_TXD as UART2 tx.
21  Both pins will be configured with a slow slew rate, and x1 drive
22  strength.
23  Note that the soc level iomuxc dts file can be examined to find the possible
24  pinmux options. Here are the affects of each property on the
25  IOMUXC SW_PAD_CTL register:
26  input-schmitt-enable: HYS=1
27  drive-open-drain: OD=1
28  bias-pull-down: PD=0
29  bias-pull-up: PU
30  slew-rate: FSEL1=<enum_idx>
31  drive-strength: DSE=<enum_idx>
32  input-enable: SION=1 (in SW_MUX_CTL_PAD register)
33
34  If only required properties are supplied, the pin will have the following
35  configuration:
36  HYS=0,
37  PD=0
38  PU=0
39  OD=0,
40  FSEL1=<slew-rate>,
41  DSE=<drive-strength>,
42  SION=0,
43
44
45compatible: "nxp,imx93-pinctrl"
46
47include: base.yaml
48
49child-binding:
50  description: iMX pin controller pin group
51  child-binding:
52    description: |
53      iMX pin controller pin configuration node.
54
55    include:
56      - name: pincfg-node.yaml
57        property-allowlist:
58          - input-schmitt-enable
59          - drive-open-drain
60          - input-enable
61          - bias-pull-up
62          - bias-pull-down
63
64    properties:
65      pinmux:
66        required: true
67        type: phandles
68        description: |
69          Pin mux selections for this group. See the soc level iomuxc DTSI file
70          for a defined list of these options.
71      drive-strength:
72        required: true
73        type: string
74        enum:
75          - "x0"
76          - "x1"
77          - "x2"
78          - "x3"
79          - "x4"
80          - "x5"
81          - "x6"
82        description: |
83          Pin output drive strength. Sets the DSE field in the IOMUXC peripheral.
84          00_0000 X0, No driver
85          00_0001 X1
86          00_0011 X2
87          00_0111 X3
88          00_1111 X4
89          01_1111 X5
90          11_1111 X6
91      slew-rate:
92        required: true
93        type: string
94        enum:
95          - "slow"
96          - "slightly_slow"
97          - "slightly_fast"
98          - "fast"
99        description: |
100          Select slew rate for pin. Corresponds to SRE field in IOMUXC peripheral
101          0 SLOWSlow Frequency Slew Rate
102          1 Slightly SLOWSlightly Slow Frequency Slew Rate
103          2 Slightly FASTSlightly Fast Frequency Slew Rate
104          3 FASTFast Frequency Slew Rate
105