131 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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;
 | 
						|
			};
 | 
						|
	};
 |