diff --git a/app/boards/intel_adsp/Kconfig.defconfig b/app/boards/intel_adsp/Kconfig.defconfig index a2ba2db15db6..e695bf4289fc 100644 --- a/app/boards/intel_adsp/Kconfig.defconfig +++ b/app/boards/intel_adsp/Kconfig.defconfig @@ -115,7 +115,9 @@ config DAI_INTEL_SSP default y config INTEL_ADSP_IPC + bool default y + depends on IPC_SERVICE_BACKEND_INTEL_ADSP_HOST_IPC config INTEL_ADSP_TIMER default y diff --git a/app/boards/intel_adsp_ace15_mtpm.conf b/app/boards/intel_adsp_ace15_mtpm.conf index 5266f38386d3..2278906cc008 100644 --- a/app/boards/intel_adsp_ace15_mtpm.conf +++ b/app/boards/intel_adsp_ace15_mtpm.conf @@ -85,3 +85,6 @@ CONFIG_LOG_BACKEND_SOF_PROBE=n CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_WINSTREAM_CONSOLE=n CONFIG_LOG_FLUSH_SLEEP_US=5000 + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace20_lnl.conf b/app/boards/intel_adsp_ace20_lnl.conf index abf6d1537330..fcea38859131 100644 --- a/app/boards/intel_adsp_ace20_lnl.conf +++ b/app/boards/intel_adsp_ace20_lnl.conf @@ -63,3 +63,6 @@ CONFIG_LOG_BACKEND_ADSP=n CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_WINSTREAM_CONSOLE=n CONFIG_LOG_FLUSH_SLEEP_US=5000 + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace30_ptl.conf b/app/boards/intel_adsp_ace30_ptl.conf index 48a923ab7870..7be338e68fa5 100644 --- a/app/boards/intel_adsp_ace30_ptl.conf +++ b/app/boards/intel_adsp_ace30_ptl.conf @@ -65,3 +65,6 @@ CONFIG_LOG_BACKEND_ADSP=n CONFIG_LOG_FLUSH_SLEEP_US=5000 CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_WINSTREAM_CONSOLE=n + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace30_ptl_sim.conf b/app/boards/intel_adsp_ace30_ptl_sim.conf index 477450d2d271..e85a10c56f0b 100644 --- a/app/boards/intel_adsp_ace30_ptl_sim.conf +++ b/app/boards/intel_adsp_ace30_ptl_sim.conf @@ -35,7 +35,6 @@ CONFIG_SOF_LOG_LEVEL_INF=n CONFIG_SOF_LOG_LEVEL_OFF=y CONFIG_ZEPHYR_LOG=n -CONFIG_INTEL_ADSP_IPC=y # Temporary disabled options @@ -45,3 +44,6 @@ CONFIG_PM_PREWAKEUP_CONV_MODE_CEIL=y CONFIG_COMP_KPB=n CONFIG_USERSPACE=y + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace30_wcl.conf b/app/boards/intel_adsp_ace30_wcl.conf index 74a764883aad..b27eaf87fd8b 100644 --- a/app/boards/intel_adsp_ace30_wcl.conf +++ b/app/boards/intel_adsp_ace30_wcl.conf @@ -58,3 +58,6 @@ CONFIG_LOG_BACKEND_ADSP=n CONFIG_LOG_FLUSH_SLEEP_US=5000 CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_WINSTREAM_CONSOLE=n + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace30_wcl_sim.conf b/app/boards/intel_adsp_ace30_wcl_sim.conf index 288305be6313..eb0af8dd4197 100644 --- a/app/boards/intel_adsp_ace30_wcl_sim.conf +++ b/app/boards/intel_adsp_ace30_wcl_sim.conf @@ -41,3 +41,6 @@ CONFIG_PM_PREWAKEUP_CONV_MODE_CEIL=y CONFIG_COMP_KPB=n CONFIG_USERSPACE=y + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace40_nvl.conf b/app/boards/intel_adsp_ace40_nvl.conf index cfe332cd5075..e3f04d8efcd9 100644 --- a/app/boards/intel_adsp_ace40_nvl.conf +++ b/app/boards/intel_adsp_ace40_nvl.conf @@ -54,3 +54,6 @@ CONFIG_PM_DEVICE_RUNTIME_ASYNC=n # Zephyr / logging CONFIG_LOG_BACKEND_ADSP=n CONFIG_WINSTREAM_CONSOLE=n + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_ace40_nvls.conf b/app/boards/intel_adsp_ace40_nvls.conf index cfe332cd5075..e3f04d8efcd9 100644 --- a/app/boards/intel_adsp_ace40_nvls.conf +++ b/app/boards/intel_adsp_ace40_nvls.conf @@ -54,3 +54,6 @@ CONFIG_PM_DEVICE_RUNTIME_ASYNC=n # Zephyr / logging CONFIG_LOG_BACKEND_ADSP=n CONFIG_WINSTREAM_CONSOLE=n + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_cavs25.conf b/app/boards/intel_adsp_cavs25.conf index 0d39b072324c..c2ed5627854f 100644 --- a/app/boards/intel_adsp_cavs25.conf +++ b/app/boards/intel_adsp_cavs25.conf @@ -56,3 +56,6 @@ CONFIG_LOG_FUNC_NAME_PREFIX_DBG=y CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_LOG_TIMESTAMP_64BIT=y CONFIG_WINSTREAM_CONSOLE=n + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/app/boards/intel_adsp_cavs25_tgph.conf b/app/boards/intel_adsp_cavs25_tgph.conf index 2d6ac891cbd0..54d70bee24ed 100644 --- a/app/boards/intel_adsp_cavs25_tgph.conf +++ b/app/boards/intel_adsp_cavs25_tgph.conf @@ -1,3 +1,5 @@ +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n CONFIG_TIGERLAKE=y CONFIG_RIMAGE_SIGNING_SCHEMA="tgl-cavs" @@ -58,3 +60,6 @@ CONFIG_LOG_FUNC_NAME_PREFIX_DBG=y CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_LOG_TIMESTAMP_64BIT=y CONFIG_WINSTREAM_CONSOLE=n + +# Use the new IPC message service in Zephyr +CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE=n diff --git a/src/include/sof/ipc/common.h b/src/include/sof/ipc/common.h index e46fc10b9521..0e563312e28c 100644 --- a/src/include/sof/ipc/common.h +++ b/src/include/sof/ipc/common.h @@ -213,6 +213,12 @@ int ipc_compact_write_msg(struct ipc_cmd_hdr *hdr); */ struct ipc_cmd_hdr *ipc_prepare_to_send(const struct ipc_msg *msg); +/** + * \brief Access IPC message payload (hostbox) from DSP. + *@param[in]bytes make bytes available to host processing + */ +uint32_t *ipc_access_msg_payload(size_t bytes); + /** * \brief Validate mailbox contents for valid IPC header. * @return pointer to header if valid or NULL. @@ -250,4 +256,12 @@ void ipc_complete_cmd(struct ipc *ipc); /* GDB stub: should enter GDB after completing the IPC processing */ extern bool ipc_enter_gdb; +/** + * \brief Send emergency IPC message. + * + * @param[in] data IPC data to be sent. + * @param[in] ext_data Extended data to be sent. + */ +void ipc_send_message_emergency(uint32_t data, uint32_t ext_data); + #endif /* __SOF_DRIVERS_IPC_H__ */ diff --git a/src/ipc/ipc-zephyr.c b/src/ipc/ipc-zephyr.c index 460089414cf7..baf0e065cb36 100644 --- a/src/ipc/ipc-zephyr.c +++ b/src/ipc/ipc-zephyr.c @@ -13,12 +13,11 @@ #include -#include #include #include -#include -#include +#include /* for sw_regs with CONFIG_DEBUG_IPC_COUNTERS */ +#include /* for sw_regs with CONFIG_DEBUG_IPC_COUNTERS */ #if defined(CONFIG_PM) #include #include @@ -45,6 +44,11 @@ #include #include +#ifdef CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE +#include +#endif +#include + SOF_DEFINE_REG_UUID(zipc_task); LOG_MODULE_DECLARE(ipc, CONFIG_SOF_LOG_LEVEL); @@ -57,35 +61,97 @@ LOG_MODULE_DECLARE(ipc, CONFIG_SOF_LOG_LEVEL); * Filled with content of TDR and TDD registers. * When IPC message is read fills ipc_cmd_hdr. */ -static uint32_t g_last_data, g_last_ext_data; +static uint32_t g_last_data, g_last_ext_data, g_last_payload_length; + +static uint32_t *g_last_payload; + +struct k_sem *wait_ack_sem; /** - * @brief cAVS IPC Message Handler Callback function. + * @brief cAVS IPC Message Received Callback function. * - * See @ref (*intel_adsp_ipc_handler_t) for function signature description. - * @return false so BUSY on the other side will not be cleared immediately but + * @return -1 so BUSY on the other side will not be cleared immediately but * will remain set until message would have been processed by scheduled task, i.e. * until ipc_platform_complete_cmd() call. */ -static bool message_handler(const struct device *dev, void *arg, uint32_t data, uint32_t ext_data) +static void ipc_receive_cb(const void *data, size_t cb_type, void *priv) { - struct ipc *ipc = (struct ipc *)arg; + struct intel_adsp_ipc_ept_priv_data *priv_data = priv; + + if (cb_type == INTEL_ADSP_IPC_CB_MSG) { + const struct intel_adsp_ipc_msg *msg = data; + + struct ipc *ipc = priv_data->priv; - k_spinlock_key_t key; + k_spinlock_key_t key; - key = k_spin_lock(&ipc->lock); + key = k_spin_lock(&ipc->lock); - g_last_data = data; - g_last_ext_data = ext_data; + g_last_data = msg->data; + g_last_ext_data = msg->ext_data; + g_last_payload = msg->payload; + g_last_payload_length = msg->payload_length; #if CONFIG_DEBUG_IPC_COUNTERS - increment_ipc_received_counter(); + increment_ipc_received_counter(); #endif - ipc_schedule_process(ipc); + ipc_schedule_process(ipc); - k_spin_unlock(&ipc->lock, key); + k_spin_unlock(&ipc->lock, key); - return false; + priv_data->cb_ret = -1; + } else if (cb_type == INTEL_ADSP_IPC_CB_DONE) { + if (wait_ack_sem) + k_sem_give(wait_ack_sem); + + priv_data->cb_ret = INTEL_ADSP_IPC_CB_RET_OKAY; + } +} + +static struct ipc_ept ipc_ept; +static struct intel_adsp_ipc_ept_priv_data ipc_ept_priv_data; +static struct ipc_ept_cfg ipc_ept_cfg = { + .name = "sof_ipc", + .cb = { + .received = ipc_receive_cb, + }, + .priv = &ipc_ept_priv_data, +}; + +static void ipc_ept_init(struct ipc *ipc) +{ + const struct device *ipc_dev = INTEL_ADSP_IPC_HOST_DEV; + + ipc_ept_priv_data.priv = ipc; + + ipc_service_register_endpoint(ipc_dev, &ipc_ept, &ipc_ept_cfg); +} + +static void ipc_complete(void) +{ + ipc_service_send(&ipc_ept, NULL, INTEL_ADSP_IPC_SEND_DONE); +} + +static bool ipc_is_complete(void) +{ + return ipc_service_send(&ipc_ept, NULL, INTEL_ADSP_IPC_SEND_IS_COMPLETE) == 0; +} + +static int ipc_send_message(struct intel_adsp_ipc_msg *msg) +{ + return ipc_service_send(&ipc_ept, msg, INTEL_ADSP_IPC_SEND_MSG); +} + +void ipc_send_message_emergency(uint32_t data, uint32_t ext_data) +{ + struct intel_adsp_ipc_msg msg = {.data = data, .ext_data = ext_data}; + + ipc_service_send(&ipc_ept, &msg, INTEL_ADSP_IPC_SEND_MSG_EMERGENCY); +} + +static void ipc_send_message_emergency_with_payload(struct intel_adsp_ipc_msg *msg) +{ + ipc_service_send(&ipc_ept, msg, INTEL_ADSP_IPC_SEND_MSG_EMERGENCY); } #ifdef CONFIG_PM_DEVICE @@ -159,8 +225,8 @@ static int ipc_device_resume_handler(const struct device *dev, void *arg) ipc->task_mask = 0; ipc->pm_prepare_D3 = false; - /* attach handlers */ - intel_adsp_ipc_set_message_handler(INTEL_ADSP_IPC_HOST_DEV, message_handler, ipc); + /* initialize IPC endpoint */ + ipc_ept_init(ipc); /* schedule task */ #if CONFIG_TWB_IPC_TASK @@ -254,7 +320,7 @@ enum task_state ipc_platform_do_cmd(struct ipc *ipc) void ipc_platform_complete_cmd(struct ipc *ipc) { ARG_UNUSED(ipc); - intel_adsp_ipc_complete(INTEL_ADSP_IPC_HOST_DEV); + ipc_complete(); #if CONFIG_DEBUG_IPC_COUNTERS increment_ipc_processed_counter(); @@ -263,26 +329,46 @@ void ipc_platform_complete_cmd(struct ipc *ipc) int ipc_platform_send_msg(const struct ipc_msg *msg) { - if (!intel_adsp_ipc_is_complete(INTEL_ADSP_IPC_HOST_DEV)) + if (!ipc_is_complete()) return -EBUSY; - /* prepare the message and copy to mailbox */ struct ipc_cmd_hdr *hdr = ipc_prepare_to_send(msg); - - return intel_adsp_ipc_send_message(INTEL_ADSP_IPC_HOST_DEV, hdr->pri, hdr->ext); + struct intel_adsp_ipc_msg ipc_drv_msg = { + .data = hdr->pri, + .ext_data = hdr->ext, + .payload = (uintptr_t)msg->tx_data, + .payload_length = msg->tx_size + }; + + return ipc_send_message(&ipc_drv_msg); } void ipc_platform_send_msg_direct(const struct ipc_msg *msg) { /* prepare the message and copy to mailbox */ struct ipc_cmd_hdr *hdr = ipc_prepare_to_send(msg); + struct intel_adsp_ipc_msg ipc_drv_msg = { + .data = hdr->pri, + .ext_data = hdr->ext, + .payload = (uintptr_t)msg->tx_data, + .payload_length = msg->tx_size + }; + + ipc_send_message_emergency_with_payload(&ipc_drv_msg); +} - intel_adsp_ipc_send_message_emergency(INTEL_ADSP_IPC_HOST_DEV, hdr->pri, hdr->ext); +uint32_t *ipc_access_msg_payload(size_t __unused bytes) +{ + /* + * The IPC driver has flushed the + * cache on payload buffer, so no action needed here. + */ + return g_last_payload; } int ipc_platform_poll_is_host_ready(void) { - return intel_adsp_ipc_is_complete(INTEL_ADSP_IPC_HOST_DEV); + return ipc_is_complete(); } int platform_ipc_init(struct ipc *ipc) @@ -300,8 +386,9 @@ int platform_ipc_init(struct ipc *ipc) #endif /* configure interrupt - work is done internally by Zephyr API */ - /* attach handlers */ - intel_adsp_ipc_set_message_handler(INTEL_ADSP_IPC_HOST_DEV, message_handler, ipc); + /* initialize IPC endpoint */ + ipc_ept_init(ipc); + #ifdef CONFIG_PM intel_adsp_ipc_set_suspend_handler(INTEL_ADSP_IPC_HOST_DEV, ipc_device_suspend_handler, ipc); @@ -312,11 +399,13 @@ int platform_ipc_init(struct ipc *ipc) return 0; } +#ifdef CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE static bool ipc_wait_complete(const struct device *dev, void *arg) { k_sem_give(arg); return false; } +#endif void ipc_platform_wait_ack(struct ipc *ipc) { @@ -324,10 +413,18 @@ void ipc_platform_wait_ack(struct ipc *ipc) k_sem_init(&ipc_wait_sem, 0, 1); +#ifdef CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE intel_adsp_ipc_set_done_handler(INTEL_ADSP_IPC_HOST_DEV, ipc_wait_complete, &ipc_wait_sem); +#else + wait_ack_sem = &ipc_wait_sem; +#endif if (k_sem_take(&ipc_wait_sem, Z_TIMEOUT_MS(10)) == -EAGAIN) tr_err(&ipc_tr, "Timeout waiting for host ack!"); +#ifdef CONFIG_INTEL_ADSP_IPC_OLD_INTERFACE intel_adsp_ipc_set_done_handler(INTEL_ADSP_IPC_HOST_DEV, NULL, NULL); +#else + wait_ack_sem = NULL; +#endif } diff --git a/src/ipc/ipc3/handler.c b/src/ipc/ipc3/handler.c index 9f865960f1bf..15dae82a0975 100644 --- a/src/ipc/ipc3/handler.c +++ b/src/ipc/ipc3/handler.c @@ -1500,8 +1500,6 @@ struct ipc_cmd_hdr *ipc_prepare_to_send(const struct ipc_msg *msg) hdr[0] = msg->header; hdr[1] = 0; - mailbox_dspbox_write(0, msg->tx_data, msg->tx_size); - return ipc_to_hdr(hdr); } diff --git a/src/ipc/ipc4/handler.c b/src/ipc/ipc4/handler.c index 3eea8f623081..81ef65231024 100644 --- a/src/ipc/ipc4/handler.c +++ b/src/ipc/ipc4/handler.c @@ -123,9 +123,7 @@ static inline const struct ipc4_pipeline_set_state_data *ipc4_get_pipeline_data( { const struct ipc4_pipeline_set_state_data *ppl_data; - ppl_data = (const struct ipc4_pipeline_set_state_data *)MAILBOX_HOSTBOX_BASE; - dcache_invalidate_region((__sparse_force void __sparse_cache *)ppl_data, - sizeof(*ppl_data)); + ppl_data = (const struct ipc4_pipeline_set_state_data *)ipc_access_msg_payload(sizeof(*ppl_data));; return ppl_data; } @@ -999,12 +997,13 @@ static int ipc4_set_get_config_module_instance(struct ipc4_message_request *ipc4 __cold static void ipc4_prepare_for_kcontrol_get(struct comp_dev *dev, uint8_t param_id, char *data_out, uint32_t data_size) { - const char *hostbox; + const uint32_t *hostbox; #if CONFIG_LIBRARY + /* TODO: can we abstrac LIBRARY to use its own driver? */ hostbox = (const char *)ipc_get()->comp_data + sizeof(struct ipc4_module_large_config); #else - hostbox = (const char *)MAILBOX_HOSTBOX_BASE; + hostbox = ipc_access_msg_payload(data_size); #endif assert_can_be_cold(); @@ -1013,10 +1012,6 @@ __cold static void ipc4_prepare_for_kcontrol_get(struct comp_dev *dev, uint8_t p case SOF_IPC4_SWITCH_CONTROL_PARAM_ID: case SOF_IPC4_ENUM_CONTROL_PARAM_ID: case SOF_IPC4_BYTES_CONTROL_PARAM_ID: - /* We have payload in hostbox */ - dcache_invalidate_region((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE, - data_size); - /* Copy the control payload header from inbox to outbox */ memcpy_s(data_out, data_size, hostbox, sizeof(struct sof_ipc4_control_msg_payload)); @@ -1172,14 +1167,14 @@ __cold static int ipc4_get_large_config_module_instance(struct ipc4_message_requ /* check for vendor param first */ if (config.extension.r.large_param_id == VENDOR_CONFIG_PARAM) { /* For now only vendor_config case uses payload from hostbox */ - dcache_invalidate_region((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE, - config.extension.r.data_off_size); + const uint32_t *ipc_payload = + ipc_access_msg_payload(config.extension.r.data_off_size); ret = ipc4_get_vendor_config_module_instance(dev, drv, config.extension.r.init_block, config.extension.r.final_block, &data_offset, data, - (const char *)MAILBOX_HOSTBOX_BASE); + (const char *)ipc_payload); } else { #if CONFIG_LIBRARY data += sizeof(reply); @@ -1297,8 +1292,7 @@ __cold static int ipc4_set_large_config_module_instance(struct ipc4_message_requ if (ret < 0) return IPC4_FAILURE; - dcache_invalidate_region((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE, - config.extension.r.data_off_size); + uint32_t *ipc_payload = ipc_access_msg_payload(config.extension.r.data_off_size); tr_dbg(&ipc_tr, "ipc4_set_large_config_module_instance %x : %x", (uint32_t)config.primary.r.module_id, (uint32_t)config.primary.r.instance_id); @@ -1333,13 +1327,14 @@ __cold static int ipc4_set_large_config_module_instance(struct ipc4_message_requ config.extension.r.init_block, config.extension.r.final_block, config.extension.r.data_off_size, - (const char *)MAILBOX_HOSTBOX_BASE); + (const char *)ipc_payload); } else { #if CONFIG_LIBRARY struct ipc *ipc = ipc_get(); const char *data = (const char *)ipc->comp_data + sizeof(config); #else - const char *data = (const char *)MAILBOX_HOSTBOX_BASE; + const char *data = + (const char *)ipc_access_msg_payload(config.extension.r.data_off_size); #endif ret = drv->ops.set_large_config(dev, config.extension.r.large_param_id, config.extension.r.init_block, config.extension.r.final_block, @@ -1439,10 +1434,9 @@ __cold static int ipc4_module_process_dx(struct ipc4_message_request *ipc4) return IPC4_INVALID_RESOURCE_ID; } - dcache_invalidate_region((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE, - sizeof(dx_info)); + const uint32_t *ipc_payload = ipc_access_msg_payload(sizeof(dx_info)); ret = memcpy_s(&dx_info, sizeof(dx_info), - (const void *)MAILBOX_HOSTBOX_BASE, sizeof(dx_info)); + (const void *)ipc_payload, sizeof(dx_info)); if (ret < 0) return IPC4_FAILURE; @@ -1598,9 +1592,6 @@ struct ipc_cmd_hdr *ipc_prepare_to_send(const struct ipc_msg *msg) msg_data.msg_out.pri = msg->header; msg_data.msg_out.ext = msg->extension; - if (msg->tx_size) - mailbox_dspbox_write(0, (uint32_t *)msg->tx_data, msg->tx_size); - return &msg_data.msg_out; } diff --git a/src/platform/intel/ace/lib/watchdog.c b/src/platform/intel/ace/lib/watchdog.c index dcae80da801d..2ee7369df3da 100644 --- a/src/platform/intel/ace/lib/watchdog.c +++ b/src/platform/intel/ace/lib/watchdog.c @@ -34,8 +34,7 @@ static void watchdog_primary_core_action_on_timeout(void) /* Send Watchdog Timeout IPC notification */ ipc4_notification_watchdog_init(¬if, cpu_get_id(), true); - intel_adsp_ipc_send_message_emergency(INTEL_ADSP_IPC_HOST_DEV, - notif.primary.dat, notif.extension.dat); + (void)ipc_send_message_emergency(notif.primary.dat, notif.extension.dat); } static void watchdog_secondary_core_action_on_timeout(void) diff --git a/west.yml b/west.yml index 3d9e57b78b5c..ffc6440003ee 100644 --- a/west.yml +++ b/west.yml @@ -43,7 +43,7 @@ manifest: - name: zephyr repo-path: zephyr - revision: fb01c781b6c0ca6cee65ea853157704742c74cdd + revision: revision: pull/98862/head remote: zephyrproject # Import some projects listed in zephyr/west.yml@revision