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:
parent
7d07a941fa
commit
dd54a8daed
@ -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 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user