* Generic DMA Controller and DMA request bindings

Generic binding to provide a way for a driver using DMA Engine to retrieve the
DMA request or channel information that goes from a hardware device to a DMA
controller.


* DMA controller

Required property:
- #dma-cells: 		Must be at least 1. Used to provide DMA controller
			specific information. See DMA client binding below for
			more details.

Optional properties:
- dma-channels: 	Number of DMA channels supported by the controller.
- dma-requests: 	Number of DMA request signals supported by the
			controller.
- dma-channel-mask:	Bitmask of available DMA channels in ascending order
			that are not reserved by firmware and are available to
			the kernel. i.e. first channel corresponds to LSB.

Example:

	dma: dma@48000000 {
		compatible = "ti,omap-sdma";
		reg = <0x48000000 0x1000>;
		interrupts = <0 12 0x4
			      0 13 0x4
			      0 14 0x4
			      0 15 0x4>;
		#dma-cells = <1>;
		dma-channels = <32>;
		dma-requests = <127>;
		dma-channel-mask = <0xfffe>
	};

* DMA router

DMA routers are transparent IP blocks used to route DMA request lines from
devices to the DMA controller. Some SoCs (like TI DRA7x) have more peripherals
integrated with DMA requests than what the DMA controller can handle directly.

Required property:
- dma-masters:		phandle of the DMA controller or list of phandles for
			the DMA controllers the router can direct the signal to.
- #dma-cells: 		Must be at least 1. Used to provide DMA router specific
			information. See DMA client binding below for more
			details.

Optional properties:
- dma-requests: 	Number of incoming request lines the router can handle.
- In the node pointed by the dma-masters:
	- dma-requests:	The router driver might need to look for this in order
			to configure the routing.

Example:
	sdma_xbar: dma-router@4a002b78 {
		compatible = "ti,dra7-dma-crossbar";
		reg = <0x4a002b78 0xfc>;
		#dma-cells = <1>;
		dma-requests = <205>;
		ti,dma-safe-map = <0>;
		dma-masters = <&sdma>;
	};

* DMA client

Client drivers should specify the DMA property using a phandle to the controller
followed by DMA controller specific data.

Required property:
- dmas:			List of one or more DMA specifiers, each consisting of
			- A phandle pointing to DMA controller node
			- A number of integer cells, as determined by the
			  #dma-cells property in the node referenced by phandle
			  containing DMA controller specific information. This
			  typically contains a DMA request line number or a
			  channel number, but can contain any data that is
			  required for configuring a channel.
- dma-names: 		Contains one identifier string for each DMA specifier in
			the dmas property. The specific strings that can be used
			are defined in the binding of the DMA client device.
			Multiple DMA specifiers can be used to represent
			alternatives and in this case the dma-names for those
			DMA specifiers must be identical (see examples).

Examples:

1. A device with one DMA read channel, one DMA write channel:

	i2c1: i2c@1 {
		...
		dmas = <&dma 2		/* read channel */
			&dma 3>;	/* write channel */
		dma-names = "rx", "tx";
		...
	};

2. A single read-write channel with three alternative DMA controllers:

	dmas = <&dma1 5
		&dma2 7
		&dma3 2>;
	dma-names = "rx-tx", "rx-tx", "rx-tx";

3. A device with three channels, one of which has two alternatives:

	dmas = <&dma1 2			/* read channel */
		&dma1 3			/* write channel */
		&dma2 0			/* error read */
		&dma3 0>;		/* alternative error read */
	dma-names = "rx", "tx", "error", "error";
