| Amlogic Meson GX DWC3 USB SoC controller |
| |
| Required properties: |
| - compatible: depending on the SoC this should contain one of: |
| * amlogic,meson-axg-dwc3 |
| * amlogic,meson-gxl-dwc3 |
| - clocks: a handle for the "USB general" clock |
| - clock-names: must be "usb_general" |
| - resets: a handle for the shared "USB OTG" reset line |
| - reset-names: must be "usb_otg" |
| |
| Required child node: |
| A child node must exist to represent the core DWC3 IP block. The name of |
| the node is not important. The content of the node is defined in dwc3.txt. |
| |
| PHY documentation is provided in the following places: |
| - Documentation/devicetree/bindings/phy/meson-gxl-usb2-phy.txt |
| - Documentation/devicetree/bindings/phy/meson-gxl-usb3-phy.txt |
| |
| Example device nodes: |
| usb0: usb@ff500000 { |
| compatible = "amlogic,meson-axg-dwc3"; |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| clocks = <&clkc CLKID_USB>; |
| clock-names = "usb_general"; |
| resets = <&reset RESET_USB_OTG>; |
| reset-names = "usb_otg"; |
| |
| dwc3: dwc3@ff500000 { |
| compatible = "snps,dwc3"; |
| reg = <0x0 0xff500000 0x0 0x100000>; |
| interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; |
| dr_mode = "host"; |
| maximum-speed = "high-speed"; |
| snps,dis_u2_susphy_quirk; |
| phys = <&usb3_phy>, <&usb2_phy0>; |
| phy-names = "usb2-phy", "usb3-phy"; |
| }; |
| }; |
| |
| Amlogic Meson G12A DWC3 USB SoC Controller Glue |
| |
| 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 optionnaly to an USB3 PHY. |
| |
| One of the USB2 PHY 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. |
| |
| Required properties: |
| - compatible: Should be "amlogic,meson-g12a-usb-ctrl" |
| - clocks: a handle for the "USB" clock |
| - resets: a handle for the shared "USB" reset line |
| - reg: The base address and length of the registers |
| - interrupts: the interrupt specifier for the OTG detection |
| - phys: handle to used PHYs on the system |
| - a <0> phandle can be used if a PHY is not used |
| - phy-names: names of the used PHYs on the system : |
| - "usb2-phy0" for USB2 PHY0 if USBHOST_A port is used |
| - "usb2-phy1" for USB2 PHY1 if USBOTG_B port is used |
| - "usb3-phy0" for USB3 PHY if USB3_0 is used |
| - dr_mode: should be "host", "peripheral", or "otg" depending on |
| the usage and configuration of the OTG Capable port. |
| - "host" and "peripheral" means a fixed Host or Device only connection |
| - "otg" means the port can be used as both Host or Device and |
| be switched automatically using the OTG ID pin. |
| |
| Optional properties: |
| - vbus-supply: should be a phandle to the regulator controlling the VBUS |
| power supply when used in OTG switchable mode |
| |
| Required child nodes: |
| |
| A child node must exist to represent the core DWC3 IP block. The name of |
| the node is not important. The content of the node is defined in dwc3.txt. |
| |
| A child node must exist to represent the core DWC2 IP block. The name of |
| the node is not important. The content of the node is defined in dwc2.txt. |
| |
| PHY documentation is provided in the following places: |
| - Documentation/devicetree/bindings/phy/meson-g12a-usb2-phy.txt |
| - Documentation/devicetree/bindings/phy/meson-g12a-usb3-pcie-phy.txt |
| |
| Example device nodes: |
| usb: usb@ffe09000 { |
| compatible = "amlogic,meson-g12a-usb-ctrl"; |
| reg = <0x0 0xffe09000 0x0 0xa0>; |
| interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| clocks = <&clkc CLKID_USB>; |
| resets = <&reset RESET_USB>; |
| |
| dr_mode = "otg"; |
| |
| phys = <&usb2_phy0>, <&usb2_phy1>, |
| <&usb3_pcie_phy PHY_TYPE_USB3>; |
| phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0"; |
| |
| dwc2: usb@ff400000 { |
| compatible = "amlogic,meson-g12a-usb", "snps,dwc2"; |
| reg = <0x0 0xff400000 0x0 0x40000>; |
| interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&clkc CLKID_USB1_DDR_BRIDGE>; |
| clock-names = "ddr"; |
| 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 = <0x0 0xff500000 0x0 0x100000>; |
| interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; |
| dr_mode = "host"; |
| snps,dis_u2_susphy_quirk; |
| snps,quirk-frame-length-adjustment; |
| }; |
| }; |