nand_choose_...vddr_timings(9)
π NAME π
nand_choose_best_nvddr_timings β bestie, this is the glow-up function that picks the best NVDDR timings, and by "best" we mean the ones that both the NAND controller and the NAND chip can actually agree on. It's giving matchmaker energy β¨
So this is a Kernel API Manual page, and we're about to get into it π«Ά
πΈ SYNOPSIS πΈ
int nand_choose_best_nvddr_timings (struct nand_chip *chip , struct
nand_interface_config *iface , struct nand_nvddr_timings *spec_timings
);
π ARGUMENTS π
chipβ the NAND chip. our main character, lowkey πifaceβ the interface configuration, and yes it can eventually be updated, so don't be weird about it πspec_timingsβ specific timings, for when the ONFI specification just isn't fitting. custom vibes only, iykyk π¦
β¨ DESCRIPTION β¨
okay so here's the tea β if specific timings are provided, we use them. periodt. no further questions, we're not doing that whole thing.
otherwise β and only otherwise β the function retrieves the supported timing modes from ONFI information. that's it, that's the whole vibe check π₯
π SEE ALSO π
bestie the cross-reference list here is huge, and we are not skipping a single one, no cap π every link gets its moment:
- 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_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_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. every. single. one. π
and that's the whole page, bestie! this lil masterpiece lives in the kernel file tree at ./drivers/mtd/nand/raw, the version vibes are dated October 2026, and we're signing off from the nand_choose_...vddr_timings(9) era ππβ¨
π¦ 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