clear-pkgs-linux-iot-lts2018/1049-ASoC-Intel-Skl-Virt-Re...

96 lines
2.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Pawel Furtak <pawel.furtak@intel.com>
Date: Mon, 4 Mar 2019 19:22:12 +0100
Subject: [PATCH] ASoC: Intel: Skl: Virt: Remove support for DSP IPC on FE
In current design of virtio audio mediator, there is no need to
froward DSP IPC from FE to BE
Change-Id: I00f7663df025f4269ff97308c2ec1a3106059e29
Tracked-On: OAM-76766
Signed-off-by: Pawel Furtak <pawel.furtak@intel.com>
Reviewed-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
Tested-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
---
.../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
index 1085d75cfa09..8b54d0808eb9 100644
--- 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)
--
https://clearlinux.org