[PATCH v3 06/10] dt-bindings: mtd: partitions: Drop partitions.yaml

Rob Herring (Arm) posted 10 patches 2 weeks, 4 days ago
[PATCH v3 06/10] dt-bindings: mtd: partitions: Drop partitions.yaml
Posted by Rob Herring (Arm) 2 weeks, 4 days ago
The partitions.yaml schema is an unusual structure in that it includes
all possible partition types, and it disables the normal matching by
compatible strings. As partitions.yaml has nothing to match on, it is
only applied when explicitly referenced. The use of "oneOf" also results
in misleading warnings which are difficult to understand. Drop
partitions.yaml and rely on the standard compatible matching instead.

The "mmc-card" case previously allowed any partition type, but now only
allows "fixed-partitions". There aren't any users and the original
intent appeared to be only for "fixed-partitions".

Acked-by: Ulf Hansson <ulf.hansson@linaro.org> # For MMC
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
---
 .../devicetree/bindings/mmc/mmc-card.yaml          | 20 ++++--------
 Documentation/devicetree/bindings/mtd/mtd.yaml     |  2 +-
 .../mtd/partitions/arm,arm-firmware-suite.yaml     |  2 --
 .../mtd/partitions/brcm,bcm4908-partitions.yaml    |  2 --
 .../partitions/brcm,bcm947xx-cfe-partitions.yaml   |  2 --
 .../mtd/partitions/linksys,ns-partitions.yaml      |  2 --
 .../bindings/mtd/partitions/partitions.yaml        | 36 ----------------------
 .../devicetree/bindings/mtd/ti,davinci-nand.yaml   |  4 ++-
 8 files changed, 10 insertions(+), 60 deletions(-)

diff --git a/Documentation/devicetree/bindings/mmc/mmc-card.yaml b/Documentation/devicetree/bindings/mmc/mmc-card.yaml
index 1d91d4272de0..a61d6c96df75 100644
--- a/Documentation/devicetree/bindings/mmc/mmc-card.yaml
+++ b/Documentation/devicetree/bindings/mmc/mmc-card.yaml
@@ -32,21 +32,13 @@ properties:
 
 patternProperties:
   "^partitions(-boot[12]|-gp[14])?$":
-    $ref: /schemas/mtd/partitions/partitions.yaml
+    type: object
+    additionalProperties: true
 
-    patternProperties:
-      "^partition@[0-9a-f]+$":
-        $ref: /schemas/mtd/partitions/partition.yaml
-
-        properties:
-          reg:
-            description: Must be multiple of 512 as it's converted
-              internally from bytes to SECTOR_SIZE (512 bytes)
-
-        required:
-          - reg
-
-        unevaluatedProperties: false
+    properties:
+      compatible:
+        contains:
+          const: fixed-partitions
 
 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/mtd/mtd.yaml b/Documentation/devicetree/bindings/mtd/mtd.yaml
index bbb56216a4e2..e56dba83f00a 100644
--- a/Documentation/devicetree/bindings/mtd/mtd.yaml
+++ b/Documentation/devicetree/bindings/mtd/mtd.yaml
@@ -30,7 +30,7 @@ properties:
     deprecated: true
 
   partitions:
-    $ref: /schemas/mtd/partitions/partitions.yaml
+    type: object
 
     required:
       - compatible
diff --git a/Documentation/devicetree/bindings/mtd/partitions/arm,arm-firmware-suite.yaml b/Documentation/devicetree/bindings/mtd/partitions/arm,arm-firmware-suite.yaml
index 97618847ee35..76c88027b6d2 100644
--- a/Documentation/devicetree/bindings/mtd/partitions/arm,arm-firmware-suite.yaml
+++ b/Documentation/devicetree/bindings/mtd/partitions/arm,arm-firmware-suite.yaml
@@ -9,8 +9,6 @@ title: ARM Firmware Suite (AFS) Partitions
 maintainers:
   - Linus Walleij <linus.walleij@linaro.org>
 
