238 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# 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 <neil.armstrong@linaro.org>
 | 
						|
 | 
						|
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:
 | 
						|
          minItems: 2
 | 
						|
          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>;
 | 
						|
          };
 | 
						|
    };    
 |