1 # SPDX-License-Identifier: GPL-2.0-only
4 $id: http://devicetree.org/schemas/pinctrl/samsung,pinctrl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Samsung S3C/S5P/Exynos SoC pin controller
10 - Krzysztof Kozlowski <krzk@kernel.org>
11 - Sylwester Nawrocki <s.nawrocki@samsung.com>
12 - Tomasz Figa <tomasz.figa@gmail.com>
15 This is a part of device tree bindings for Samsung S3C/S5P/Exynos SoC pin
18 All the pin controller nodes should be represented in the aliases node using
19 the following format 'pinctrl{n}' where n is a unique number for the alias.
21 The controller supports three types of interrupts::
22 - External GPIO interrupts (see interrupts property in pin controller node);
24 - External wake-up interrupts - multiplexed (capable of waking up the system
25 see interrupts property in external wake-up interrupt controller node -
26 samsung,pinctrl-wakeup-interrupt.yaml);
28 - External wake-up interrupts - direct (capable of waking up the system, see
29 interrupts property in every bank of pin controller with external wake-up
30 interrupt controller - samsung,pinctrl-gpio-bank.yaml).
34 pattern: "^pinctrl(@.*)?"
38 - samsung,s3c2412-pinctrl
39 - samsung,s3c2416-pinctrl
40 - samsung,s3c2440-pinctrl
41 - samsung,s3c2450-pinctrl
42 - samsung,s3c64xx-pinctrl
43 - samsung,s5pv210-pinctrl
44 - samsung,exynos3250-pinctrl
45 - samsung,exynos4210-pinctrl
46 - samsung,exynos4x12-pinctrl
47 - samsung,exynos5250-pinctrl
48 - samsung,exynos5260-pinctrl
49 - samsung,exynos5410-pinctrl
50 - samsung,exynos5420-pinctrl
51 - samsung,exynos5433-pinctrl
52 - samsung,exynos7-pinctrl
53 - samsung,exynos7885-pinctrl
54 - samsung,exynos850-pinctrl
55 - samsung,exynosautov9-pinctrl
60 Required for GPIO banks supporting external GPIO interrupts.
68 Second base address of the pin controller if the specific registers of
69 the pin controller are separated into the different base address.
70 Only certain banks of certain pin controller might need it.
74 wakeup-interrupt-controller:
75 $ref: samsung,pinctrl-wakeup-interrupt.yaml
78 "^[a-z]+[0-9]*-gpio-bank$":
80 Pin banks of the controller are represented by child nodes of the
81 controller node. Bank name is taken from name of the node.
82 $ref: samsung,pinctrl-gpio-bank.yaml
86 - $ref: samsung,pinctrl-pins-cfg.yaml
92 $ref: samsung,pinctrl-pins-cfg.yaml
94 additionalProperties: false
96 "^(initial|sleep)-state$":
98 additionalProperties: false
101 "^(pin-[a-z0-9-]+|[a-z0-9-]+-pin)$":
102 $ref: samsung,pinctrl-pins-cfg.yaml
106 description: See samsung,pinctrl-pins-cfg.yaml
107 $ref: /schemas/types.yaml#/definitions/string-array
113 unevaluatedProperties: false
120 - $ref: "pinctrl.yaml#"
125 const: samsung,exynos5433-pinctrl
137 additionalProperties: false
142 compatible = "samsung,s3c64xx-pinctrl";
143 reg = <0x7f008000 0x1000>;
144 interrupt-parent = <&vic1>;
147 wakeup-interrupt-controller {
148 compatible = "samsung,s3c64xx-wakeup-eint";
149 interrupts-extended = <&vic0 0>,
155 /* Pin bank with external GPIO or muxed external wake-up interrupts */
159 interrupt-controller;
160 #interrupt-cells = <2>;
166 samsung,pins = "gpa-0", "gpa-1";
167 samsung,pin-function = <2>;
168 samsung,pin-pud = <0>;
175 #include <dt-bindings/interrupt-controller/arm-gic.h>
178 compatible = "samsung,exynos4210-pinctrl";
179 reg = <0x11400000 0x1000>;
180 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
182 pinctrl-names = "default";
183 pinctrl-0 = <&sleep0>;
185 /* Pin bank with external GPIO or muxed external wake-up interrupts */
189 interrupt-controller;
190 #interrupt-cells = <2>;
196 samsung,pins = "gpa0-0", "gpa0-1";
197 samsung,pin-function = <2>;
198 samsung,pin-pud = <0>;
199 samsung,pin-drv = <0>;
204 sleep0: sleep-state {
206 samsung,pins = "gpa0-0";
207 samsung,pin-con-pdn = <2>;
208 samsung,pin-pud-pdn = <0>;
212 samsung,pins = "gpa0-1";
213 samsung,pin-con-pdn = <0>;
214 samsung,pin-pud-pdn = <0>;
222 #include <dt-bindings/interrupt-controller/arm-gic.h>
225 compatible = "samsung,exynos4210-pinctrl";
226 reg = <0x11000000 0x1000>;
227 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
229 wakeup-interrupt-controller {
230 compatible = "samsung,exynos4210-wakeup-eint";
231 interrupt-parent = <&gic>;
232 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
235 /* Pin bank with external GPIO or muxed external wake-up interrupts */
239 interrupt-controller;
240 #interrupt-cells = <2>;
243 /* Pin bank without external interrupts */
249 /* Pin bank with external direct wake-up interrupts */
254 interrupt-controller;
255 interrupt-parent = <&gic>;
256 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
257 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
258 <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
259 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
260 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
261 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
262 <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
263 <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
264 #interrupt-cells = <2>;
270 samsung,pins = "gpk0-0";
271 samsung,pin-function = <2>;
272 samsung,pin-pud = <0>;
273 samsung,pin-drv = <3>;
276 sd4-bus-width8-pins {
278 samsung,pins = "gpk0-3", "gpk0-4",
280 samsung,pin-function = <3>;
281 samsung,pin-pud = <3>;
282 samsung,pin-drv = <3>;
286 samsung,pins = "gpk1-3", "gpk1-4",
288 samsung,pin-function = <4>;
289 samsung,pin-pud = <3>;
290 samsung,pin-drv = <3>;
297 samsung,pins = "gpx3-3";
298 samsung,pin-function = <1>;
299 samsung,pin-pud = <0>;
300 samsung,pin-drv = <0>;
301 samsung,pin-val = <0>;
306 #include <dt-bindings/interrupt-controller/arm-gic.h>
309 compatible = "samsung,exynos5433-pinctrl";
310 reg = <0x10580000 0x1a20>, <0x11090000 0x100>;
312 pinctrl-names = "default";
313 pinctrl-0 = <&initial_alive>;
315 wakeup-interrupt-controller {
316 compatible = "samsung,exynos7-wakeup-eint";
317 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
320 /* Pin bank with external direct wake-up interrupts */
325 interrupt-controller;
326 interrupt-parent = <&gic>;
327 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
328 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
329 <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
330 <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
331 <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
332 <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
333 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
334 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
335 #interrupt-cells = <2>;
341 samsung,pins = "gpf1-3";
342 samsung,pin-function = <0xf>;
347 initial_alive: initial-state {
349 samsung,pins = "gpa0-0";
350 samsung,pin-function = <0>;
351 samsung,pin-pud = <1>;
352 samsung,pin-drv = <0>;
360 #include <dt-bindings/interrupt-controller/arm-gic.h>
363 compatible = "samsung,exynos5433-pinctrl";
364 reg = <0x114b0000 0x1000>;
365 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
366 power-domains = <&pd_aud>;
368 /* Pin bank with external GPIO or muxed external wake-up interrupts */
372 interrupt-controller;
373 #interrupt-cells = <2>;
379 samsung,pins = "gpz0-0", "gpz0-1", "gpz0-2", "gpz0-3",
380 "gpz0-4", "gpz0-5", "gpz0-6";
381 samsung,pin-function = <2>;
382 samsung,pin-pud = <0>;
383 samsung,pin-drv = <0>;