nand_choose_...rface_config(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

nand_choose_interface_config β€” find the best data interface and timings ✨

okay so real quick, bestie: this page lives in the Kernel API Manual, and the star of the show is nand_choose_interface_config. it's giving "matchmaker, but for NAND timings." πŸŽ€


🌸 SYNOPSIS 🌸

int nand_choose_interface_config (struct nand_chip *chip );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • chip β€” the NAND chip. yeah. that one. your fave. πŸ’–

✨ DESCRIPTION ✨

so what does it actually do, you ask? it goes and finds the best data interface and NAND timings that are supported by both the chip and the driver. like, it's out here doing compatibility math so you don't have to. 🧚

and then β€” plot twist β€” it eventually lets the NAND manufacturer driver propose its own set of timings. so the driver gets a say too. main character energy from everyone involved, honestly.

after this function runs, nand_chip->interface_config is initialized with the best timing mode available. cute, clean, done. πŸ‘‘

and the return value? 0 for success, or a negative error code otherwise. classic. no cap.

lowkey important: this is nand_choose_interface_config, the function. the header up top got clipped to nand_choose_...rface_config(9) in the man page title, so if you were squinting at that thinking "is that a typo??" β€” nope, it's just the long name doing its thing. iykyk πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

first up, the source of truth itself, the kernel file ./drivers/mtd/nand/raw/nand_base.c. go read it, it's iconic:

then, the whole extended family β€” every single one of these, fr fr:

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_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_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. the whole family. πŸ’€πŸ’–


and that's the whole page, bestie β€” nothing skipped, nothing dropped, every (9) accounted for. 🫢

source: ./drivers/mtd/nand/raw Β· dated: October 2026 β€” mwah, go touch some NAND, ily πŸ’…βœ¨πŸŒΈ

πŸ“¦ where this page comes from