Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73df78f5 authored by SathishKumar Mani's avatar SathishKumar Mani Committed by The Android Automerger
Browse files

alsa_sound: change voice-call stop sequence



When application processor is paired with an external modem, stop
command should be sent to the DSP on the modem before closing the
Slimbus channels on the application processor.

Bug: 7313016
Change-Id: Ibafeaf9a9badbf32cc955c4e8b5c81e5efdcbb0c
Signed-off-by: default avatarIliyan Malchev <malchev@google.com>
parent d765cd64
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -1088,6 +1088,21 @@ static status_t s_close(alsa_handle_t *handle)
    handle->rxHandle = 0;
    ALOGV("s_close: handle %p h %p", handle, h);
    if (h) {
        if ((!strcmp(handle->useCase, SND_USE_CASE_VERB_VOICECALL) ||
             !strcmp(handle->useCase, SND_USE_CASE_MOD_PLAY_VOICE)) &&
            platform_is_Fusion3()) {
#ifdef QCOM_CSDCLIENT_ENABLED
            if (csd_stop_voice == NULL) {
                ALOGE("dlsym:Error:%s Loading csd_client_disable_device", dlerror());
            } else {
                err = csd_stop_voice();
                if (err < 0) {
                    ALOGE("s_close: csd_client error %d\n", err);
                }
            }
#endif
        }

        ALOGV("s_close rxHandle\n");
        err = pcm_close(h);
        if(err != NO_ERROR) {
@@ -1105,21 +1120,6 @@ static status_t s_close(alsa_handle_t *handle)
            ALOGE("s_close: pcm_close failed for handle with err %d", err);
        }

        if ((!strcmp(handle->useCase, SND_USE_CASE_VERB_VOICECALL) ||
             !strcmp(handle->useCase, SND_USE_CASE_MOD_PLAY_VOICE)) &&
            platform_is_Fusion3()) {
#ifdef QCOM_CSDCLIENT_ENABLED
            if (csd_stop_voice == NULL) {
                ALOGE("dlsym:Error:%s Loading csd_client_disable_device", dlerror());
            } else {
                err = csd_stop_voice();
                if (err < 0) {
                    ALOGE("s_close: csd_client error %d\n", err);
                }
            }
#endif
        }

        disableDevice(handle);
    } else if((!strcmp(handle->useCase, SND_USE_CASE_VERB_HIFI_LOW_POWER)) ||
              (!strcmp(handle->useCase, SND_USE_CASE_MOD_PLAY_LPA)) ||