| /Linux-v5.4/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.4/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 | 130  * @cache: in memory BBT cache 166  * @bbt: bad block table info 184 	struct nand_bbt bbt;  member 711 /* BBT related functions */ 731  * nanddev_bbt_pos_to_entry() - Convert a NAND position into a BBT entry 733  * @pos: the NAND position we want to get BBT entry for 735  * Return the BBT entry used to store information about the eraseblock pointed 738  * Return: the BBT entry storing information about eraseblock pointed by @pos. 749  * nanddev_bbt_is_initialized() - Check if the BBT has been initialized 752  * Return: true if the BBT has been initialized, false otherwise. [all …] 
 | 
| /Linux-v5.4/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 | 526 	bool "Allow BBT writes on DiskOnChip Millennium and 2000TSOP" 531 	  device for the Bad Block Table (BBT).  If you have existing INFTL 534 	  the BBT.  If this is a concern for you, leave this option disabled and 535 	  Linux will not write BBT data into this area. 537 	  are detected by Linux, they will not be recorded in the BBT, which 543 	  Even if you leave this disabled, you can enable BBT writes at module
  | 
| /Linux-v5.4/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.4/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.4/Documentation/devicetree/bindings/mtd/ | 
| D | gpmi-nand.txt | 30   - nand-on-flash-bbt: boolean to enable on flash bbt option if not 42                        flash based BBT for identifying bad blocks. 44                              'nand-on-flash-bbt'.
  | 
| 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 | ingenic,jz4780-nand.txt | 32 - nand-on-flash-bbt: boolean to enable on flash bbt option, if not present false 59 			nand-on-flash-bbt;
  | 
| D | brcm,brcmnand.txt | 109 - nand-on-flash-bbt         : boolean, to enable the on-flash BBT for this 143 		nand-on-flash-bbt; 180 		nand-on-flash-bbt;
  | 
| D | nand-controller.yaml | 74       nand-on-flash-bbt: 78           Block Table (BBT). If not found, it will create one, reserve 83           build a volatile BBT in RAM.
  | 
| D | samsung-s3c2410.txt | 18 - nand-on-flash-bbt : see nand-controller.yaml 38 		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 | stm32-fmc2-nand.txt | 27 - nand-on-flash-bbt: see nand-controller.yaml 57 			nand-on-flash-bbt;
  | 
| D | vf610-nfc.txt | 35 - nand-on-flash-bbt: see nand-controller.yaml 57 			nand-on-flash-bbt;
  | 
| D | nvidia-tegra20-nand.txt | 30 - nand-on-flash-bbt: See nand-controller.yaml 59 			nand-on-flash-bbt;
  | 
| D | mtk-nand.txt | 48 - nand-on-flash-bbt:	Store BBT on NAND Flash. 126 			nand-on-flash-bbt;
  |