diff --git a/src/ipc/ipc-zephyr.c b/src/ipc/ipc-zephyr.c index a6b6bff16..85c6656a1 100644 --- a/src/ipc/ipc-zephyr.c +++ b/src/ipc/ipc-zephyr.c @@ -184,6 +184,11 @@ void ipc_platform_send_msg_direct(const struct ipc_msg *msg) intel_adsp_ipc_send_message_emergency(INTEL_ADSP_IPC_HOST_DEV, hdr->pri, hdr->ext); } +int ipc_platform_poll_is_host_ready(void) +{ + return intel_adsp_ipc_is_complete(INTEL_ADSP_IPC_HOST_DEV); +} + int platform_ipc_init(struct ipc *ipc) { ipc_set_drvdata(ipc, NULL); diff --git a/zephyr/lib/pm_runtime.c b/zephyr/lib/pm_runtime.c index 4f1c19878..99a23c549 100644 --- a/zephyr/lib/pm_runtime.c +++ b/zephyr/lib/pm_runtime.c @@ -10,6 +10,7 @@ #include #include #include +#include LOG_MODULE_REGISTER(power, CONFIG_SOF_LOG_LEVEL); @@ -46,7 +47,7 @@ const struct pm_state_info *pm_policy_next_state(uint8_t cpu, int32_t ticks) continue; /* skipping when some ipc task is not finished */ - if (ipc_get()->task_mask) + if (ipc_get()->task_mask || !ipc_platform_poll_is_host_ready()) continue; }