Re: [PATCH v3 1/8] dt-bindings: mtd: add basic bindings for UBI

From: Rob Herring
Date: Wed Aug 09 2023 - 18:58:42 EST


On Tue, Aug 08, 2023 at 05:03:19PM +0100, Daniel Golle wrote:
> Add basic bindings for UBI devices and volumes.
>
> Signed-off-by: Daniel Golle <daniel@xxxxxxxxxxxxxx>
> ---
> .../bindings/mtd/partitions/linux,ubi.yaml | 65 +++++++++++++++++++
> .../bindings/mtd/partitions/ubi-volume.yaml | 35 ++++++++++
> 2 files changed, 100 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mtd/partitions/linux,ubi.yaml
> create mode 100644 Documentation/devicetree/bindings/mtd/partitions/ubi-volume.yaml
>
> diff --git a/Documentation/devicetree/bindings/mtd/partitions/linux,ubi.yaml b/Documentation/devicetree/bindings/mtd/partitions/linux,ubi.yaml
> new file mode 100644
> index 0000000000000..79cfa0a3eaa7d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mtd/partitions/linux,ubi.yaml
> @@ -0,0 +1,65 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mtd/partitions/linux,ubi.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Unsorted Block Images
> +
> +description: |
> + UBI ("Unsorted Block Images") is a volume management system for raw
> + flash devices which manages multiple logical volumes on a single
> + physical flash device and spreads the I/O load (i.e, wear-leveling)
> + across whole flash chip.
> +
> +maintainers:
> + - Daniel Golle <daniel@xxxxxxxxxxxxxx>
> +
> +allOf:
> + - $ref: partition.yaml#
> +
> +properties:
> + compatible:
> + const: linux,ubi
> +
> + volumes:
> + type: object
> + description: UBI Volumes
> +
> + patternProperties:
> + "^ubi-volume-.*$":
> + $ref: "/schemas/mtd/partitions/ubi-volume.yaml"

Don't need quotes.

> +
> + unevaluatedProperties: false
> +
> +required:
> + - compatible
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + partitions {
> + compatible = "fixed-partitions";
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + partition@0 {
> + reg = <0x0 0x100000>;
> + label = "bootloader";
> + read-only;
> + };
> +
> + partition@100000 {
> + reg = <0x100000 0x1ff00000>;
> + label = "ubi";
> + compatible = "linux,ubi";
> +
> + volumes {
> + ubi-volume-caldata {
> + volid = <2>;
> + volname = "rf";
> + };
> + };
> + };
> + };
> diff --git a/Documentation/devicetree/bindings/mtd/partitions/ubi-volume.yaml b/Documentation/devicetree/bindings/mtd/partitions/ubi-volume.yaml
> new file mode 100644
> index 0000000000000..c17d0caf07d97
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mtd/partitions/ubi-volume.yaml
> @@ -0,0 +1,35 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mtd/partitions/ubi-volume.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: UBI volume
> +
> +description: |
> + This binding describes a single UBI volume. Volumes can be matches either
> + by their ID or their name, or both.
> +
> +maintainers:
> + - Daniel Golle <daniel@xxxxxxxxxxxxxx>
> +
> +properties:
> + volid:

volume-id or ubi-vol-id.

> + $ref: "/schemas/types.yaml#/definitions/uint32"

Drop quotes.

> + description:
> + Match UBI volume ID
> +
> + volname:
> + $ref: "/schemas/types.yaml#/definitions/string"
> + description:
> + Match UBI volume ID

ID?

> +
> +anyOf:
> + - required:
> + - volid
> +
> + - required:
> + - volname
> +
> +# This is a generic file other binding inherit from and extend
> +additionalProperties: true

Where do we restrict this? You referenced it, but didn't didn't restrict
it there (with unevaluatedProperties).

What other properties would you expect? These nodes ultimately need a
single schema (can be multiple files with $ref's) containing all
possible properties. Otherwise, any random property can be added
unchecked.

Rob