From 22fa30cd3935d2093def34be4b2c9423189dece8 Mon Sep 17 00:00:00 2001 From: Dipesh Gandhi Date: Mon, 18 Jun 2018 20:24:55 +0530 Subject: [PATCH] tegra-virt-alt: nvaudio_ivc_send_receive added Currently exposed api's have limitations of receive request getting processed out of order. Change make sure to process ack/receive based message before queueing other. Also removing unused api's as code cleanup. Bug 2403937 Change-Id: Ic3141aac53bc0904dfcad699d419b9ca8aaea155 Signed-off-by: Dipesh Gandhi Reviewed-on: https://git-master.nvidia.com/r/1927929 Signed-off-by: Dipesh Gandhi (cherry picked from commit d6c592f7ada5ecbcd9af290149af01b52b89b8a3) Reviewed-on: https://git-master.nvidia.com/r/1753352 GVS: Gerrit_Virtual_Submit Reviewed-by: Viraj Karandikar Reviewed-by: Nitin Pai Reviewed-by: mobile promotions Tested-by: mobile promotions --- sound/soc/tegra-alt/tegra210_adsp_alt.c | 70 ++++++++++++++----------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/sound/soc/tegra-alt/tegra210_adsp_alt.c b/sound/soc/tegra-alt/tegra210_adsp_alt.c index 60350ff3..ca8968bf 100644 --- a/sound/soc/tegra-alt/tegra210_adsp_alt.c +++ b/sound/soc/tegra-alt/tegra210_adsp_alt.c @@ -1850,14 +1850,16 @@ static int tegra_ivc_start_playback( msg.cmd = NVAUDIO_START_PLAYBACK; msg.params.dmaif_info.id = ivc_msg_admaif_id; msg.ack_required = ack_required; - err = nvaudio_ivc_send_retry(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - if (ack_required && err >= 0) { - nvaudio_ivc_receive(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - } + + + if (ack_required) + err = nvaudio_ivc_send_receive(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); + else + err = nvaudio_ivc_send_retry(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); return err; } @@ -1873,14 +1875,15 @@ static int tegra_ivc_start_capture( msg.cmd = NVAUDIO_START_CAPTURE; msg.ack_required = ack_required; msg.params.dmaif_info.id = ivc_msg_admaif_id; - err = nvaudio_ivc_send_retry(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - if (ack_required && err >= 0) { - nvaudio_ivc_receive(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - } + + if (ack_required) + err = nvaudio_ivc_send_receive(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); + else + err = nvaudio_ivc_send_retry(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); return err; } @@ -1896,14 +1899,15 @@ static int tegra_ivc_stop_playback( msg.cmd = NVAUDIO_STOP_PLAYBACK; msg.params.dmaif_info.id = ivc_msg_admaif_id; msg.ack_required = ack_required; - err = nvaudio_ivc_send_retry(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - if (ack_required && err >= 0) { - nvaudio_ivc_receive(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - } + + if (ack_required) + err = nvaudio_ivc_send_receive(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); + else + err = nvaudio_ivc_send_retry(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); return err; } @@ -1919,14 +1923,16 @@ static int tegra_ivc_stop_capture( msg.cmd = NVAUDIO_STOP_CAPTURE; msg.params.dmaif_info.id = ivc_msg_admaif_id; msg.ack_required = ack_required; - err = nvaudio_ivc_send_retry(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - if (ack_required && err >= 0) { - nvaudio_ivc_receive(adsp->hivc_client, - &msg, - sizeof(struct nvaudio_ivc_msg)); - } + + if (ack_required) + err = nvaudio_ivc_send_receive(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); + else + err = nvaudio_ivc_send_retry(adsp->hivc_client, + &msg, + sizeof(struct nvaudio_ivc_msg)); + return err; }