xref: /linux/Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml (revision fbf5df34a4dbcd09d433dd4f0916bf9b2ddb16de)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/microchip,mpfs-gpio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Microchip MPFS GPIO Controller
8
9maintainers:
10  - Conor Dooley <conor.dooley@microchip.com>
11
12properties:
13  compatible:
14    oneOf:
15      - items:
16          - const: microchip,pic64gx-gpio
17          - const: microchip,mpfs-gpio
18      - enum:
19          - microchip,mpfs-gpio
20          - microchip,coregpio-rtl-v3
21
22  reg:
23    maxItems: 1
24
25  interrupts:
26    description:
27      Interrupt mapping, one per GPIO. Maximum 32 GPIOs.
28    minItems: 1
29    maxItems: 32
30
31  interrupt-controller: true
32
33  clocks:
34    maxItems: 1
35
36  resets:
37    maxItems: 1
38
39  "#gpio-cells":
40    const: 2
41
42  "#interrupt-cells":
43    const: 2
44
45  ngpios:
46    description:
47      The number of GPIOs available.
48    minimum: 1
49    maximum: 32
50    default: 32
51
52  gpio-controller: true
53  gpio-line-names: true
54
55patternProperties:
56  "^.+-hog(-[0-9]+)?$":
57    type: object
58    required:
59      - gpio-hog
60
61allOf:
62  - if:
63      properties:
64        compatible:
65          contains:
66            const: microchip,mpfs-gpio
67    then:
68      properties:
69        ngpios:
70          enum: [14, 24, 32]
71        interrupts:
72          minItems: 14
73      required:
74        - interrupts
75        - "#interrupt-cells"
76        - interrupt-controller
77
78required:
79  - compatible
80  - reg
81  - "#gpio-cells"
82  - gpio-controller
83  - clocks
84
85additionalProperties: false
86
87examples:
88  - |
89    gpio@20122000 {
90        compatible = "microchip,mpfs-gpio";
91        reg = <0x20122000 0x1000>;
92        clocks = <&clkcfg 25>;
93        interrupt-parent = <&irqmux>;
94        gpio-controller;
95        #gpio-cells = <2>;
96        ngpios = <32>;
97        interrupt-controller;
98        #interrupt-cells = <2>;
99        interrupts = <64>, <65>, <66>, <67>,
100                     <68>, <69>, <70>, <71>,
101                     <72>, <73>, <74>, <75>,
102                     <76>, <77>, <78>, <79>,
103                     <80>, <81>, <82>, <83>,
104                     <84>, <85>, <86>, <87>,
105                     <88>, <89>, <90>, <91>,
106                     <92>, <93>, <94>, <95>;
107    };
108...
109