u-boot/drivers/mtd/nand/raw
Michael Trimarchi a222c14792 mtd: nand: mxs_nand_spl: Fix bad block skipping
The specific implementation was having bug. Those bugs are since
the beginning of the implementation. Some manufactures can already
experience this bug in their SPL code. This bug can be more visible on
architecture that has complicated boot process like imx8mn. Older
version of uboot can be affected if the bad block
appear in correspoding of the beginning of u-boot image. In order to
adjust the function we scan from the first erase block.

The problematic part of old code was in this part:

while (is_badblock(mtd, offs, 1)) {
           page = page + nand_page_per_block;
          /* Check i we've reached the end of flash. */
          if (page >= mtd->size >> chip->page_shift) {
                      free(page_buf);
                      return -ENOMEM;
         }
}

Even we fix it adding increment of the offset of one erase block size
, we don't fix the problem, because the first erase block where the
image start is not checked. The code was tested on an imx8mn where
the boot rom api was not able to skip it. This code is used by other
architecures like imx6 and imx8mm

Cc: Han Xu <han.xu@nxp.com>
Cc: Fabio Estevam <festevam@gmail.com>
Acked-by: Han Xu <han.xu@nxp.com>
Tested-By: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
2022-05-20 12:36:47 +02:00
..
brcmnand nand: brcmnand: add bcm6753 support 2022-03-07 11:36:12 -05:00
am335x_spl_bch.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
arasan_nfc.c dm: Rename DM_GET_DRIVER() to DM_DRIVER_GET() 2021-01-05 12:26:35 -07:00
atmel_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
atmel_nand_ecc.h mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
cortina_nand.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
cortina_nand.h mtd: rawnand: cortina_nand: Add Cortina CAxxxx SoC support 2021-01-18 15:14:34 -05:00
davinci_nand.c Finish conversion CONFIG_SYS_NAND_SELF_INIT to Kconfig 2021-12-27 16:20:18 -05:00
denali.c mtd: nand: raw: convert nand_dt_init() to ofnode_xx() interface 2021-09-28 06:34:45 +02:00
denali.h mtd: nand: raw: denali: Wait for reset completion status 2020-07-11 21:30:21 +09:00
denali_dt.c dm: Rename DM_GET_DRIVER() to DM_DRIVER_GET() 2021-01-05 12:26:35 -07:00
denali_spl.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
fsl_elbc_nand.c mtd: rawnand: fsl_elbc: Use ECC configuration from device tree 2022-04-26 17:18:39 +05:30
fsl_elbc_spl.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
fsl_ifc_nand.c mtd: rawnand: fsl_ifc: fix FSL NAND driver to read all ONFI parameter pages 2021-03-23 18:06:07 +05:30
fsl_ifc_spl.c common: Drop part.h from common header 2020-05-18 17:33:33 -04:00
fsl_upm.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
fsmc_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
kb9202_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
Kconfig mtd: rawnand: fsl_elbc: Add device tree support 2022-04-26 17:18:39 +05:30
kirkwood_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
kmeter1_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
lpc32xx_nand_mlc.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
lpc32xx_nand_slc.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
Makefile mtd: rawnand: Add Macronix raw NAND controller driver 2021-10-12 16:48:38 -04:00
mxc_nand.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
mxc_nand.h arm: Remove zmx25 board and ARCH_MX25 2021-10-01 21:08:18 -04:00
mxc_nand_spl.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
mxic_nand.c mtd: rawnand: Add Macronix raw NAND controller driver 2021-10-12 16:48:38 -04:00
mxs_nand.c nand: raw: mxs_nand: Fix specific hook registration 2022-05-20 12:36:47 +02:00
mxs_nand_dt.c mtd: gpmi: fix the bch setting backward compatible issue 2022-03-28 08:22:17 -04:00
mxs_nand_spl.c mtd: nand: mxs_nand_spl: Fix bad block skipping 2022-05-20 12:36:47 +02:00
nand.c Finish conversion CONFIG_SYS_NAND_SELF_INIT to Kconfig 2021-12-27 16:20:18 -05:00
nand_base.c mtd: nand: raw: Add support for DT property nand-ecc-algo=bch 2022-04-26 17:18:39 +05:30
nand_bbt.c common: Drop linux/bug.h from common header 2020-05-18 21:19:23 -04:00
nand_bch.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
nand_ecc.c mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
nand_ids.c WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
nand_plat.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
nand_spl_load.c mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
nand_spl_loaders.c spl: fit: nand: fix fit loading in case of bad blocks 2020-07-08 17:21:46 -04:00
nand_spl_simple.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
nand_timings.c dm: core: Require users of devres to include the header 2020-02-05 19:33:46 -07:00
nand_util.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
octeontx_bch.c pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
octeontx_bch.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
octeontx_bch_regs.h mtd: nand: Add NAND controller driver for OcteonTX 2020-10-14 07:55:56 +02:00
octeontx_nand.c pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
omap_elm.c mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
omap_gpmc.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
pxa3xx_nand.c mtd: nand: pxa3xx: set mtd->dev 2022-01-17 14:45:24 -05:00
pxa3xx_nand.h mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
rockchip_nfc.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
stm32_fmc2_nand.c mtd: rawnand: stm32_fmc2: add NAND Write Protect support 2022-03-15 09:10:52 +01:00
sunxi_nand.c mtd: nand: raw: convert nand_dt_init() to ofnode_xx() interface 2021-09-28 06:34:45 +02:00
sunxi_nand_spl.c nand.h: Cleanup linux/mtd/rawnand.h usage 2021-10-06 09:16:23 -04:00
tegra_nand.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
tegra_nand.h mtd: move NAND files into a raw/ subdirectory 2018-09-20 20:10:49 +05:30
vf610_nfc.c nand: vf610_nfc: Do not abuse CONFIG namespace 2021-08-30 14:10:08 -04:00
zynq_nand.c mtd: nand: Update driver to match new DT binding 2022-03-07 08:52:20 +01:00