nand_read_page_syndrome(9)
π nand_read_page_syndrome(9) π
okay so bestie, we're in the Kernel API Manual today and this page is literally about nand_read_page_syndrome β one of those [REPLACEABLE] hero functions. it's giving "hardware does the math so you don't have to" energy and i'm obsessed. let's get into it π«Ά
πΈ NAME πΈ
nand_read_page_syndrome β a [REPLACEABLE] hardware ECC syndrome based page read. yeah. that's the whole vibe. π¦
β¨ SYNOPSIS β¨
int nand_read_page_syndrome (struct nand_chip *chip , uint8_t *buf , int
oob_required , int page );
like, copy it exactly, don't @ me β the spacing is part of the look π
π ARGUMENTS π
chipβ the nand chip info structure, aka the whole personality file for your flash chip πbufβ the buffer where the read data goes. it's the little home for your bytes πoob_requiredβ when the caller is like "bestie i NEED the OOB data", this gets the OOB read intochip->oob_poiπpageβ the page number you wanna read. which page? this page. periodt π
π₯ DESCRIPTION π₯
okay so the hw generator literally calculates the error syndrome automatically. no cap. the hardware is the main character here and it ate π β¨
and because the hardware is doing all that, we need a special oob layout and handling. like, you can't just use the regular oob setup, the syndrome situation needs its own lil arrangement. iykyk π§
π SEE ALSO π
the kernel file is at ./drivers/mtd/nand/raw/nand_base.c and honestly the whole friend group is here:
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_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_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)
and that's the whole squad ππ every single one, no skips, we don't do skipping here π
lowkey a reminder bestie: this whole thing lives under ./drivers/mtd/nand/raw, and the page is stamped October 2026 β so like, future vibes but make it kernel. don't lose the receipt π§Ύβ¨
stay slay, read those pages, and may your syndrome always be hardware-generated πππ¦βπ
π¦ 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