PebbleOS v4.47.0
Loading...
Searching...
No Matches
Power domain

Power domain class. More...

Data Structures

struct  pbl_power_domain_provider_ops
 Power domain provider driver operations. More...
 
struct  pbl_power_domain_provider
 A power domain provider. More...
 
struct  pbl_power_domain
 A power domain, as used by a consumer. More...
 

Macros

#define PBL_POWER_DOMAIN_PROVIDER_STATE_DEFINE(sym, _num_domains)
 Define the class state of power domain provider sym, for the driver's define macro.
 
#define PBL_POWER_DOMAIN_PROVIDER_INIT(sym, _name, _init, _parent, _ops)
 Initializer for the struct pbl_power_domain_provider of provider sym.
 
#define PBL_POWER_DOMAIN(_provider, _id)   {.provider = (_provider), .id = (_id)}
 Initializer for a struct pbl_power_domain.
 

Functions

int pbl_power_domain_set_performance_state (const struct pbl_power_domain *pd, uint32_t level)
 Set the performance state of a power domain.
 
uint32_t pbl_power_domain_get_performance_state (const struct pbl_power_domain *pd)
 Get the performance state of a power domain.
 

Detailed Description

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:

static const struct pbl_power_domain s_pd = PBL_POWER_DOMAIN(&dt_pmuc, 0);
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.


Data Structure Documentation

◆ pbl_power_domain_provider

struct pbl_power_domain_provider

A 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

struct pbl_power_domain

A power domain, as used by a consumer.

Data Fields
uint32_t id Domain number on the provider.
const struct pbl_power_domain_provider * provider Provider.

Macro Definition Documentation

◆ PBL_POWER_DOMAIN

#define PBL_POWER_DOMAIN (   _provider,
  _id 
)    {.provider = (_provider), .id = (_id)}

Initializer for a struct pbl_power_domain.

Parameters
_providerPower domain provider.
_idDomain number, from the provider's binding header.

◆ PBL_POWER_DOMAIN_PROVIDER_INIT

#define PBL_POWER_DOMAIN_PROVIDER_INIT (   sym,
  _name,
  _init,
  _parent,
  _ops 
)
Value:
{ \
.dev = PBL_DEVICE_INIT_CLASS(sym, _name, _init, _parent, nullptr, \
&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
symSymbol of the provider instance, with its state defined by PBL_POWER_DOMAIN_PROVIDER_STATE_DEFINE().
_nameName.
_initDevice init function, or NULL.
_parentParent device, or NULL.
_opsDriver 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
symSymbol of the provider instance.
_num_domainsNumber of domains.

Function Documentation

◆ 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
pdPower domain.
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
pdPower domain.
levelPerformance state, as the provider defines it.
Returns
0, -EINVAL for an unknown domain or state, or another negative errno.