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

title: Renesas USB xHCI controllers

maintainers:
  - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - renesas,xhci-r8a7742 # RZ/G1H
              - renesas,xhci-r8a7743 # RZ/G1M
              - renesas,xhci-r8a7744 # RZ/G1N
              - renesas,xhci-r8a7790 # R-Car H2
              - renesas,xhci-r8a7791 # R-Car M2-W
              - renesas,xhci-r8a7793 # R-Car M2-N
          - const: renesas,rcar-gen2-xhci # R-Car Gen2 and RZ/G1
      - items:
          - enum:
              - renesas,xhci-r8a774a1 # RZ/G2M
              - renesas,xhci-r8a774b1 # RZ/G2N
              - renesas,xhci-r8a774c0 # RZ/G2E
              - renesas,xhci-r8a774e1 # RZ/G2H
              - renesas,xhci-r8a7795  # R-Car H3
              - renesas,xhci-r8a7796  # R-Car M3-W
              - renesas,xhci-r8a77961 # R-Car M3-W+
              - renesas,xhci-r8a77965 # R-Car M3-N
              - renesas,xhci-r8a77990 # R-Car E3
          - const: renesas,rcar-gen3-xhci # R-Car Gen3 and RZ/G2
      - items:
          - enum:
              - renesas,r9a09g011-xhci # RZ/V2M
              - renesas,r9a09g055-xhci # RZ/V2MA
          - const: renesas,rzv2m-xhci  # RZ/{V2M, V2MA}

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

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

  clock-names:
    minItems: 1
    items:
      - const: axi
      - const: reg

  phys:
    maxItems: 1

  phy-names:
    items:
      - const: usb

  power-domains:
    maxItems: 1

  resets:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - power-domains
  - resets

allOf:
  - $ref: usb-xhci.yaml

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

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/r8a7795-sysc.h>

    xhci0: usb@ee000000 {
        compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
        reg = <0xee000000 0xc00>;
        interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cpg CPG_MOD 328>;
        power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
        resets = <&cpg 328>;
    };