nand_op_parser_exec_op(9)
β¨ nand_op_parser_exec_op(9) β¨
okay bestie, welcome to the Kernel API Manual πΈ this one's about nand_op_parser_exec_op and honestly it's giving "the middle-manager of NAND operations" and I mean that with love π
π NAME π
nand_op_parser_exec_op β the exec_op parser, aka the girl who reads the patterns and makes the split happen β¨
π¦ SYNOPSIS π¦
int nand_op_parser_exec_op (struct nand_chip *chip , const struct
nand_op_parser *parser , const struct nand_operation *op , bool
check_only );
π ARGUMENTS π
chipβ the NAND chip, the main character of this whole situation πparserβ the patterns description, handed to you by the controller driver π«Άopβ the NAND operation we're trying to address, like the actual task on the group chat πcheck_onlyβ whentrue, the function only checks ifopcan be handled but does not execute the operation. so it's a vibe check, not a full send π
π DESCRIPTION π
okay so this is a helper function, and its whole personality is "ease integration of NAND controller drivers that only support a limited set of instruction sequences" π the supported sequences are described in parser, and the framework takes care of splitting op into multiple sub-operations (if required) and passes them back to the ->exec callback of the matching pattern β but only if check_only is set to false. like, if you said check only, she's not gonna execute anything, respect the boundary π
NAND controller drivers should call this function from their own ->exec_op implementation. that's the assignment, no cap π
Returns 0 on success, a negative error code otherwise π₯ and a failure can be caused by an unsupported operation (none of the supported patterns is able to handle the requested operation), or an error returned by one of the matching pattern->exec hook. so basically two ways to not slay π
π§ SEE ALSO π§
Kernel file ./drivers/mtd/nand/raw/nand_base.c β and here's the full squad, every single one, because we don't leave anyone out of the group chat π
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_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)
that's the whole page bestie, every last crumb π this came from ./drivers/mtd/nand/raw, dated October 2026 β so go forth, call it from your ->exec_op, and remember: check first, execute later π
β¨π
π¦ 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