mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
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@nxp.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
66 lines
1.7 KiB
YAML
66 lines
1.7 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/mtd/nand-controller-legacy.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: NAND Controller Common Properties
|
|
|
|
maintainers:
|
|
- Miquel Raynal <miquel.raynal@bootlin.com>
|
|
- Richard Weinberger <richard@nod.at>
|
|
|
|
description: >
|
|
The NAND controller should be represented with its own DT node, and
|
|
all NAND chips attached to this controller should be defined as
|
|
children nodes of the NAND controller. This representation should be
|
|
enforced even for simple controllers supporting only one chip.
|
|
|
|
This is only for legacy nand controller, new controller should use
|
|
nand-controller.yaml
|
|
|
|
properties:
|
|
|
|
"#address-cells":
|
|
const: 1
|
|
|
|
"#size-cells":
|
|
enum: [0, 1]
|
|
|
|
ranges: true
|
|
|
|
cs-gpios:
|
|
description:
|
|
Array of chip-select available to the controller. The first
|
|
entries are a 1:1 mapping of the available chip-select on the
|
|
NAND controller (even if they are not used). As many additional
|
|
chip-select as needed may follow and should be phandles of GPIO
|
|
lines. 'reg' entries of the NAND chip subnodes become indexes of
|
|
this array when this property is present.
|
|
minItems: 1
|
|
maxItems: 8
|
|
|
|
partitions:
|
|
type: object
|
|
|
|
required:
|
|
- compatible
|
|
|
|
patternProperties:
|
|
"^nand@[a-f0-9]$":
|
|
type: object
|
|
$ref: raw-nand-chip.yaml#
|
|
|
|
"^partition@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/mtd/partitions/partition.yaml#/$defs/partition-node
|
|
deprecated: true
|
|
|
|
allOf:
|
|
- $ref: raw-nand-property.yaml#
|
|
- $ref: nand-property.yaml#
|
|
|
|
# This is a generic file other binding inherit from and extend
|
|
additionalProperties: true
|
|
|