/linux/drivers/mtd/nand/ |
H A 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 …]
|
/linux/include/linux/mtd/ |
H A 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 …]
|
/linux/drivers/mtd/nand/raw/ |
H A 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 …]
|
/linux/drivers/mtd/tests/ |
H A 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 …]
|
H A 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()
|
H A D | mtd_test.c | 42 int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt, in mtdtest_scan_for_bad_eraseblocks() argument 52 bbt[i] = is_block_bad(mtd, eb + i) ? 1 : 0; in mtdtest_scan_for_bad_eraseblocks() 53 if (bbt[i]) in mtdtest_scan_for_bad_eraseblocks() 63 int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt, in mtdtest_erase_good_eraseblocks() argument 70 if (bbt[i]) in mtdtest_erase_good_eraseblocks()
|
H A 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()
|
H A 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/drivers/mtd/nand/onenand/ |
H A 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/Documentation/devicetree/bindings/mtd/ |
H A D | raw-nand-chip.yaml | 59 nand-on-flash-bbt: 62 Block Table (BBT). If not found, it will create one, reserve 67 build a volatile BBT in RAM.
|
H A D | lpc32xx-slc.txt | 6 - nand-on-flash-bbt: Use bad block table on flash 41 nand-on-flash-bbt;
|
H A D | atmel-nand.txt | 149 - nand-on-flash-bbt: boolean to enable on flash bbt option if not present false 171 nand-on-flash-bbt; 194 nand-on-flash-bbt;
|
H A D | nvidia-tegra20-nand.txt | 30 - nand-on-flash-bbt: See nand-controller.yaml 59 nand-on-flash-bbt;
|
/linux/arch/arm/boot/dts/marvell/ |
H A D | armada-370-dlink-dns327l.dts | 266 nand-on-flash-bbt; 315 label = "bbt"; 316 /* 1 MiB for BBT */
|
H A D | armada-385-atl-x530.dts | 220 nand-on-flash-bbt; 241 label = "nand-bbt";
|
H A D | armada-370-netgear-rn102.dts | 236 nand-on-flash-bbt; 269 /* Last MB is for the BBT, i.e. not writable */
|
/linux/Documentation/driver-api/ |
H A D | mtdnand.rst | 930 /* The number of bits used per block in the bbt on the device */ 938 /* The bbt is at the given page, else we must scan for the bbt */ 940 /* bbt is stored per chip on multichip devices */ 942 /* bbt has a version counter at offset veroffs */ 944 /* Create a bbt if none axists */ 946 /* Write bbt if necessary */ 948 /* Read and write back block contents when writing bbt */
|
/linux/arch/mips/boot/dts/brcm/ |
H A D | bcm97xxx-nand-cs1-bch24.dtsi | 6 nand-on-flash-bbt;
|
H A D | bcm97xxx-nand-cs1-bch4.dtsi | 6 nand-on-flash-bbt;
|
/linux/arch/arm64/boot/dts/broadcom/bcmbca/ |
H A D | bcm94908.dts | 41 nand-on-flash-bbt;
|
H A D | bcm96813.dts | 42 nand-on-flash-bbt;
|
H A D | bcm963146.dts | 42 nand-on-flash-bbt;
|
/linux/arch/arm/boot/dts/broadcom/ |
H A D | bcm96756.dts | 42 nand-on-flash-bbt;
|
H A D | bcm963178.dts | 42 nand-on-flash-bbt;
|
H A D | bcm947622.dts | 42 nand-on-flash-bbt;
|