STRUCT NAND_NVDDR_TIMINGS(9)
π struct nand_nvddr_timings β NV-DDR NAND chip timings π
okay bestie, welcome to the Kernel API Manual β¨ this is the page for struct nand_nvddr_timings(9), and no cap it's lowkey just a big ol' bag of timing numbers for talking to NV-DDR NAND chips. buckle up π¦
πΈ NAME πΈ
struct nand_nvddr_timings β the timing requirements of an NV-DDR NAND chip π«Ά
β¨ SYNOPSIS β¨
here's the whole struct, verbatim, don't touch a single character bestie:
struct nand_nvddr_timings {
u64 tBERS_max;
u32 tCCS_min;
u64 tPROG_max;
u64 tR_max;
u32 tAC_min;
u32 tAC_max;
u32 tADL_min;
u32 tCAD_min;
u32 tCAH_min;
u32 tCALH_min;
u32 tCALS_min;
u32 tCAS_min;
u32 tCEH_min;
u32 tCH_min;
u32 tCK_min;
u32 tCS_min;
u32 tDH_min;
u32 tDQSCK_min;
u32 tDQSCK_max;
u32 tDQSD_min;
u32 tDQSD_max;
u32 tDQSHZ_max;
u32 tDQSQ_max;
u32 tDS_min;
u32 tDSC_min;
u32 tFEAT_max;
u32 tITC_max;
u32 tQHS_max;
u32 tRHW_min;
u32 tRR_min;
u32 tRST_max;
u32 tWB_max;
u32 tWHR_min;
u32 tWRCK_min;
u32 tWW_min;
};
π Members π
thirty-five fields, and every single one is a whole vibe. let's go π
tBERS_maxβ block erase time β³tCCS_minβ change column setup timetPROG_maxβ page program timetR_maxβ page read time πtAC_minβ access window ofDQ[7:0]fromCLKtAC_maxβ access window ofDQ[7:0]fromCLK(yes, same words as its partner, the datasheet said what it said π« )tADL_minβALEto data loading timetCAD_minβ command, address, data delaytCAH_minβ command/addressDQhold timetCALH_minβW/R_n,CLEandALEhold timetCALS_minβW/R_n,CLEandALEsetup timetCAS_minβ command/addressDQsetup timetCEH_minβCE#high hold timetCH_minβCE#hold timetCK_minβ average clock cycle time β°tCS_minβCE#setup timetDH_minβ data hold timetDQSCK_minβ start of the access window ofDQSfromCLKtDQSCK_maxβ end of the access window ofDQSfromCLKtDQSD_minβ minW/R_nlow toDQS/DQdriven by devicetDQSD_maxβ maxW/R_nlow toDQS/DQdriven by devicetDQSHZ_maxβW/R_nhigh toDQS/DQtri-state by device π¦tDQSQ_maxβDQS-DQskew,DQSto lastDQvalid, per accesstDS_minβ data setup timetDSC_minβDQScycle timetFEAT_maxβ busy time for Set Features and Get FeaturestITC_maxβ interface and timing mode change time πtQHS_maxβ data hold skew factortRHW_minβ data output cycle to command, address, or data input cycletRR_minβ ready toRE#low (data only)tRST_maxβ device reset time, measured from the falling edge ofR/B#to the rising edge ofR/B#. πtWB_maxβWE#high toSR[6]lowtWHR_minβWE#high toRE#lowtWRCK_minβW/R_nlow to data output cycletWW_minβWP#transition toWE#low
π¦ Description π¦
so like, this struct defines the timing requirements of a NV-DDR NAND data interface. that's it, that's the whole job π«‘
where do the numbers come from? every NAND datasheet has them, and the timings' meanings are described in the ONFI specifications β right here:
https://media-www.micron.com/-/media/client/onfi/specs/onfi_4_1_gold.pdf
specifically chapter 4.18.2 NV-DDR π (iykyk)
important bestie note: all these timings are expressed in picoseconds. tiny numbers for tiny time, iconic π
π SEE ALSO π
the whole friend group π«Ά go read the kernel file ./include/linux/mtd/rawnand.h and then all of these:
struct nand_parameters(9), struct nand_id(9), struct nand_ecc_step_info(9), struct nand_ecc_caps(9), struct nand_ecc_ctrl(9), struct nand_sdr_timings(9), enum nand_interface_type(9), struct nand_interface_config(9), nand_interface_is_sdr(9), nand_interface_is_nvddr(9), nand_get_sdr_timings(9), nand_get_nvddr_timings(9), struct nand_op_cmd_instr(9), struct nand_op_addr_instr(9), struct nand_op_data_instr(9), struct nand_op_waitrdy_instr(9), enum nand_op_instr_type(9), struct nand_op_instr(9), struct nand_subop(9), struct nand_op_parser_addr_constraints(9), struct nand_op_parser_data_constraints(9), struct nand_op_parser_pattern_elem(9), struct nand_op_parser_pattern(9), struct nand_op_parser(9), struct nand_operation(9), struct nand_controller_ops(9), struct nand_controller(9), struct nand_legacy(9), struct nand_chip_ops(9), struct nand_manufacturer(9), struct nand_secure_region(9), struct nand_chip(9), nand_get_interface_config(9), struct nand_flash_dev(9), nand_opcode_8bits(9), nand_get_data_buf(9)
and that's the page!! π this lil masterpiece lives at ./include/linux/mtd and it's from the Kernel API Manual, dated October 2026 β like, future vibes fr fr β mwah, go read your datasheets bestie, ily ππ§
π¦ 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