xref: /linux/Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml (revision 9ba4ef6847ba53dea92efce47c9e044fbf6d6dcf)
1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pinctrl/pincfg-node.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Generic Pin Configuration Node
8
9maintainers:
10  - Linus Walleij <linusw@kernel.org>
11
12description:
13  Many data items that are represented in a pin configuration node are common
14  and generic. Pin control bindings should use the properties defined below
15  where they are applicable; not all of these properties are relevant or useful
16  for all hardware or binding structures. Each individual binding document
17  should state which of these generic properties, if any, are used, and the
18  structure of the DT nodes that contain these properties.
19
20properties:
21  bias-disable:
22    type: boolean
23    description: disable any pin bias
24
25  bias-high-impedance:
26    type: boolean
27    description: high impedance mode ("third-state", "floating")
28
29  bias-bus-hold:
30    type: boolean
31    description: latch weakly
32
33  bias-pull-up:
34    oneOf:
35      - type: boolean
36      - $ref: /schemas/types.yaml#/definitions/uint32
37    description: pull up the pin. Takes as optional argument on hardware
38      supporting it the pull strength in Ohm.
39
40  bias-pull-down:
41    oneOf:
42      - type: boolean
43      - $ref: /schemas/types.yaml#/definitions/uint32
44    description: pull down the pin. Takes as optional argument on hardware
45      supporting it the pull strength in Ohm.
46
47  bias-pull-pin-default:
48    oneOf:
49      - type: boolean
50      - $ref: /schemas/types.yaml#/definitions/uint32
51    description: use pin-default pull state. Takes as optional argument on
52      hardware supporting it the pull strength in Ohm.
53
54  drive-push-pull:
55    oneOf:
56      - type: boolean
57      - $ref: /schemas/types.yaml#/definitions/uint32
58        enum: [ 0, 1 ]
59        deprecated: true
60    description: drive actively high and low
61
62  drive-open-drain:
63    oneOf:
64      - type: boolean
65      - $ref: /schemas/types.yaml#/definitions/uint32
66        const: 1    # No known cases of 0
67        deprecated: true
68    description: drive with open drain
69
70  drive-open-source:
71    type: boolean
72    description: drive with open source
73
74  drive-strength:
75    $ref: /schemas/types.yaml#/definitions/uint32
76    description: sink or source at most X mA
77
78  drive-strength-microamp:
79    description: sink or source at most X uA
80
81  input-enable:
82    type: boolean
83    description: enable input on pin (no effect on output, such as
84      enabling an input buffer)
85
86  input-disable:
87    type: boolean
88    description: disable input on pin (no effect on output, such as
89      disabling an input buffer)
90
91  input-schmitt-enable:
92    type: boolean
93    description: enable schmitt-trigger mode
94
95  input-schmitt-disable:
96    type: boolean
97    description: disable schmitt-trigger mode
98
99  input-schmitt-microvolt:
100    description: threshold strength for schmitt-trigger
101
102  input-debounce:
103    $ref: /schemas/types.yaml#/definitions/uint32-array
104    description: Takes the debounce time in usec as argument or 0 to disable
105      debouncing
106
107  power-source:
108    $ref: /schemas/types.yaml#/definitions/uint32
109    description: select between different power supplies
110
111  low-power-enable:
112    type: boolean
113    description: enable low power mode
114
115  low-power-disable:
116    type: boolean
117    description: disable low power mode
118
119  output-disable:
120    type: boolean
121    description: disable output on a pin (such as disable an output buffer)
122
123  output-enable:
124    type: boolean
125    description: enable output on a pin without actively driving it
126      (such as enabling an output buffer)
127
128  output-impedance-ohms:
129    description: set the output impedance of a pin to at most X ohms
130
131  output-low:
132    type: boolean
133    description: set the pin to output mode with low level
134
135  output-high:
136    type: boolean
137    description: set the pin to output mode with high level
138
139  sleep-hardware-state:
140    type: boolean
141    description: indicate this is sleep related state which will be
142      programmed into the registers for the sleep state.
143
144  slew-rate:
145    $ref: /schemas/types.yaml#/definitions/uint32
146    description: set the slew rate
147
148  skew-delay:
149    $ref: /schemas/types.yaml#/definitions/uint32
150    description:
151      this affects the expected clock skew on input pins
152      and the delay before latching a value to an output
153      pin. Typically indicates how many double-inverters are
154      used to delay the signal.
155
156  skew-delay-input-ps:
157    description:
158      this affects the expected clock skew in ps on an input pin.
159
160  skew-delay-output-ps:
161    description:
162      this affects the expected delay in ps before latching a value to
163      an output pin.
164
165allOf:
166  - if:
167      required:
168        - skew-delay
169    then:
170      properties:
171        skew-delay-input-ps: false
172        skew-delay-output-ps: false
173
174  - if:
175      required:
176        - input-disable
177    then:
178      properties:
179        input-enable: false
180
181  - if:
182      required:
183        - output-disable
184    then:
185      properties:
186        output-enable: false
187        output-impedance-ohms: false
188
189  - if:
190      required:
191        - output-low
192    then:
193      properties:
194        output-high: false
195
196  - if:
197      required:
198        - low-power-enable
199    then:
200      properties:
201        low-power-disable: false
202
203  - if:
204      required:
205        - input-schmitt-disable
206    then:
207      properties:
208        input-schmitt-enable: false
209        input-schmitt-microvolt: false
210
211  - if:
212      required:
213        - drive-strength
214    then:
215      properties:
216        drive-strength-microamp: false
217
218  - if:
219      anyOf:
220        - required:
221            - drive-open-source
222        - required:
223            - drive-open-drain
224        - required:
225            - drive-push-pull
226    then:
227      oneOf:
228        - required:
229            - drive-open-source
230        - required:
231            - drive-open-drain
232        - required:
233            - drive-push-pull
234
235  - if:
236      anyOf:
237        - required:
238            - bias-disable
239        - required:
240            - bias-bus-hold
241        - required:
242            - bias-pull-up
243        - required:
244            - bias-pull-down
245        - required:
246            - bias-pull-pin-default
247    then:
248      oneOf:
249        - required:
250            - bias-disable
251        - required:
252            - bias-bus-hold
253        - required:
254            - bias-pull-up
255        - required:
256            - bias-pull-down
257        - required:
258            - bias-pull-pin-default
259
260additionalProperties: true
261