Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Device Runtime Power Management API. More...

Functions

int pm_device_runtime_auto_enable (const struct device *dev)
 Automatically enable device runtime based on devicetree properties.
 
int pm_device_runtime_enable (const struct device *dev)
 Enable device runtime PM.
 
int pm_device_runtime_disable (const struct device *dev)
 Disable device runtime PM.
 
int pm_device_runtime_get (const struct device *dev)
 Resume a device based on usage count.
 
int pm_device_runtime_put (const struct device *dev)
 Suspend a device based on usage count.
 
int pm_device_runtime_put_async (const struct device *dev, k_timeout_t delay)
 Suspend a device based on usage count (asynchronously).
 
bool pm_device_runtime_is_enabled (const struct device *dev)
 Check if device runtime is enabled for a given device.
 
int pm_device_runtime_usage (const struct device *dev)
 Return the current device usage counter.
 

Detailed Description

Device Runtime Power Management API.

Function Documentation

◆ pm_device_runtime_auto_enable()

int pm_device_runtime_auto_enable ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Automatically enable device runtime based on devicetree properties.

Note
Must not be called from application code. See the zephyr,pm-device-runtime-auto property in pm.yaml and z_sys_init_run_level.
Parameters
devDevice instance.
Return values
0If the device runtime PM is enabled successfully or it has not been requested for this device in devicetree.
-errnoOther negative errno, result of enabled device runtime PM.

◆ pm_device_runtime_disable()

int pm_device_runtime_disable ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Disable device runtime PM.

If the device is currently suspended it will be resumed.

Function properties (list may not be complete)
pre-kernel-ok
Parameters
devDevice instance.
Return values
0If the device runtime PM is disabled successfully.
-ENOTSUPIf the device does not support PM.
-errnoOther negative errno, result of resuming the device.

◆ pm_device_runtime_enable()

int pm_device_runtime_enable ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Enable device runtime PM.

This function will enable runtime PM on the given device. If the device is in PM_DEVICE_STATE_ACTIVE state, the device will be suspended.

Function properties (list may not be complete)
pre-kernel-ok
Parameters
devDevice instance.
Return values
0If the device runtime PM is enabled successfully.
-EBUSYIf device is busy.
-ENOTSUPIf the device does not support PM.
-errnoOther negative errno, result of suspending the device.
See also
pm_device_init_suspended()

◆ pm_device_runtime_get()

int pm_device_runtime_get ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Resume a device based on usage count.

This function will resume the device if the device is suspended (usage count equal to 0). In case of a resume failure, usage count and device state will be left unchanged. In all other cases, usage count will be incremented.

If the device is still being suspended as a result of calling pm_device_runtime_put_async(), this function will wait for the operation to finish to then resume the device.

Note
It is safe to use this function in contexts where blocking is not allowed, e.g. ISR, provided the device PM implementation does not block.
Function properties (list may not be complete)
pre-kernel-ok
Parameters
devDevice instance.
Return values
0If it succeeds. In case device runtime PM is not enabled or not available this function will be a no-op and will also return 0.
-EWOUDBLOCKIf call would block but it is not allowed (e.g. in ISR).
-errnoOther negative errno, result of the PM action callback.

◆ pm_device_runtime_is_enabled()

bool pm_device_runtime_is_enabled ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Check if device runtime is enabled for a given device.

Function properties (list may not be complete)
pre-kernel-ok
Parameters
devDevice instance.
Return values
trueIf device has device runtime PM enabled.
falseIf the device has device runtime PM disabled.
See also
pm_device_runtime_enable()

◆ pm_device_runtime_put()

int pm_device_runtime_put ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Suspend a device based on usage count.

This function will suspend the device if the device is no longer required (usage count equal to 0). In case of suspend failure, usage count and device state will be left unchanged. In all other cases, usage count will be decremented (down to 0).

Function properties (list may not be complete)
pre-kernel-ok
Parameters
devDevice instance.
Return values
0If it succeeds. In case device runtime PM is not enabled or not available this function will be a no-op and will also return 0.
-EALREADYIf device is already suspended (can only happen if get/put calls are unbalanced).
-errnoOther negative errno, result of the action callback.
See also
pm_device_runtime_put_async()

◆ pm_device_runtime_put_async()

int pm_device_runtime_put_async ( const struct device dev,
k_timeout_t  delay 
)

#include <include/zephyr/pm/device_runtime.h>

Suspend a device based on usage count (asynchronously).

This function will schedule the device suspension if the device is no longer required (usage count equal to 0). In all other cases, usage count will be decremented (down to 0).

Note
Asynchronous operations are not supported when in pre-kernel mode. In this case, the function will be blocking (equivalent to pm_device_runtime_put()).
Function properties (list may not be complete)
pre-kernel-ok , async , isr-ok
Parameters
devDevice instance.
delayMinimum amount of time before triggering the action.
Return values
0If it succeeds. In case device runtime PM is not enabled or not available this function will be a no-op and will also return 0.
-EBUSYIf the device is busy.
-EALREADYIf device is already suspended (can only happen if get/put calls are unbalanced).
See also
pm_device_runtime_put()

◆ pm_device_runtime_usage()

int pm_device_runtime_usage ( const struct device dev)

#include <include/zephyr/pm/device_runtime.h>

Return the current device usage counter.

Parameters
devDevice instance.
Returns
the current usage counter.
Return values
-ENOTSUPIf the device is not using runtime PM.
-ENOSYSIf the runtime PM is not enabled at all.