# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/watchdog/renesas,wdt.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Renesas Watchdog Timer (WDT) Controller

maintainers:
  - Wolfram Sang <wsa+renesas@sang-engineering.com>
  - Geert Uytterhoeven <geert+renesas@glider.be>

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - renesas,r7s72100-wdt     # RZ/A1
              - renesas,r7s9210-wdt      # RZ/A2
          - const: renesas,rza-wdt       # RZ/A

      - items:
          - enum:
              - renesas,r9a06g032-wdt    # RZ/N1D
          - const: renesas,rzn1-wdt      # RZ/N1

      - items:
          - enum:
              - renesas,r9a07g043-wdt    # RZ/G2UL and RZ/Five
              - renesas,r9a07g044-wdt    # RZ/G2{L,LC}
              - renesas,r9a07g054-wdt    # RZ/V2L
          - const: renesas,rzg2l-wdt

      - items:
          - enum:
              - renesas,r9a09g011-wdt    # RZ/V2M
          - const: renesas,rzv2m-wdt     # RZ/V2M

      - items:
          - enum:
              - renesas,r8a7742-wdt      # RZ/G1H
              - renesas,r8a7743-wdt      # RZ/G1M
              - renesas,r8a7744-wdt      # RZ/G1N
              - renesas,r8a7745-wdt      # RZ/G1E
              - renesas,r8a77470-wdt     # RZ/G1C
              - renesas,r8a7790-wdt      # R-Car H2
              - renesas,r8a7791-wdt      # R-Car M2-W
              - renesas,r8a7792-wdt      # R-Car V2H
              - renesas,r8a7793-wdt      # R-Car M2-N
              - renesas,r8a7794-wdt      # R-Car E2
          - const: renesas,rcar-gen2-wdt # R-Car Gen2 and RZ/G1

      - items:
          - enum:
              - renesas,r8a774a1-wdt     # RZ/G2M
              - renesas,r8a774b1-wdt     # RZ/G2N
              - renesas,r8a774c0-wdt     # RZ/G2E
              - renesas,r8a774e1-wdt     # RZ/G2H
              - renesas,r8a7795-wdt      # R-Car H3
              - renesas,r8a7796-wdt      # R-Car M3-W
              - renesas,r8a77961-wdt     # R-Car M3-W+
              - renesas,r8a77965-wdt     # R-Car M3-N
              - renesas,r8a77970-wdt     # R-Car V3M
              - renesas,r8a77980-wdt     # R-Car V3H
              - renesas,r8a77990-wdt     # R-Car E3
              - renesas,r8a77995-wdt     # R-Car D3
          - const: renesas,rcar-gen3-wdt # R-Car Gen3 and RZ/G2

      - items:
          - enum:
              - renesas,r8a779a0-wdt     # R-Car V3U
              - renesas,r8a779f0-wdt     # R-Car S4-8
              - renesas,r8a779g0-wdt     # R-Car V4H
          - const: renesas,rcar-gen4-wdt # R-Car Gen4

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    items:
      - description: Timeout
      - description: Parity error

  interrupt-names:
    minItems: 1
    items:
      - const: wdt
      - const: perrout

  clocks:
    minItems: 1
    items:
      - description: Register access clock
      - description: Main clock

  clock-names:
    minItems: 1
    items:
      - const: pclk
      - const: oscclk

  power-domains:
    maxItems: 1

  resets:
    maxItems: 1

  timeout-sec: true

required:
  - compatible
  - reg
  - interrupts
  - clocks

allOf:
  - $ref: watchdog.yaml#

  - if:
      not:
        properties:
          compatible:
            contains:
              enum:
                - renesas,rza-wdt
                - renesas,rzn1-wdt
    then:
      required:
        - power-domains
        - resets

  - if:
      properties:
        compatible:
          contains:
            enum:
              - renesas,rzg2l-wdt
              - renesas,rzv2m-wdt
    then:
      properties:
        clocks:
          minItems: 2
        clock-names:
          minItems: 2
      required:
        - clock-names
    else:
      properties:
        clocks:
          maxItems: 1

  - if:
      properties:
        compatible:
          contains:
            enum:
              - renesas,rzg2l-wdt
    then:
      properties:
        interrupts:
          minItems: 2
        interrupt-names:
          minItems: 2
      required:
        - interrupt-names
    else:
      properties:
        interrupts:
          maxItems: 1

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
    #include <dt-bindings/power/r8a7795-sysc.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    wdt0: watchdog@e6020000 {
        compatible = "renesas,r8a7795-wdt", "renesas,rcar-gen3-wdt";
        reg = <0xe6020000 0x0c>;
        interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cpg CPG_MOD 402>;
        power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
        resets = <&cpg 402>;
        timeout-sec = <60>;
    };