u-boot/drivers/mtd
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
..
nand mtd: nand: mxs_nand_spl: Fix bad block skipping 2022-05-20 12:36:47 +02:00
onenand doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
spi sf: dataflash: add support for AT45DB641E 2022-05-03 17:57:19 +05:30
ubi mtd: Remove mtd_erase_callback() entirely 2021-10-23 15:47:33 +05:30
ubispl drivers/mtd/ubispl/ubispl.c: Fix spelling of "mismatched". 2022-01-13 07:57:49 -05:00
altera_qspi.c mtd: Remove mtd_erase_callback() entirely 2021-10-23 15:47:33 +05:30
cfi_flash.c mtd: cfi: change CONFIG_SYS_MAX_FLASH_BANKS_DETECT as boolean 2022-01-21 14:01:35 -05:00
cfi_mtd.c mtd: cfi_mtd: populate mtd->dev with flash_info->dev 2022-02-01 10:56:25 +01:00
hbmc-am654.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
jedec_flash.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
Kconfig Convert CONFIG_MTD_CONCAT to Kconfig 2022-05-11 09:22:24 -04:00
Makefile mtd: remove SPEAr flash driver st_smi 2021-09-24 12:09:47 -04:00
mtd-uclass.c dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
mtd_uboot.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mtdconcat.c mtd: Remove mtd_erase_callback() entirely 2021-10-23 15:47:33 +05:30
mtdcore.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mtdcore.h mtd: move definitions to enlarge their range 2018-09-20 20:10:49 +05:30
mtdpart.c mtd: Update the way partitions are parsed 2022-04-11 11:39:19 -04:00
pic32_flash.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
renesas_rpc_hf.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
stm32_flash.c common: Drop flash.h from common header 2020-05-18 14:53:28 -04:00
stm32_flash.h stm32: stm32f4: move flash driver to mtd driver location 2016-03-26 18:49:28 -04:00