mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 03:25:20 +07:00
d2ad00eb78
Documentation was already saying that fixed and dynamic partitioning can be mixed but was missing a clear description and examples. This commit adds a proper documentation of how descriptions can be nested and how layouts can be mixed. This addition is important for partitions that contain subpartitions. In such cases partitions have to be properly described in order to let system handle them correctly. Depending on situation, nesting descriptions may provide more accurate logic/structure and/or allow mixing partitioning types (various "compatible" values). Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
158 lines
4.4 KiB
Plaintext
158 lines
4.4 KiB
Plaintext
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)
|
|
|
|
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>;
|
|
};
|
|
};
|
|
};
|
|
};
|