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 contain one of the following:
			  "fsl,imx1-weim"
			  "fsl,imx27-weim"
			  "fsl,imx51-weim"
			  "fsl,imx50-weim"
			  "fsl,imx6q-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>

Optional properties:

 - fsl,weim-cs-gpr:	For "fsl,imx50-weim" and "fsl,imx6q-weim" type of
			devices, it should be the phandle to the system General
			Purpose Register controller that contains WEIM CS GPR
			register, e.g. IOMUXC_GPR1 on i.MX6Q.  IOMUXC_GPR1[11:0]
			should be set up as one of the following 4 possible
			values depending on the CS space configuration.

			IOMUXC_GPR1[11:0]    CS0    CS1    CS2    CS3
			---------------------------------------------
				05	    128M     0M     0M     0M
				033          64M    64M     0M     0M
				0113         64M    32M    32M     0M
				01111        32M    32M    32M    32M

			In case that the property is absent, the reset value or
			what bootloader sets up in IOMUXC_GPR1[11:0] will be
			used.

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>;
		fsl,weim-cs-gpr = <&gpr>;

		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>;
		};
	};
