* Freescale General-Purpose Media Interface (GPMI)

The GPMI nand controller provides an interface to control the
NAND flash chips.

Required properties:
  - compatible : should be "fsl,<chip>-gpmi-nand", chip can be:
    * imx23
    * imx28
    * imx6q
    * imx6sx
    * imx7d
  - reg : should contain registers location and length for gpmi and bch.
  - reg-names: Should contain the reg names "gpmi-nand" and "bch"
  - interrupts : BCH interrupt number.
  - interrupt-names : Should be "bch".
  - dmas: DMA specifier, consisting of a phandle to DMA controller node
    and GPMI DMA channel ID.
    Refer to dma.txt and fsl-mxs-dma.txt for details.
  - dma-names: Must be "rx-tx".
  - clocks : clocks phandle and clock specifier corresponding to each clock
    specified in clock-names.
  - clock-names : The "gpmi_io" clock is always required. Which clocks are
    exactly required depends on chip:
    * imx23/imx28 : "gpmi_io"
    * imx6q/sx : "gpmi_io", "gpmi_apb", "gpmi_bch", "gpmi_bch_apb", "per1_bch"
    * imx7d : "gpmi_io", "gpmi_bch_apb"

Optional properties:
  - nand-on-flash-bbt: boolean to enable on flash bbt option if not
                       present false
  - fsl,use-minimum-ecc: Protect this NAND flash with the minimum ECC
                       strength required. The required ECC strength is
                       automatically discoverable for some flash
                       (e.g., according to the ONFI standard).
                       However, note that if this strength is not
                       discoverable or this property is not enabled,
                       the software may chooses an implementation-defined
                       ECC scheme.
  - fsl,no-blockmark-swap: Don't swap the bad block marker from the OOB
                       area with the byte in the data area but rely on the
                       flash based BBT for identifying bad blocks.
                       NOTE: this is only valid in conjunction with
                             'nand-on-flash-bbt'.
                       WARNING: on i.MX28 blockmark swapping cannot be
                       disabled for the BootROM in the FCB. Thus,
                       partitions written from Linux with this feature
                       turned on may not be accessible by the BootROM
                       code.

The device tree may optionally contain sub-nodes describing partitions of the
address space. See partition.txt for more detail.

Examples:

gpmi-nand@8000c000 {
	compatible = "fsl,imx28-gpmi-nand";
	#address-cells = <1>;
	#size-cells = <1>;
	reg = <0x8000c000 2000>, <0x8000a000 2000>;
	reg-names = "gpmi-nand", "bch";
	interrupts = <41>;
	interrupt-names = "bch";
	dmas = <&dma_apbh 4>;
	dma-names = "rx-tx";

	partition@0 {
	...
	};
};
