16aec9751SNeil Armstrong# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 26aec9751SNeil Armstrong# Copyright 2019 BayLibre, SAS 36aec9751SNeil Armstrong%YAML 1.2 46aec9751SNeil Armstrong--- 56aec9751SNeil Armstrong$id: "http://devicetree.org/schemas/usb/amlogic,meson-g12a-usb-ctrl.yaml#" 66aec9751SNeil Armstrong$schema: "http://devicetree.org/meta-schemas/core.yaml#" 76aec9751SNeil Armstrong 86aec9751SNeil Armstrongtitle: Amlogic Meson G12A DWC3 USB SoC Controller Glue 96aec9751SNeil Armstrong 106aec9751SNeil Armstrongmaintainers: 11c6a43fb3SNeil Armstrong - Neil Armstrong <neil.armstrong@linaro.org> 126aec9751SNeil Armstrong 136aec9751SNeil Armstrongdescription: | 146aec9751SNeil Armstrong The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3 156aec9751SNeil Armstrong in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode 166aec9751SNeil Armstrong only. 176aec9751SNeil Armstrong 186aec9751SNeil Armstrong A glue connects the DWC3 core to USB2 PHYs and optionally to an USB3 PHY. 196aec9751SNeil Armstrong 206aec9751SNeil Armstrong One of the USB2 PHYs can be re-routed in peripheral mode to a DWC2 USB IP. 216aec9751SNeil Armstrong 226aec9751SNeil Armstrong The DWC3 Glue controls the PHY routing and power, an interrupt line is 236aec9751SNeil Armstrong connected to the Glue to serve as OTG ID change detection. 246aec9751SNeil Armstrong 258dcb5a11SHanjie Lin The Amlogic A1 embeds a DWC3 USB IP Core configured for USB2 in 268dcb5a11SHanjie Lin host-only mode. 278dcb5a11SHanjie Lin 28cdff2c94SNeil Armstrong The Amlogic GXL, GXM & AXG SoCs doesn't embed an USB3 PHY. 298f385b67SNeil Armstrong 306aec9751SNeil Armstrongproperties: 316aec9751SNeil Armstrong compatible: 326aec9751SNeil Armstrong enum: 338f385b67SNeil Armstrong - amlogic,meson-gxl-usb-ctrl 348f385b67SNeil Armstrong - amlogic,meson-gxm-usb-ctrl 35cdff2c94SNeil Armstrong - amlogic,meson-axg-usb-ctrl 366aec9751SNeil Armstrong - amlogic,meson-g12a-usb-ctrl 378dcb5a11SHanjie Lin - amlogic,meson-a1-usb-ctrl 386aec9751SNeil Armstrong 396aec9751SNeil Armstrong ranges: true 406aec9751SNeil Armstrong 416aec9751SNeil Armstrong "#address-cells": 426aec9751SNeil Armstrong enum: [ 1, 2 ] 436aec9751SNeil Armstrong 446aec9751SNeil Armstrong "#size-cells": 456aec9751SNeil Armstrong enum: [ 1, 2 ] 466aec9751SNeil Armstrong 476aec9751SNeil Armstrong clocks: 486aec9751SNeil Armstrong minItems: 1 498f385b67SNeil Armstrong maxItems: 3 508f385b67SNeil Armstrong 518f385b67SNeil Armstrong clock-names: 528f385b67SNeil Armstrong minItems: 1 538f385b67SNeil Armstrong maxItems: 3 546aec9751SNeil Armstrong 556aec9751SNeil Armstrong resets: 566aec9751SNeil Armstrong minItems: 1 576aec9751SNeil Armstrong 586aec9751SNeil Armstrong reg: 596aec9751SNeil Armstrong maxItems: 1 606aec9751SNeil Armstrong 616aec9751SNeil Armstrong interrupts: 626aec9751SNeil Armstrong maxItems: 1 636aec9751SNeil Armstrong 646aec9751SNeil Armstrong phy-names: 658f385b67SNeil Armstrong minItems: 1 668f385b67SNeil Armstrong maxItems: 3 676aec9751SNeil Armstrong 686aec9751SNeil Armstrong phys: 696aec9751SNeil Armstrong minItems: 1 706aec9751SNeil Armstrong maxItems: 3 716aec9751SNeil Armstrong 726aec9751SNeil Armstrong dr_mode: true 736aec9751SNeil Armstrong 746aec9751SNeil Armstrong power-domains: 756aec9751SNeil Armstrong maxItems: 1 766aec9751SNeil Armstrong 776aec9751SNeil Armstrong vbus-supply: 786aec9751SNeil Armstrong description: VBUS power supply when used in OTG switchable mode 796aec9751SNeil Armstrong 806aec9751SNeil ArmstrongpatternProperties: 816aec9751SNeil Armstrong "^usb@[0-9a-f]+$": 823b34a589SSerge Semin oneOf: 833b34a589SSerge Semin - $ref: dwc2.yaml# 843b34a589SSerge Semin - $ref: snps,dwc3.yaml# 856aec9751SNeil Armstrong 866aec9751SNeil ArmstrongadditionalProperties: false 876aec9751SNeil Armstrong 886aec9751SNeil Armstrongrequired: 896aec9751SNeil Armstrong - compatible 906aec9751SNeil Armstrong - "#address-cells" 916aec9751SNeil Armstrong - "#size-cells" 926aec9751SNeil Armstrong - ranges 936aec9751SNeil Armstrong - clocks 946aec9751SNeil Armstrong - resets 956aec9751SNeil Armstrong - reg 966aec9751SNeil Armstrong - interrupts 976aec9751SNeil Armstrong - phy-names 986aec9751SNeil Armstrong - phys 996aec9751SNeil Armstrong - dr_mode 1006aec9751SNeil Armstrong 1018dcb5a11SHanjie LinallOf: 1028dcb5a11SHanjie Lin - if: 1038dcb5a11SHanjie Lin properties: 1048dcb5a11SHanjie Lin compatible: 1058dcb5a11SHanjie Lin enum: 1068f385b67SNeil Armstrong - amlogic,meson-g12a-usb-ctrl 1078f385b67SNeil Armstrong 1088f385b67SNeil Armstrong then: 1098f385b67SNeil Armstrong properties: 1108f385b67SNeil Armstrong phy-names: 111*f87b5646SNeil Armstrong minItems: 2 1128f385b67SNeil Armstrong items: 1138f385b67SNeil Armstrong - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used 1148f385b67SNeil Armstrong - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1158f385b67SNeil Armstrong - const: usb3-phy0 # USB3 PHY if USB3_0 is used 1168f385b67SNeil Armstrong - if: 1178f385b67SNeil Armstrong properties: 1188f385b67SNeil Armstrong compatible: 1198f385b67SNeil Armstrong enum: 1208f385b67SNeil Armstrong - amlogic,meson-gxl-usb-ctrl 1218f385b67SNeil Armstrong 1228f385b67SNeil Armstrong then: 1238f385b67SNeil Armstrong properties: 1248f385b67SNeil Armstrong clocks: 1258f385b67SNeil Armstrong minItems: 2 1268f385b67SNeil Armstrong clock-names: 1278f385b67SNeil Armstrong items: 1288f385b67SNeil Armstrong - const: usb_ctrl 1298f385b67SNeil Armstrong - const: ddr 1308f385b67SNeil Armstrong phy-names: 1318f385b67SNeil Armstrong items: 1328f385b67SNeil Armstrong - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used 1338f385b67SNeil Armstrong - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1348f385b67SNeil Armstrong required: 1358f385b67SNeil Armstrong - clock-names 1368f385b67SNeil Armstrong - if: 1378f385b67SNeil Armstrong properties: 1388f385b67SNeil Armstrong compatible: 1398f385b67SNeil Armstrong enum: 1408f385b67SNeil Armstrong - amlogic,meson-gxm-usb-ctrl 1418f385b67SNeil Armstrong 1428f385b67SNeil Armstrong then: 1438f385b67SNeil Armstrong properties: 1448f385b67SNeil Armstrong clocks: 1458f385b67SNeil Armstrong minItems: 2 1468f385b67SNeil Armstrong clock-names: 1478f385b67SNeil Armstrong items: 1488f385b67SNeil Armstrong - const: usb_ctrl 1498f385b67SNeil Armstrong - const: ddr 1508f385b67SNeil Armstrong phy-names: 1518f385b67SNeil Armstrong items: 1528f385b67SNeil Armstrong - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used 1538f385b67SNeil Armstrong - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1548f385b67SNeil Armstrong - const: usb2-phy2 # USB2 PHY2 if USBOTG_C port is used 1558f385b67SNeil Armstrong 1568f385b67SNeil Armstrong required: 1578f385b67SNeil Armstrong - clock-names 1588f385b67SNeil Armstrong - if: 1598f385b67SNeil Armstrong properties: 1608f385b67SNeil Armstrong compatible: 1618f385b67SNeil Armstrong enum: 162cdff2c94SNeil Armstrong - amlogic,meson-axg-usb-ctrl 163cdff2c94SNeil Armstrong 164cdff2c94SNeil Armstrong then: 165cdff2c94SNeil Armstrong properties: 166cdff2c94SNeil Armstrong phy-names: 167cdff2c94SNeil Armstrong items: 168cdff2c94SNeil Armstrong - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 169cdff2c94SNeil Armstrong clocks: 170cdff2c94SNeil Armstrong minItems: 2 171cdff2c94SNeil Armstrong clock-names: 172cdff2c94SNeil Armstrong items: 173cdff2c94SNeil Armstrong - const: usb_ctrl 174cdff2c94SNeil Armstrong - const: ddr 175cdff2c94SNeil Armstrong required: 176cdff2c94SNeil Armstrong - clock-names 177cdff2c94SNeil Armstrong - if: 178cdff2c94SNeil Armstrong properties: 179cdff2c94SNeil Armstrong compatible: 180cdff2c94SNeil Armstrong enum: 1818dcb5a11SHanjie Lin - amlogic,meson-a1-usb-ctrl 1828dcb5a11SHanjie Lin 1838dcb5a11SHanjie Lin then: 1848dcb5a11SHanjie Lin properties: 1858f385b67SNeil Armstrong phy-names: 1868f385b67SNeil Armstrong items: 1878f385b67SNeil Armstrong - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used 1888dcb5a11SHanjie Lin clocks: 1898dcb5a11SHanjie Lin minItems: 3 1908dcb5a11SHanjie Lin clock-names: 1918dcb5a11SHanjie Lin items: 1928dcb5a11SHanjie Lin - const: usb_ctrl 1938dcb5a11SHanjie Lin - const: usb_bus 1948dcb5a11SHanjie Lin - const: xtal_usb_ctrl 1958dcb5a11SHanjie Lin required: 1968dcb5a11SHanjie Lin - clock-names 1978dcb5a11SHanjie Lin 1986aec9751SNeil Armstrongexamples: 1996aec9751SNeil Armstrong - | 2006aec9751SNeil Armstrong usb: usb@ffe09000 { 2016aec9751SNeil Armstrong compatible = "amlogic,meson-g12a-usb-ctrl"; 202fba56184SRob Herring reg = <0xffe09000 0xa0>; 2036aec9751SNeil Armstrong interrupts = <16>; 2046aec9751SNeil Armstrong #address-cells = <1>; 2056aec9751SNeil Armstrong #size-cells = <1>; 2066aec9751SNeil Armstrong ranges; 2076aec9751SNeil Armstrong 2086aec9751SNeil Armstrong clocks = <&clkc_usb>; 2096aec9751SNeil Armstrong resets = <&reset_usb>; 2106aec9751SNeil Armstrong 2116aec9751SNeil Armstrong dr_mode = "otg"; 2126aec9751SNeil Armstrong 2136aec9751SNeil Armstrong phys = <&usb2_phy0>, <&usb2_phy1>, <&usb3_phy0>; 2146aec9751SNeil Armstrong phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0"; 2156aec9751SNeil Armstrong 2166aec9751SNeil Armstrong dwc2: usb@ff400000 { 2176aec9751SNeil Armstrong compatible = "amlogic,meson-g12a-usb", "snps,dwc2"; 2186aec9751SNeil Armstrong reg = <0xff400000 0x40000>; 2196aec9751SNeil Armstrong interrupts = <31>; 2206aec9751SNeil Armstrong clocks = <&clkc_usb1>; 221c5a05bd6SBenjamin Gaignard clock-names = "otg"; 2226aec9751SNeil Armstrong phys = <&usb2_phy1>; 2236aec9751SNeil Armstrong dr_mode = "peripheral"; 2246aec9751SNeil Armstrong g-rx-fifo-size = <192>; 2256aec9751SNeil Armstrong g-np-tx-fifo-size = <128>; 2266aec9751SNeil Armstrong g-tx-fifo-size = <128 128 16 16 16>; 2276aec9751SNeil Armstrong }; 2286aec9751SNeil Armstrong 2296aec9751SNeil Armstrong dwc3: usb@ff500000 { 2306aec9751SNeil Armstrong compatible = "snps,dwc3"; 2316aec9751SNeil Armstrong reg = <0xff500000 0x100000>; 2326aec9751SNeil Armstrong interrupts = <30>; 2336aec9751SNeil Armstrong dr_mode = "host"; 2346aec9751SNeil Armstrong snps,dis_u2_susphy_quirk; 235042cdcd6SSerge Semin snps,quirk-frame-length-adjustment = <0x20>; 2366aec9751SNeil Armstrong }; 2376aec9751SNeil Armstrong }; 238