Documentation / devicetree / bindings / gpio / aspeed,ast2400-gpio.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/gpio/aspeed,ast2400-gpio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Aspeed GPIO controller

maintainers:
  - Andrew Jeffery <andrew@codeconstruct.com.au>

properties:
  compatible:
    enum:
      - aspeed,ast2400-gpio
      - aspeed,ast2500-gpio
      - aspeed,ast2600-gpio

  reg:
    maxItems: 1

  clocks:
    maxItems: 1
    description: The clock to use for debounce timings

  gpio-controller: true
  gpio-line-names:
    minItems: 36
    maxItems: 232

  gpio-ranges: true
 
  "#gpio-cells":
    const: 2

  interrupts:
    maxItems: 1

  interrupt-controller: true
 
  "#interrupt-cells":
    const: 2

  ngpios:
    minimum: 36
    maximum: 232

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"
  - gpio-controller
  - "#gpio-cells"

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: aspeed,ast2400-gpio
    then:
      properties:
        gpio-line-names:
          minItems: 220
          maxItems: 220
        ngpios:
          const: 220
  - if:
      properties:
        compatible:
          contains:
            const: aspeed,ast2500-gpio
    then:
      properties:
        gpio-line-names:
          minItems: 232
          maxItems: 232
        ngpios:
          const: 232
  - if:
      properties:
        compatible:
          contains:
            const: aspeed,ast2600-gpio
    then:
      properties:
        gpio-line-names:
          minItems: 36
          maxItems: 208
        ngpios:
          enum: [ 36, 208 ]
      required:
        - ngpios

additionalProperties: false

examples:
  - |
    gpio@1e780000 {
        compatible = "aspeed,ast2400-gpio";
        reg = <0x1e780000 0x1000>;
        interrupts = <20>;
        interrupt-controller;
        #interrupt-cells = <2>;
        gpio-controller;
        #gpio-cells = <2>;
    };
  - |
    gpio: gpio@1e780000 {
        compatible = "aspeed,ast2500-gpio";
        reg = <0x1e780000 0x200>;
        interrupts = <20>;
        interrupt-controller;
        #interrupt-cells = <2>;
        gpio-controller;
        #gpio-cells = <2>;
        gpio-ranges = <&pinctrl 0 0 232>;
    };
  - |
    #include <dt-bindings/clock/ast2600-clock.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    gpio0: gpio@1e780000 {
        compatible = "aspeed,ast2600-gpio";
        reg = <0x1e780000 0x400>;
        clocks = <&syscon ASPEED_CLK_APB2>;
        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
        interrupt-controller;
        #interrupt-cells = <2>;
        #gpio-cells = <2>;
        gpio-controller;
        gpio-ranges = <&pinctrl 0 0 208>;
        ngpios = <208>;
    };
    gpio1: gpio@1e780800 {
        compatible = "aspeed,ast2600-gpio";
        reg = <0x1e780800 0x800>;
        clocks = <&syscon ASPEED_CLK_APB1>;
        interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
        interrupt-controller;
        #interrupt-cells = <2>;
        gpio-controller;
        #gpio-cells = <2>;
        gpio-ranges = <&pinctrl 0 208 36>;
        ngpios = <36>;
    };