| /kernel/linux/linux-5.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 …]
|
| /kernel/linux/linux-6.6/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. 28 nand->bbt.cache = bitmap_zalloc(nblocks * bits_per_block, GFP_KERNEL); in nanddev_bbt_init() 29 if (!nand->bbt.cache) in nanddev_bbt_init() 37 * nanddev_bbt_cleanup() - Cleanup the BBT (Bad Block Table) 44 bitmap_free(nand->bbt.cache); in nanddev_bbt_cleanup() 49 * nanddev_bbt_update() - Update a BBT 52 * Update the BBT. Currently a NOP function since on-flash bbt is not yet 66 * @entry: the BBT entry [all …]
|
| /kernel/linux/linux-5.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 …]
|
| /kernel/linux/linux-6.6/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 …]
|
| /kernel/linux/linux-6.6/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 …]
|
| /kernel/linux/linux-5.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 …]
|
| /kernel/linux/linux-6.6/drivers/mtd/tests/ |
| D | speedtest.c | 35 static unsigned char *bbt; variable 228 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_speedtest_init() 229 if (!bbt) in mtd_speedtest_init() 231 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_speedtest_init() 235 if (!bbt[i]) in mtd_speedtest_init() 239 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_speedtest_init() 247 if (bbt[i]) in mtd_speedtest_init() 265 if (bbt[i]) in mtd_speedtest_init() 279 err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_speedtest_init() 287 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 | stresstest.c | 35 static unsigned char *bbt; variable 50 if (bbt[eb]) in rand_eb() 72 if (bbt[eb + 1]) { in do_read() 97 if (bbt[eb + 1]) in do_write() 188 bbt = kzalloc(ebcnt, GFP_KERNEL); in mtd_stresstest_init() 189 if (!bbt) in mtd_stresstest_init() 191 err = mtdtest_scan_for_bad_eraseblocks(mtd, bbt, 0, ebcnt); in mtd_stresstest_init() 212 kfree(bbt); in mtd_stresstest_init()
|
| 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 | 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,
|
| /kernel/linux/linux-5.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()
|
| /kernel/linux/linux-6.6/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()
|
| /kernel/linux/linux-5.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()
|
| /kernel/linux/linux-6.6/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;
|
| /kernel/linux/linux-5.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;
|