Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -43,6 +43,10 @@ Optional NAND chip properties:
		     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.
- 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.

The ECC strength and ECC step size properties define the correction capability
+3 −0
Original line number Diff line number Diff line
@@ -5859,6 +5859,9 @@ static int nand_dt_init(struct nand_chip *chip)
	if (of_get_nand_bus_width(dn) == 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))
		chip->bbt_options |= NAND_BBT_USE_FLASH;

+6 −0
Original line number Diff line number Diff line
@@ -219,6 +219,12 @@ enum nand_ecc_algo {
 */
#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 */
/* Nand scan has allocated controller struct */
#define NAND_CONTROLLER_ALLOC	0x80000000