pm: Fix weak linkage symbols
Define SoC hooks as weak symbols so this way applications can overwritten them defining strong symbols. The problem is that currently SoCs are defining these interfaces as strong symbol inhibiting the possibility of applications bring their own implementation. Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
This commit is contained in:
parent
96d5a58a46
commit
d45a0e1919
13 changed files with 27 additions and 30 deletions
|
@ -101,7 +101,7 @@ static void z_power_soc_sleep(void)
|
|||
* For deep sleep pm_system_suspend has executed all the driver
|
||||
* power management call backs.
|
||||
*/
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SUSPEND_TO_IDLE:
|
||||
|
@ -123,7 +123,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
* an ISR on wake except for faults. We re-enable interrupts by setting PRIMASK
|
||||
* to 0.
|
||||
*/
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SUSPEND_TO_IDLE:
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
@ -24,7 +24,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
@ -24,7 +24,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
@ -26,7 +26,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
@ -25,7 +25,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
switch (info.state) {
|
||||
case PM_STATE_SOFT_OFF:
|
||||
|
|
|
@ -165,7 +165,7 @@ static void npcx_power_enter_system_sleep(int slp_mode, int wk_mode)
|
|||
}
|
||||
|
||||
/* Invoke when enter "Suspend/Low Power" mode. */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power state %u", info.state);
|
||||
|
@ -194,7 +194,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle soc specific activity after exiting "Suspend/Low Power" mode. */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power state %u", info.state);
|
||||
|
|
|
@ -22,7 +22,7 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
|||
APP_DEEPSLEEP_RAM_APD, APP_DEEPSLEEP_RAM_PPD}))
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
/* FIXME: When this function is entered the Kernel has disabled
|
||||
* interrupts using BASEPRI register. This is incorrect as it prevents
|
||||
|
@ -50,7 +50,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
ARG_UNUSED(info);
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
|||
*/
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
LOG_DBG("SoC entering power state %d", info.state);
|
||||
|
||||
|
@ -56,7 +56,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
ARG_UNUSED(info);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
|||
#endif
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power state %u", info.state);
|
||||
|
@ -73,7 +73,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power substate-id %u", info.state);
|
||||
|
|
|
@ -27,7 +27,7 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
|
|||
#endif
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power state %u", info.state);
|
||||
|
@ -73,7 +73,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power substate-id %u", info.state);
|
||||
|
|
|
@ -37,7 +37,7 @@ static void switch_on_hsi(void)
|
|||
}
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
if (info.state != PM_STATE_SUSPEND_TO_IDLE) {
|
||||
LOG_DBG("Unsupported power state %u", info.state);
|
||||
|
@ -102,7 +102,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
/* Implementation of STM32 AN5289 algorithm to enter/exit lowpower */
|
||||
/* Release ENTRY_STOP_MODE semaphore */
|
||||
|
|
|
@ -56,7 +56,7 @@ extern PowerCC26X2_ModuleState PowerCC26X2_module;
|
|||
*/
|
||||
|
||||
/* Invoke Low Power/System Off specific Tasks */
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
uint32_t modeVIMS;
|
||||
uint32_t constraints;
|
||||
|
@ -118,7 +118,7 @@ void pm_power_state_set(struct pm_state_info info)
|
|||
}
|
||||
|
||||
/* Handle SOC specific activity after Low Power Mode Exit */
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
/*
|
||||
* System is now in active mode. Reenable interrupts which were disabled
|
||||
|
|
|
@ -26,11 +26,8 @@ static bool idle_entered;
|
|||
|
||||
static const struct device *dev;
|
||||
static struct dummy_driver_api *api;
|
||||
/*
|
||||
* Weak power hook functions. Used on systems that have not implemented
|
||||
* power management.
|
||||
*/
|
||||
__weak void pm_power_state_set(struct pm_state_info info)
|
||||
|
||||
void pm_power_state_set(struct pm_state_info info)
|
||||
{
|
||||
/* at this point, notify_pm_state_entry() implemented in
|
||||
* this file has been called and set_pm should have been set
|
||||
|
@ -51,7 +48,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
|
|||
"Entering low power state with a wrong parameter");
|
||||
}
|
||||
|
||||
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
void pm_power_state_exit_post_ops(struct pm_state_info info)
|
||||
{
|
||||
/* pm_system_suspend is entered with irq locked
|
||||
* unlock irq before leave pm_system_suspend
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue