pm: Avoid weak function clash

SoC hooks are defined as weak functions for the case where they are
not implemented by a SoC. The problem that may happen is when an
application define it as weak as well. In this case, no compilation
error is issued but the version that will be used depends on the build
order. Just remove the weak placeholder implementation.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
This commit is contained in:
Flavio Ceolin 2021-05-13 13:02:25 -07:00 committed by Christopher Friedt
parent 7d07a941fa
commit dd54a8daed

View File

@ -71,24 +71,33 @@ static void pm_log_debug_info(enum pm_state state) { }
void pm_dump_debug_info(void) { }
#endif
__weak void pm_power_state_exit_post_ops(struct pm_state_info info)
static inline void exit_pos_ops(struct pm_state_info info)
{
/*
* This function is supposed to be overridden to do SoC or
* architecture specific post ops after sleep state exits.
*
* The kernel expects that irqs are unlocked after this.
*/
extern __weak void
pm_power_state_exit_post_ops(struct pm_state_info info);
irq_unlock(0);
if (pm_power_state_exit_post_ops != NULL) {
pm_power_state_exit_post_ops(info);
} else {
/*
* This function is supposed to be overridden to do SoC or
* architecture specific post ops after sleep state exits.
*
* The kernel expects that irqs are unlocked after this.
*/
irq_unlock(0);
}
}
__weak void pm_power_state_set(struct pm_state_info info)
static inline void pm_state_set(struct pm_state_info info)
{
/*
* This function is supposed to be overridden to do SoC or
* architecture specific post ops after sleep state exits.
*/
extern __weak void
pm_power_state_set(struct pm_state_info info);
if (pm_power_state_set != NULL) {
pm_power_state_set(info);
}
}
/*
@ -135,7 +144,7 @@ void pm_system_resume(void)
*/
if (!post_ops_done) {
post_ops_done = 1;
pm_power_state_exit_post_ops(z_power_state);
exit_pos_ops(z_power_state);
pm_state_notify(false);
}
}
@ -157,7 +166,7 @@ void pm_power_state_force(struct pm_state_info info)
k_sched_lock();
pm_debug_start_timer();
/* Enter power state */
pm_power_state_set(z_power_state);
pm_state_set(z_power_state);
pm_debug_stop_timer();
pm_system_resume();
@ -247,7 +256,7 @@ enum pm_state pm_system_suspend(int32_t ticks)
pm_debug_start_timer();
/* Enter power state */
pm_state_notify(true);
pm_power_state_set(z_power_state);
pm_state_set(z_power_state);
pm_debug_stop_timer();
/* Wake up sequence starts here */