STRUCT DEV_PM_OPP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

okay so bestie, this is struct dev_pm_opp(9) from the Kernel API Manual, and it’s literally the Generic OPP description structure. We’re doing the whole tour, every member, no skips. ✨

✨ SYNOPSIS ✨

Here’s the whole struct, exactly as it ships β€” yes, even the #ifdef bits. Peep it:

       struct dev_pm_opp {
           struct list_head node;
           struct kref kref;
           bool available;
           bool dynamic;
           bool turbo;
           bool suspend;
           bool removed;
           unsigned long *rates;
           unsigned int level;
           struct dev_pm_opp_supply *supplies;
           struct dev_pm_opp_icc_bw *bandwidth;
           unsigned long clock_latency_ns;
           struct dev_pm_opp **required_opps;
           struct opp_table *opp_table;
           struct device_node *np;
         #ifdef CONFIG_DEBUG_FS;
           struct dentry *dentry;
           const char *of_name;
         #endif;
        };

πŸ’… Members πŸ’…

  • node β€” opp table node. The nodes are maintained throughout the lifetime of boot. It is expected only an optimal set of OPPs are added to the library by the SoC framework. IMPORTANT: the opp nodes should be maintained in increasing order. Like, sorted, bestie β€” do not mess with that. πŸ‘‘
  • kref β€” for reference count of the OPP.
  • available β€” true/false β€” marks if this OPP as available or not.
  • dynamic β€” not-created from static DT entries.
  • turbo β€” true if turbo (boost) OPP.
  • suspend β€” true if suspend OPP.
  • removed β€” flag indicating that OPP’s reference is dropped by OPP core.
  • rates β€” Frequencies in hertz.
  • level β€” Performance level.
  • supplies β€” Power supplies voltage/current values.
  • bandwidth β€” Interconnect bandwidth values.
  • clock_latency_ns β€” Latency (in nanoseconds) of switching to this OPP’s frequency from any other OPP’s frequency.
  • required_opps β€” List of OPPs that are required by this OPP.
  • opp_table β€” points back to the opp_table struct this opp belongs to.
  • np β€” OPP’s device node.
  • dentry β€” debugfs dentry pointer (per opp).

tiny note, bestie: inside the struct, dentry and of_name are both in the CONFIG_DEBUG_FS block. The original member list only gives dentry its own blurb, so I’m not inventing extra lore for of_name β€” it’s still right there in the code above. 🫢

πŸ’– Description πŸ’–

This structure stores the OPP information for a given device. That’s the whole vibe: it’s the place where a given device’s OPP info lives. πŸ’Ύ

🌈 SEE ALSO 🌈

Kernel file ./drivers/opp/opp.h and these struct besties: struct opp_config_data(9), struct dev_pm_opp_icc_bw(9), struct opp_device(9), struct opp_table(9). Go read them, iykyk. πŸ¦‹


And that’s the page! source/version: ./drivers/opp; date: October 2026; header: struct dev_pm_opp(9). Bye bestie, slay your OPPs. πŸ’–πŸŽ€

πŸ“¦ where this page comes from