1677a6248STony Lindgren# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2677a6248STony Lindgren%YAML 1.2
3677a6248STony Lindgren---
4677a6248STony Lindgren$id: http://devicetree.org/schemas/pinctrl/pinctrl-single.yaml#
5677a6248STony Lindgren$schema: http://devicetree.org/meta-schemas/core.yaml#
6677a6248STony Lindgren
7677a6248STony Lindgrentitle: Generic Pin Controller with a Single Register for One or More Pins
8677a6248STony Lindgren
9677a6248STony Lindgrenmaintainers:
10677a6248STony Lindgren  - Tony Lindgren <tony@atomide.com>
11677a6248STony Lindgren
12677a6248STony Lindgrendescription:
13677a6248STony Lindgren  Some pin controller devices use a single register for one or more pins. The
14677a6248STony Lindgren  range of pin control registers can vary from one to many for each controller
15677a6248STony Lindgren  instance. Some SoCs from Altera, Broadcom, HiSilicon, Ralink, and TI have this
16677a6248STony Lindgren  kind of pin controller instances.
17677a6248STony Lindgren
18677a6248STony Lindgrenproperties:
19677a6248STony Lindgren  compatible:
20677a6248STony Lindgren    oneOf:
21677a6248STony Lindgren      - enum:
22677a6248STony Lindgren          - pinctrl-single
23677a6248STony Lindgren          - pinconf-single
24677a6248STony Lindgren      - items:
25677a6248STony Lindgren          - enum:
26677a6248STony Lindgren              - ti,am437-padconf
27*7e1e2321SDhruva Gole              - ti,am654-padconf
28677a6248STony Lindgren              - ti,dra7-padconf
29677a6248STony Lindgren              - ti,omap2420-padconf
30677a6248STony Lindgren              - ti,omap2430-padconf
31677a6248STony Lindgren              - ti,omap3-padconf
32677a6248STony Lindgren              - ti,omap4-padconf
33677a6248STony Lindgren              - ti,omap5-padconf
34677a6248STony Lindgren          - const: pinctrl-single
35677a6248STony Lindgren
36677a6248STony Lindgren  reg:
37677a6248STony Lindgren    maxItems: 1
38677a6248STony Lindgren
39677a6248STony Lindgren  interrupt-controller: true
40677a6248STony Lindgren
41677a6248STony Lindgren  '#interrupt-cells':
42677a6248STony Lindgren    const: 1
43677a6248STony Lindgren
44677a6248STony Lindgren  '#address-cells':
45677a6248STony Lindgren    const: 1
46677a6248STony Lindgren
47677a6248STony Lindgren  '#size-cells':
48677a6248STony Lindgren    const: 0
49677a6248STony Lindgren
50677a6248STony Lindgren  '#pinctrl-cells':
51677a6248STony Lindgren    description:
52677a6248STony Lindgren      Number of cells. Usually 2, consisting of register offset, pin configuration
53677a6248STony Lindgren      value, and pinmux mode. Some controllers may use 1 for just offset and value.
54677a6248STony Lindgren    enum: [ 1, 2 ]
55677a6248STony Lindgren
56677a6248STony Lindgren  pinctrl-single,bit-per-mux:
57677a6248STony Lindgren    description: Optional flag to indicate register controls more than one pin
58677a6248STony Lindgren    type: boolean
59677a6248STony Lindgren
60677a6248STony Lindgren  pinctrl-single,function-mask:
61677a6248STony Lindgren    description: Mask of the allowed register bits
62677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/uint32
63677a6248STony Lindgren
64677a6248STony Lindgren  pinctrl-single,function-off:
65677a6248STony Lindgren    description: Optional function off mode for disabled state
66677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/uint32
67677a6248STony Lindgren
68677a6248STony Lindgren  pinctrl-single,register-width:
69677a6248STony Lindgren    description: Width of pin specific bits in the register
70677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/uint32
71677a6248STony Lindgren    enum: [ 8, 16, 32 ]
72677a6248STony Lindgren
73677a6248STony Lindgren  pinctrl-single,gpio-range:
74677a6248STony Lindgren    description: Optional list of pin base, nr pins & gpio function
75677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/phandle-array
76677a6248STony Lindgren    items:
77677a6248STony Lindgren      - items:
78677a6248STony Lindgren          - description: phandle of a gpio-range node
79677a6248STony Lindgren          - description: pin base
80677a6248STony Lindgren          - description: number of pins
81677a6248STony Lindgren          - description: gpio function
82677a6248STony Lindgren
83677a6248STony Lindgren  '#gpio-range-cells':
84677a6248STony Lindgren    description: No longer needed, may exist in older files for gpio-ranges
85677a6248STony Lindgren    deprecated: true
86677a6248STony Lindgren    const: 3
87677a6248STony Lindgren
88677a6248STony Lindgren  gpio-range:
89677a6248STony Lindgren    description: Optional node for gpio range cells
90677a6248STony Lindgren    type: object
91677a6248STony Lindgren    additionalProperties: false
92677a6248STony Lindgren    properties:
93677a6248STony Lindgren      '#pinctrl-single,gpio-range-cells':
94677a6248STony Lindgren        description: Number of gpio range cells
95677a6248STony Lindgren        const: 3
96677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32
97677a6248STony Lindgren
98677a6248STony LindgrenpatternProperties:
99677a6248STony Lindgren  '-pins(-[0-9]+)?$|-pin$':
100677a6248STony Lindgren    description:
101677a6248STony Lindgren      Pin group node name using naming ending in -pins followed by an optional
102677a6248STony Lindgren      instance number
103677a6248STony Lindgren    type: object
104677a6248STony Lindgren    additionalProperties: false
105677a6248STony Lindgren
106677a6248STony Lindgren    properties:
107677a6248STony Lindgren      pinctrl-single,pins:
108677a6248STony Lindgren        description:
109677a6248STony Lindgren          Array of pins as described in pinmux-node.yaml for pinctrl-pin-array
110677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
111677a6248STony Lindgren
112677a6248STony Lindgren      pinctrl-single,bits:
113677a6248STony Lindgren        description: Register bit configuration for pinctrl-single,bit-per-mux
114677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
115677a6248STony Lindgren        items:
116677a6248STony Lindgren          - description: register offset
117677a6248STony Lindgren          - description: value
118677a6248STony Lindgren          - description: pin bitmask in the register
119677a6248STony Lindgren
120677a6248STony Lindgren      pinctrl-single,bias-pullup:
121677a6248STony Lindgren        description: Optional bias pull up configuration
122677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
123677a6248STony Lindgren        items:
124677a6248STony Lindgren          - description: input
125677a6248STony Lindgren          - description: enabled pull up bits
126677a6248STony Lindgren          - description: disabled pull up bits
127677a6248STony Lindgren          - description: bias pull up mask
128677a6248STony Lindgren
129677a6248STony Lindgren      pinctrl-single,bias-pulldown:
130677a6248STony Lindgren        description: Optional bias pull down configuration
131677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
132677a6248STony Lindgren        items:
133677a6248STony Lindgren          - description: input
134677a6248STony Lindgren          - description: enabled pull down bits
135677a6248STony Lindgren          - description: disabled pull down bits
136677a6248STony Lindgren          - description: bias pull down mask
137677a6248STony Lindgren
138677a6248STony Lindgren      pinctrl-single,drive-strength:
139677a6248STony Lindgren        description: Optional drive strength configuration
140677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
141677a6248STony Lindgren        items:
142677a6248STony Lindgren          - description: drive strength current
143677a6248STony Lindgren          - description: drive strength mask
144677a6248STony Lindgren
145677a6248STony Lindgren      pinctrl-single,input-schmitt:
146677a6248STony Lindgren        description: Optional input schmitt configuration
147677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
148677a6248STony Lindgren        items:
149677a6248STony Lindgren          - description: input
150677a6248STony Lindgren          - description: enable bits
151677a6248STony Lindgren          - description: disable bits
152677a6248STony Lindgren          - description: input schmitt mask
153677a6248STony Lindgren
154677a6248STony Lindgren      pinctrl-single,low-power-mode:
155677a6248STony Lindgren        description: Optional low power mode configuration
156677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
157677a6248STony Lindgren        items:
158677a6248STony Lindgren          - description: low power mode value
159677a6248STony Lindgren          - description: low power mode mask
160677a6248STony Lindgren
161677a6248STony Lindgren      pinctrl-single,slew-rate:
162677a6248STony Lindgren        description: Optional slew rate configuration
163677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
164677a6248STony Lindgren        items:
165677a6248STony Lindgren          - description: slew rate
166677a6248STony Lindgren          - description: slew rate mask
167677a6248STony Lindgren
168677a6248STony LindgrenallOf:
169677a6248STony Lindgren  - $ref: pinctrl.yaml#
170677a6248STony Lindgren
171677a6248STony Lindgrenrequired:
172677a6248STony Lindgren  - compatible
173677a6248STony Lindgren  - reg
174677a6248STony Lindgren  - pinctrl-single,register-width
175677a6248STony Lindgren
176677a6248STony LindgrenadditionalProperties: false
177677a6248STony Lindgren
178677a6248STony Lindgrenexamples:
179677a6248STony Lindgren  - |
180677a6248STony Lindgren    soc {
181677a6248STony Lindgren      #address-cells = <1>;
182677a6248STony Lindgren      #size-cells = <1>;
183677a6248STony Lindgren
184677a6248STony Lindgren      pinmux@4a100040 {
185677a6248STony Lindgren        compatible = "pinctrl-single";
186677a6248STony Lindgren        reg = <0x4a100040 0x0196>;
187677a6248STony Lindgren        #address-cells = <1>;
188677a6248STony Lindgren        #size-cells = <0>;
189677a6248STony Lindgren        #pinctrl-cells = <2>;
190677a6248STony Lindgren        #interrupt-cells = <1>;
191677a6248STony Lindgren        interrupt-controller;
192677a6248STony Lindgren        pinctrl-single,register-width = <16>;
193677a6248STony Lindgren        pinctrl-single,function-mask = <0xffff>;
194677a6248STony Lindgren        pinctrl-single,gpio-range = <&range 0 3 0>;
195677a6248STony Lindgren        range: gpio-range {
196677a6248STony Lindgren          #pinctrl-single,gpio-range-cells = <3>;
197677a6248STony Lindgren        };
198677a6248STony Lindgren
199677a6248STony Lindgren        uart2-pins {
200677a6248STony Lindgren          pinctrl-single,pins =
201677a6248STony Lindgren            <0xd8 0x118>,
202677a6248STony Lindgren            <0xda 0>,
203677a6248STony Lindgren            <0xdc 0x118>,
204677a6248STony Lindgren            <0xde 0>;
205677a6248STony Lindgren        };
206677a6248STony Lindgren      };
207677a6248STony Lindgren    };
208