71 lines
2.5 KiB
Plaintext
71 lines
2.5 KiB
Plaintext
|
* NAND chip and NAND controller generic binding
|
||
|
|
||
|
NAND controller/NAND chip representation:
|
||
|
|
||
|
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.
|
||
|
|
||
|
Mandatory NAND controller properties:
|
||
|
- #address-cells: depends on your controller. Should at least be 1 to
|
||
|
encode the CS line id.
|
||
|
- #size-cells: depends on your controller. Put zero unless you need a
|
||
|
mapping between CS lines and dedicated memory regions
|
||
|
|
||
|
Optional NAND controller properties
|
||
|
- ranges: only needed if you need to define a mapping between CS lines and
|
||
|
memory regions
|
||
|
|
||
|
Optional NAND chip properties:
|
||
|
|
||
|
- nand-ecc-mode : String, operation mode of the NAND ecc mode.
|
||
|
Supported values are: "none", "soft", "hw", "hw_syndrome",
|
||
|
"hw_oob_first", "on-die".
|
||
|
Deprecated values:
|
||
|
"soft_bch": use "soft" and nand-ecc-algo instead
|
||
|
- nand-ecc-algo: string, algorithm of NAND ECC.
|
||
|
Supported values are: "hamming", "bch".
|
||
|
- nand-bus-width : 8 or 16 bus width if not present 8
|
||
|
- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false
|
||
|
|
||
|
- nand-ecc-strength: integer representing the number of bits to correct
|
||
|
per ECC step.
|
||
|
|
||
|
- nand-ecc-step-size: integer representing the number of data bytes
|
||
|
that are covered by a single ECC step.
|
||
|
|
||
|
- nand-ecc-maximize: boolean used to specify that you want to maximize ECC
|
||
|
strength. The maximum ECC strength is both controller and
|
||
|
chip dependent. The controller side has to select the ECC
|
||
|
config providing the best strength and taking the OOB area
|
||
|
size constraint into account.
|
||
|
This is particularly useful when only the in-band area is
|
||
|
used by the upper layers, and you want to make your NAND
|
||
|
as reliable as possible.
|
||
|
|
||
|
The ECC strength and ECC step size properties define the correction capability
|
||
|
of a controller. Together, they say a controller can correct "{strength} bit
|
||
|
errors per {size} bytes".
|
||
|
|
||
|
The interpretation of these parameters is implementation-defined, so not all
|
||
|
implementations must support all possible combinations. However, implementations
|
||
|
are encouraged to further specify the value(s) they support.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
nand-controller {
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
|
||
|
/* controller specific properties */
|
||
|
|
||
|
nand@0 {
|
||
|
reg = <0>;
|
||
|
nand-ecc-mode = "soft";
|
||
|
nand-ecc-algo = "bch";
|
||
|
|
||
|
/* controller specific properties */
|
||
|
};
|
||
|
};
|