On 1/22/19 1:35 AM, Daniel Baluta wrote:
+static int byt_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) +{
u64 cmd = msg->header;
/* send the message */
sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data,
msg->msg_size);
I was wondering if the mailbox shared memory wouldn't be better implemented as a queue. Do you support playing multiple streams in parallel?
We have this use case where we need to to memory to memory decoding/encoding with lots of streams in parallel.
Sorry Daniel, I didn't get your point.
we do support multiple streams in parallel and there's been quite a few issues fixed in the IPC mechanisms due to concurrency. The IPC mechanism is serialized however since there are only few resources available, typically only a couple of doorbell registers and a small memory window. For multiple streams the PCM data is exchanged over DMA typically - the streams don't go over the IPC channel but the information related to a stream is passed using a tag or ID.
Can you clarify what you had in mind?