162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/gpio/realtek,otto-gpio.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Realtek Otto GPIO controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sander Vanheule <sander@svanheule.net>
1162306a36Sopenharmony_ci  - Bert Vermeulen <bert@biot.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  Realtek's GPIO controller on their MIPS switch SoCs (Otto platform) consists
1562306a36Sopenharmony_ci  of two banks of 32 GPIOs. These GPIOs can generate edge-triggered interrupts.
1662306a36Sopenharmony_ci  Each bank's interrupts are cascased into one interrupt line on the parent
1762306a36Sopenharmony_ci  interrupt controller, if provided.
1862306a36Sopenharmony_ci  This binding allows defining a single bank in the devicetree. The interrupt
1962306a36Sopenharmony_ci  controller is not supported on the fallback compatible name, which only
2062306a36Sopenharmony_ci  allows for GPIO port use.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci  $nodename:
2462306a36Sopenharmony_ci    pattern: "^gpio@[0-9a-f]+$"
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  compatible:
2762306a36Sopenharmony_ci    items:
2862306a36Sopenharmony_ci      - enum:
2962306a36Sopenharmony_ci          - realtek,rtl8380-gpio
3062306a36Sopenharmony_ci          - realtek,rtl8390-gpio
3162306a36Sopenharmony_ci          - realtek,rtl9300-gpio
3262306a36Sopenharmony_ci          - realtek,rtl9310-gpio
3362306a36Sopenharmony_ci      - const: realtek,otto-gpio
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  reg: true
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  "#gpio-cells":
3862306a36Sopenharmony_ci    const: 2
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  gpio-controller: true
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  ngpios:
4362306a36Sopenharmony_ci    minimum: 1
4462306a36Sopenharmony_ci    maximum: 32
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  interrupt-controller: true
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  "#interrupt-cells":
4962306a36Sopenharmony_ci    const: 2
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  interrupts:
5262306a36Sopenharmony_ci    maxItems: 1
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciif:
5562306a36Sopenharmony_ci  properties:
5662306a36Sopenharmony_ci    compatible:
5762306a36Sopenharmony_ci      contains:
5862306a36Sopenharmony_ci        const: realtek,rtl9300-gpio
5962306a36Sopenharmony_cithen:
6062306a36Sopenharmony_ci  properties:
6162306a36Sopenharmony_ci    reg:
6262306a36Sopenharmony_ci      items:
6362306a36Sopenharmony_ci        - description: GPIO and interrupt control
6462306a36Sopenharmony_ci        - description: interrupt CPU map
6562306a36Sopenharmony_cielse:
6662306a36Sopenharmony_ci  properties:
6762306a36Sopenharmony_ci    reg:
6862306a36Sopenharmony_ci      items:
6962306a36Sopenharmony_ci        - description: GPIO and interrupt control
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_cirequired:
7262306a36Sopenharmony_ci  - compatible
7362306a36Sopenharmony_ci  - reg
7462306a36Sopenharmony_ci  - "#gpio-cells"
7562306a36Sopenharmony_ci  - gpio-controller
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciadditionalProperties: false
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cidependencies:
8062306a36Sopenharmony_ci  interrupt-controller: [ interrupts ]
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciexamples:
8362306a36Sopenharmony_ci  - |
8462306a36Sopenharmony_ci      gpio@3500 {
8562306a36Sopenharmony_ci        compatible = "realtek,rtl8380-gpio", "realtek,otto-gpio";
8662306a36Sopenharmony_ci        reg = <0x3500 0x1c>;
8762306a36Sopenharmony_ci        gpio-controller;
8862306a36Sopenharmony_ci        #gpio-cells = <2>;
8962306a36Sopenharmony_ci        ngpios = <24>;
9062306a36Sopenharmony_ci        interrupt-controller;
9162306a36Sopenharmony_ci        #interrupt-cells = <2>;
9262306a36Sopenharmony_ci        interrupt-parent = <&rtlintc>;
9362306a36Sopenharmony_ci        interrupts = <23>;
9462306a36Sopenharmony_ci      };
9562306a36Sopenharmony_ci  - |
9662306a36Sopenharmony_ci      gpio@3300 {
9762306a36Sopenharmony_ci        compatible = "realtek,rtl9300-gpio", "realtek,otto-gpio";
9862306a36Sopenharmony_ci        reg = <0x3300 0x1c>, <0x3338 0x8>;
9962306a36Sopenharmony_ci        gpio-controller;
10062306a36Sopenharmony_ci        #gpio-cells = <2>;
10162306a36Sopenharmony_ci        ngpios = <24>;
10262306a36Sopenharmony_ci        interrupt-controller;
10362306a36Sopenharmony_ci        #interrupt-cells = <2>;
10462306a36Sopenharmony_ci        interrupt-parent = <&rtlintc>;
10562306a36Sopenharmony_ci        interrupts = <13>;
10662306a36Sopenharmony_ci      };
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci...
109