Power domain class.
More...
Power domain class.
A power domain provider is a struct pbl_power_domain_provider device with one or more domains, each identified by a provider-specific number. A domain runs at a performance state, a level whose meaning is the provider's, as the voltage mode its clocks need, as Linux power domains do. A consumer holds a struct pbl_power_domain, lists the provider among its device dependencies, and sets the performance state it needs before it raises its clocks:
A power domain, as used by a consumer.
Definition power_domain.h:86
int pbl_power_domain_set_performance_state(const struct pbl_power_domain *pd, uint32_t level)
Set the performance state of a power domain.
#define PBL_POWER_DOMAIN(_provider, _id)
Initializer for a struct pbl_power_domain.
Definition power_domain.h:99
Each domain has one consumer: its state is the last one set.
◆ pbl_power_domain_provider
| struct pbl_power_domain_provider |
| Data Fields |
|
struct pbl_device |
dev |
Device. |
|
uint32_t * |
levels |
Performance state of each domain, 0 until one is set. |
|
uint16_t |
num_domains |
Number of domains. |
|
const struct pbl_power_domain_provider_ops * |
ops |
Driver operations. |
◆ pbl_power_domain
A power domain, as used by a consumer.
◆ PBL_POWER_DOMAIN
| #define PBL_POWER_DOMAIN |
( |
|
_provider, |
|
|
|
_id |
|
) |
| {.provider = (_provider), .id = (_id)} |
Initializer for a struct pbl_power_domain.
- Parameters
-
| _provider | Power domain provider. |
| _id | Domain number, from the provider's binding header. |
◆ PBL_POWER_DOMAIN_PROVIDER_INIT
| #define PBL_POWER_DOMAIN_PROVIDER_INIT |
( |
|
sym, |
|
|
|
_name, |
|
|
|
_init, |
|
|
|
_parent, |
|
|
|
_ops |
|
) |
| |
Value: { \
&pbl_power_domain_provider_class), \
.ops = (_ops), \
.levels = sym##_pd_levels, \
.num_domains = sizeof(sym##_pd_levels) / sizeof(sym##_pd_levels[0]), \
}
#define PBL_DEVICE_INIT_CLASS(sym, _name, _init, _parent, _deps, _cls)
Initializer for the struct pbl_device of device instance sym, in class _cls.
Definition device.h:145
Initializer for the struct pbl_power_domain_provider of provider sym.
- Parameters
-
| sym | Symbol of the provider instance, with its state defined by PBL_POWER_DOMAIN_PROVIDER_STATE_DEFINE(). |
| _name | Name. |
| _init | Device init function, or NULL. |
| _parent | Parent device, or NULL. |
| _ops | Driver operations. |
◆ PBL_POWER_DOMAIN_PROVIDER_STATE_DEFINE
| #define PBL_POWER_DOMAIN_PROVIDER_STATE_DEFINE |
( |
|
sym, |
|
|
|
_num_domains |
|
) |
| |
Value:
static uint32_t sym##_pd_levels[_num_domains]
#define PBL_DEVICE_STATE_DEFINE(sym)
Define the runtime state of device instance sym.
Definition device.h:131
Define the class state of power domain provider sym, for the driver's define macro.
- Parameters
-
| sym | Symbol of the provider instance. |
| _num_domains | Number of domains. |
◆ pbl_power_domain_get_performance_state()
| uint32_t pbl_power_domain_get_performance_state |
( |
const struct pbl_power_domain * |
pd | ) |
|
Get the performance state of a power domain.
- Parameters
-
- Returns
- The last state set, 0 if none.
◆ pbl_power_domain_set_performance_state()
| int pbl_power_domain_set_performance_state |
( |
const struct pbl_power_domain * |
pd, |
|
|
uint32_t |
level |
|
) |
| |
Set the performance state of a power domain.
- Parameters
-
| pd | Power domain. |
| level | Performance state, as the provider defines it. |
- Returns
- 0,
-EINVAL for an unknown domain or state, or another negative errno.