nand_erase(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– nand_erase(9) β€” like, the Kernel API Manual, but make it make sense πŸŽ€

okay so bestie, welcome to nand_erase(9) from the Kernel API Manual β€” this is the MTD Interface moment, and it's honestly kind of a serve. let's get into it ✨


🌸 NAME 🌸

nand_erase β€” [MTD Interface] erase block(s). that's the whole vibe. it erases blocks. plural. slay.


✨ SYNOPSIS ✨

int nand_erase (struct mtd_info *mtd , struct erase_info *instr );

look at that signature. int return, two args, very demure, very mindful. 🫢


πŸ¦‹ ARGUMENTS πŸ¦‹

  • mtd β€” the MTD device structure. this is the actual flash device you're talking to, your main character. πŸ‘‘
  • instr β€” the erase instruction. the little note that says what to erase. it's giving "instructions unclear but make it structured." πŸ™ˆ

πŸ’œ DESCRIPTION πŸ’œ

Erase one ore more blocks. yes, the manpage literally says "ore." we don't fix it, we respect it. it's iconic. periodt. πŸ’…

so like, the entire job of this function is: erase a block, or multiple blocks, per the erase instruction you hand it. no cap. that's it, that's the function. πŸ”₯


🌈 SEE ALSO 🌈

first things first, the source file it lives in β€” Kernel file ./drivers/mtd/nand/raw/nand_base.c 🧚

and okay, buckle up bestie, because the friend group here is huge (iykyk):

nand_extract_bits(9), nand_select_target(9), nand_deselect_target(9), nand_release_device(9), nand_bbm_get_next_page(9), nand_block_bad(9), nand_region_is_secured(9), nand_get_device(9), nand_check_wp(9), nand_fill_oob(9), nand_do_write_oob(9), nand_default_block_markbad(9), nand_markbad_bbm(9), nand_block_markbad_lowlevel(9), nand_block_isreserved(9), nand_block_checkbad(9), nand_soft_waitrdy(9), nand_gpio_waitrdy(9), panic_nand_wait(9), nand_reset_interface(9), nand_setup_interface(9), nand_choose_best_sdr_timings(9), nand_choose_best_nvddr_timings(9), nand_choose_best_timings(9), nand_choose_interface_config(9), nand_fill_column_cycles(9), nand_read_page_op(9), nand_read_param_page_op(9), nand_change_read_column_op(9), nand_read_oob_op(9), nand_prog_page_begin_op(9), nand_prog_page_end_op(9), nand_prog_page_op(9), nand_change_write_column_op(9), nand_readid_op(9), nand_status_op(9), nand_exit_status_op(9), nand_erase_op(9), nand_set_features_op(9), nand_get_features_op(9), nand_reset_op(9), nand_read_data_op(9), nand_write_data_op(9)

and the parser crew, not me forgetting the struct one β€” struct nand_op_parser_ctx(9), nand_op_parser_must_split_instr(9), nand_op_parser_match_pat(9), nand_op_parser_exec_op(9), nand_subop_get_addr_start_off(9), nand_subop_get_num_addr_cyc(9), nand_subop_get_data_start_off(9), nand_subop_get_data_len(9)

features & reset girlies: nand_reset(9), nand_get_features(9), nand_set_features(9)

raw read squad (there's so many of them, they ate): nand_read_page_raw_notsupp(9), nand_read_page_raw(9), nand_monolithic_read_page_raw(9), nand_read_page_raw_syndrome(9), nand_read_page_swecc(9), nand_read_subpage(9), nand_read_page_hwecc(9), nand_read_page_hwecc_oob_first(9), nand_read_page_syndrome(9), nand_transfer_oob(9), nand_setup_read_retry(9), nand_do_read_ops(9), nand_read_oob_std(9), nand_read_oob_syndrome(9), nand_write_oob_std(9), nand_write_oob_syndrome(9), nand_do_read_oob(9), nand_read_oob(9)

raw write squad, equally unhinged: nand_write_page_raw_notsupp(9), nand_write_page_raw(9), nand_monolithic_write_page_raw(9), nand_write_page_raw_syndrome(9), nand_write_page_swecc(9), nand_write_page_hwecc(9), nand_write_subpage_hwecc(9), nand_write_page_syndrome(9), nand_write_page(9), nand_do_write_ops(9), panic_nand_write(9), nand_write_oob(9), nand_erase_nand(9), nand_sync(9), nand_block_isbad(9), nand_block_markbad(9), nand_suspend(9), nand_resume(9), nand_shutdown(9), nand_lock(9), nand_unlock(9)

and the init/scan besties at the end of the group chat: rawnand_dt_parse_gpio_cs(9), nand_scan_ident(9), nand_check_ecc_caps(9), nand_match_ecc_req(9), nand_maximize_ecc(9), nand_ecc_choose_conf(9), nand_scan_tail(9), nand_scan_with_ids(9), nand_cleanup(9) πŸ’–


lowkey important: the description up there is word for word what the manpage gives us. don't go reading extra behaviour into it β€” no invented lore, bestie, that's how you get cursed. πŸ™ˆ

and that's the page! πŸ¦‹ this one's from ./drivers/mtd/nand/raw, dated October 2026, and it's nand_erase(9) out of the Kernel API Manual β€” go erase some blocks responsibly, mwah πŸ’‹πŸ’…

πŸ“¦ where this page comes from