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:
Flavio Ceolin 2021-06-09 23:03:49 -07:00 committed by Christopher Friedt
commit d45a0e1919
13 changed files with 27 additions and 30 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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