TI Keystone Soc USB Controller

DWC3 GLUE

Required properties:
 - compatible: should be
		"ti,keystone-dwc3" for Keystone 2 SoCs
		"ti,am654-dwc3" for AM654 SoC
 - #address-cells, #size-cells : should be '1' if the device has sub-nodes
   with 'reg' property.
 - reg : Address and length of the register set for the USB subsystem on
   the SOC.
 - interrupts : The irq number of this device that is used to interrupt the
   MPU.
 - ranges: allows valid 1:1 translation between child's address space and
   parent's address space.

SoC-specific Required Properties:
The following are mandatory properties for Keystone 2 66AK2HK, 66AK2L and 66AK2E
SoCs only:

- clocks:		Clock ID for USB functional clock.
- clock-names:		Must be "usb".


The following are mandatory properties for 66AK2G and AM654:

- power-domains:	Should contain a phandle to a PM domain provider node
			and an args specifier containing the USB device id
			value. This property is as per the binding,
			Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt

Sub-nodes:
The dwc3 core should be added as subnode to Keystone DWC3 glue.
- dwc3 :
   The binding details of dwc3 can be found in:
   Documentation/devicetree/bindings/usb/dwc3.txt

Example:
	usb: usb@2680000 {
		compatible = "ti,keystone-dwc3";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0x2680000 0x10000>;
		clocks = <&clkusb>;
		clock-names = "usb";
		interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
		ranges;

		dwc3@2690000 {
			compatible = "synopsys,dwc3";
			reg = <0x2690000 0x70000>;
			interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
			usb-phy = <&usb_phy>, <&usb_phy>;
		};
	};
