Zephyr Project API 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
device.h File Reference

Go to the source code of this file.

Data Structures

struct  pm_device_base
 Device PM info. More...
 
struct  pm_device
 Runtime PM info for device with generic PM. More...
 
struct  pm_device_isr
 Runtime PM info for device with synchronous PM. More...
 

Macros

#define PM_DEVICE_ISR_SAFE   1
 Flag indicating that runtime PM API for the device can be called from any context.
 
#define PM_DEVICE_DEFINE(dev_id, pm_action_cb, ...)
 Define device PM resources for the given device name.
 
#define PM_DEVICE_DT_DEFINE(node_id, pm_action_cb, ...)
 Define device PM resources for the given node identifier.
 
#define PM_DEVICE_DT_INST_DEFINE(idx, pm_action_cb, ...)
 Define device PM resources for the given instance.
 
#define PM_DEVICE_GET(dev_id)    Z_PM_DEVICE_GET(dev_id)
 Obtain a reference to the device PM resources for the given device.
 
#define PM_DEVICE_DT_GET(node_id)    PM_DEVICE_GET(Z_DEVICE_DT_DEV_ID(node_id))
 Obtain a reference to the device PM resources for the given node.
 
#define PM_DEVICE_DT_INST_GET(idx)    PM_DEVICE_DT_GET(DT_DRV_INST(idx))
 Obtain a reference to the device PM resources for the given instance.
 

Typedefs

typedef int(* pm_device_action_cb_t) (const struct device *dev, enum pm_device_action action)
 Device PM action callback.
 
typedef bool(* pm_device_action_failed_cb_t) (const struct device *dev, int err)
 Device PM action failed callback.
 

Enumerations

enum  pm_device_state { PM_DEVICE_STATE_ACTIVE , PM_DEVICE_STATE_SUSPENDED , PM_DEVICE_STATE_SUSPENDING , PM_DEVICE_STATE_OFF }
 Device power states. More...
 
enum  pm_device_action { PM_DEVICE_ACTION_SUSPEND , PM_DEVICE_ACTION_RESUME , PM_DEVICE_ACTION_TURN_OFF , PM_DEVICE_ACTION_TURN_ON }
 Device PM actions. More...
 

Functions

const char * pm_device_state_str (enum pm_device_state state)
 Get name of device PM state.
 
int pm_device_action_run (const struct device *dev, enum pm_device_action action)
 Run a pm action on a device.
 
void pm_device_children_action_run (const struct device *dev, enum pm_device_action action, pm_device_action_failed_cb_t failure_cb)
 Run a pm action on all children of a device.
 
int pm_device_state_get (const struct device *dev, enum pm_device_state *state)
 Obtain the power state of a device.
 
static void pm_device_init_suspended (const struct device *dev)
 Initialize a device state to PM_DEVICE_STATE_SUSPENDED.
 
static void pm_device_init_off (const struct device *dev)
 Initialize a device state to PM_DEVICE_STATE_OFF.
 
void pm_device_busy_set (const struct device *dev)
 Mark a device as busy.
 
void pm_device_busy_clear (const struct device *dev)
 Clear a device busy status.
 
bool pm_device_is_any_busy (void)
 Check if any device is busy.
 
bool pm_device_is_busy (const struct device *dev)
 Check if a device is busy.
 
bool pm_device_wakeup_enable (const struct device *dev, bool enable)
 Enable or disable a device as a wake up source.
 
bool pm_device_wakeup_is_enabled (const struct device *dev)
 Check if a device is enabled as a wake up source.
 
bool pm_device_wakeup_is_capable (const struct device *dev)
 Check if a device is wake up capable.
 
bool pm_device_on_power_domain (const struct device *dev)
 Check if the device is on a switchable power domain.
 
int pm_device_power_domain_add (const struct device *dev, const struct device *domain)
 Add a device to a power domain.
 
int pm_device_power_domain_remove (const struct device *dev, const struct device *domain)
 Remove a device from a power domain.
 
bool pm_device_is_powered (const struct device *dev)
 Check if the device is currently powered.
 
int pm_device_driver_init (const struct device *dev, pm_device_action_cb_t action_cb)
 Setup a device driver into the lowest valid power mode.