nand_write_page_hwecc(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 write chip->oob_poi to OOB πŸ‘‘ so when this is set, the OOB area is getting the chip->oob_poi content, 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