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:
Marcin Maka 2019-09-04 13:15:17 +02:00 committed by Liam Girdwood
parent edea885ba5
commit 80c1460f9b
11 changed files with 144 additions and 0 deletions

View File

@ -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__ */

View File

@ -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);
}
}

View File

@ -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.

View File

@ -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

View File

@ -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.
*/

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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

View File

@ -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