[Sound-open-firmware] [PATCH] ipc: reply: Add message replies to component creation.

Liam Girdwood liam.r.girdwood at linux.intel.com
Mon Aug 21 21:34:38 CEST 2017


Make sure we return an error or 0 after component creation.

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

diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c
index bd3b21d..681bf64 100644
--- a/src/ipc/intel-ipc.c
+++ b/src/ipc/intel-ipc.c
@@ -622,11 +622,15 @@ static int ipc_glb_tplg_comp_new(uint32_t header)
 	/* register component */
 	ret = ipc_comp_new(_ipc, comp);
 	if (ret < 0) {
-		trace_ipc_error("etc");
+		trace_ipc_error("cn1");
 		return ret;
 	}
 
 	/* write component values to the outbox */
+	reply.rhdr.hdr.size = sizeof(reply);
+	reply.rhdr.hdr.cmd = header;
+	reply.rhdr.error = 0;
+	reply.offset = 0; /* TODO: set this up for mmaped components */
 	mailbox_outbox_write(0, &reply, sizeof(reply));
 	return 0;
 }
@@ -634,19 +638,47 @@ static int ipc_glb_tplg_comp_new(uint32_t header)
 static int ipc_glb_tplg_buffer_new(uint32_t header)
 {
 	struct sof_ipc_buffer *ipc_buffer = _ipc->comp_data;
+	struct sof_ipc_comp_reply reply;
+	int ret;
 
 	trace_ipc("Ibn");
 
-	return ipc_buffer_new(_ipc, ipc_buffer);
+	ret = ipc_buffer_new(_ipc, ipc_buffer);
+	if (ret < 0) {
+		trace_ipc_error("bn1");
+		return ret;
+	}
+
+	/* write component values to the outbox */
+	reply.rhdr.hdr.size = sizeof(reply);
+	reply.rhdr.hdr.cmd = header;
+	reply.rhdr.error = 0;
+	reply.offset = 0; /* TODO: set this up for mmaped components */
+	mailbox_outbox_write(0, &reply, sizeof(reply));
+	return 0;
 }
 
 static int ipc_glb_tplg_pipe_new(uint32_t header)
 {
 	struct sof_ipc_pipe_new *ipc_pipeline = _ipc->comp_data;
+	struct sof_ipc_comp_reply reply;
+	int ret;
 
 	trace_ipc("Ipn");
 
-	return ipc_pipeline_new(_ipc, ipc_pipeline);
+	ret = ipc_pipeline_new(_ipc, ipc_pipeline);
+	if (ret < 0) {
+		trace_ipc_error("pn1");
+		return ret;
+	}
+
+	/* write component values to the outbox */
+	reply.rhdr.hdr.size = sizeof(reply);
+	reply.rhdr.hdr.cmd = header;
+	reply.rhdr.error = 0;
+	reply.offset = 0; /* TODO: set this up for mmaped components */
+	mailbox_outbox_write(0, &reply, sizeof(reply));
+	return 0;
 }
 
 static int ipc_glb_tplg_pipe_complete(uint32_t header)
-- 
2.11.0



More information about the Sound-open-firmware mailing list