2019-03-29 14:12:17 +08:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
2019-03-22 14:52:12 +08:00
|
|
|
From: Pawel Furtak <pawel.furtak@intel.com>
|
|
|
|
Date: Mon, 4 Mar 2019 19:22:12 +0100
|
2019-03-29 14:12:17 +08:00
|
|
|
Subject: [PATCH] ASoC: Intel: Skl: Virt: Remove support for DSP IPC on FE
|
2019-03-22 14:52:12 +08:00
|
|
|
|
2019-03-23 08:48:44 +08:00
|
|
|
In current design of virtio audio mediator, there is no need to
|
|
|
|
froward DSP IPC from FE to BE
|
|
|
|
|
|
|
|
Change-Id: I00f7663df025f4269ff97308c2ec1a3106059e29
|
2019-03-22 14:52:12 +08:00
|
|
|
Tracked-On: OAM-76766
|
|
|
|
Signed-off-by: Pawel Furtak <pawel.furtak@intel.com>
|
2019-03-23 08:48:44 +08:00
|
|
|
Reviewed-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
|
|
|
|
Tested-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
|
2019-03-22 14:52:12 +08:00
|
|
|
---
|
|
|
|
.../soc/intel/skylake/virtio/skl-virtio-fe.c | 59 ++-----------------
|
|
|
|
1 file changed, 5 insertions(+), 54 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/sound/soc/intel/skylake/virtio/skl-virtio-fe.c b/sound/soc/intel/skylake/virtio/skl-virtio-fe.c
|
2020-10-27 02:14:06 +08:00
|
|
|
index 1085d75cfa09..8b54d0808eb9 100644
|
2019-03-22 14:52:12 +08:00
|
|
|
--- a/sound/soc/intel/skylake/virtio/skl-virtio-fe.c
|
|
|
|
+++ b/sound/soc/intel/skylake/virtio/skl-virtio-fe.c
|
|
|
|
@@ -260,65 +260,16 @@ static int vfe_put_inbox_buffer(struct snd_skl_vfe *vfe,
|
|
|
|
static int vfe_send_dsp_ipc_msg(struct snd_skl_vfe *vfe,
|
|
|
|
struct ipc_message *msg)
|
|
|
|
{
|
|
|
|
- struct scatterlist sgs[2];
|
|
|
|
- struct vfe_dsp_ipc_msg *ipc_msg;
|
|
|
|
- int data_size = sizeof(ipc_msg->header) + sizeof(ipc_msg->data_size);
|
|
|
|
-
|
|
|
|
- if (msg->tx_data != NULL && msg->tx_size > 0) {
|
|
|
|
- data_size += msg->tx_size;
|
|
|
|
- } else {
|
|
|
|
- msg->complete = true;
|
|
|
|
- list_del(&msg->list);
|
|
|
|
- sst_ipc_tx_msg_reply_complete(&vfe->sdev.skl_sst->ipc, msg);
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- ipc_msg = kzalloc(data_size, GFP_ATOMIC);
|
|
|
|
- if (!ipc_msg)
|
|
|
|
- return -ENOMEM;
|
|
|
|
+ msg->complete = true;
|
|
|
|
+ list_del(&msg->list);
|
|
|
|
+ sst_ipc_tx_msg_reply_complete(&vfe->sdev.skl_sst->ipc,
|
|
|
|
+ msg);
|
|
|
|
|
|
|
|
- ipc_msg->header = msg->header;
|
|
|
|
- ipc_msg->ipc = msg;
|
|
|
|
- ipc_msg->data_size = msg->tx_size;
|
|
|
|
-
|
|
|
|
- if (msg->tx_data != NULL && msg->tx_size > 0)
|
|
|
|
- memcpy(&ipc_msg->data, msg->tx_data, msg->tx_size);
|
|
|
|
-
|
|
|
|
- sg_init_table(sgs, 2);
|
|
|
|
- sg_set_buf(&sgs[SKL_VIRTIO_IPC_MSG],
|
|
|
|
- ipc_msg, data_size);
|
|
|
|
- sg_set_buf(&sgs[SKL_VIRTIO_IPC_REPLY],
|
|
|
|
- msg->rx_data, msg->rx_size);
|
|
|
|
-
|
|
|
|
- vfe->msg = msg;
|
|
|
|
-
|
|
|
|
- return vfe_send_virtio_msg(vfe, vfe->ipc_cmd_tx_vq,
|
|
|
|
- sgs, 2, ipc_msg, true);
|
|
|
|
+ return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
-/* send the IPC message completed, this means the BE has received the cmd */
|
|
|
|
static void vfe_cmd_tx_done(struct virtqueue *vq)
|
|
|
|
{
|
|
|
|
- struct snd_skl_vfe *vfe = vq->vdev->priv;
|
|
|
|
- struct vfe_dsp_ipc_msg *msg;
|
|
|
|
- unsigned long irq_flags;
|
|
|
|
- unsigned int buflen = 0;
|
|
|
|
-
|
|
|
|
- while (true) {
|
|
|
|
- spin_lock_irqsave(&vfe->ipc_vq_lock, irq_flags);
|
|
|
|
- msg = virtqueue_get_buf(vfe->ipc_cmd_tx_vq, &buflen);
|
|
|
|
- spin_unlock_irqrestore(&vfe->ipc_vq_lock, irq_flags);
|
|
|
|
-
|
|
|
|
- if (msg == NULL)
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- msg->ipc->complete = true;
|
|
|
|
- list_del(&msg->ipc->list);
|
|
|
|
- sst_ipc_tx_msg_reply_complete(&vfe->sdev.skl_sst->ipc,
|
|
|
|
- msg->ipc);
|
|
|
|
- kfree(msg);
|
|
|
|
- }
|
|
|
|
}
|
|
|
|
|
|
|
|
static void vfe_cmd_handle_rx(struct virtqueue *vq)
|
|
|
|
--
|
2019-04-08 18:08:36 +08:00
|
|
|
https://clearlinux.org
|
2019-03-22 14:52:12 +08:00
|
|
|
|