1*71007147SMark Kettenis# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*71007147SMark Kettenis%YAML 1.2
3*71007147SMark Kettenis---
4*71007147SMark Kettenis$id: http://devicetree.org/schemas/pinctrl/apple,pinctrl.yaml#
5*71007147SMark Kettenis$schema: http://devicetree.org/meta-schemas/core.yaml#
6*71007147SMark Kettenis
7*71007147SMark Kettenistitle: Apple GPIO controller
8*71007147SMark Kettenis
9*71007147SMark Kettenismaintainers:
10*71007147SMark Kettenis  - Mark Kettenis <kettenis@openbsd.org>
11*71007147SMark Kettenis
12*71007147SMark Kettenisdescription: |
13*71007147SMark Kettenis  The Apple GPIO controller is a simple combined pin and GPIO
14*71007147SMark Kettenis  controller present on Apple ARM SoC platforms, including various
15*71007147SMark Kettenis  iPhone and iPad devices and the "Apple Silicon" Macs.
16*71007147SMark Kettenis
17*71007147SMark Kettenisproperties:
18*71007147SMark Kettenis  compatible:
19*71007147SMark Kettenis    items:
20*71007147SMark Kettenis      - const: apple,t8103-pinctrl
21*71007147SMark Kettenis      - const: apple,pinctrl
22*71007147SMark Kettenis
23*71007147SMark Kettenis  reg:
24*71007147SMark Kettenis    maxItems: 1
25*71007147SMark Kettenis
26*71007147SMark Kettenis  clocks:
27*71007147SMark Kettenis    maxItems: 1
28*71007147SMark Kettenis
29*71007147SMark Kettenis  gpio-controller: true
30*71007147SMark Kettenis
31*71007147SMark Kettenis  '#gpio-cells':
32*71007147SMark Kettenis    const: 2
33*71007147SMark Kettenis
34*71007147SMark Kettenis  gpio-ranges:
35*71007147SMark Kettenis    maxItems: 1
36*71007147SMark Kettenis
37*71007147SMark Kettenis  interrupts:
38*71007147SMark Kettenis    description: One interrupt for each of the (up to 7) interrupt
39*71007147SMark Kettenis      groups supported by the controller sorted by interrupt group
40*71007147SMark Kettenis      number in ascending order.
41*71007147SMark Kettenis    minItems: 1
42*71007147SMark Kettenis    maxItems: 7
43*71007147SMark Kettenis
44*71007147SMark Kettenis  interrupt-controller: true
45*71007147SMark Kettenis
46*71007147SMark KettenispatternProperties:
47*71007147SMark Kettenis  '-pins$':
48*71007147SMark Kettenis    type: object
49*71007147SMark Kettenis    $ref: pinmux-node.yaml#
50*71007147SMark Kettenis
51*71007147SMark Kettenis    properties:
52*71007147SMark Kettenis      pinmux:
53*71007147SMark Kettenis        description:
54*71007147SMark Kettenis          Values are constructed from pin number and alternate function
55*71007147SMark Kettenis          configuration number using the APPLE_PINMUX() helper macro
56*71007147SMark Kettenis          defined in include/dt-bindings/pinctrl/apple.h.
57*71007147SMark Kettenis
58*71007147SMark Kettenis    required:
59*71007147SMark Kettenis      - pinmux
60*71007147SMark Kettenis
61*71007147SMark Kettenis    additionalProperties: false
62*71007147SMark Kettenis
63*71007147SMark Kettenisrequired:
64*71007147SMark Kettenis  - compatible
65*71007147SMark Kettenis  - reg
66*71007147SMark Kettenis  - gpio-controller
67*71007147SMark Kettenis  - '#gpio-cells'
68*71007147SMark Kettenis  - gpio-ranges
69*71007147SMark Kettenis
70*71007147SMark KettenisadditionalProperties: false
71*71007147SMark Kettenis
72*71007147SMark Kettenisexamples:
73*71007147SMark Kettenis  - |
74*71007147SMark Kettenis    #include <dt-bindings/interrupt-controller/apple-aic.h>
75*71007147SMark Kettenis    #include <dt-bindings/pinctrl/apple.h>
76*71007147SMark Kettenis
77*71007147SMark Kettenis    soc {
78*71007147SMark Kettenis      #address-cells = <2>;
79*71007147SMark Kettenis      #size-cells = <2>;
80*71007147SMark Kettenis
81*71007147SMark Kettenis      pinctrl: pinctrl@23c100000 {
82*71007147SMark Kettenis        compatible = "apple,t8103-pinctrl", "apple,pinctrl";
83*71007147SMark Kettenis        reg = <0x2 0x3c100000 0x0 0x100000>;
84*71007147SMark Kettenis        clocks = <&gpio_clk>;
85*71007147SMark Kettenis
86*71007147SMark Kettenis        gpio-controller;
87*71007147SMark Kettenis        #gpio-cells = <2>;
88*71007147SMark Kettenis        gpio-ranges = <&pinctrl 0 0 212>;
89*71007147SMark Kettenis
90*71007147SMark Kettenis        interrupt-controller;
91*71007147SMark Kettenis        interrupt-parent = <&aic>;
92*71007147SMark Kettenis        interrupts = <AIC_IRQ 16 IRQ_TYPE_LEVEL_HIGH>,
93*71007147SMark Kettenis                     <AIC_IRQ 17 IRQ_TYPE_LEVEL_HIGH>,
94*71007147SMark Kettenis                     <AIC_IRQ 18 IRQ_TYPE_LEVEL_HIGH>,
95*71007147SMark Kettenis                     <AIC_IRQ 19 IRQ_TYPE_LEVEL_HIGH>,
96*71007147SMark Kettenis                     <AIC_IRQ 20 IRQ_TYPE_LEVEL_HIGH>,
97*71007147SMark Kettenis                     <AIC_IRQ 21 IRQ_TYPE_LEVEL_HIGH>,
98*71007147SMark Kettenis                     <AIC_IRQ 22 IRQ_TYPE_LEVEL_HIGH>;
99*71007147SMark Kettenis
100*71007147SMark Kettenis        pcie_pins: pcie-pins {
101*71007147SMark Kettenis          pinmux = <APPLE_PINMUX(150, 1)>,
102*71007147SMark Kettenis                   <APPLE_PINMUX(151, 1)>,
103*71007147SMark Kettenis                   <APPLE_PINMUX(32, 1)>;
104*71007147SMark Kettenis        };
105*71007147SMark Kettenis      };
106*71007147SMark Kettenis    };
107