18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 28c2ecf20Sopenharmony_ci# Copyright 2019 BayLibre, SAS 38c2ecf20Sopenharmony_ci%YAML 1.2 48c2ecf20Sopenharmony_ci--- 58c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/usb/amlogic,meson-g12a-usb-ctrl.yaml#" 68c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#" 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_cititle: Amlogic Meson G12A DWC3 USB SoC Controller Glue 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_cimaintainers: 118c2ecf20Sopenharmony_ci - Neil Armstrong <narmstrong@baylibre.com> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cidescription: | 148c2ecf20Sopenharmony_ci The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3 158c2ecf20Sopenharmony_ci in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode 168c2ecf20Sopenharmony_ci only. 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci A glue connects the DWC3 core to USB2 PHYs and optionally to an USB3 PHY. 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci One of the USB2 PHYs can be re-routed in peripheral mode to a DWC2 USB IP. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci The DWC3 Glue controls the PHY routing and power, an interrupt line is 238c2ecf20Sopenharmony_ci connected to the Glue to serve as OTG ID change detection. 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci The Amlogic A1 embeds a DWC3 USB IP Core configured for USB2 in 268c2ecf20Sopenharmony_ci host-only mode. 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci The Amlogic GXL, GXM & AXG SoCs doesn't embed an USB3 PHY. 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciproperties: 318c2ecf20Sopenharmony_ci compatible: 328c2ecf20Sopenharmony_ci enum: 338c2ecf20Sopenharmony_ci - amlogic,meson-gxl-usb-ctrl 348c2ecf20Sopenharmony_ci - amlogic,meson-gxm-usb-ctrl 358c2ecf20Sopenharmony_ci - amlogic,meson-axg-usb-ctrl 368c2ecf20Sopenharmony_ci - amlogic,meson-g12a-usb-ctrl 378c2ecf20Sopenharmony_ci - amlogic,meson-a1-usb-ctrl 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci ranges: true 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci "#address-cells": 428c2ecf20Sopenharmony_ci enum: [ 1, 2 ] 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci "#size-cells": 458c2ecf20Sopenharmony_ci enum: [ 1, 2 ] 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci clocks: 488c2ecf20Sopenharmony_ci minItems: 1 498c2ecf20Sopenharmony_ci maxItems: 3 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci clock-names: 528c2ecf20Sopenharmony_ci minItems: 1 538c2ecf20Sopenharmony_ci maxItems: 3 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci resets: 568c2ecf20Sopenharmony_ci minItems: 1 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci reg: 598c2ecf20Sopenharmony_ci maxItems: 1 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci interrupts: 628c2ecf20Sopenharmony_ci maxItems: 1 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci phy-names: 658c2ecf20Sopenharmony_ci minItems: 1 668c2ecf20Sopenharmony_ci maxItems: 3 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci phys: 698c2ecf20Sopenharmony_ci minItems: 1 708c2ecf20Sopenharmony_ci maxItems: 3 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci dr_mode: true 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci power-domains: 758c2ecf20Sopenharmony_ci maxItems: 1 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci vbus-supply: 788c2ecf20Sopenharmony_ci description: VBUS power supply when used in OTG switchable mode 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_cipatternProperties: 818c2ecf20Sopenharmony_ci "^usb@[0-9a-f]+$": 828c2ecf20Sopenharmony_ci type: object 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ciadditionalProperties: false 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_cirequired: 878c2ecf20Sopenharmony_ci - compatible 888c2ecf20Sopenharmony_ci - "#address-cells" 898c2ecf20Sopenharmony_ci - "#size-cells" 908c2ecf20Sopenharmony_ci - ranges 918c2ecf20Sopenharmony_ci - clocks 928c2ecf20Sopenharmony_ci - resets 938c2ecf20Sopenharmony_ci - reg 948c2ecf20Sopenharmony_ci - interrupts 958c2ecf20Sopenharmony_ci - phy-names 968c2ecf20Sopenharmony_ci - phys 978c2ecf20Sopenharmony_ci - dr_mode 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ciallOf: 1008c2ecf20Sopenharmony_ci - if: 1018c2ecf20Sopenharmony_ci properties: 1028c2ecf20Sopenharmony_ci compatible: 1038c2ecf20Sopenharmony_ci enum: 1048c2ecf20Sopenharmony_ci - amlogic,meson-g12a-usb-ctrl 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci then: 1078c2ecf20Sopenharmony_ci properties: 1088c2ecf20Sopenharmony_ci phy-names: 1098c2ecf20Sopenharmony_ci items: 1108c2ecf20Sopenharmony_ci - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used 1118c2ecf20Sopenharmony_ci - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1128c2ecf20Sopenharmony_ci - const: usb3-phy0 # USB3 PHY if USB3_0 is used 1138c2ecf20Sopenharmony_ci - if: 1148c2ecf20Sopenharmony_ci properties: 1158c2ecf20Sopenharmony_ci compatible: 1168c2ecf20Sopenharmony_ci enum: 1178c2ecf20Sopenharmony_ci - amlogic,meson-gxl-usb-ctrl 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci then: 1208c2ecf20Sopenharmony_ci properties: 1218c2ecf20Sopenharmony_ci clocks: 1228c2ecf20Sopenharmony_ci minItems: 2 1238c2ecf20Sopenharmony_ci clock-names: 1248c2ecf20Sopenharmony_ci items: 1258c2ecf20Sopenharmony_ci - const: usb_ctrl 1268c2ecf20Sopenharmony_ci - const: ddr 1278c2ecf20Sopenharmony_ci phy-names: 1288c2ecf20Sopenharmony_ci items: 1298c2ecf20Sopenharmony_ci - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used 1308c2ecf20Sopenharmony_ci - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1318c2ecf20Sopenharmony_ci required: 1328c2ecf20Sopenharmony_ci - clock-names 1338c2ecf20Sopenharmony_ci - if: 1348c2ecf20Sopenharmony_ci properties: 1358c2ecf20Sopenharmony_ci compatible: 1368c2ecf20Sopenharmony_ci enum: 1378c2ecf20Sopenharmony_ci - amlogic,meson-gxm-usb-ctrl 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci then: 1408c2ecf20Sopenharmony_ci properties: 1418c2ecf20Sopenharmony_ci clocks: 1428c2ecf20Sopenharmony_ci minItems: 2 1438c2ecf20Sopenharmony_ci clock-names: 1448c2ecf20Sopenharmony_ci items: 1458c2ecf20Sopenharmony_ci - const: usb_ctrl 1468c2ecf20Sopenharmony_ci - const: ddr 1478c2ecf20Sopenharmony_ci phy-names: 1488c2ecf20Sopenharmony_ci items: 1498c2ecf20Sopenharmony_ci - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used 1508c2ecf20Sopenharmony_ci - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1518c2ecf20Sopenharmony_ci - const: usb2-phy2 # USB2 PHY2 if USBOTG_C port is used 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci required: 1548c2ecf20Sopenharmony_ci - clock-names 1558c2ecf20Sopenharmony_ci - if: 1568c2ecf20Sopenharmony_ci properties: 1578c2ecf20Sopenharmony_ci compatible: 1588c2ecf20Sopenharmony_ci enum: 1598c2ecf20Sopenharmony_ci - amlogic,meson-axg-usb-ctrl 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci then: 1628c2ecf20Sopenharmony_ci properties: 1638c2ecf20Sopenharmony_ci phy-names: 1648c2ecf20Sopenharmony_ci items: 1658c2ecf20Sopenharmony_ci - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1668c2ecf20Sopenharmony_ci clocks: 1678c2ecf20Sopenharmony_ci minItems: 2 1688c2ecf20Sopenharmony_ci clock-names: 1698c2ecf20Sopenharmony_ci items: 1708c2ecf20Sopenharmony_ci - const: usb_ctrl 1718c2ecf20Sopenharmony_ci - const: ddr 1728c2ecf20Sopenharmony_ci required: 1738c2ecf20Sopenharmony_ci - clock-names 1748c2ecf20Sopenharmony_ci - if: 1758c2ecf20Sopenharmony_ci properties: 1768c2ecf20Sopenharmony_ci compatible: 1778c2ecf20Sopenharmony_ci enum: 1788c2ecf20Sopenharmony_ci - amlogic,meson-a1-usb-ctrl 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci then: 1818c2ecf20Sopenharmony_ci properties: 1828c2ecf20Sopenharmony_ci phy-names: 1838c2ecf20Sopenharmony_ci items: 1848c2ecf20Sopenharmony_ci - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1858c2ecf20Sopenharmony_ci clocks: 1868c2ecf20Sopenharmony_ci minItems: 3 1878c2ecf20Sopenharmony_ci clock-names: 1888c2ecf20Sopenharmony_ci items: 1898c2ecf20Sopenharmony_ci - const: usb_ctrl 1908c2ecf20Sopenharmony_ci - const: usb_bus 1918c2ecf20Sopenharmony_ci - const: xtal_usb_ctrl 1928c2ecf20Sopenharmony_ci required: 1938c2ecf20Sopenharmony_ci - clock-names 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ciexamples: 1968c2ecf20Sopenharmony_ci - | 1978c2ecf20Sopenharmony_ci usb: usb@ffe09000 { 1988c2ecf20Sopenharmony_ci compatible = "amlogic,meson-g12a-usb-ctrl"; 1998c2ecf20Sopenharmony_ci reg = <0xffe09000 0xa0>; 2008c2ecf20Sopenharmony_ci interrupts = <16>; 2018c2ecf20Sopenharmony_ci #address-cells = <1>; 2028c2ecf20Sopenharmony_ci #size-cells = <1>; 2038c2ecf20Sopenharmony_ci ranges; 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ci clocks = <&clkc_usb>; 2068c2ecf20Sopenharmony_ci resets = <&reset_usb>; 2078c2ecf20Sopenharmony_ci 2088c2ecf20Sopenharmony_ci dr_mode = "otg"; 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci phys = <&usb2_phy0>, <&usb2_phy1>, <&usb3_phy0>; 2118c2ecf20Sopenharmony_ci phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0"; 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ci dwc2: usb@ff400000 { 2148c2ecf20Sopenharmony_ci compatible = "amlogic,meson-g12a-usb", "snps,dwc2"; 2158c2ecf20Sopenharmony_ci reg = <0xff400000 0x40000>; 2168c2ecf20Sopenharmony_ci interrupts = <31>; 2178c2ecf20Sopenharmony_ci clocks = <&clkc_usb1>; 2188c2ecf20Sopenharmony_ci clock-names = "otg"; 2198c2ecf20Sopenharmony_ci phys = <&usb2_phy1>; 2208c2ecf20Sopenharmony_ci dr_mode = "peripheral"; 2218c2ecf20Sopenharmony_ci g-rx-fifo-size = <192>; 2228c2ecf20Sopenharmony_ci g-np-tx-fifo-size = <128>; 2238c2ecf20Sopenharmony_ci g-tx-fifo-size = <128 128 16 16 16>; 2248c2ecf20Sopenharmony_ci }; 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci dwc3: usb@ff500000 { 2278c2ecf20Sopenharmony_ci compatible = "snps,dwc3"; 2288c2ecf20Sopenharmony_ci reg = <0xff500000 0x100000>; 2298c2ecf20Sopenharmony_ci interrupts = <30>; 2308c2ecf20Sopenharmony_ci dr_mode = "host"; 2318c2ecf20Sopenharmony_ci snps,dis_u2_susphy_quirk; 2328c2ecf20Sopenharmony_ci snps,quirk-frame-length-adjustment; 2338c2ecf20Sopenharmony_ci }; 2348c2ecf20Sopenharmony_ci }; 235