nand_write_page_swecc(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 write chip->oob_poi to OOB. so if this one's set, the out-of-band area is getting chip->oob_poi written 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