Flash partitions in device tree
===============================

Flash devices can be partitioned into one or more functional ranges (e.g. "boot
code", "nvram", "kernel").

Different devices may be partitioned in a different ways. Some may use a fixed
flash layout set at production time. Some may use on-flash table that describes
the geometry and naming/purpose of each functional region. It is also possible
to see these methods mixed.

To assist system software in locating partitions, we allow describing which
method is used for a given flash device. To describe the method there should be
a subnode of the flash device that is named 'partitions'. It must have a
'compatible' property, which is used to identify the method to use.

When a single partition is represented with a DT node (it depends on a used
format) it may also be described using above rules ('compatible' and optionally
some extra properties / subnodes). It allows describing more complex,
hierarchical (multi-level) layouts and should be used if there is some
significant relation between partitions or some partition internally uses
another partitioning method.

Available bindings are listed in the "partitions" subdirectory.


Fixed Partitions
================

Partitions can be represented by sub-nodes of a flash 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.

The partition table should be a subnode of the flash node and should be named
'partitions'. This node should have the following property:
- compatible : (required) must be "fixed-partitions"
Partitions are then defined in subnodes of the partitions node.

For backwards compatibility partitions as direct subnodes of the flash device are
supported. This use is discouraged.
NOTE: also for backwards compatibility, direct subnodes that have a compatible
string are not considered partitions, as they may be used for other bindings.

#address-cells & #size-cells must both be present in the partitions subnode of the
flash 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 flash

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.
- lock : Do not unlock the partition at initialization time (not supported on
  all devices)
- slc-mode: This parameter, if present, allows one to emulate SLC mode on a
  partition attached to an MLC NAND thus making this partition immune to
  paired-pages corruptions

Examples:


flash@0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

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

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

flash@1 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <2>;

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

flash@2 {
	partitions {
		compatible = "fixed-partitions";
		#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>;
		};
	};
};

flash@3 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "bootloader";
			reg = <0x000000 0x100000>;
			read-only;
		};

		firmware@100000 {
			label = "firmware";
			reg = <0x100000 0xe00000>;
			compatible = "brcm,trx";
		};

		calibration@f00000 {
			label = "calibration";
			reg = <0xf00000 0x100000>;
			compatible = "fixed-partitions";
			ranges = <0 0xf00000 0x100000>;
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "wifi0";
				reg = <0x000000 0x080000>;
			};

			partition@80000 {
				label = "wifi1";
				reg = <0x080000 0x080000>;
			};
		};
	};
};
