/** * struct opp_config_data - data for set config operations * @opp_table: OPP table * @flags: OPP config flags * @required_dev_index: The position in the array of required_devs * * This structure stores the OPP config information for each OPP table * configuration by the callers.
*/ struct opp_config_data { struct opp_table *opp_table; unsignedint flags; unsignedint required_dev_index;
};
/** * struct dev_pm_opp_icc_bw - Interconnect bandwidth values * @avg: Average bandwidth corresponding to this OPP (in icc units) * @peak: Peak bandwidth corresponding to this OPP (in icc units) * * This structure stores the bandwidth values for a single interconnect path.
*/ struct dev_pm_opp_icc_bw {
u32 avg;
u32 peak;
};
/* * Internal data structure organization with the OPP layer library is as * follows: * opp_tables (root) * |- device 1 (represents voltage domain 1) * | |- opp 1 (availability, freq, voltage) * | |- opp 2 .. * ... ... * | `- opp n .. * |- device 2 (represents the next voltage domain) * ... * `- device m (represents mth voltage domain) * device 1, 2.. are represented by opp_table structure while each opp * is represented by the opp structure.
*/
/** * struct dev_pm_opp - Generic OPP description structure * @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. * @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) * * This structure stores the OPP information for a given device.
*/ struct dev_pm_opp { struct list_head node; struct kref kref;
/** * struct opp_device - devices managed by 'struct opp_table' * @node: list node * @dev: device to which the struct object belongs * @dentry: debugfs dentry pointer (per device) * * This is an internal data structure maintaining the devices that are managed * by 'struct opp_table'.
*/ struct opp_device { struct list_head node; conststruct device *dev;
/** * struct opp_table - Device opp structure * @node: table node - contains the devices with OPPs that * have been registered. Nodes once added are not modified in this * table. * @head: notifier head to notify the OPP availability changes. * @dev_list: list of devices that share these OPPs * @opp_list: table of opps * @kref: for reference count of the table. * @lock: mutex protecting the opp_list and dev_list. * @np: struct device_node pointer for opp's DT node. * @clock_latency_ns_max: Max clock latency in nanoseconds. * @parsed_static_opps: Count of devices for which OPPs are initialized from DT. * @shared_opp: OPP is shared between multiple devices. * @current_rate_single_clk: Currently configured frequency for single clk. * @current_opp: Currently configured OPP for the table. * @suspend_opp: Pointer to OPP to be used during device suspend. * @required_opp_tables: List of device OPP tables that are required by OPPs in * this table. * @required_devs: List of devices for required OPP tables. * @required_opp_count: Number of required devices. * @supported_hw: Array of version number to support. * @supported_hw_count: Number of elements in supported_hw array. * @prop_name: A name to postfix to many DT properties, while parsing them. * @config_clks: Platform specific config_clks() callback. * @clks: Device's clock handles, for multiple clocks. * @clk: Device's clock handle, for single clock. * @clk_count: Number of clocks. * @config_regulators: Platform specific config_regulators() callback. * @regulators: Supply regulators * @regulator_count: Number of power supply regulators. Its value can be -1 * (uninitialized), 0 (no opp-microvolt property) or > 0 (has opp-microvolt * property). * @paths: Interconnect path handles * @path_count: Number of interconnect paths * @enabled: Set to true if the device's resources are enabled/configured. * @is_genpd: Marks if the OPP table belongs to a genpd. * @dentry: debugfs dentry pointer of the real device directory (not links). * @dentry_name: Name of the real dentry. * * @voltage_tolerance_v1: In percentage, for v1 bindings only. * * This is an internal data structure maintaining the link to opps attached to * a device. This structure is not meant to be shared to users as it is * meant for book keeping and private to OPP library.
*/ struct opp_table { struct list_head node, lazy;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.