Lines Matching full:bad
4 * Bad block table support for the NAND driver
10 * When nand_scan_bbt is called, then it tries to find the bad block table
13 * marked good / bad blocks. This information is used to create a memory BBT.
14 * Once a new bad block is discovered then the "factory" information is updated
21 * If the tables are not versioned, then we "or" the bad block information.
24 * good / bad blocks and the bad block tables are created.
29 * The auto generated bad block table is located in the last good blocks
40 * 00b: block is factory marked bad
41 * 01b, 10b: block is marked bad due to wear
43 * The memory bad block table uses the following scheme:
45 * 01b: block is marked bad due to wear
47 * 11b: block is factory marked bad
49 * Multichip devices like DOC store the bad block info per floor.
104 * Check for a pattern at the given place. Used to search bad block tables and
105 * good / bad block identifiers.
124 * Check for a pattern at the given place. Used to search bad block tables and
125 * good / bad block identifiers. Same as check_pattern, but no optional empty
156 * read_bbt - [GENERIC] Read the bad block table starting from page
164 * Read the bad block table starting from page.
229 pr_info("nand_read_bbt: bad block at 0x%012llx\n", in read_bbt()
232 /* Factory marked bad or worn out? */ in read_bbt()
249 * read_abs_bbt - [GENERIC] Read the bad block table starting at a given page
252 * @td: descriptor for the bad block table
256 * Read the bad block table for all chips starting at a given page. We assume
380 * read_abs_bbts - [GENERIC] Read the bad block table(s) for all chips starting at a given page
383 * @td: descriptor for the bad block table
384 * @md: descriptor for the bad block table mirror
386 * Read the bad block table(s) for all chips starting at a given page. We
399 pr_info("Bad block table at page %d, version 0x%02X\n", in read_abs_bbts()
408 pr_info("Bad block table at page %d, version 0x%02X\n", in read_abs_bbts()
450 /* Check if a potential BBT block is marked as bad */
457 * No need to check for a bad BBT block if the BBM area overlaps with in bbt_block_checkbad()
458 * the bad block table marker area in OOB since writing a BBM here in bbt_block_checkbad()
459 * invalidates the bad block table marker anyway. in bbt_block_checkbad()
466 * There is no point in checking for a bad block marker if writing in bbt_block_checkbad()
480 * create_bbt - [GENERIC] Create a bad block table by scanning the device
483 * @bd: descriptor for the good/bad block search pattern
487 * Create a bad block table by scanning the device for the given good/bad block
498 pr_info("Scanning device for bad blocks\n"); in create_bbt()
527 pr_warn("Bad eraseblock %d at 0x%012llx\n", in create_bbt()
538 * search_bbt - [GENERIC] scan the device for a specific bad block table
541 * @td: descriptor for the bad block table
543 * Read the bad block table by searching for a given ident pattern. Search is
547 * the bad block information of this chip. This is necessary to provide support
591 /* Check if block is marked bad */ in search_bbt()
611 pr_warn("Bad block table not found for chip %d\n", i); in search_bbt()
613 pr_info("Bad block table found at page %d, version 0x%02X\n", in search_bbt()
620 * search_read_bbts - [GENERIC] scan the device for bad block table(s)
623 * @td: descriptor for the bad block table
624 * @md: descriptor for the bad block table mirror
626 * Search and read the bad block table(s).
649 * all blocks are already used of marked bad. If td->pages[chip] was already
673 * Automatic placement of the bad block table. Search direction in get_bbt_block()
687 /* Check, if the block is bad */ in get_bbt_block()
705 * mark_bbt_block_bad - Mark one of the block reserved for BBT bad
711 * Blocks reserved for BBT can become bad. This functions is an helper to mark
712 * such blocks as bad. It takes care of updating the in-memory BBT, marking the
713 * block as bad using a bad block marker and invalidating the associated
728 pr_warn("nand_bbt: error %d while marking block %d bad\n", in mark_bbt_block_bad()
735 * write_bbt - [GENERIC] (Re)write the bad block table
738 * @td: descriptor for the bad block table
739 * @md: descriptor for the bad block table mirror
742 * (Re)write the bad block table.
767 /* Write bad block table per chip rather than per device? */ in write_bbt()
788 pr_err("No space left to write bad block table\n"); in write_bbt()
828 pr_info("nand_bbt: error reading block for writing the bad block table\n"); in write_bbt()
831 pr_warn("nand_bbt: ECC error while reading block for writing bad block table\n"); in write_bbt()
909 pr_info("Bad block table written to 0x%012llx, version 0x%02X\n", in write_bbt()
918 pr_warn("nand_bbt: error while writing bad block table %d\n", res); in write_bbt()
923 * nand_memory_bbt - [GENERIC] create a memory based bad block table
925 * @bd: descriptor for the good/bad block search pattern
928 * manufacturer / software marked good / bad blocks.
942 * @bd: descriptor for the good/bad block search pattern
1003 /* Create the bad block table by scanning the device? */ in check_create()
1049 /* Write the bad block table to the device? */ in check_create()
1056 /* Write the mirror bad block table to the device? */ in check_create()
1067 * nand_update_bbt - update bad block table(s)
1071 * The function updates the bad block table(s).
1105 /* Write the bad block table to the device? */ in nand_update_bbt()
1111 /* Write the mirror bad block table to the device? */ in nand_update_bbt()
1122 * mark_bbt_region - [GENERIC] mark the bad block table regions
1124 * @td: bad block table descriptor
1126 * The bad block table regions are marked as "bad" to prevent accidental
1183 * verify_bbt_descr - verify the bad block description
1187 * This functions performs a few sanity checks on the bad block description
1232 * nand_scan_bbt - [NAND Interface] scan, find, read and maybe create bad block table(s)
1234 * @bd: descriptor for the good/bad block search pattern
1236 * The function checks, if a bad block table(s) is/are already available. If
1237 * not it scans the device for manufacturer marked good / bad blocks and writes
1238 * the bad block table(s) to the selected place.
1240 * The bad block table memory is allocated here. It must be freed by calling
1253 * Allocate memory (2bit per block) and clear the memory bad block in nand_scan_bbt()
1262 * memory based bad block table. in nand_scan_bbt()
1287 /* Search the bad block table using a pattern in oob */ in nand_scan_bbt()
1312 * Define some generic bad / good block scan pattern which are used
1313 * while scanning a device for factory marked good / bad blocks.
1375 pr_warn("Bad block pattern already allocated; not replacing\n"); in nand_create_badblock_pattern()
1391 * nand_create_bbt - [NAND Interface] Select a default bad block table for the device
1394 * This function selects the default bad block table support for the device and
1401 /* Is a flash based bad block table requested? */ in nand_create_bbt()
1442 * nand_isbad_bbt - [NAND Interface] Check if a block is bad
1445 * @allowbbt: allow access to bad block table region
1472 * nand_markbad_bbt - [NAND Interface] Mark a block bad in the BBT
1474 * @offs: offset of the bad block
1482 /* Mark bad block in memory */ in nand_markbad_bbt()
1485 /* Update flash-based bad block table */ in nand_markbad_bbt()