Message ID | 28dcc69ecf9d55e95991d8f2a8e19f71bbd32af0.1711048433.git.daniel@makrotopia.org |
---|---|
State | Superseded |
Headers | show |
Series | block: implement NVMEM provider | expand |
On 3/21/24 12:32, Daniel Golle wrote: > +$id: http://devicetree.org/schemas/block/partition.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Partition on a block device > + > +description: | > + This binding describes a partition on a block device. > + Partitions may be matched by a combination of partition number, name, > + and UUID. > + > +maintainers: > + - Daniel Golle <daniel@makrotopia.org> > + > +properties: > + $nodename: > + pattern: '^block-partition-.+$' > + > + partnum: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > + Matches partition by number if present. > + > + partname: > + $ref: /schemas/types.yaml#/definitions/string > + description: > + Matches partition by PARTNAME if present. > + > + partuuid: > + $ref: /schemas/types.yaml#/definitions/string > + description: > + Matches partition by PARTUUID if present. > + > + nvmem-layout: > + $ref: /schemas/nvmem/layouts/nvmem-layout.yaml# > + description: > + This container may reference an NVMEM layout parser. Does the above imply that only systems with a single block device are supported? Supporting partition numbers seems unfortunate to me. Partition numbers will change if the partition scheme changes. Bart.
On Thu, Mar 21, 2024 at 12:39:33PM -0700, Bart Van Assche wrote: > On 3/21/24 12:32, Daniel Golle wrote: > > +$id: http://devicetree.org/schemas/block/partition.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Partition on a block device > > + > > +description: | > > + This binding describes a partition on a block device. > > + Partitions may be matched by a combination of partition number, name, > > + and UUID. > > + > > +maintainers: > > + - Daniel Golle <daniel@makrotopia.org> > > + > > +properties: > > + $nodename: > > + pattern: '^block-partition-.+$' > > + > > + partnum: > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + description: > > + Matches partition by number if present. > > + > > + partname: > > + $ref: /schemas/types.yaml#/definitions/string > > + description: > > + Matches partition by PARTNAME if present. > > + > > + partuuid: > > + $ref: /schemas/types.yaml#/definitions/string > > + description: > > + Matches partition by PARTUUID if present. > > + > > + nvmem-layout: > > + $ref: /schemas/nvmem/layouts/nvmem-layout.yaml# > > + description: > > + This container may reference an NVMEM layout parser. > > Does the above imply that only systems with a single block device are > supported? Absolutely not. Of course also such devices often have multiple block devices, typically eMMC, NVMe and SD card are supported, some also come with SATA ports. The block device(s) relevant as NVMEM providers has/have to be referenced and the 'partitions' node is a child node of a specific block device, of course. > > Supporting partition numbers seems unfortunate to me. Partition numbers > will change if the partition scheme changes. I fully argee with that, and using partnum as an identifier is not very smart. However, this is what some vendors are doing (in custom downstream drivers or scripts running in early userland) and hence the kernel implementation should allow to identify the relevant location in exactly the same way to be sure we are always compatible.
diff --git a/Documentation/devicetree/bindings/block/block-device.yaml b/Documentation/devicetree/bindings/block/block-device.yaml new file mode 100644 index 0000000000000..c83ea525650ba --- /dev/null +++ b/Documentation/devicetree/bindings/block/block-device.yaml @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/block/block-device.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: block storage device + +description: | + This binding is generic and describes a block-oriented storage device. + +maintainers: + - Daniel Golle <daniel@makrotopia.org> + +properties: + partitions: + $ref: /schemas/block/partitions.yaml + + nvmem-layout: + $ref: /schemas/nvmem/layouts/nvmem-layout.yaml# + +unevaluatedProperties: false diff --git a/Documentation/devicetree/bindings/block/partition.yaml b/Documentation/devicetree/bindings/block/partition.yaml new file mode 100644 index 0000000000000..86b61e30f9a41 --- /dev/null +++ b/Documentation/devicetree/bindings/block/partition.yaml @@ -0,0 +1,51 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/block/partition.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Partition on a block device + +description: | + This binding describes a partition on a block device. + Partitions may be matched by a combination of partition number, name, + and UUID. + +maintainers: + - Daniel Golle <daniel@makrotopia.org> + +properties: + $nodename: + pattern: '^block-partition-.+$' + + partnum: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Matches partition by number if present. + + partname: + $ref: /schemas/types.yaml#/definitions/string + description: + Matches partition by PARTNAME if present. + + partuuid: + $ref: /schemas/types.yaml#/definitions/string + description: + Matches partition by PARTUUID if present. + + nvmem-layout: + $ref: /schemas/nvmem/layouts/nvmem-layout.yaml# + description: + This container may reference an NVMEM layout parser. + +anyOf: + - required: + - partnum + + - required: + - partname + + - required: + - partuuid + +unevaluatedProperties: false diff --git a/Documentation/devicetree/bindings/block/partitions.yaml b/Documentation/devicetree/bindings/block/partitions.yaml new file mode 100644 index 0000000000000..fd84c3ba8493b --- /dev/null +++ b/Documentation/devicetree/bindings/block/partitions.yaml @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/block/partitions.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Partitions on block devices + +description: | + This binding is generic and describes the content of the partitions container + node. + +maintainers: + - Daniel Golle <daniel@makrotopia.org> + +patternProperties: + "^block-partition-.+$": + $ref: partition.yaml + +unevaluatedProperties: false
Add bindings for block devices which are used to allow referencing nvmem bits on them. Signed-off-by: Daniel Golle <daniel@makrotopia.org> --- .../bindings/block/block-device.yaml | 22 ++++++++ .../devicetree/bindings/block/partition.yaml | 51 +++++++++++++++++++ .../devicetree/bindings/block/partitions.yaml | 20 ++++++++ 3 files changed, 93 insertions(+) create mode 100644 Documentation/devicetree/bindings/block/block-device.yaml create mode 100644 Documentation/devicetree/bindings/block/partition.yaml create mode 100644 Documentation/devicetree/bindings/block/partitions.yaml