STRUCT NAND_SUBOP(9)
π NAME π
Okay so this is the struct nand_subop(9) page from the Kernel API Manual, bestie. And struct nand_subop is literally a sub operation β like a tiny slice of a bigger NAND operation. No cap, itβs giving βsmall but importantβ energy.
β¨ SYNOPSIS β¨
struct nand_subop {
unsigned int cs;
const struct nand_op_instr *instrs;
unsigned int ninstrs;
unsigned int first_instr_start_off;
unsigned int last_instr_end_off;
};
π§ Members π§
csβ the CS line to select for this NAND sub-operation. Like, this is the line-picking field, periodt.instrsβ array of instructions. The whole lineup of stuff to do.ninstrsβ length of theinstrsarray. Yes bestie, itβs giving βhow many instructions are in this array.βfirst_instr_start_offβ offset to start from for the first instruction of the sub-operation. Lowkey the starting point.last_instr_end_offβ offset to end at (excluded) for the last instruction of the sub-operation. Important: excluded, okay? Donβt forget π
π Description π
Both first_instr_start_off and last_instr_end_off only apply to data or address instructions. Thatβs the rule, bestie.
The way this works: when an operation cannot be handled as is by the NAND controller, it will be split by the parser into sub-operations which will be passed to the controller driver. So the parser is basically doing a little choreography π©° β chopping the operation into manageable sub-operations and handing them off to the controller driver.
π SEE ALSO π
Kernel file: ./include/linux/mtd/rawnand.h
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)struct nand_nvddr_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_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)
Thatβs the whole page, bestie π«Ά β from the Kernel API Manual, source ./include/linux/mtd, dated October 2026. Go read your NAND specs and slay π
β¨
π¦ 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