[v2,00/17] Improve MTD bindings

Message ID 20221104164718.1290859-1-miquel.raynal@bootlin.com
Headers
Series Improve MTD bindings |

Message

Miquel Raynal Nov. 4, 2022, 4:47 p.m. UTC
  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
  

Comments

Rob Herring Nov. 10, 2022, 5:03 p.m. UTC | #1
On Fri, Nov 04, 2022 at 05:47:01PM +0100, Miquel Raynal wrote:
> 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

Other than my comment on patch 13, for the series:

Reviewed-by: Rob Herring <robh@kernel.org>