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>
65 lines
2.0 KiB
YAML
65 lines
2.0 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/mtd/nand-property.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: NAND Chip Common Properties
|
|
|
|
maintainers:
|
|
- Miquel Raynal <miquel.raynal@bootlin.com>
|
|
|
|
description: |
|
|
This file covers the generic properties of a NAND chip. It implies that the
|
|
bus interface should not be taken into account: both raw NAND devices and
|
|
SPI-NAND devices are concerned by this description.
|
|
|
|
properties:
|
|
nand-ecc-engine:
|
|
description: |
|
|
A phandle on the hardware ECC engine if any. There are
|
|
basically three possibilities:
|
|
1/ The ECC engine is part of the NAND controller, in this
|
|
case the phandle should reference the parent node.
|
|
2/ The ECC engine is part of the NAND part (on-die), in this
|
|
case the phandle should reference the node itself.
|
|
3/ The ECC engine is external, in this case the phandle should
|
|
reference the specific ECC engine node.
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
|
|
nand-use-soft-ecc-engine:
|
|
description: Use a software ECC engine.
|
|
type: boolean
|
|
|
|
nand-no-ecc-engine:
|
|
description: Do not use any ECC correction.
|
|
type: boolean
|
|
|
|
nand-ecc-algo:
|
|
description:
|
|
Desired ECC algorithm.
|
|
$ref: /schemas/types.yaml#/definitions/string
|
|
enum: [hamming, bch, rs]
|
|
|
|
nand-ecc-strength:
|
|
description:
|
|
Maximum number of bits that can be corrected per ECC step.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
minimum: 1
|
|
|
|
nand-ecc-step-size:
|
|
description:
|
|
Number of data bytes covered by a single ECC step.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
minimum: 1
|
|
|
|
secure-regions:
|
|
description:
|
|
Regions in the NAND chip which are protected using a secure element
|
|
like Trustzone. This property contains the start address and size of
|
|
the secure regions present.
|
|
$ref: /schemas/types.yaml#/definitions/uint64-matrix
|
|
|
|
# This file can be referenced by more specific devices (like spi-nands)
|
|
additionalProperties: true
|