# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 BayLibre, SAS
%YAML 1.2
---
$id: "http://devicetree.org/schemas/usb/amlogic,meson-g12a-usb-ctrl.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Amlogic Meson G12A DWC3 USB SoC Controller Glue

maintainers:
  - Neil Armstrong <narmstrong@baylibre.com>

description: |
  The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
  in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode
  only.

  A glue connects the DWC3 core to USB2 PHYs and optionally to an USB3 PHY.

  One of the USB2 PHYs can be re-routed in peripheral mode to a DWC2 USB IP.

  The DWC3 Glue controls the PHY routing and power, an interrupt line is
  connected to the Glue to serve as OTG ID change detection.

  The Amlogic A1 embeds a DWC3 USB IP Core configured for USB2 in
  host-only mode.

  The Amlogic GXL, GXM & AXG SoCs doesn't embed an USB3 PHY.

properties:
  compatible:
    enum:
      - amlogic,meson-gxl-usb-ctrl
      - amlogic,meson-gxm-usb-ctrl
      - amlogic,meson-axg-usb-ctrl
      - amlogic,meson-g12a-usb-ctrl
      - amlogic,meson-a1-usb-ctrl

  ranges: true

  "#address-cells":
    enum: [ 1, 2 ]

  "#size-cells":
    enum: [ 1, 2 ]

  clocks:
    minItems: 1
    maxItems: 3

  clock-names:
    minItems: 1
    maxItems: 3

  resets:
    minItems: 1

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  phy-names:
    minItems: 1
    maxItems: 3

  phys:
    minItems: 1
    maxItems: 3

  dr_mode: true

  power-domains:
    maxItems: 1

  vbus-supply:
    description: VBUS power supply when used in OTG switchable mode

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

additionalProperties: false

required:
  - compatible
  - "#address-cells"
  - "#size-cells"
  - ranges
  - clocks
  - resets
  - reg
  - interrupts
  - phy-names
  - phys
  - dr_mode

allOf:
  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-g12a-usb-ctrl

    then:
      properties:
        phy-names:
          items:
            - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
            - const: usb3-phy0 # USB3 PHY if USB3_0 is used
  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-gxl-usb-ctrl

    then:
      properties:
        clocks:
          minItems: 2
        clock-names:
          items:
            - const: usb_ctrl
            - const: ddr
        phy-names:
          items:
            - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
      required:
        - clock-names
  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-gxm-usb-ctrl

    then:
      properties:
        clocks:
          minItems: 2
        clock-names:
          items:
            - const: usb_ctrl
            - const: ddr
        phy-names:
          items:
            - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
            - const: usb2-phy2 # USB2 PHY2 if USBOTG_C port is used

      required:
        - clock-names
  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-axg-usb-ctrl

    then:
      properties:
        phy-names:
          items:
            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
        clocks:
          minItems: 2
        clock-names:
          items:
            - const: usb_ctrl
            - const: ddr
      required:
        - clock-names
  - if:
      properties:
        compatible:
          enum:
            - amlogic,meson-a1-usb-ctrl

    then:
      properties:
        phy-names:
          items:
            - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
        clocks:
          minItems: 3
        clock-names:
          items:
            - const: usb_ctrl
            - const: usb_bus
            - const: xtal_usb_ctrl
      required:
        - clock-names

examples:
  - |
    usb: usb@ffe09000 {
          compatible = "amlogic,meson-g12a-usb-ctrl";
          reg = <0xffe09000 0xa0>;
          interrupts = <16>;
          #address-cells = <1>;
          #size-cells = <1>;
          ranges;

          clocks = <&clkc_usb>;
          resets = <&reset_usb>;

          dr_mode = "otg";

          phys = <&usb2_phy0>, <&usb2_phy1>, <&usb3_phy0>;
          phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";

          dwc2: usb@ff400000 {
              compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
              reg = <0xff400000 0x40000>;
              interrupts = <31>;
              clocks = <&clkc_usb1>;
              clock-names = "otg";
              phys = <&usb2_phy1>;
              dr_mode = "peripheral";
              g-rx-fifo-size = <192>;
              g-np-tx-fifo-size = <128>;
              g-tx-fifo-size = <128 128 16 16 16>;
          };

          dwc3: usb@ff500000 {
              compatible = "snps,dwc3";
              reg = <0xff500000 0x100000>;
              interrupts = <30>;
              dr_mode = "host";
              snps,dis_u2_susphy_quirk;
              snps,quirk-frame-length-adjustment = <0x20>;
          };
    };
