Commit f922bd79 authored by Stefan Agner's avatar Stefan Agner Committed by Miquel Raynal

mtd: rawnand: add an option to specify NAND chip as a boot device

Allow to define a NAND chip as a boot device. This can be helpful
for the selection of the ECC algorithm and strength in case the boot
ROM supports only a subset of controller provided options.
Signed-off-by: default avatarStefan Agner <stefan@agner.ch>
Reviewed-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
Acked-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
parent f308d735
...@@ -43,6 +43,10 @@ Optional NAND chip properties: ...@@ -43,6 +43,10 @@ Optional NAND chip properties:
This is particularly useful when only the in-band area is This is particularly useful when only the in-band area is
used by the upper layers, and you want to make your NAND used by the upper layers, and you want to make your NAND
as reliable as possible. as reliable as possible.
- nand-is-boot-medium: Whether the NAND chip is a boot medium. Drivers might use
this information to select ECC algorithms supported by
the boot ROM or similar restrictions.
- nand-rb: shall contain the native Ready/Busy ids. - nand-rb: shall contain the native Ready/Busy ids.
The ECC strength and ECC step size properties define the correction capability The ECC strength and ECC step size properties define the correction capability
......
...@@ -5859,6 +5859,9 @@ static int nand_dt_init(struct nand_chip *chip) ...@@ -5859,6 +5859,9 @@ static int nand_dt_init(struct nand_chip *chip)
if (of_get_nand_bus_width(dn) == 16) if (of_get_nand_bus_width(dn) == 16)
chip->options |= NAND_BUSWIDTH_16; chip->options |= NAND_BUSWIDTH_16;
if (of_property_read_bool(dn, "nand-is-boot-medium"))
chip->options |= NAND_IS_BOOT_MEDIUM;
if (of_get_nand_on_flash_bbt(dn)) if (of_get_nand_on_flash_bbt(dn))
chip->bbt_options |= NAND_BBT_USE_FLASH; chip->bbt_options |= NAND_BBT_USE_FLASH;
......
...@@ -219,6 +219,12 @@ enum nand_ecc_algo { ...@@ -219,6 +219,12 @@ enum nand_ecc_algo {
*/ */
#define NAND_WAIT_TCCS 0x00200000 #define NAND_WAIT_TCCS 0x00200000
/*
* Whether the NAND chip is a boot medium. Drivers might use this information
* to select ECC algorithms supported by the boot ROM or similar restrictions.
*/
#define NAND_IS_BOOT_MEDIUM 0x00400000
/* Options set by nand scan */ /* Options set by nand scan */
/* Nand scan has allocated controller struct */ /* Nand scan has allocated controller struct */
#define NAND_CONTROLLER_ALLOC 0x80000000 #define NAND_CONTROLLER_ALLOC 0x80000000
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment