Device tree bindings for i.MX Wireless External Interface Module (WEIM)

The term "wireless" does not imply that the WEIM is literally an interface
without wires. It simply means that this module was originally designed for
wireless and mobile applications that use low-power technology.

The actual devices are instantiated from the child nodes of a WEIM node.

Required properties:

 - compatible:		Should be set to "fsl,<soc>-weim"
 - reg:			A resource specifier for the register space
			(see the example below)
 - clocks:		the clock, see the example below.
 - #address-cells:	Must be set to 2 to allow memory address translation
 - #size-cells:		Must be set to 1 to allow CS address passing
 - ranges:		Must be set up to reflect the memory layout with four
			integer values for each chip-select line in use:

			   <cs-number> 0 <physical address of mapping> <size>

Timing property for child nodes. It is mandatory, not optional.

 - fsl,weim-cs-timing:	The timing array, contains timing values for the
			child node. We can get the CS index from the child
			node's "reg" property. The number of registers depends
			on the selected chip.
			For i.MX1, i.MX21 ("fsl,imx1-weim") there are two
			registers: CSxU, CSxL.
			For i.MX25, i.MX27, i.MX31 and i.MX35 ("fsl,imx27-weim")
			there are three registers: CSCRxU, CSCRxL, CSCRxA.
			For i.MX50, i.MX53 ("fsl,imx50-weim"),
			i.MX51 ("fsl,imx51-weim") and i.MX6Q ("fsl,imx6q-weim")
			there are six registers: CSxGCR1, CSxGCR2, CSxRCR1,
			CSxRCR2, CSxWCR1, CSxWCR2.

Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM:

	weim: weim@021b8000 {
		compatible = "fsl,imx6q-weim";
		reg = <0x021b8000 0x4000>;
		clocks = <&clks 196>;
		#address-cells = <2>;
		#size-cells = <1>;
		ranges = <0 0 0x08000000 0x08000000>;

		nor@0,0 {
			compatible = "cfi-flash";
			reg = <0 0 0x02000000>;
			#address-cells = <1>;
			#size-cells = <1>;
			bank-width = <2>;
			fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000
					0x0000c000 0x1404a38e 0x00000000>;
		};
	};
