xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/pinctrl-single.yaml (revision 677a62482bd6e584f83d0342e78735e3cd449ba4)
1*677a6248STony Lindgren# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*677a6248STony Lindgren%YAML 1.2
3*677a6248STony Lindgren---
4*677a6248STony Lindgren$id: http://devicetree.org/schemas/pinctrl/pinctrl-single.yaml#
5*677a6248STony Lindgren$schema: http://devicetree.org/meta-schemas/core.yaml#
6*677a6248STony Lindgren
7*677a6248STony Lindgrentitle: Generic Pin Controller with a Single Register for One or More Pins
8*677a6248STony Lindgren
9*677a6248STony Lindgrenmaintainers:
10*677a6248STony Lindgren  - Tony Lindgren <tony@atomide.com>
11*677a6248STony Lindgren
12*677a6248STony Lindgrendescription:
13*677a6248STony Lindgren  Some pin controller devices use a single register for one or more pins. The
14*677a6248STony Lindgren  range of pin control registers can vary from one to many for each controller
15*677a6248STony Lindgren  instance. Some SoCs from Altera, Broadcom, HiSilicon, Ralink, and TI have this
16*677a6248STony Lindgren  kind of pin controller instances.
17*677a6248STony Lindgren
18*677a6248STony Lindgrenproperties:
19*677a6248STony Lindgren  compatible:
20*677a6248STony Lindgren    oneOf:
21*677a6248STony Lindgren      - enum:
22*677a6248STony Lindgren          - pinctrl-single
23*677a6248STony Lindgren          - pinconf-single
24*677a6248STony Lindgren      - items:
25*677a6248STony Lindgren          - enum:
26*677a6248STony Lindgren              - ti,am437-padconf
27*677a6248STony Lindgren              - ti,dra7-padconf
28*677a6248STony Lindgren              - ti,omap2420-padconf
29*677a6248STony Lindgren              - ti,omap2430-padconf
30*677a6248STony Lindgren              - ti,omap3-padconf
31*677a6248STony Lindgren              - ti,omap4-padconf
32*677a6248STony Lindgren              - ti,omap5-padconf
33*677a6248STony Lindgren          - const: pinctrl-single
34*677a6248STony Lindgren
35*677a6248STony Lindgren  reg:
36*677a6248STony Lindgren    maxItems: 1
37*677a6248STony Lindgren
38*677a6248STony Lindgren  interrupt-controller: true
39*677a6248STony Lindgren
40*677a6248STony Lindgren  '#interrupt-cells':
41*677a6248STony Lindgren    const: 1
42*677a6248STony Lindgren
43*677a6248STony Lindgren  '#address-cells':
44*677a6248STony Lindgren    const: 1
45*677a6248STony Lindgren
46*677a6248STony Lindgren  '#size-cells':
47*677a6248STony Lindgren    const: 0
48*677a6248STony Lindgren
49*677a6248STony Lindgren  '#pinctrl-cells':
50*677a6248STony Lindgren    description:
51*677a6248STony Lindgren      Number of cells. Usually 2, consisting of register offset, pin configuration
52*677a6248STony Lindgren      value, and pinmux mode. Some controllers may use 1 for just offset and value.
53*677a6248STony Lindgren    enum: [ 1, 2 ]
54*677a6248STony Lindgren
55*677a6248STony Lindgren  pinctrl-single,bit-per-mux:
56*677a6248STony Lindgren    description: Optional flag to indicate register controls more than one pin
57*677a6248STony Lindgren    type: boolean
58*677a6248STony Lindgren
59*677a6248STony Lindgren  pinctrl-single,function-mask:
60*677a6248STony Lindgren    description: Mask of the allowed register bits
61*677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/uint32
62*677a6248STony Lindgren
63*677a6248STony Lindgren  pinctrl-single,function-off:
64*677a6248STony Lindgren    description: Optional function off mode for disabled state
65*677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/uint32
66*677a6248STony Lindgren
67*677a6248STony Lindgren  pinctrl-single,register-width:
68*677a6248STony Lindgren    description: Width of pin specific bits in the register
69*677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/uint32
70*677a6248STony Lindgren    enum: [ 8, 16, 32 ]
71*677a6248STony Lindgren
72*677a6248STony Lindgren  pinctrl-single,gpio-range:
73*677a6248STony Lindgren    description: Optional list of pin base, nr pins & gpio function
74*677a6248STony Lindgren    $ref: /schemas/types.yaml#/definitions/phandle-array
75*677a6248STony Lindgren    items:
76*677a6248STony Lindgren      - items:
77*677a6248STony Lindgren          - description: phandle of a gpio-range node
78*677a6248STony Lindgren          - description: pin base
79*677a6248STony Lindgren          - description: number of pins
80*677a6248STony Lindgren          - description: gpio function
81*677a6248STony Lindgren
82*677a6248STony Lindgren  '#gpio-range-cells':
83*677a6248STony Lindgren    description: No longer needed, may exist in older files for gpio-ranges
84*677a6248STony Lindgren    deprecated: true
85*677a6248STony Lindgren    const: 3
86*677a6248STony Lindgren
87*677a6248STony Lindgren  gpio-range:
88*677a6248STony Lindgren    description: Optional node for gpio range cells
89*677a6248STony Lindgren    type: object
90*677a6248STony Lindgren    additionalProperties: false
91*677a6248STony Lindgren    properties:
92*677a6248STony Lindgren      '#pinctrl-single,gpio-range-cells':
93*677a6248STony Lindgren        description: Number of gpio range cells
94*677a6248STony Lindgren        const: 3
95*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32
96*677a6248STony Lindgren
97*677a6248STony LindgrenpatternProperties:
98*677a6248STony Lindgren  '-pins(-[0-9]+)?$|-pin$':
99*677a6248STony Lindgren    description:
100*677a6248STony Lindgren      Pin group node name using naming ending in -pins followed by an optional
101*677a6248STony Lindgren      instance number
102*677a6248STony Lindgren    type: object
103*677a6248STony Lindgren    additionalProperties: false
104*677a6248STony Lindgren
105*677a6248STony Lindgren    properties:
106*677a6248STony Lindgren      pinctrl-single,pins:
107*677a6248STony Lindgren        description:
108*677a6248STony Lindgren          Array of pins as described in pinmux-node.yaml for pinctrl-pin-array
109*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
110*677a6248STony Lindgren
111*677a6248STony Lindgren      pinctrl-single,bits:
112*677a6248STony Lindgren        description: Register bit configuration for pinctrl-single,bit-per-mux
113*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
114*677a6248STony Lindgren        items:
115*677a6248STony Lindgren          - description: register offset
116*677a6248STony Lindgren          - description: value
117*677a6248STony Lindgren          - description: pin bitmask in the register
118*677a6248STony Lindgren
119*677a6248STony Lindgren      pinctrl-single,bias-pullup:
120*677a6248STony Lindgren        description: Optional bias pull up configuration
121*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
122*677a6248STony Lindgren        items:
123*677a6248STony Lindgren          - description: input
124*677a6248STony Lindgren          - description: enabled pull up bits
125*677a6248STony Lindgren          - description: disabled pull up bits
126*677a6248STony Lindgren          - description: bias pull up mask
127*677a6248STony Lindgren
128*677a6248STony Lindgren      pinctrl-single,bias-pulldown:
129*677a6248STony Lindgren        description: Optional bias pull down configuration
130*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
131*677a6248STony Lindgren        items:
132*677a6248STony Lindgren          - description: input
133*677a6248STony Lindgren          - description: enabled pull down bits
134*677a6248STony Lindgren          - description: disabled pull down bits
135*677a6248STony Lindgren          - description: bias pull down mask
136*677a6248STony Lindgren
137*677a6248STony Lindgren      pinctrl-single,drive-strength:
138*677a6248STony Lindgren        description: Optional drive strength configuration
139*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
140*677a6248STony Lindgren        items:
141*677a6248STony Lindgren          - description: drive strength current
142*677a6248STony Lindgren          - description: drive strength mask
143*677a6248STony Lindgren
144*677a6248STony Lindgren      pinctrl-single,input-schmitt:
145*677a6248STony Lindgren        description: Optional input schmitt configuration
146*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
147*677a6248STony Lindgren        items:
148*677a6248STony Lindgren          - description: input
149*677a6248STony Lindgren          - description: enable bits
150*677a6248STony Lindgren          - description: disable bits
151*677a6248STony Lindgren          - description: input schmitt mask
152*677a6248STony Lindgren
153*677a6248STony Lindgren      pinctrl-single,low-power-mode:
154*677a6248STony Lindgren        description: Optional low power mode configuration
155*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
156*677a6248STony Lindgren        items:
157*677a6248STony Lindgren          - description: low power mode value
158*677a6248STony Lindgren          - description: low power mode mask
159*677a6248STony Lindgren
160*677a6248STony Lindgren      pinctrl-single,slew-rate:
161*677a6248STony Lindgren        description: Optional slew rate configuration
162*677a6248STony Lindgren        $ref: /schemas/types.yaml#/definitions/uint32-array
163*677a6248STony Lindgren        items:
164*677a6248STony Lindgren          - description: slew rate
165*677a6248STony Lindgren          - description: slew rate mask
166*677a6248STony Lindgren
167*677a6248STony LindgrenallOf:
168*677a6248STony Lindgren  - $ref: pinctrl.yaml#
169*677a6248STony Lindgren
170*677a6248STony Lindgrenrequired:
171*677a6248STony Lindgren  - compatible
172*677a6248STony Lindgren  - reg
173*677a6248STony Lindgren  - pinctrl-single,register-width
174*677a6248STony Lindgren
175*677a6248STony LindgrenadditionalProperties: false
176*677a6248STony Lindgren
177*677a6248STony Lindgrenexamples:
178*677a6248STony Lindgren  - |
179*677a6248STony Lindgren    soc {
180*677a6248STony Lindgren      #address-cells = <1>;
181*677a6248STony Lindgren      #size-cells = <1>;
182*677a6248STony Lindgren
183*677a6248STony Lindgren      pinmux@4a100040 {
184*677a6248STony Lindgren        compatible = "pinctrl-single";
185*677a6248STony Lindgren        reg = <0x4a100040 0x0196>;
186*677a6248STony Lindgren        #address-cells = <1>;
187*677a6248STony Lindgren        #size-cells = <0>;
188*677a6248STony Lindgren        #pinctrl-cells = <2>;
189*677a6248STony Lindgren        #interrupt-cells = <1>;
190*677a6248STony Lindgren        interrupt-controller;
191*677a6248STony Lindgren        pinctrl-single,register-width = <16>;
192*677a6248STony Lindgren        pinctrl-single,function-mask = <0xffff>;
193*677a6248STony Lindgren        pinctrl-single,gpio-range = <&range 0 3 0>;
194*677a6248STony Lindgren        range: gpio-range {
195*677a6248STony Lindgren          #pinctrl-single,gpio-range-cells = <3>;
196*677a6248STony Lindgren        };
197*677a6248STony Lindgren
198*677a6248STony Lindgren        uart2-pins {
199*677a6248STony Lindgren          pinctrl-single,pins =
200*677a6248STony Lindgren            <0xd8 0x118>,
201*677a6248STony Lindgren            <0xda 0>,
202*677a6248STony Lindgren            <0xdc 0x118>,
203*677a6248STony Lindgren            <0xde 0>;
204*677a6248STony Lindgren        };
205*677a6248STony Lindgren      };
206*677a6248STony Lindgren    };
207