Message ID | 20201209130235.7505-1-zajec5@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | dt-bindings: mtd: convert "fixed-partitions" to the json-schema | expand |
On Wed, Dec 09, 2020 at 02:02:35PM +0100, Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@milecki.pl> > > This standardizes its documentation, allows validating with Makefile > checks and helps writing DTS files. > > Noticeable changes: > 1. Dropped "Partitions can be represented by sub-nodes of a flash > device." as we also support subpartitions (don't have to be part of > flash device node) > 2. Dropped "to Linux" as bindings are meant to be os agnostic. > > Signed-off-by: Rafał Miłecki <rafal@milecki.pl> > --- > .../devicetree/bindings/mtd/partition.txt | 131 +--------------- > .../mtd/partitions/fixed-partitions.yaml | 146 ++++++++++++++++++ > 2 files changed, 148 insertions(+), 129 deletions(-) > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > > diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt > index 4a39698221a2..ead90e8274d6 100644 > --- a/Documentation/devicetree/bindings/mtd/partition.txt > +++ b/Documentation/devicetree/bindings/mtd/partition.txt > @@ -24,137 +24,10 @@ 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. > +Deprecated: partitions defined in flash 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>; > - }; > - }; > - }; > -}; > diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > new file mode 100644 > index 000000000000..c5e509e08f31 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > @@ -0,0 +1,146 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mtd/partitions/fixed-partitions.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Fixed partitions > + > +description: | > + This binding 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 node named "partitions". Partitions are then > + defined as subnodes. > + > +maintainers: > + - Rafał Miłecki <rafal@milecki.pl> > + > +properties: > + compatible: > + const: fixed-partitions > + > +patternProperties: > + "^.*@[0-9a-f]+$": You can drop '^.*'. This needs to recurse to nested nodes. I think here you can do just: $ref: #/ And drop 'compatible' as required. It's redundant anyways because the schema will only be applied if compatible matches. This creates a circular schema which I'm not sure what will happen. If that doesn't work, then we'll have to define how many levels we support and then do something like this: $defs: partition: # everything you have here... And then here, just: $ref: #/$defs/partition unevaluatedProperties: false patternProperties: "@[0-9a-f]+$": $ref: #/$defs/partition And repeat for however many levels we want to nest. Also, I just added '$def' support to dt-schema last week. > + description: node describing a single flash partition > + type: object > + > + properties: > + reg: > + description: partition's offset and size within the flash I don't think we support more than 1 entry here, so add 'maxItems: 1'. > + > + label: > + description: The label / name for this partition. If omitted, the label > + is taken from the node name (excluding the unit address). > + > + read-only: > + description: This parameter, if present, is a hint 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. > + type: boolean > + > + lock: > + description: Do not unlock the partition at initialization time (not > + supported on all devices) > + type: boolean > + > + slc-mode: > + description: 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 > + type: boolean > + > + required: > + - reg > + > +required: > + - compatible > + > +additionalProperties: true
On 10.12.2020 03:48, Rob Herring wrote: > On Wed, Dec 09, 2020 at 02:02:35PM +0100, Rafał Miłecki wrote: >> From: Rafał Miłecki <rafal@milecki.pl> >> >> This standardizes its documentation, allows validating with Makefile >> checks and helps writing DTS files. >> >> Noticeable changes: >> 1. Dropped "Partitions can be represented by sub-nodes of a flash >> device." as we also support subpartitions (don't have to be part of >> flash device node) >> 2. Dropped "to Linux" as bindings are meant to be os agnostic. >> >> Signed-off-by: Rafał Miłecki <rafal@milecki.pl> >> --- >> .../devicetree/bindings/mtd/partition.txt | 131 +--------------- >> .../mtd/partitions/fixed-partitions.yaml | 146 ++++++++++++++++++ >> 2 files changed, 148 insertions(+), 129 deletions(-) >> create mode 100644 Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml >> >> diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt >> index 4a39698221a2..ead90e8274d6 100644 >> --- a/Documentation/devicetree/bindings/mtd/partition.txt >> +++ b/Documentation/devicetree/bindings/mtd/partition.txt >> @@ -24,137 +24,10 @@ 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. >> +Deprecated: partitions defined in flash 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>; >> - }; >> - }; >> - }; >> -}; >> diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml >> new file mode 100644 >> index 000000000000..c5e509e08f31 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml >> @@ -0,0 +1,146 @@ >> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/mtd/partitions/fixed-partitions.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Fixed partitions >> + >> +description: | >> + This binding 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 node named "partitions". Partitions are then >> + defined as subnodes. >> + >> +maintainers: >> + - Rafał Miłecki <rafal@milecki.pl> >> + >> +properties: >> + compatible: >> + const: fixed-partitions >> + >> +patternProperties: >> + "^.*@[0-9a-f]+$": > > You can drop '^.*'. > > This needs to recurse to nested nodes. > > I think here you can do just: > > $ref: #/ > > And drop 'compatible' as required. It's redundant anyways because the > schema will only be applied if compatible matches. I managed to implement recursive schema but then I run dt_binding_check and realized it may be not what we really want. The error I got was: Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.example.dt.yaml: partitions: firmware@100000:compatible:0: 'fixed-partitions' was expected From schema: Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml and was caused by the following example: partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; (...) firmware@100000 { label = "firmware"; reg = <0x100000 0xe00000>; compatible = "brcm,trx"; }; (...) } As you can see a single partition can use any available parser, so we can't require only "fixed-partitions" to be nested in the "fixed-partitions". In this situation I think this commit may be OK after all if I just fix regex and required (drop "compatible"). What do you think? FWIW: properties: compatible: const: fixed-partitions patternProperties: "@[0-9a-f]+$": allOf: - $ref: "#" - properties: reg: maxItems: 1 description: partition's offset and size within the flash label: description: The label / name for this partition. If omitted, the label is taken from the node name (excluding the unit address). read-only: description: This parameter, if present, is a hint 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. type: boolean lock: description: Do not unlock the partition at initialization time (not supported on all devices) type: boolean slc-mode: description: 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 type: boolean required: - reg
On Thu, Dec 10, 2020 at 7:56 AM Rafał Miłecki <zajec5@gmail.com> wrote: > > On 10.12.2020 03:48, Rob Herring wrote: > > On Wed, Dec 09, 2020 at 02:02:35PM +0100, Rafał Miłecki wrote: > >> From: Rafał Miłecki <rafal@milecki.pl> > >> > >> This standardizes its documentation, allows validating with Makefile > >> checks and helps writing DTS files. > >> > >> Noticeable changes: > >> 1. Dropped "Partitions can be represented by sub-nodes of a flash > >> device." as we also support subpartitions (don't have to be part of > >> flash device node) > >> 2. Dropped "to Linux" as bindings are meant to be os agnostic. > >> > >> Signed-off-by: Rafał Miłecki <rafal@milecki.pl> > >> --- > >> .../devicetree/bindings/mtd/partition.txt | 131 +--------------- > >> .../mtd/partitions/fixed-partitions.yaml | 146 ++++++++++++++++++ > >> 2 files changed, 148 insertions(+), 129 deletions(-) > >> create mode 100644 Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > >> diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > >> new file mode 100644 > >> index 000000000000..c5e509e08f31 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > >> @@ -0,0 +1,146 @@ > >> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/mtd/partitions/fixed-partitions.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Fixed partitions > >> + > >> +description: | > >> + This binding 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 node named "partitions". Partitions are then > >> + defined as subnodes. > >> + > >> +maintainers: > >> + - Rafał Miłecki <rafal@milecki.pl> > >> + > >> +properties: > >> + compatible: > >> + const: fixed-partitions > >> + > >> +patternProperties: > >> + "^.*@[0-9a-f]+$": > > > > You can drop '^.*'. > > > > This needs to recurse to nested nodes. > > > > I think here you can do just: > > > > $ref: #/ > > > > And drop 'compatible' as required. It's redundant anyways because the > > schema will only be applied if compatible matches. > > I managed to implement recursive schema but then I run dt_binding_check and > realized it may be not what we really want. > > The error I got was: > Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.example.dt.yaml: partitions: firmware@100000:compatible:0: 'fixed-partitions' was expected > From schema: Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > > and was caused by the following example: > partitions { > compatible = "fixed-partitions"; > #address-cells = <1>; > #size-cells = <1>; > > (...) > > firmware@100000 { > label = "firmware"; > reg = <0x100000 0xe00000>; > compatible = "brcm,trx"; > }; > > (...) > } > > As you can see a single partition can use any available parser, so we can't > require only "fixed-partitions" to be nested in the "fixed-partitions". > > In this situation I think this commit may be OK after all if I just fix regex > and required (drop "compatible"). > > What do you think? You're still going to have the above error with the schema below. I completely missed that the nested example has "fixed-partitions" compatible in it. So what you had is actually fine in that regard. Let me start over reviewing. > FWIW: > > properties: > compatible: > const: fixed-partitions > > patternProperties: > "@[0-9a-f]+$": > allOf: > - $ref: "#" > - properties: > reg: > maxItems: 1 > description: partition's offset and size within the flash > > label: > description: The label / name for this partition. If omitted, the label > is taken from the node name (excluding the unit address). > > read-only: > description: This parameter, if present, is a hint 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. > type: boolean > > lock: > description: Do not unlock the partition at initialization time (not > supported on all devices) > type: boolean > > slc-mode: > description: 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 > type: boolean > > required: > - reg
On Wed, Dec 9, 2020 at 7:02 AM Rafał Miłecki <zajec5@gmail.com> wrote: > > From: Rafał Miłecki <rafal@milecki.pl> > > This standardizes its documentation, allows validating with Makefile > checks and helps writing DTS files. > > Noticeable changes: > 1. Dropped "Partitions can be represented by sub-nodes of a flash > device." as we also support subpartitions (don't have to be part of > flash device node) > 2. Dropped "to Linux" as bindings are meant to be os agnostic. > > Signed-off-by: Rafał Miłecki <rafal@milecki.pl> > --- > .../devicetree/bindings/mtd/partition.txt | 131 +--------------- > .../mtd/partitions/fixed-partitions.yaml | 146 ++++++++++++++++++ > 2 files changed, 148 insertions(+), 129 deletions(-) > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > new file mode 100644 > index 000000000000..c5e509e08f31 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml > @@ -0,0 +1,146 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mtd/partitions/fixed-partitions.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Fixed partitions > + > +description: | > + This binding 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 node named "partitions". Partitions are then > + defined as subnodes. > + > +maintainers: > + - Rafał Miłecki <rafal@milecki.pl> > + > +properties: > + compatible: > + const: fixed-partitions You need to add #size-cells and #address-cells and make them required. > + > +patternProperties: > + "^.*@[0-9a-f]+$": > + description: node describing a single flash partition > + type: object > + > + properties: > + reg: > + description: partition's offset and size within the flash > + > + label: > + description: The label / name for this partition. If omitted, the label > + is taken from the node name (excluding the unit address). > + > + read-only: > + description: This parameter, if present, is a hint 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. > + type: boolean > + > + lock: > + description: Do not unlock the partition at initialization time (not > + supported on all devices) > + type: boolean > + > + slc-mode: > + description: 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 > + type: boolean > + > + required: > + - reg > + > +required: > + - compatible > + > +additionalProperties: true > + > +examples: > + - | > + 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>; > + }; > + }; > + - | > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <2>; > + > + /* a 4 GiB partition */ > + partition@0 { > + label = "filesystem"; > + reg = <0x00000000 0x1 0x00000000>; > + }; > + }; > + - | > + 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>; > + }; > + }; > + - | > + 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"; Can you move compatible to be the first property which is informal convention. > + }; > + > + 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>; > + }; > + }; > + }; > -- > 2.26.2 >
diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt index 4a39698221a2..ead90e8274d6 100644 --- a/Documentation/devicetree/bindings/mtd/partition.txt +++ b/Documentation/devicetree/bindings/mtd/partition.txt @@ -24,137 +24,10 @@ 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. +Deprecated: partitions defined in flash 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>; - }; - }; - }; -}; diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml new file mode 100644 index 000000000000..c5e509e08f31 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml @@ -0,0 +1,146 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mtd/partitions/fixed-partitions.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Fixed partitions + +description: | + This binding 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 node named "partitions". Partitions are then + defined as subnodes. + +maintainers: + - Rafał Miłecki <rafal@milecki.pl> + +properties: + compatible: + const: fixed-partitions + +patternProperties: + "^.*@[0-9a-f]+$": + description: node describing a single flash partition + type: object + + properties: + reg: + description: partition's offset and size within the flash + + label: + description: The label / name for this partition. If omitted, the label + is taken from the node name (excluding the unit address). + + read-only: + description: This parameter, if present, is a hint 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. + type: boolean + + lock: + description: Do not unlock the partition at initialization time (not + supported on all devices) + type: boolean + + slc-mode: + description: 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 + type: boolean + + required: + - reg + +required: + - compatible + +additionalProperties: true + +examples: + - | + 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>; + }; + }; + - | + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <2>; + + /* a 4 GiB partition */ + partition@0 { + label = "filesystem"; + reg = <0x00000000 0x1 0x00000000>; + }; + }; + - | + 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>; + }; + }; + - | + 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>; + }; + }; + };