STRUCT OPP_TABLE(9)
π struct opp_table(9) π
π NAME π
struct opp_table β Device opp structure. Okay bestie, this is the Kernel API Manual page for struct opp_table(9) β yes, the manual name is folded in right here because weβre cute. π
β¨ SYNOPSIS β¨
struct opp_table {
struct list_head node, lazy;
struct blocking_notifier_head head;
struct list_head dev_list;
struct list_head opp_list;
struct kref kref;
struct mutex lock;
struct device_node *np;
unsigned long clock_latency_ns_max;
unsigned int voltage_tolerance_v1;
unsigned int parsed_static_opps;
enum opp_table_access shared_opp;
unsigned long current_rate_single_clk;
struct dev_pm_opp *current_opp;
struct dev_pm_opp *suspend_opp;
struct opp_table **required_opp_tables;
struct device **required_devs;
unsigned int required_opp_count;
unsigned int *supported_hw;
unsigned int supported_hw_count;
const char *prop_name;
config_clks_t config_clks;
struct clk **clks;
struct clk *clk;
int clk_count;
config_regulators_t config_regulators;
struct regulator **regulators;
int regulator_count;
struct icc_path **paths;
unsigned int path_count;
bool enabled;
bool is_genpd;
#ifdef CONFIG_DEBUG_FS;
struct dentry *dentry;
char dentry_name[NAME_MAX];
#endif;
};
π¦ Members π¦
nodeβ the table node, and it contains the devices with OPPs that have been registered. Once nodes are added, they are not modified in this table. Slay, stable data. π«Άheadβ notifier head to notify the OPP availability changes. Itβs giving βping the group chat when availability shifts.β β¨dev_listβ list of devices that share these OPPs. Besties sharing the same OPP table, iconic. πopp_listβ table of opps. Literally the OPP lineup. πkrefβ for reference count of the table. Gotta keep track of whoβs still holding on. πlockβ mutex protecting theopp_listanddev_list. No chaotic edits, periodt. πnpβstruct device_nodepointer for oppβs DT node. Tree data, but make it pointer. π³clock_latency_ns_maxβ Max clock latency in nanoseconds. Tiny numbers, big vibes. β±οΈvoltage_tolerance_v1β In percentage, for v1 bindings only. Vintage binding energy. πparsed_static_oppsβ Count of devices for which OPPs are initialized from DT. Counting the DT girlies. π§shared_oppβ OPP is shared between multiple devices. Sharing is caring, no cap. πcurrent_rate_single_clkβ Currently configured frequency for single clk. The current single-clk rate, bestie. πcurrent_oppβ Currently configured OPP for the table. Main character OPP of the moment. πsuspend_oppβ Pointer to OPP to be used during device suspend. Nap-time OPP. π΄required_opp_tablesβ List of device OPP tables that are required by OPPs in this table. The required squad. π«required_devsβ List of devices for required OPP tables. Devices tied to the required tables. π±required_opp_countβ Number of required devices. Count βem. π’supported_hwβ Array of version number to support. Hardware version lineup. π οΈsupported_hw_countβ Number of elements insupported_hwarray. Array length, obviously. β¨prop_nameβ A name to postfix to many DT properties, while parsing them. A little suffix situation. π·οΈconfig_clksβ Platform specificconfig_clkscallback. Platform-specific callback, we love to see it. ποΈclksβ Deviceβs clock handles, for multiple clocks. Plural clocks, plural handles. βclkβ Deviceβs clock handle, for single clock. Singular clock, singular handle. β°clk_countβ Number of clocks. One, two, maybe more. π’config_regulatorsβ Platform specificconfig_regulatorscallback. Another platform-specific callback, and yes itβs serving. β‘regulatorsβ Supply regulators. Power supply regulators, not vibes regulators. πregulator_countβ Number of power supply regulators. Its value can be-1(uninitialized),0(noopp-microvoltproperty) or> 0(hasopp-microvoltproperty). Very specific, very demure. πpathsβ Interconnect path handles. Path handles for interconnect, iykyk. π€οΈpath_countβ Number of interconnect paths. Count the paths. πenabledβ Set totrueif the deviceβs resources are enabled/configured. True means enabled/configured, bestie. βis_genpdβ Marks if the OPP table belongs to a genpd. genpd membership check. πͺͺdentryβ debugfs dentry pointer of the real device directory (not links). Real directory, not a link. πdentry_nameβ Name of the real dentry. The real dentryβs name. π·οΈ
Tiny heads-up: the synopsis hasstruct list_head node, lazy;, but the original member list only describesnode. Iβm not inventing lore forlazyβ we keep the facts exactly as they are. π
π Description π
This is an internal data structure maintaining the link to opps attached to a device. It is not meant to be shared to users, because it is meant for book keeping and is private to the OPP library. So no, bestie, this is not a user-facing structure β itβs internal business. Periodt. π₯
π SEE ALSO π
- Kernel file
./drivers/opp/opp.hβ the source file, bestie. π struct opp_config_data(9)β another one on the guest list. ποΈstruct dev_pm_opp_icc_bw(9)β ICC bandwidth struct, say that three times fast. πstruct dev_pm_opp(9)β the OPP struct itself. βstruct opp_device(9)β the OPP device struct. π±
Sourced from ./drivers/opp, dated October 2026, and this page is struct opp_table(9) β bye bestie, stay book-keeping and private to the OPP library! π«Άβ¨π
π¦ 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