11282157aSChris Packham# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
21282157aSChris Packham%YAML 1.2
31282157aSChris Packham---
41282157aSChris Packham$id: http://devicetree.org/schemas/gpio/gpio-mvebu.yaml#
51282157aSChris Packham$schema: http://devicetree.org/meta-schemas/core.yaml#
61282157aSChris Packham
71282157aSChris Packhamtitle: Marvell EBU GPIO controller
81282157aSChris Packham
91282157aSChris Packhammaintainers:
101282157aSChris Packham  - Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
111282157aSChris Packham  - Andrew Lunn <andrew@lunn.ch>
121282157aSChris Packham
131282157aSChris Packhamproperties:
141282157aSChris Packham  compatible:
151282157aSChris Packham    oneOf:
161282157aSChris Packham      - enum:
171282157aSChris Packham          - marvell,armada-8k-gpio
181282157aSChris Packham          - marvell,orion-gpio
191282157aSChris Packham
201282157aSChris Packham      - items:
211282157aSChris Packham          - enum:
221282157aSChris Packham              - marvell,mv78200-gpio
231282157aSChris Packham              - marvell,armada-370-gpio
241282157aSChris Packham          - const: marvell,orion-gpio
251282157aSChris Packham
26988c8c0cSChris Packham      - description: Deprecated binding
27988c8c0cSChris Packham        items:
28988c8c0cSChris Packham          - const: marvell,armadaxp-gpio
29988c8c0cSChris Packham          - const: marvell,orion-gpio
30988c8c0cSChris Packham        deprecated: true
31988c8c0cSChris Packham
321282157aSChris Packham  reg:
331282157aSChris Packham    description: |
341282157aSChris Packham      Address and length of the register set for the device. Not used for
351282157aSChris Packham      marvell,armada-8k-gpio.
361282157aSChris Packham
37988c8c0cSChris Packham      A second entry can be provided, for the PWM function using the GPIO Blink
38988c8c0cSChris Packham      Counter on/off registers.
391282157aSChris Packham    minItems: 1
401282157aSChris Packham    maxItems: 2
411282157aSChris Packham
421282157aSChris Packham  reg-names:
431282157aSChris Packham    items:
441282157aSChris Packham      - const: gpio
451282157aSChris Packham      - const: pwm
461282157aSChris Packham    minItems: 1
471282157aSChris Packham
48*df08a6fcSChris Packham  offset:
49*df08a6fcSChris Packham    $ref: /schemas/types.yaml#/definitions/uint32
50*df08a6fcSChris Packham    description: Offset in the register map for the gpio registers (in bytes)
51*df08a6fcSChris Packham
521282157aSChris Packham  interrupts:
531282157aSChris Packham    description: |
541282157aSChris Packham      The list of interrupts that are used for all the pins managed by this
551282157aSChris Packham      GPIO bank. There can be more than one interrupt (example: 1 interrupt
561282157aSChris Packham      per 8 pins on Armada XP, which means 4 interrupts per bank of 32
571282157aSChris Packham      GPIOs).
581282157aSChris Packham    minItems: 1
591282157aSChris Packham    maxItems: 4
601282157aSChris Packham
611282157aSChris Packham  interrupt-controller: true
621282157aSChris Packham
631282157aSChris Packham  "#interrupt-cells":
641282157aSChris Packham    const: 2
651282157aSChris Packham
661282157aSChris Packham  gpio-controller: true
671282157aSChris Packham
681282157aSChris Packham  ngpios:
691282157aSChris Packham    minimum: 1
701282157aSChris Packham    maximum: 32
711282157aSChris Packham
721282157aSChris Packham  "#gpio-cells":
731282157aSChris Packham    const: 2
741282157aSChris Packham
75*df08a6fcSChris Packham  marvell,pwm-offset:
76*df08a6fcSChris Packham    $ref: /schemas/types.yaml#/definitions/uint32
77*df08a6fcSChris Packham    description: Offset in the register map for the pwm registers (in bytes)
78*df08a6fcSChris Packham
791282157aSChris Packham  "#pwm-cells":
801282157aSChris Packham    description:
811282157aSChris Packham      The first cell is the GPIO line number. The second cell is the period
821282157aSChris Packham      in nanoseconds.
831282157aSChris Packham    const: 2
841282157aSChris Packham
851282157aSChris Packham  clocks:
861282157aSChris Packham    description:
871282157aSChris Packham      Clock(s) used for PWM function.
881282157aSChris Packham    items:
891282157aSChris Packham      - description: Core clock
901282157aSChris Packham      - description: AXI bus clock
911282157aSChris Packham    minItems: 1
921282157aSChris Packham
931282157aSChris Packham  clock-names:
941282157aSChris Packham    items:
951282157aSChris Packham      - const: core
961282157aSChris Packham      - const: axi
971282157aSChris Packham    minItems: 1
981282157aSChris Packham
991282157aSChris Packhamrequired:
1001282157aSChris Packham  - compatible
1011282157aSChris Packham  - gpio-controller
1021282157aSChris Packham  - ngpios
1031282157aSChris Packham  - "#gpio-cells"
1041282157aSChris Packham
1051282157aSChris PackhamallOf:
1061282157aSChris Packham  - if:
1071282157aSChris Packham      properties:
1081282157aSChris Packham        compatible:
1091282157aSChris Packham          contains:
1101282157aSChris Packham            const: marvell,armada-8k-gpio
1111282157aSChris Packham    then:
1121282157aSChris Packham      required:
1131282157aSChris Packham        - offset
1141282157aSChris Packham    else:
1151282157aSChris Packham      required:
1161282157aSChris Packham        - reg
1171282157aSChris Packham
1181282157aSChris PackhamunevaluatedProperties: true
1191282157aSChris Packham
1201282157aSChris Packhamexamples:
1211282157aSChris Packham  - |
1221282157aSChris Packham    gpio@d0018100 {
1231282157aSChris Packham      compatible = "marvell,armadaxp-gpio", "marvell,orion-gpio";
1241282157aSChris Packham      reg = <0xd0018100 0x40>, <0xd0018800 0x30>;
1251282157aSChris Packham      ngpios = <32>;
1261282157aSChris Packham      gpio-controller;
1271282157aSChris Packham      #gpio-cells = <2>;
1281282157aSChris Packham      interrupt-controller;
1291282157aSChris Packham      #interrupt-cells = <2>;
1301282157aSChris Packham      interrupts = <16>, <17>, <18>, <19>;
1311282157aSChris Packham    };
1321282157aSChris Packham
1331282157aSChris Packham  - |
1341282157aSChris Packham    gpio@18140 {
1351282157aSChris Packham      compatible = "marvell,armada-370-gpio", "marvell,orion-gpio";
1361282157aSChris Packham      reg = <0x18140 0x40>, <0x181c8 0x08>;
1371282157aSChris Packham      reg-names = "gpio", "pwm";
1381282157aSChris Packham      ngpios = <17>;
1391282157aSChris Packham      gpio-controller;
1401282157aSChris Packham      #gpio-cells = <2>;
1411282157aSChris Packham      #pwm-cells = <2>;
1421282157aSChris Packham      interrupt-controller;
1431282157aSChris Packham      #interrupt-cells = <2>;
1441282157aSChris Packham      interrupts = <87>, <88>, <89>;
1451282157aSChris Packham      clocks = <&coreclk 0>;
1461282157aSChris Packham    };
147