mirror of https://github.com/thesofproject/sof.git
pm-runtime: add pm runtime active, enable, disable interfaces
PM enable and disable is an interface to control the power management of a resource. PM is_active is an interface to query the pm management status of the resource. Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
This commit is contained in:
parent
edea885ba5
commit
80c1460f9b
|
@ -93,6 +93,32 @@ void pm_runtime_put(enum pm_runtime_context context, uint32_t index);
|
|||
*/
|
||||
void pm_runtime_put_sync(enum pm_runtime_context context, uint32_t index);
|
||||
|
||||
/**
|
||||
* \brief Enables power management operations for the resource.
|
||||
*
|
||||
* \param[in] context Type of power management context.
|
||||
* \param[in] index Index of the device.
|
||||
*/
|
||||
void pm_runtime_enable(enum pm_runtime_context context, uint32_t index);
|
||||
|
||||
/**
|
||||
* \brief Disables power management operations for the resource.
|
||||
*
|
||||
* \param[in] context Type of power management context.
|
||||
* \param[in] index Index of the device.
|
||||
*/
|
||||
void pm_runtime_disable(enum pm_runtime_context context, uint32_t index);
|
||||
|
||||
/**
|
||||
* \brief Reports state of the power managed resource.
|
||||
*
|
||||
* @param context Type of power management context.
|
||||
* @param index Index of the resource.
|
||||
*
|
||||
* @return true if the resource is active or pm disabled, false otherwise.
|
||||
*/
|
||||
bool pm_runtime_is_active(enum pm_runtime_context context, uint32_t index);
|
||||
|
||||
/** @}*/
|
||||
|
||||
#endif /* __SOF_LIB_PM_RUNTIME_H__ */
|
||||
|
|
|
@ -72,3 +72,35 @@ void pm_runtime_put_sync(enum pm_runtime_context context, uint32_t index)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void pm_runtime_enable(enum pm_runtime_context context, uint32_t index)
|
||||
{
|
||||
tracev_pm("pm_runtime_enable()");
|
||||
|
||||
switch (context) {
|
||||
default:
|
||||
platform_pm_runtime_enable(context, index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void pm_runtime_disable(enum pm_runtime_context context, uint32_t index)
|
||||
{
|
||||
tracev_pm("pm_runtime_disable()");
|
||||
|
||||
switch (context) {
|
||||
default:
|
||||
platform_pm_runtime_disable(context, index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool pm_runtime_is_active(enum pm_runtime_context context, uint32_t index)
|
||||
{
|
||||
tracev_pm("pm_runtime_is_active()");
|
||||
|
||||
switch (context) {
|
||||
default:
|
||||
return platform_pm_runtime_is_active(context, index);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,11 @@ void platform_pm_runtime_get(uint32_t context, uint32_t index, uint32_t flags);
|
|||
*/
|
||||
void platform_pm_runtime_put(uint32_t context, uint32_t index, uint32_t flags);
|
||||
|
||||
void platform_pm_runtime_enable(uint32_t context, uint32_t index);
|
||||
|
||||
void platform_pm_runtime_disable(uint32_t context, uint32_t index);
|
||||
|
||||
bool platform_pm_runtime_is_active(uint32_t context, uint32_t index);
|
||||
|
||||
/**
|
||||
* \brief Power gates platform specific hardware resources.
|
||||
|
|
|
@ -46,6 +46,18 @@ static inline void platform_pm_runtime_get(uint32_t context, uint32_t index,
|
|||
static inline void platform_pm_runtime_put(uint32_t context, uint32_t index,
|
||||
uint32_t flags) { }
|
||||
|
||||
static inline void platform_pm_runtime_enable(uint32_t context,
|
||||
uint32_t index) {}
|
||||
|
||||
static inline void platform_pm_runtime_disable(uint32_t context,
|
||||
uint32_t index) {}
|
||||
|
||||
static inline bool platform_pm_runtime_is_active(uint32_t context,
|
||||
uint32_t index)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* __PLATFORM_LIB_PM_RUNTIME_H__ */
|
||||
|
||||
#else
|
||||
|
|
|
@ -43,6 +43,12 @@ void platform_pm_runtime_get(uint32_t context, uint32_t index, uint32_t flags);
|
|||
*/
|
||||
void platform_pm_runtime_put(uint32_t context, uint32_t index, uint32_t flags);
|
||||
|
||||
void platform_pm_runtime_enable(uint32_t context, uint32_t index);
|
||||
|
||||
void platform_pm_runtime_disable(uint32_t context, uint32_t index);
|
||||
|
||||
bool platform_pm_runtime_is_active(uint32_t context, uint32_t index);
|
||||
|
||||
/**
|
||||
* \brief Power gates platform specific hardware resources.
|
||||
*/
|
||||
|
|
|
@ -46,6 +46,18 @@ static inline void platform_pm_runtime_get(uint32_t context, uint32_t index,
|
|||
static inline void platform_pm_runtime_put(uint32_t context, uint32_t index,
|
||||
uint32_t flags) { }
|
||||
|
||||
static inline void platform_pm_runtime_enable(uint32_t context,
|
||||
uint32_t index) {}
|
||||
|
||||
static inline void platform_pm_runtime_disable(uint32_t context,
|
||||
uint32_t index) {}
|
||||
|
||||
static inline bool platform_pm_runtime_is_active(uint32_t context,
|
||||
uint32_t index)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* __PLATFORM_LIB_PM_RUNTIME_H__ */
|
||||
|
||||
#else
|
||||
|
|
|
@ -43,6 +43,12 @@ void platform_pm_runtime_get(uint32_t context, uint32_t index, uint32_t flags);
|
|||
*/
|
||||
void platform_pm_runtime_put(uint32_t context, uint32_t index, uint32_t flags);
|
||||
|
||||
void platform_pm_runtime_enable(uint32_t context, uint32_t index);
|
||||
|
||||
void platform_pm_runtime_disable(uint32_t context, uint32_t index);
|
||||
|
||||
bool platform_pm_runtime_is_active(uint32_t context, uint32_t index);
|
||||
|
||||
#endif /* __PLATFORM_LIB_PM_RUNTIME_H__ */
|
||||
|
||||
#else
|
||||
|
|
|
@ -40,6 +40,18 @@ static inline void platform_pm_runtime_get(uint32_t context, uint32_t index,
|
|||
static inline void platform_pm_runtime_put(uint32_t context, uint32_t index,
|
||||
uint32_t flags) { }
|
||||
|
||||
static inline void platform_pm_runtime_enable(uint32_t context,
|
||||
uint32_t index) {}
|
||||
|
||||
static inline void platform_pm_runtime_disable(uint32_t context,
|
||||
uint32_t index) {}
|
||||
|
||||
static inline bool platform_pm_runtime_is_active(uint32_t context,
|
||||
uint32_t index)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* __PLATFORM_LIB_PM_RUNTIME_H__ */
|
||||
|
||||
#else
|
||||
|
|
|
@ -351,6 +351,27 @@ void platform_pm_runtime_put(enum pm_runtime_context context, uint32_t index,
|
|||
}
|
||||
}
|
||||
|
||||
void platform_pm_runtime_enable(uint32_t context, uint32_t index)
|
||||
{
|
||||
switch (context) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void platform_pm_runtime_disable(uint32_t context, uint32_t index)
|
||||
{
|
||||
switch (context) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool platform_pm_runtime_is_active(uint32_t context, uint32_t index)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#if CONFIG_APOLLOLAKE || CONFIG_CANNONLAKE
|
||||
void platform_pm_runtime_power_off(void)
|
||||
{
|
||||
|
|
|
@ -43,6 +43,12 @@ void platform_pm_runtime_get(uint32_t context, uint32_t index, uint32_t flags);
|
|||
*/
|
||||
void platform_pm_runtime_put(uint32_t context, uint32_t index, uint32_t flags);
|
||||
|
||||
void platform_pm_runtime_enable(uint32_t context, uint32_t index);
|
||||
|
||||
void platform_pm_runtime_disable(uint32_t context, uint32_t index);
|
||||
|
||||
bool platform_pm_runtime_is_active(uint32_t context, uint32_t index);
|
||||
|
||||
#endif /* __PLATFORM_LIB_PM_RUNTIME_H__ */
|
||||
|
||||
#else
|
||||
|
|
|
@ -43,6 +43,12 @@ void platform_pm_runtime_get(uint32_t context, uint32_t index, uint32_t flags);
|
|||
*/
|
||||
void platform_pm_runtime_put(uint32_t context, uint32_t index, uint32_t flags);
|
||||
|
||||
void platform_pm_runtime_enable(uint32_t context, uint32_t index);
|
||||
|
||||
void platform_pm_runtime_disable(uint32_t context, uint32_t index);
|
||||
|
||||
bool platform_pm_runtime_is_active(uint32_t context, uint32_t index);
|
||||
|
||||
#endif /* __PLATFORM_LIB_PM_RUNTIME_H__ */
|
||||
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue