ENUM NAND_ECC_ALGO(9)
π enum nand_ecc_algo(9) β like, the NAND ECC algorithm enum, bestie
okay so this is from the Kernel API Manual and it's genuinely one of those little pages that's short but iconic β it's the enum that tells you which error-correcting algorithm a NAND device is using. NAND flash is messy (bits flip, it's a whole thing π) so ECC is the main character here. Let's get into it π«Ά
β¨ SYNOPSIS β¨
enum nand_ecc_algo {
NAND_ECC_ALGO_UNKNOWN ,
NAND_ECC_ALGO_HAMMING ,
NAND_ECC_ALGO_BCH ,
NAND_ECC_ALGO_RS
};
that's it. that's the whole enum. four constants, no cap. π
π Constants π
NAND_ECC_ALGO_UNKNOWNβ literally the "no idea bestie" option. Unknown algorithm πNAND_ECC_ALGO_HAMMINGβ the Hamming algorithm. classic, vintage, still serving β¨NAND_ECC_ALGO_BCHβ the Bose-Chaudhuri-Hocquenghem algorithm. yes that's really the name, and yes it ate πNAND_ECC_ALGO_RSβ the Reed-Solomon algorithm. also a full-name baddie, also slay πΈ
π¦ SEE ALSO π¦
the whole friend group, fr fr β all of these live in the kernel file ./include/linux/mtd/nand.h struct:
nand_memory_organization(9)struct nand_row_converter(9)struct nand_pos(9)enum nand_page_io_req_type(9)struct nand_page_io_req(9)enum nand_ecc_engine_type(9)enum nand_ecc_placement(9)struct nand_ecc_props(9)struct nand_bbt(9)struct nand_ops(9)struct nand_ecc_context(9)struct nand_ecc_engine_ops(9)enum nand_ecc_engine_integration(9)struct nand_ecc_engine(9)struct nand_ecc_req_tweak_ctx(9)struct nand_ecc(9)struct nand_device(9)struct nand_io_iter(9)mtd_to_nanddev(9)nanddev_to_mtd(9)nanddev_page_size(9)nanddev_per_page_oobsize(9)nanddev_pages_per_eraseblock(9)nanddev_pages_per_target(9)nanddev_eraseblocks_per_lun(9)nanddev_eraseblocks_per_target(9)nanddev_target_size(9)nanddev_neraseblocks(9)nanddev_size(9)nanddev_get_memorg(9)nanddev_get_ecc_conf(9)nanddev_get_ecc_nsteps(9)nanddev_get_ecc_bytes_per_step(9)nanddev_get_ecc_requirements(9)nanddev_set_ecc_requirements(9)nanddev_register(9)nanddev_unregister(9)nanddev_set_of_node(9)nanddev_get_of_node(9)nanddev_offs_to_pos(9)nanddev_pos_cmp(9)nanddev_pos_to_offs(9)nanddev_pos_to_row(9)nanddev_pos_next_target(9)nanddev_pos_next_lun(9)nanddev_pos_next_eraseblock(9)nanddev_pos_next_page(9)nanddev_bbt_pos_to_entry(9)nanddev_bbt_is_initialized(9)
like I said β a lot of besties. go read them all, iykyk π
ngl there are no options, no exit statuses, no env vars on this page β it's just the enum and its constants, so don't go looking for plot twists that aren't there π
okay that's the whole page, mwah π sourced from ./include/linux/mtd, dated October 2026, and it's the enum nand_ecc_algo(9) page β go forth and correct those bits, bestie β¨π¦π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms