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

title: HiSilicon Hi3798MV200 DWC3 USB SoC controller

maintainers:
  - Yang Xiwen <forbidden405@foxmail.com>

properties:
  compatible:
    const: hisilicon,hi3798mv200-dwc3

  '#address-cells':
    const: 1

  '#size-cells':
    const: 1

  ranges: true

  clocks:
    items:
      - description: Controller bus clock
      - description: Controller suspend clock
      - description: Controller reference clock
      - description: Controller gm clock
      - description: Controller gs clock
      - description: Controller utmi clock
      - description: Controller pipe clock

  clock-names:
    items:
      - const: bus
      - const: suspend
      - const: ref
      - const: gm
      - const: gs
      - const: utmi
      - const: pipe

  resets:
    maxItems: 1

  reset-names:
    const: soft

patternProperties:
  '^usb@[0-9a-f]+$':
    $ref: snps,dwc3.yaml#

required:
  - compatible
  - ranges
  - '#address-cells'
  - '#size-cells'
  - clocks
  - clock-names
  - resets
  - reset-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    usb {
        compatible = "hisilicon,hi3798mv200-dwc3";
        ranges;
        #address-cells = <1>;
        #size-cells = <1>;
        clocks = <&clk_bus>,
                 <&clk_suspend>,
                 <&clk_ref>,
                 <&clk_gm>,
                 <&clk_gs>,
                 <&clk_utmi>,
                 <&clk_pipe>;
        clock-names = "bus", "suspend", "ref", "gm", "gs", "utmi", "pipe";
        resets = <&crg 0xb0 12>;
        reset-names = "soft";

        usb@98a0000 {
            compatible = "snps,dwc3";
            reg = <0x98a0000 0x10000>;
            interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&clk_bus>,
                     <&clk_suspend>,
                     <&clk_ref>;
            clock-names = "bus_early", "suspend", "ref";
            phys = <&usb2_phy1_port2>, <&combphy0 0>;
            phy-names = "usb2-phy", "usb3-phy";
            maximum-speed = "super-speed";
            dr_mode = "host";
        };
    };
