[PATCH v2 00/17] Improve MTD bindings

From: Miquel Raynal
Date: Fri Nov 04 2022 - 12:47:27 EST


Hello,

During a yaml conversion review, Krzysztof opened the discussion about
the links and references made between the different files in the mtd
bindings. I figured out some minimal changes might be needed to properly
reference everything correctly and ensure we constrain as much as
possible the existing bindings. That is what I tried to do here.

The idea is:
* partition.yaml defines one MTD partition
* parsers/*.yaml define partition parsers (mainly compatibles)
* mtd.yaml contains the generic definition of any mtd device (nand,
spi-nand, spi-nor, nor, sram, etc), in particular, it defines the
various partition formats (legacy and current) and references
partition.yaml as well as a list of all the possible parsers within a
"partitions" node.
* nand-chip.yaml, jedec,spi-nor, mtd-physmap.yaml all describe real
instances of mtd device, each of them with a different underlying
technology, they reference mtd.yaml
* nand-controller.yaml has subnodes which reference nand-chip.yaml.
* Specific NAND controller bindings reference nand-controller.yaml.

I've tested each and every patch with the following command and it
worked fine:
$ make dt_binding_check -j10 DT_CHECKER_FLAG=-m DT_SCHEMA_FILES=mtd/

Comments welcome of course :-)

Cheers,
Miquèl

Changes in v2:
* Fixed all the missing references to partitions.txt.
* Created a proper partitions.yaml file to cut the logic
* Constrained #{address,size}-cells to 1 or 2.
* Used the description advised by Rob to list all the possible partition
parsers without having to actually duplicate the compatibles.
* Deprecated the #{address,size}-cells properties when relevant.
* Fixed a regex pattern to match all sram device node names (including
ones defined under memory-controllers.
* Added a comment on another "additionalProperties: true" situation.
* Dropped even more duplicated properties.
* Fixed a few typos (like s/phymap/physmap/).
* Changed qcom,smem-part partition type.
* Standardized the style in the various examples.
* Improved the nvmem-cells file as well.
* Added an example to the sunxi-nand bindings.

Miquel Raynal (17):
dt-bindings: mtd: Clarify all partition subnodes
dt-bindings: mtd: Remove useless file about partitions
dt-bindings: mtd: nand-chip: Reference mtd.yaml
dt-bindings: mtd: nand: Drop common properties already defined in
generic files
dt-bindings: mtd: nand: Standardize the child node name
dt-bindings: mtd: ingenic: Mark partitions in the controller node as
deprecated
dt-bindings: mtd: onenand: Mention the expected node name
dt-bindings: mtd: sunxi-nand: Add an example to validate the bindings
dt-bindings: mtd: spi-nor: Drop common properties
dt-bindings: mtd: physmap: Reuse the generic definitions
dt-bindings: mtd: partitions: Constrain the list of parsers
dt-bindings: mtd: partitions: Change qcom,smem-part partition type
dt-bindings: mtd: nvmem-cells: Fix example
dt-bindings: mtd: nvmem-cells: Inherit from MTD partitions
dt-bindings: mtd: Argue in favor of keeping additionalProperties set
to true
dt-bindings: mtd: Drop object types when referencing other files
dt-bindings: mtd: Standardize the style in the examples

.../mtd/allwinner,sun4i-a10-nand.yaml | 34 +++--
.../bindings/mtd/arasan,nand-controller.yaml | 5 +-
.../bindings/mtd/arm,pl353-nand-r2p1.yaml | 30 ++---
.../devicetree/bindings/mtd/atmel-nand.txt | 6 +-
.../bindings/mtd/brcm,brcmnand.yaml | 80 ++++++------
.../devicetree/bindings/mtd/denali,nand.yaml | 2 +-
.../devicetree/bindings/mtd/ingenic,nand.yaml | 116 ++++++++---------
.../bindings/mtd/intel,lgm-ebunand.yaml | 48 +++----
.../bindings/mtd/jedec,spi-nor.yaml | 14 ---
.../devicetree/bindings/mtd/lpc32xx-mlc.txt | 2 +-
.../devicetree/bindings/mtd/lpc32xx-slc.txt | 2 +-
.../bindings/mtd/microchip,mchp48l640.yaml | 14 +--
.../devicetree/bindings/mtd/mtd-physmap.yaml | 7 +-
.../devicetree/bindings/mtd/mtd.yaml | 24 +++-
.../devicetree/bindings/mtd/mtk-nand.txt | 2 +-
.../devicetree/bindings/mtd/nand-chip.yaml | 4 +
.../bindings/mtd/nand-controller.yaml | 2 +-
.../devicetree/bindings/mtd/partition.txt | 33 -----
.../partitions/arm,arm-firmware-suite.yaml | 2 +
.../partitions/brcm,bcm4908-partitions.yaml | 2 +
.../brcm,bcm947xx-cfe-partitions.yaml | 2 +
.../mtd/partitions/linksys,ns-partitions.yaml | 2 +
.../bindings/mtd/partitions/nvmem-cells.yaml | 4 +-
.../bindings/mtd/partitions/partition.yaml | 1 +
.../bindings/mtd/partitions/partitions.yaml | 41 ++++++
.../mtd/partitions/qcom,smem-part.yaml | 32 ++---
.../bindings/mtd/partitions/redboot-fis.yaml | 6 +
.../devicetree/bindings/mtd/qcom,nandc.yaml | 117 +++++++++---------
.../bindings/mtd/st,stm32-fmc2-nand.yaml | 47 +++----
.../bindings/mtd/ti,am654-hbmc.yaml | 36 +++---
.../bindings/mtd/ti,gpmc-onenand.yaml | 3 +
drivers/mtd/parsers/Kconfig | 2 +-
32 files changed, 380 insertions(+), 342 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mtd/partition.txt
create mode 100644 Documentation/devicetree/bindings/mtd/partitions/partitions.yaml

--
2.34.1