Re: [PATCH v3 1/3] dt-bindings: mtd: refactor NAND bindings and add nand-controller-legacy.yaml

From: Rob Herring (Arm)

Date: Tue Mar 24 2026 - 21:10:45 EST



On Tue, 24 Mar 2026 18:16:18 -0400, Frank Li wrote:
> The modern NAND controller binding requires NAND chips to be described as
> child nodes of the controller, for example:
>
> nand-controller {
> ...
> nand@0 {
> /* raw NAND chip properties */
> };
> };
>
> However, many existing device trees place NAND chip properties directly
> within the controller node because those controllers support only a single
> chip. This layout is still widely used by older platforms and by other DT
> consumers such as U-Boot. Migrating all existing users to the new layout
> will take time.
>
> Several kernel drivers, such as ams-delta.c, davinci_nand.c and
> fsmc_nand.c, still expect the legacy layout where raw NAND properties are
> defined in the controller node.
>
> To support both layouts during the transition:
>
> - Extract NAND chip-related properties into separate schemas
> (nand-property.yaml and raw-nand-property.yaml) from
> nand-chip.yaml and raw-nand-chip.yaml.
> - Introduce nand-controller-legacy.yaml to allow both the
> legacy and modern layouts.
> - Add a select condition in nand-controller.yaml to prevent
> node name pattern matching for fsl,* NAND controllers.
>
> Keep compatibility with existing device trees while allowing gradual
> migration to the modern binding structure.
>
> Signed-off-by: Frank Li <Frank.Li@xxxxxxx>
> ---
> change in v3
> - use select: false
> - s/under/within/
> - s/property/properties/
>
> two problem left:
> 1. about "^nand@[a-f0-9]$" in nand-controller-legacy.yaml
>
> allow dts to do mirgeration from legacy layout to modern layouts for different
> boards, which use the same compatible string.
>
> 2. ref to mtd.yaml
>
> mtd.yaml force node name as flash@, nand@ ..., but here is parent node
> name is nand-controller@. Only two properties, duplicate these should be
> simple and clean enough now.
>
> change in v2
> - none
>
> change dts layout break boot
> https://lore.kernel.org/imx/177281063848.253518.12995342124719933118.b4-ty@xxxxxxx/T/#t
> ---
> .../devicetree/bindings/mtd/nand-chip.yaml | 46 +-----------
> ...oller.yaml => nand-controller-legacy.yaml} | 46 +++++-------
> .../bindings/mtd/nand-controller.yaml | 2 +
> .../{nand-chip.yaml => nand-property.yaml} | 14 +---
> .../bindings/mtd/raw-nand-chip.yaml | 74 +------------------
> ...-nand-chip.yaml => raw-nand-property.yaml} | 15 +---
> 6 files changed, 27 insertions(+), 170 deletions(-)
> copy Documentation/devicetree/bindings/mtd/{nand-controller.yaml => nand-controller-legacy.yaml} (69%)
> copy Documentation/devicetree/bindings/mtd/{nand-chip.yaml => nand-property.yaml} (89%)
> copy Documentation/devicetree/bindings/mtd/{raw-nand-chip.yaml => raw-nand-property.yaml} (94%)
>

Reviewed-by: Rob Herring (Arm) <robh@xxxxxxxxxx>