nand_read_oob_op(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… nand_read_oob_op(9) β€” from the Kernel API Manual, bestie ✨

okay so picture this: you're deep in the raw NAND guts of the kernel (./drivers/mtd/nand/raw, if we're being specific πŸŽ€) and you just need to peek at the out-of-band area of a page. That's this function. That's literally her whole job. Main character energy, zero drama. πŸ¦‹


✨ NAME ✨

nand_read_oob_op β€” bestie, she does a READ OOB operation. That's it. That's the vibe. πŸ’–


🌸 SYNOPSIS 🌸

int nand_read_oob_op (struct nand_chip *chip , unsigned int page ,
unsigned int offset_in_oob , void *buf , unsigned int len );

like, look at her signature. so clean. so iconic. πŸ‘‘


πŸŽ€ ARGUMENTS πŸŽ€

  • chip β€” the NAND chip in question 🫢 (yes, THE chip, the one you've been thinking about)
  • page β€” the page you want to read, bestie
  • offset_in_oob β€” where you're starting, but inside the OOB area specifically. very demure, very mindful about boundaries πŸ’…
  • buf β€” the buffer where the data gets stashed πŸ“
  • len β€” how long that buffer is. the length. the amount. you get it πŸ’€

✨ DESCRIPTION ✨

so this function issues a READ OOB operation. that's the whole thing, no cap.

⚠️ but hear me on this one: this function does not select/unselect the CS line. not her department. you gotta handle that yourself with nand_select_target(9) / nand_deselect_target(9), iykyk. don't come for her when the CS line is doing whatever it wants. πŸ™ˆ

Returns 0 on success, and a negative error code otherwise. that's the vibe check β€” non-negative means slay, negative means something went sideways. 😭


πŸ”₯ SEE ALSO πŸ”₯

okay this list is LOWKEY enormous and I'm obsessed with it, so buckle up and let's go through every single one, no skipping, periodt:

Kernel file ./drivers/mtd/nand/raw/nand_base.c, 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_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_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... she knows everybody. the whole NAND friend group. πŸŒˆπŸ’œ


and that's the page, bestie ✨🫢 this little gem lives in ./drivers/mtd/nand/raw, dated October 2026 β€” go read the source, she ate. πŸ’…πŸŽ€

πŸ“¦ where this page comes from