Representing flash partitions in devicetree

Partitions can be represented by sub-nodes of an mtd device. This can be used
on platforms which have strong conventions about which portions of a flash are
used for what purposes, but which don't use an on-flash partition table such
as RedBoot.

#address-cells & #size-cells must both be present in the mtd device. There are
two valid values for both:
<1>: for partitions that require a single 32-bit cell to represent their
     size/address (aka the value is below 4 GiB)
<2>: for partitions that require two 32-bit cells to represent their
     size/address (aka the value is 4 GiB or greater).

Required properties:
- reg : The partition's offset and size within the mtd bank.

Optional properties:
- label : The label / name for this partition.  If omitted, the label is taken
  from the node name (excluding the unit address).
- read-only : This parameter, if present, is a hint to Linux that this
  partition should only be mounted read-only. This is usually used for flash
  partitions containing early-boot firmware images or data which should not be
  clobbered.

Examples:


flash@0 {
	#address-cells = <1>;
	#size-cells = <1>;

	partition@0 {
		label = "u-boot";
		reg = <0x0000000 0x100000>;
		read-only;
	};

	uimage@100000 {
		reg = <0x0100000 0x200000>;
	};
};

flash@1 {
	#address-cells = <1>;
	#size-cells = <2>;

	/* a 4 GiB partition */
	partition@0 {
		label = "filesystem";
		reg = <0x00000000 0x1 0x00000000>;
	};
};

flash@2 {
	#address-cells = <2>;
	#size-cells = <2>;

	/* an 8 GiB partition */
	partition@0 {
		label = "filesystem #1";
		reg = <0x0 0x00000000 0x2 0x00000000>;
	};

	/* a 4 GiB partition */
	partition@200000000 {
		label = "filesystem #2";
		reg = <0x2 0x00000000 0x1 0x00000000>;
	};
};