-select: false
-
 description: |
   The ARM Firmware Suite is a flash partitioning system found on the
   ARM reference designs: Integrator AP, Integrator CP, Versatile AB,
diff --git a/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm4908-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm4908-partitions.yaml
index 94f0742b375c..159b32d12803 100644
--- a/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm4908-partitions.yaml
+++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm4908-partitions.yaml
@@ -17,8 +17,6 @@ description: |
 maintainers:
   - Rafał Miłecki <rafal@milecki.pl>
 
-select: false
-
 properties:
   compatible:
     const: brcm,bcm4908-partitions
diff --git a/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm947xx-cfe-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm947xx-cfe-partitions.yaml
index 939e7b50db22..3484e06d6bcb 100644
--- a/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm947xx-cfe-partitions.yaml
+++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,bcm947xx-cfe-partitions.yaml
@@ -35,8 +35,6 @@ description: |
 maintainers:
   - Rafał Miłecki <rafal@milecki.pl>
 
-select: false
-
 properties:
   compatible:
     const: brcm,bcm947xx-cfe-partitions
diff --git a/Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
index c5fa78ff7125..02ecb51fcece 100644
--- a/Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
+++ b/Documentation/devicetree/bindings/mtd/partitions/linksys,ns-partitions.yaml
@@ -18,8 +18,6 @@ description: |
 maintainers:
   - Rafał Miłecki <rafal@milecki.pl>
 
-select: false
-
 properties:
   compatible:
     const: linksys,ns-partitions
diff --git a/Documentation/devicetree/bindings/mtd/partitions/partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/partitions.yaml
deleted file mode 100644
index 76199506d690..000000000000
--- a/Documentation/devicetree/bindings/mtd/partitions/partitions.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/mtd/partitions/partitions.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Partitions
-
-description: |
-  This binding is generic and describes the content of the partitions container
-  node. All partition parsers must be referenced here.
-
-maintainers:
-  - Miquel Raynal <miquel.raynal@bootlin.com>
-
-oneOf:
-  - $ref: arm,arm-firmware-suite.yaml
-  - $ref: brcm,bcm4908-partitions.yaml
-  - $ref: brcm,bcm947xx-cfe-partitions.yaml
-  - $ref: fixed-partitions.yaml
-  - $ref: linksys,ns-partitions.yaml
-  - $ref: qcom,smem-part.yaml
-  - $ref: redboot-fis.yaml
-  - $ref: tplink,safeloader-partitions.yaml
-
-properties:
-  compatible: true
-
-patternProperties:
-  "^partition(-.+|@[0-9a-f]+)$":
-    $ref: partition.yaml
-
-required:
-  - compatible
-
-unevaluatedProperties: false
diff --git a/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml b/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml
index ed24b0ea86e5..7619b19e7a04 100644
--- a/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml
+++ b/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml
@@ -24,7 +24,9 @@ properties:
       - description: AEMIF control registers.
 
   partitions:
-    $ref: /schemas/mtd/partitions/partitions.yaml
+    type: object
+    required:
+      - compatible
 
   ti,davinci-chipselect:
     description:

-- 
2.51.0

Re: [PATCH v3 06/10] dt-bindings: mtd: partitions: Drop partitions.yaml
Posted by Daniel Golle 2 weeks, 4 days ago
On Wed, Jan 21, 2026 at 01:56:39PM -0600, Rob Herring (Arm) wrote:
> The partitions.yaml schema is an unusual structure in that it includes
> all possible partition types, and it disables the normal matching by
> compatible strings. As partitions.yaml has nothing to match on, it is
> only applied when explicitly referenced. The use of "oneOf" also results
> in misleading warnings which are difficult to understand. Drop
> partitions.yaml and rely on the standard compatible matching instead.
> 
> The "mmc-card" case previously allowed any partition type, but now only
> allows "fixed-partitions". There aren't any users and the original
> intent appeared to be only for "fixed-partitions".

