nand_monoli...ead_page_raw(9)
π nand_monolithic_read_page_raw β Kernel API Manual, section 9 β¨
okay so bestie, welcome to the manual page for nand_monolithic_read_page_raw, living its best life in section 9 of the Kernel API Manual. this one's a raw page read in the monolithic style and honestly it's giving "one big bus transaction, no notes." let's get into it π
πΈ NAME πΈ
nand_monolithic_read_page_raw β Monolithic page read in raw mode. that's it, that's the whole vibe. β¨
π¦ SYNOPSIS π¦
int nand_monolithic_read_page_raw (struct nand_chip *chip , u8 *buf ,
int oob_required , int page );
literally the whole signature, no cap. it returns an int. π
π ARGUMENTS π
chipβ the NAND chip info structure. it's the main character here, everything reads through it πbufβ the buffer where the read data goes to live. bestie this is where the bytes end up πoob_requiredβ the caller is saying "yeah I need the OOB data read intochip->oob_poi". so if it's set, the OOB gets pulled in too π«Άpageβ which page number you wanna read. the actual page. that one. π₯
π DESCRIPTION π
so this is a raw page read β meaning, and I cannot stress this enough, it does no error detection and no error correction. none. zero. it's raw in the most literal sense, so don't come crying to it about bit flips, it's not that kind of function π
and "monolithic"? that means we're asking for all the relevant data in one go β the main data plus, eventually, the OOB β to be loaded into the NAND cache and then sent over the bus (so: from the NAND chip to the NAND controller) in a single operation. one shot. one trip. iconic behavior π
this is the alternative to nand_read_page_raw, which does it the other way: it first reads the main data, and if the OOB data is requested too, then it reads more data on the bus. so like, two trips instead of one. nand_read_page_raw is fine but this one's the efficient queen π
β SEE ALSO β
okay this list is LONG, like genuinely, so buckle up bestie β it all lives in the Kernel file ./drivers/mtd/nand/raw/nand_base.c and here's every single one:
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_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_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 I said. long. but we don't skip, we don't summarize, we list every single one ππ«Ά
quick vibe check before you go: raw = no ECC, no error detection, no guardrails. if you wanted the safety net, that's a different function, bestie. π
π§ sign-off π§
so that's the whole page! source path is ./drivers/mtd/nand/raw, and the version stamp on this one is October 2026 β it's giving vintage, it's giving kernel doc royalty π. anyway mwah, go read some NAND pages, and remember: monolithic means one trip, one transaction, one slay. periodt. πβ¨π
π¦ 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