STRUCT NAND_CONTROLLER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

struct nand_controller β€” okay bestie, this is the structure used to describe a NAND controller, straight from the Kernel API Manual (struct nand_controller(9), hiii πŸ‘‹). It’s giving β€œone struct to describe the controller” energy, and yes, we are going through every single member.

✨ SYNOPSIS ✨

Here’s the exact shape β€” no cap, character for character:

       struct nand_controller {
           struct mutex lock;
           const struct nand_controller_ops *ops;
           struct {
             unsigned int data_only_read: 1;
             unsigned int cont_read: 1;
           } supported_op;
           bool controller_wp;
        };

πŸŽ€ Members πŸŽ€

  • lock β€” the lock used to serialize accesses to the NAND controller. One at a time, bestie; no chaotic parallel-access energy πŸ’…
  • ops β€” the NAND controller operations. Yep, the ops. Iconic.
  • supported_op β€” the NAND controller known-to-be-supported operations; this one is only writable by the core after initial checking. No random writes, okay? 🫢
    • supported_op.data_only_read β€” the controller supports reading more data from the bus without restarting an entire read operation nor changing the column. That’s the whole mood ✨
    • supported_op.cont_read β€” the controller supports sequential cache reads. Cute and sequential, we love that.
  • controller_wp β€” the controller is in charge of handling the WP pin. Main character energy for that pin πŸ‘‘

πŸ’œ SEE ALSO πŸ’œ

Kernel file ./include/linux/mtd/rawnand.h β€” these are the related refs, all preserved exactly because we do not erase the receipts:

  • 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_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_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)

okay that’s the whole page, bestie 🫢 the footer source/version is ./include/linux/mtd, and the date on it is October 2026. Go off and slay, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from