/Linux-v5.10/drivers/mtd/nand/ |
D | bbt.c | 10 #define pr_fmt(fmt) "nand-bbt: " fmt 16 * nanddev_bbt_init() - Initialize the BBT (Bad Block Table) 19 * Initialize the in-memory BBT. 30 nand->bbt.cache = kcalloc(nwords, sizeof(*nand->bbt.cache), in nanddev_bbt_init() 32 if (!nand->bbt.cache) in nanddev_bbt_init() 40 * nanddev_bbt_cleanup() - Cleanup the BBT (Bad Block Table) 47 kfree(nand->bbt.cache); in nanddev_bbt_cleanup() 52 * nanddev_bbt_update() - Update a BBT 55 * Update the BBT. Currently a NOP function since on-flash bbt is not yet 69 * @entry: the BBT entry [all …]
|
/Linux-v5.10/include/linux/mtd/ |
D | bbm.h | 4 * - Bad Block Table (BBT) implementation 21 * @pages: the page(s) where we find the bbt, used with option BBT_ABSPAGE 22 * when bbt is searched, then we store the found bbts pages here. 25 * @veroffs: offset of the bbt version counter in the oob are of the page 26 * @version: version read from the bbt page during scan 28 * @maxblocks: maximum number of blocks to search for a bbt. This number of 32 * bad) block in the stored bbt 55 /* The number of bits used per block in the bbt on the device */ 63 /* The bbt is at the given page, else we must scan for the bbt */ 65 /* bbt is stored per chip on multichip devices */ [all …]
|
D | nand.h | 203 * @cache: in memory BBT cache 306 * @bbt: bad block table info 324 struct nand_bbt bbt; member 887 /* BBT related functions */ 907 * nanddev_bbt_pos_to_entry() - Convert a NAND position into a BBT entry 909 * @pos: the NAND position we want to get BBT entry for 911 * Return the BBT entry used to store information about the eraseblock pointed 914 * Return: the BBT entry storing information about eraseblock pointed by @pos. 925 * nanddev_bbt_is_initialized() - Check if the BBT has been initialized 928 * Return: true if the BBT has been initialized, false otherwise. [all …]
|
/Linux-v5.10/drivers/mtd/nand/raw/ |
D | nand_bbt.c | 11 * depending on the options in the BBT descriptor(s). If no flash based BBT 13 * marked good / bad blocks. This information is used to create a memory BBT. 16 * If a flash based BBT is specified then the function first tries to find the 17 * BBT on flash. If a BBT is found then the contents are read and the memory 18 * based BBT is created. If a mirrored BBT is selected then the mirror is 20 * version number, then the mirror BBT is used to build the memory based BBT. 23 * If no BBT exists at all then the device is scanned for factory marked 27 * the BBT is searched and read but never created 46 * 10b: block is reserved (to protect the bbt area) 53 * - the space necessary for a bbt in FLASH does not exceed a block boundary [all …]
|
D | Kconfig | 538 bool "Allow BBT writes on DiskOnChip Millennium and 2000TSOP" 543 device for the Bad Block Table (BBT). If you have existing INFTL 546 the BBT. If this is a concern for you, leave this option disabled and 547 Linux will not write BBT data into this area. 549 are detected by Linux, they will not be recorded in the BBT, which 555 Even if you leave this disabled, you can enable BBT writes at module
|
/Linux-v5.10/drivers/mtd/tests/ |
D | speedtest.c | 35 static unsigned char *bbt; variable 229 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_speedtest_init() 230 if (!bbt) in mtd_speedtest_init() 232 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_speedtest_init() 236 if (!bbt[i]) in mtd_speedtest_init() 240 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_speedtest_init() 248 if (bbt[i]) in mtd_speedtest_init() 266 if (bbt[i]) in mtd_speedtest_init() 280 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_speedtest_init() 288 if (bbt[i]) in mtd_speedtest_init() [all …]
|
D | pagetest.c | 32 static unsigned char *bbt; variable 58 for (i = 0; i < ebcnt && bbt[i]; ++i) in verify_eraseblock() 62 for (i = 0; i < ebcnt && bbt[ebcnt - i - 1]; ++i) in verify_eraseblock() 85 if (addr <= addrn - pgsize - pgsize && !bbt[ebnum + 1]) { in verify_eraseblock() 126 for (i = 0; i < ebcnt && bbt[i]; ++i) in crosstest() 130 for (i = 0; i < ebcnt && bbt[ebcnt - i - 1]; ++i) in crosstest() 198 for (i = 0; i < ebcnt && bbt[i]; ++i) { in erasecrosstest() 204 while (ebnum2 && bbt[ebnum2]) in erasecrosstest() 276 for (i = 0; i < ebcnt && bbt[i]; ++i) { in erasetest() 372 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_pagetest_init() [all …]
|
D | mtd_test.c | 41 int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt, in mtdtest_scan_for_bad_eraseblocks() argument 51 bbt[i] = is_block_bad(mtd, eb + i) ? 1 : 0; in mtdtest_scan_for_bad_eraseblocks() 52 if (bbt[i]) in mtdtest_scan_for_bad_eraseblocks() 61 int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt, in mtdtest_erase_good_eraseblocks() argument 68 if (bbt[i]) in mtdtest_erase_good_eraseblocks()
|
D | subpagetest.c | 29 static unsigned char *bbt; variable 252 if (bbt[i]) in verify_all_eraseblocks_ff() 317 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_subpagetest_init() 318 if (!bbt) in mtd_subpagetest_init() 321 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_subpagetest_init() 325 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_subpagetest_init() 332 if (bbt[i]) in mtd_subpagetest_init() 349 if (bbt[i]) in mtd_subpagetest_init() 363 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_subpagetest_init() 375 if (bbt[i]) in mtd_subpagetest_init() [all …]
|
D | stresstest.c | 35 static unsigned char *bbt; variable 51 if (bbt[eb]) in rand_eb() 81 if (bbt[eb + 1]) { in do_read() 106 if (bbt[eb + 1]) in do_write() 197 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_stresstest_init() 198 if (!bbt) in mtd_stresstest_init() 200 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_stresstest_init() 221 kfree(bbt); in mtd_stresstest_init()
|
D | oobtest.c | 34 static unsigned char *bbt; variable 96 if (bbt[i]) in write_whole_device() 320 if (bbt[i]) in verify_all_eraseblocks() 385 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_oobtest_init() 386 if (!bbt) in mtd_oobtest_init() 389 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_oobtest_init() 401 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_oobtest_init() 421 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_oobtest_init() 434 if (bbt[i]) in mtd_oobtest_init() 454 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_oobtest_init() [all …]
|
D | readtest.c | 29 static unsigned char *bbt; variable 161 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_readtest_init() 162 if (!bbt) in mtd_readtest_init() 164 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_readtest_init() 173 if (bbt[i]) in mtd_readtest_init() 198 kfree(bbt); in mtd_readtest_init()
|
D | mtd_test.h | 17 int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt, 19 int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
|
/Linux-v5.10/drivers/mtd/nand/onenand/ |
D | onenand_bbt.c | 11 * Split BBT core and chip specific BBT. 103 bbm->bbt[i >> 3] |= 0x03 << (i & 0x6); in create_bbt() 128 * The function creates a memory based bbt by scanning the device 153 res = (bbm->bbt[block >> 3] >> (block & 0x06)) & 0x03; in onenand_isbad_bbt() 155 pr_debug("onenand_isbad_bbt: bbt info for offs 0x%08x: (block %d) 0x%02x\n", in onenand_isbad_bbt() 189 bbm->bbt = kzalloc(len, GFP_KERNEL); in onenand_scan_bbt() 190 if (!bbm->bbt) in onenand_scan_bbt() 201 printk(KERN_ERR "onenand_scan_bbt: Can't scan flash and build the RAM-based BBT\n"); in onenand_scan_bbt() 202 kfree(bbm->bbt); in onenand_scan_bbt() 203 bbm->bbt = NULL; in onenand_scan_bbt()
|
/Linux-v5.10/Documentation/devicetree/bindings/mtd/ |
D | davinci-nand.txt | 52 - nand-on-flash-bbt: use flash based bad block table support. OOB 66 - ti,davinci-nand-use-bbt: use flash based bad block table support. OOB 88 nand-on-flash-bbt;
|
D | samsung-s3c2410.txt | 18 - nand-on-flash-bbt : see nand-controller.yaml 38 nand-on-flash-bbt;
|
D | brcm,brcmnand.txt | 111 - nand-on-flash-bbt : boolean, to enable the on-flash BBT for this 145 nand-on-flash-bbt; 182 nand-on-flash-bbt;
|
D | lpc32xx-slc.txt | 6 - nand-on-flash-bbt: Use bad block table on flash 41 nand-on-flash-bbt;
|
D | nvidia-tegra20-nand.txt | 30 - nand-on-flash-bbt: See nand-controller.yaml 59 nand-on-flash-bbt;
|
D | vf610-nfc.txt | 35 - nand-on-flash-bbt: see nand-controller.yaml 57 nand-on-flash-bbt;
|
D | mtk-nand.txt | 48 - nand-on-flash-bbt: Store BBT on NAND Flash. 126 nand-on-flash-bbt;
|
D | nand-controller.yaml | 102 nand-on-flash-bbt: 106 Block Table (BBT). If not found, it will create one, reserve 111 build a volatile BBT in RAM.
|
D | atmel-nand.txt | 159 - nand-on-flash-bbt: boolean to enable on flash bbt option if not present false 181 nand-on-flash-bbt; 204 nand-on-flash-bbt;
|
D | gpmi-nand.yaml | 91 the data area but rely on the flash based BBT for identifying bad blocks. 92 NOTE: this is only valid in conjunction with 'nand-on-flash-bbt'.
|
/Linux-v5.10/arch/arm/boot/dts/ |
D | armada-370-dlink-dns327l.dts | 275 nand-on-flash-bbt; 324 label = "bbt"; 325 /* 1 MiB for BBT */
|