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 <dipeshg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1927929
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
(cherry picked from commit d6c592f7ada5ecbcd9af290149af01b52b89b8a3)
Reviewed-on: https://git-master.nvidia.com/r/1753352
GVS: Gerrit_Virtual_Submit
Reviewed-by: Viraj Karandikar <vkarandikar@nvidia.com>
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Dipesh Gandhi
2018-06-18 20:24:55 +05:30
committed by Sameer Pujar
parent 737cefc6e0
commit 22fa30cd39

View File

@@ -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;
}