It would actually be great to also allow 'gpt-partitions' as compatible
type with #address-cells = <0> and #size-cells = <0> and allow matching
on partition UUID, name or index. This has previously been discussed and
would avoid having to extract MAC addresses and WiFi EEPROM data in
userspace on many devices which rely on such conventions.

In OpenWrt I've implemented this as a downstream patch[1]...

[1]: https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=target/linux/generic/pending-6.12/453-partitions-efi-allow-assigning-partition-Device-Tree.patch;h=cc2c20338aff476d3a5b028e71b08ea15a060daa;hb=HEAD
Re: [PATCH v3 06/10] dt-bindings: mtd: partitions: Drop partitions.yaml
Posted by Miquel Raynal 2 weeks, 3 days ago
On 21/01/2026 at 21:18:58 GMT, Daniel Golle <daniel@makrotopia.org> wrote:

> On Wed, Jan 21, 2026 at 01:56:39PM -0600, Rob Herring (Arm) wrote:
>> The partitions.yaml schema is an unusual structure in that it includes
>> all possible partition types, and it disables the normal matching by
>> compatible strings. As partitions.yaml has nothing to match on, it is
>> only applied when explicitly referenced. The use of "oneOf" also results
>> in misleading warnings which are difficult to understand. Drop
>> partitions.yaml and rely on the standard compatible matching instead.
>> 
>> The "mmc-card" case previously allowed any partition type, but now only
>> allows "fixed-partitions". There aren't any users and the original
>> intent appeared to be only for "fixed-partitions".
>
> It would actually be great to also allow 'gpt-partitions' as compatible
> type with #address-cells = <0> and #size-cells = <0> and allow matching
> on partition UUID, name or index. This has previously been discussed and
> would avoid having to extract MAC addresses and WiFi EEPROM data in
> userspace on many devices which rely on such conventions.

Out of curiosity, why not exposing this data through an NVMEM cell
instead? Anyway, this (re?)addition can probably be part of a follow-up
series and is almost orthogonal to this cleanup IMO.

Thanks,
Miquèl
Re: [PATCH v3 06/10] dt-bindings: mtd: partitions: Drop partitions.yaml
Posted by Daniel Golle 2 weeks, 3 days ago
On Thu, Jan 22, 2026 at 11:31:54AM +0100, Miquel Raynal wrote:
> On 21/01/2026 at 21:18:58 GMT, Daniel Golle <daniel@makrotopia.org> wrote:
> 
> > On Wed, Jan 21, 2026 at 01:56:39PM -0600, Rob Herring (Arm) wrote:
> >> The partitions.yaml schema is an unusual structure in that it includes
> >> all possible partition types, and it disables the normal matching by
> >> compatible strings. As partitions.yaml has nothing to match on, it is
> >> only applied when explicitly referenced. The use of "oneOf" also results
> >> in misleading warnings which are difficult to understand. Drop
> >> partitions.yaml and rely on the standard compatible matching instead.
> >> 
> >> The "mmc-card" case previously allowed any partition type, but now only
> >> allows "fixed-partitions". There aren't any users and the original
> >> intent appeared to be only for "fixed-partitions".
> >
> > It would actually be great to also allow 'gpt-partitions' as compatible
> > type with #address-cells = <0> and #size-cells = <0> and allow matching
> > on partition UUID, name or index. This has previously been discussed and
> > would avoid having to extract MAC addresses and WiFi EEPROM data in
> > userspace on many devices which rely on such conventions.
> 
> Out of curiosity, why not exposing this data through an NVMEM cell
> instead? Anyway, this (re?)addition can probably be part of a follow-up
> series and is almost orthogonal to this cleanup IMO.

Exposing this data via NVMEM cell is exactly what I'd like to see.
However, for that the location of the data to be exposed as NVMEM cell
needs to be identified in the same way as done by the stock firmware,
which uses a GPT partition name in case of Adtran, for example.