nand_write_page_hwecc(9)
π nand_write_page_hwecc β a Kernel API Manual moment
okay so bestie, welcome to nand_write_page_hwecc(9) β and yes that (9) is giving "section 9 of the manual, kernel API edition" β¨. This is the [REPLACEABLE] hardware ECC based page write function, which is a whole mouthful but basically: it's the page-write girly that comes with hardware ECC doing the heavy lifting. iconic behavior, no cap. π
π NAME π
nand_write_page_hwecc β [REPLACEABLE] hardware ECC based page write function π«
β¨ SYNOPSIS β¨
int nand_write_page_hwecc (struct nand_chip *chip , const uint8_t *buf ,
int oob_required , int page );
that's the whole signature, don't touch my spacing, she's perfect the way she is π«Ά
πΈ ARGUMENTS πΈ
okay so let's meet the cast, because every one of these matters, fr fr:
chipβ the nand chip info structure π like, the whole personality of the chip lives in here.bufβ the data buffer π your actual bytes, living their life.oob_requiredβ must writechip->oob_poito OOB π so when this is set, the OOB area is getting thechip->oob_poicontent, periodt. no skipping.pageβ page number to write π literally which page we're committing to. main character page energy.
π SEE ALSO π
okay this list is LONG long, like a group chat that never sleeps, but every single one of these is invited to the party and i'm not leaving anyone out π. Kernel file ./drivers/mtd/nand/raw/nand_base.c is the source of truth, btw:
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),
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), nand_reset(9), nand_get_features(9), nand_set_features(9), 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),
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_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(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), 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)
and that's the whole page, bestie π¦ no hidden sections, no jump scares. go forth and write your pages with hardware ECC energy π₯
ngl, the "[REPLACEABLE]" in the NAME is doing a lot of work β it's literally in the original title, so it stays. iykyk π
sign-off time π this little beauty lives in ./drivers/mtd/nand/raw, it's the Kernel API Manual, and it's dated October 2026 β tysm for reading, mwah ππ§
π¦ 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