nand_write_page_swecc(9)
π nand_write_page_swecc(9) π
okay so this one lives in the Kernel API Manual (that's the manual name, bestie, we're in kernel-land now) and it's literally the function that writes a whole page of NAND using software ECC. Software. As in, your CPU is doing the ECC math with its bare hands. Respect the grind. β¨
πΈ NAME πΈ
nand_write_page_swecc β the [REPLACEABLE] software ECC based page write function. yeah, the brackets are part of the name, don't come for me. it's a replaceable hook, meaning the NAND core can swap it out for whatever function actually fits your chip. very main character of it, honestly.
π SYNOPSIS π
int nand_write_page_swecc (struct nand_chip *chip , const uint8_t *buf ,
int oob_required , int page );
four args, returns an int, no cap that's the whole vibe check.
π¦ ARGUMENTS π¦
chipβ the nand chip info structure. like, the whole personality file for your chip. everything it knows about itself lives in here π«Άbufβ data buffer. this is the actual payload, the data you wanna send off into flash. handle with care, bestie.oob_requiredβ must writechip->oob_poito OOB. so if this one's set, the out-of-band area is gettingchip->oob_poiwritten into it, periodt. not optional, not vibes-based. πpageβ page number to write. which page, out of all the pages. that's it. that's the arg.
π SEE ALSO π
before you go, the squad. all of these are literally in the kernel file ./drivers/mtd/nand/raw/nand_base.c, so go say hi:
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_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(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).
like, that's the whole group chat. go read them, iykyk ππ₯
ngl bestie, it's a [REPLACEABLE] function β so if you're writing a driver, this is the default software-ECC page writer you can swap out. it's giving "starter pack, but make it kernel". π
and that's the page!! π brought to you by the fine folks over at ./drivers/mtd/nand/raw, dated October 2026 β mwah, love that for us, see you in the next man page, 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