# 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 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. properties: compatible: enum: - amlogic,meson-g12a-usb-ctrl ranges: true "#address-cells": enum: [ 1, 2 ] "#size-cells": enum: [ 1, 2 ] clocks: minItems: 1 resets: minItems: 1 reg: maxItems: 1 interrupts: maxItems: 1 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 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]+$": type: object additionalProperties: false required: - compatible - "#address-cells" - "#size-cells" - ranges - clocks - resets - reg - interrupts - phy-names - phys - dr_mode examples: - | usb: usb@ffe09000 { compatible = "amlogic,meson-g12a-usb-ctrl"; reg = <0x0 0xffe09000 0x0 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; }; };