From: Rander Wang rander.wang@intel.com
DSP and host communicate each other with msg. It would exhausted without return and make ipc failed --- src/ipc/apl-ipc.c | 2 +- src/ipc/byt-ipc.c | 2 ++ src/ipc/cnl-ipc.c | 2 ++ src/ipc/hsw-ipc.c | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/ipc/apl-ipc.c b/src/ipc/apl-ipc.c index c779062..1332639 100644 --- a/src/ipc/apl-ipc.c +++ b/src/ipc/apl-ipc.c @@ -168,7 +168,7 @@ void ipc_platform_send_msg(struct ipc *ipc) ipc_write(IPC_DIPCIE, 0); ipc_write(IPC_DIPCI, 0x80000000 | msg->header);
-list_item_append(&msg->list, &ipc->empty_list); + list_item_append(&msg->list, &ipc->empty_list);
out: spin_unlock_irq(&ipc->lock, flags); diff --git a/src/ipc/byt-ipc.c b/src/ipc/byt-ipc.c index 8897bb9..e7c1d78 100644 --- a/src/ipc/byt-ipc.c +++ b/src/ipc/byt-ipc.c @@ -194,6 +194,8 @@ void ipc_platform_send_msg(struct ipc *ipc) shim_write(SHIM_IPCDL, msg->header); shim_write(SHIM_IPCDH, SHIM_IPCDH_BUSY);
+ list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); } diff --git a/src/ipc/cnl-ipc.c b/src/ipc/cnl-ipc.c index cd5e825..5ccc345 100644 --- a/src/ipc/cnl-ipc.c +++ b/src/ipc/cnl-ipc.c @@ -168,6 +168,8 @@ void ipc_platform_send_msg(struct ipc *ipc) ipc_write(IPC_DIPCIDD, 0); ipc_write(IPC_DIPCIDR, 0x80000000 | msg->header);
+ list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); } diff --git a/src/ipc/hsw-ipc.c b/src/ipc/hsw-ipc.c index 4a16f41..7a1dd72 100644 --- a/src/ipc/hsw-ipc.c +++ b/src/ipc/hsw-ipc.c @@ -184,6 +184,8 @@ void ipc_platform_send_msg(struct ipc *ipc) /* now interrupt host to tell it we have message sent */ shim_write(SHIM_IPCD, msg->header | SHIM_IPCD_BUSY);
+ list_item_append(&msg->list, &ipc->empty_list); + out: spin_unlock_irq(&ipc->lock, flags); }