[Sound-open-firmware] [PATCH] hsw: ipc: ipcx/ipcd are only used for doorbell

Liam Girdwood liam.r.girdwood at linux.intel.com
Thu Mar 22 17:00:32 CET 2018


IPCX and IPCD are 32bit wide and should only be used for doorbell on
HSW and BDW. Payload should be in mailbox.

Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
---
 src/ipc/hsw-ipc.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/ipc/hsw-ipc.c b/src/ipc/hsw-ipc.c
index 5bfdf93a..489d6ef9 100644
--- a/src/ipc/hsw-ipc.c
+++ b/src/ipc/hsw-ipc.c
@@ -80,7 +80,7 @@ out:
 	spin_unlock_irq(&_ipc->lock, flags);
 
 	/* clear DONE bit - tell Host we have completed */
-	shim_write(SHIM_IPCD, shim_read(SHIM_IPCD) & ~SHIM_IPCD_DONE);
+	shim_write(SHIM_IPCD, 0);
 
 	/* unmask Done interrupt */
 	shim_write(SHIM_IMRD, shim_read(SHIM_IMRD) & ~SHIM_IMRD_DONE);
@@ -123,7 +123,6 @@ void ipc_platform_do_cmd(struct ipc *ipc)
 {
 	struct intel_ipc_data *iipc = ipc_get_drvdata(ipc);
 	struct sof_ipc_reply reply;
-	uint32_t ipcx;
 	int32_t err;
 
 	tracev_ipc("Cmd");
@@ -146,10 +145,7 @@ done:
 	ipc->host_pending = 0;
 
 	/* clear BUSY bit and set DONE bit - accept new messages */
-	ipcx = shim_read(SHIM_IPCX);
-	ipcx &= ~SHIM_IPCX_BUSY;
-	ipcx |= SHIM_IPCX_DONE;
-	shim_write(SHIM_IPCX, ipcx);
+	shim_write(SHIM_IPCX, SHIM_IPCX_DONE);
 
 	/* unmask busy interrupt */
 	shim_write(SHIM_IMRD, shim_read(SHIM_IMRD) & ~SHIM_IMRD_BUSY);
@@ -191,7 +187,7 @@ void ipc_platform_send_msg(struct ipc *ipc)
 	tracev_ipc("Msg");
 
 	/* now interrupt host to tell it we have message sent */
-	shim_write(SHIM_IPCD, msg->header | SHIM_IPCD_BUSY);
+	shim_write(SHIM_IPCD, SHIM_IPCD_BUSY);
 
 	list_item_append(&msg->list, &ipc->empty_list);
 
-- 
2.14.1



More information about the Sound-open-firmware mailing list