171007147SMark Kettenis# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
271007147SMark Kettenis%YAML 1.2
371007147SMark Kettenis---
471007147SMark Kettenis$id: http://devicetree.org/schemas/pinctrl/apple,pinctrl.yaml#
571007147SMark Kettenis$schema: http://devicetree.org/meta-schemas/core.yaml#
671007147SMark Kettenis
771007147SMark Kettenistitle: Apple GPIO controller
871007147SMark Kettenis
971007147SMark Kettenismaintainers:
1071007147SMark Kettenis  - Mark Kettenis <kettenis@openbsd.org>
1171007147SMark Kettenis
1271007147SMark Kettenisdescription: |
1371007147SMark Kettenis  The Apple GPIO controller is a simple combined pin and GPIO
1471007147SMark Kettenis  controller present on Apple ARM SoC platforms, including various
1571007147SMark Kettenis  iPhone and iPad devices and the "Apple Silicon" Macs.
1671007147SMark Kettenis
1771007147SMark Kettenisproperties:
1871007147SMark Kettenis  compatible:
1971007147SMark Kettenis    items:
20cba9c615SHector Martin      - enum:
21cba9c615SHector Martin          - apple,t8103-pinctrl
22cba9c615SHector Martin          - apple,t8112-pinctrl
2371007147SMark Kettenis          - apple,t6000-pinctrl
2471007147SMark Kettenis      - const: apple,pinctrl
2571007147SMark Kettenis
2671007147SMark Kettenis  reg:
2771007147SMark Kettenis    maxItems: 1
2871007147SMark Kettenis
2971007147SMark Kettenis  clocks:
3071007147SMark Kettenis    maxItems: 1
3171007147SMark Kettenis
3271007147SMark Kettenis  gpio-controller: true
3371007147SMark Kettenis
3471007147SMark Kettenis  '#gpio-cells':
3571007147SMark Kettenis    const: 2
3671007147SMark Kettenis
3771007147SMark Kettenis  gpio-ranges:
3871007147SMark Kettenis    maxItems: 1
39aa68e1b8SJoey Gouly
40aa68e1b8SJoey Gouly  apple,npins:
41aa68e1b8SJoey Gouly    $ref: /schemas/types.yaml#/definitions/uint32
42aa68e1b8SJoey Gouly    description: The number of pins in this GPIO controller.
4371007147SMark Kettenis
4471007147SMark Kettenis  interrupts:
4571007147SMark Kettenis    description: One interrupt for each of the (up to 7) interrupt
4671007147SMark Kettenis      groups supported by the controller sorted by interrupt group
4771007147SMark Kettenis      number in ascending order.
4871007147SMark Kettenis    minItems: 1
4971007147SMark Kettenis    maxItems: 7
5071007147SMark Kettenis
5171007147SMark Kettenis  interrupt-controller: true
5269533cd3SJoey Gouly
5369533cd3SJoey Gouly  '#interrupt-cells':
5469533cd3SJoey Gouly    const: 2
551ed162b5SHector Martin
561ed162b5SHector Martin  power-domains:
571ed162b5SHector Martin    maxItems: 1
5871007147SMark Kettenis
5971007147SMark KettenispatternProperties:
6071007147SMark Kettenis  '-pins$':
6171007147SMark Kettenis    type: object
6271007147SMark Kettenis    $ref: pinmux-node.yaml#
6371007147SMark Kettenis
6471007147SMark Kettenis    properties:
6571007147SMark Kettenis      pinmux:
6671007147SMark Kettenis        description:
6771007147SMark Kettenis          Values are constructed from pin number and alternate function
6871007147SMark Kettenis          configuration number using the APPLE_PINMUX() helper macro
6971007147SMark Kettenis          defined in include/dt-bindings/pinctrl/apple.h.
7071007147SMark Kettenis
7171007147SMark Kettenis    required:
7271007147SMark Kettenis      - pinmux
7371007147SMark Kettenis
7471007147SMark Kettenis    additionalProperties: false
75c09acbc4SRafał Miłecki
76*49cd1dd1SRob HerringallOf:
77c09acbc4SRafał Miłecki  - $ref: pinctrl.yaml#
7871007147SMark Kettenis
7971007147SMark Kettenisrequired:
8071007147SMark Kettenis  - compatible
8171007147SMark Kettenis  - reg
8271007147SMark Kettenis  - gpio-controller
8371007147SMark Kettenis  - '#gpio-cells'
84aa68e1b8SJoey Gouly  - gpio-ranges
8571007147SMark Kettenis  - apple,npins
8671007147SMark Kettenis
8771007147SMark KettenisadditionalProperties: false
8871007147SMark Kettenis
8971007147SMark Kettenisexamples:
9071007147SMark Kettenis  - |
9171007147SMark Kettenis    #include <dt-bindings/interrupt-controller/apple-aic.h>
9271007147SMark Kettenis    #include <dt-bindings/pinctrl/apple.h>
9371007147SMark Kettenis
9471007147SMark Kettenis    soc {
9571007147SMark Kettenis      #address-cells = <2>;
9671007147SMark Kettenis      #size-cells = <2>;
9771007147SMark Kettenis
9871007147SMark Kettenis      pinctrl: pinctrl@23c100000 {
9971007147SMark Kettenis        compatible = "apple,t8103-pinctrl", "apple,pinctrl";
10071007147SMark Kettenis        reg = <0x2 0x3c100000 0x0 0x100000>;
10171007147SMark Kettenis        clocks = <&gpio_clk>;
10271007147SMark Kettenis
10371007147SMark Kettenis        gpio-controller;
10471007147SMark Kettenis        #gpio-cells = <2>;
105aa68e1b8SJoey Gouly        gpio-ranges = <&pinctrl 0 0 212>;
10671007147SMark Kettenis        apple,npins = <212>;
10771007147SMark Kettenis
10869533cd3SJoey Gouly        interrupt-controller;
10971007147SMark Kettenis        #interrupt-cells = <2>;
11071007147SMark Kettenis        interrupt-parent = <&aic>;
11171007147SMark Kettenis        interrupts = <AIC_IRQ 16 IRQ_TYPE_LEVEL_HIGH>,
11271007147SMark Kettenis                     <AIC_IRQ 17 IRQ_TYPE_LEVEL_HIGH>,
11371007147SMark Kettenis                     <AIC_IRQ 18 IRQ_TYPE_LEVEL_HIGH>,
11471007147SMark Kettenis                     <AIC_IRQ 19 IRQ_TYPE_LEVEL_HIGH>,
11571007147SMark Kettenis                     <AIC_IRQ 20 IRQ_TYPE_LEVEL_HIGH>,
11671007147SMark Kettenis                     <AIC_IRQ 21 IRQ_TYPE_LEVEL_HIGH>,
11771007147SMark Kettenis                     <AIC_IRQ 22 IRQ_TYPE_LEVEL_HIGH>;
11871007147SMark Kettenis
11971007147SMark Kettenis        pcie_pins: pcie-pins {
12071007147SMark Kettenis          pinmux = <APPLE_PINMUX(150, 1)>,
12171007147SMark Kettenis                   <APPLE_PINMUX(151, 1)>,
12271007147SMark Kettenis                   <APPLE_PINMUX(32, 1)>;
12371007147SMark Kettenis        };
12471007147SMark Kettenis      };
125    };
126