1# Copyright 2022 NXP
2# SPDX-License-Identifier: Apache-2.0
3
4description: |
5  LPC pinctrl node. This node defines pin configurations in pin groups, and has
6  the 'pinctrl' node identifier in the SOC's devicetree. Each group within the
7  pin configuration defines a peripheral's pin configuration. Each numbered
8  subgroup represents pins with shared configuration for that peripheral. The
9  'pinmux' property of each group selects the pins to be configured with these
10  properties. For example, here is a configuration for FLEXCOMM0 pins:
11
12  pinmux_flexcomm0_usart: pinmux_flexcomm0_usart {
13    group0 {
14      pinmux = <FC0_TXD_SCL_MISO_WS_PIO0_30>,
15              <FC0_RXD_SDA_MOSI_DATA_PIO0_29>;
16      slew-rate = "standard";
17    };
18  };
19
20  If only the required properties are supplied, the ICON_PIO register will
21  be assigned the following values:
22  IOCON_FUNC=<pin mux selection>,
23  IOCON_MODE=0,
24  IOCON_SLEW=<slew-rate selection>,
25  IOCON_INVERT=0,
26  IOCON_DIGIMODE=1,
27  IOCON_OD=0,
28
29  Values for I2C type and analog type pins have the following defaults:
30  IOCON_ASW=0
31  IOCON_SSEL=0
32  IOCON_FILTEROFF=1
33  IOCON_ECS=0
34  IOCON_EGP=1
35  IOCON_I2CFILTER=1
36
37  Note the inherited pinctrl properties defined below have the following effects:
38  drive-open-drain: IOCON_OD=1
39  bias-pull-up: IOCON_MODE=2
40  bias-pull-down: IOCON_MODE=1
41  drive-push-pull: IOCON_MODE=3
42
43  Note: for the LPC11u6x, the following fields are also supported:
44  IOCON_HYS- set by input-schmitt-enable
45  IOCON_S_MODE- set by nxp,digital-filter
46  IOCON_CLKDIV- set by nxp,filter-clock-div
47  IOCON_FILTR- set by nxp,analog-filter
48
49
50compatible: "nxp,lpc-iocon-pinctrl"
51
52include: base.yaml
53
54child-binding:
55  description: LPC IOCON pin controller pin group
56  child-binding:
57    description: |
58      LPC IOCON pin controller pin configuration node
59
60    include:
61      - name: pincfg-node.yaml
62        property-allowlist:
63          - drive-open-drain
64          - bias-pull-up
65          - bias-pull-down
66          - drive-push-pull
67          - input-schmitt-enable
68
69    properties:
70      pinmux:
71        required: true
72        type: array
73        description: |
74          Pin mux selection for this group. See the SOC level pinctrl header
75          file in NXP's HAL for a defined list of these options.
76      slew-rate:
77        default: "standard"
78        type: string
79        enum:
80          - "standard"
81          - "fast"
82        description: |
83          Pin output slew rate. Sets the SLEW field in the IOCON register.
84          defaults to standard slew rate, due to this being the reset value of
85          the field.
86          0 SLEW_0- standard mode, output slew rate is slower
87          1 SLEW_1- fast mode, output slew rate is faster
88      nxp,invert:
89        type: boolean
90        description: |
91          Invert the pin input logic level
92      nxp,analog-mode:
93        type: boolean
94        description: |
95          Set the pin to analog mode. Sets DIGIMODE=0, and ASW=1. Only valid for
96          analog type pins. Selects ASW0 on LPC55s3x family
97      nxp,analog-alt-mode:
98        type: boolean
99        description: |
100          Select the pin's alternate analog mode. Valid on LPC55s3x family SOCs
101          when DIGIMODE=0. Only valid for analog type pins. Sets ASW1.
102      power-source:
103        type: string
104        enum:
105          - "3v3"
106          - "1v8"
107        description: |
108          Pin output power source. Only valid for I2C mode pins running in I2C
109          mode.
110      nxp,digital-filter:
111        type: boolean
112        description: |
113          Digital input filter. Noise pulses below 10ms are filtered out.
114      nxp,i2c-filter:
115        type: string
116        enum:
117          - "slow"
118          - "fast"
119        description: |
120          I2C glitch filter speed. Only valid for I2C mode pins. Fast mode
121          typically only required for High speed I2C.
122      nxp,i2c-speed:
123        type: string
124        enum:
125          - "slow"
126          - "fast"
127        description: |
128          I2C speed. Only valid for I2C mode pins. Fast mode should be used for
129          fast mode plus I2C.
130      nxp,i2c-pullup:
131        type: boolean
132        description: |
133          Enable I2C pullup resistor. If not present, pin is open drain in I2C
134          mode. Only valid for I2C mode pins in I2C mode
135      nxp,i2c-mode:
136        type: boolean
137        description: |
138          Enable I2C mode for a pin. If not present, pin is in GPIO mode. Only
139          valid for I2C mode pins
140