STRUCT DPLL_PIN(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct dpll_pin(9) πŸ’…

okay so bestie, welcome to the Kernel API Manual β€” yes, the actual kernel API manual, and yes, we're about to read a struct definition together and it's gonna be iconic πŸŽ€


✨ NAME ✨

struct dpll_pin β€” the structure for a dpll pin. that's it, that's the whole vibe. it's a struct. it pins. it dplls. slay πŸ’…


🌸 SYNOPSIS 🌸

here's the whole shape of her, no cap, every field exactly as it lives:

struct dpll_pin {
    u32 id;
    u32 pin_idx;
    u64 clock_id;
    struct module *module;
    char module_name[MODULE_NAME_LEN];
    struct fwnode_handle *fwnode;
    struct xarray dpll_refs;
    struct xarray parent_refs;
    struct xarray ref_sync_pins;
    struct dpll_pin_properties prop;
    refcount_t refcount;
    struct ref_tracker_dir refcnt_tracker;
    struct rcu_head rcu;
 };

look at her. main character energy fr fr πŸ¦‹


πŸ‘‘ Members πŸ‘‘

okay so let's go field by field, because every single one of these matters and we are NOT skipping any:

  • id β€” the unique id number for the pin, handed to it by the dpll subsystem itself. this is her government name ✨
  • pin_idx β€” the index of a pin, and this one's given by the dev driver. so like, the driver's nickname for her 🫢
  • clock_id β€” the clock_id of the creator. iykyk ⭐
  • module β€” the module of the creator. who made her? this pointer knows πŸ’–
  • module_name β€” the module name of the creator, chillin' in a char array sized MODULE_NAME_LEN. her full legal name on paper πŸŽ€
  • fwnode β€” an optional reference to the firmware node. optional!! she doesn't always need it, and that's fine, we love a flexible queen 🌈
  • dpll_refs β€” holds references to the dplls that this pin was registered with. keeping track of her people πŸ’œ
  • parent_refs β€” holds references to the parent pins that this pin was registered with. family tree, but make it kernel πŸ”₯
  • ref_sync_pins β€” holds references to pins for the Reference SYNC feature. yes, capital-S SYNC, that's the feature name, respect it πŸ’…
  • prop β€” the pin properties, copied straight from the registerer. so it's a struct dpll_pin_properties and it's literally a copy, not a link 🌸
  • refcount β€” the refcount. a refcount_t. that's the whole description and honestly? sometimes that's enough 😭
  • refcnt_tracker β€” the ref_tracker directory for debugging reference leaks. a whole directory dedicated to catching leaky behaviour. she's in therapy and it's working πŸ’€
  • rcu β€” the rcu_head for kfree_rcu. this is how she goes out β€” gracefully, via RCU. iconic exit 🧚

πŸ¦‹ SEE ALSO πŸ¦‹

go read the kernel file ./drivers/dpll/dpll_core.h, plus her besties struct dpll_device(9) and struct dpll_pin_ref(9). group chat, basically πŸ’–


bestie reminder: when you're poking at these fields, remember fwnode is optional and prop is a copy β€” pls don't go treating them like something they're not, i'm begging πŸ™ˆ

okay that's the whole page!! sourced from ./drivers/dpll, dated October 2026 β€” go off, read the header file, and stan a well-documented struct for me. mwah πŸ’‹βœ¨πŸ“

πŸ“¦ where this page comes from