diff options
author | Venkata Narendra Kumar Gutta <vgutta@codeaurora.org> | 2016-01-13 12:40:29 +0530 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:18:11 -0700 |
commit | ed4192660712a01160ef2f7b61f532d9aeef2cca (patch) | |
tree | db20d6a2a171f6fd90cff3c3d6daf29d9e8c1167 /sound/soc | |
parent | 33fa8b5095891d7ed8ad9447cdb105049d2dd321 (diff) |
ASoC: msm: qdsp6v2: Don't register to modem for SSR callbacks
Voice driver doesn't create any sessions related to voice call
on modem and hence there is no clean up on APSS is required
when modem SSR is triggered. Cleanup the code in voice driver
which is executed during modem SSR.
CRs-Fixed: 955696
Change-Id: I7536162e49b0eb56f63e7c8e59e0c050123c05fe
Signed-off-by: Venkata Narendra Kumar Gutta <vgutta@codeaurora.org>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/msm/qdsp6v2/q6voice.c | 155 |
1 files changed, 45 insertions, 110 deletions
diff --git a/sound/soc/msm/qdsp6v2/q6voice.c b/sound/soc/msm/qdsp6v2/q6voice.c index e059589cdc83..767a57307a92 100644 --- a/sound/soc/msm/qdsp6v2/q6voice.c +++ b/sound/soc/msm/qdsp6v2/q6voice.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -474,9 +474,6 @@ static void voc_set_error_state(uint16_t reset_proc) int i; for (i = 0; i < MAX_VOC_SESSIONS; i++) { - if (reset_proc == APR_DEST_MODEM && i == VOC_PATH_FULL) - continue; - v = &common.voice[i]; if (v != NULL) v->voc_state = VOC_ERROR; @@ -586,7 +583,6 @@ static int voice_get_cvd_int_version(char *cvd_ver_string) static int voice_apr_register(uint32_t session_id) { - void *modem_mvm, *modem_cvs, *modem_cvp; pr_debug("%s\n", __func__); @@ -604,21 +600,6 @@ static int voice_apr_register(uint32_t session_id) pr_err("%s: Unable to register MVM\n", __func__); goto err; } - - /* - * Register with modem for SSR callback for voice, volte and - * modem based QCHAT calls. The APR handle is not stored since - * it is used only to receive notifications and not for - * communication - */ - if (!is_voip_session(session_id)) { - modem_mvm = apr_register("MODEM", "MVM", - qdsp_mvm_callback, - 0xFFFFFFFF, &common); - if (modem_mvm == NULL) - pr_err("%s: Unable to register MVM for MODEM\n", - __func__); - } } if (common.apr_q6_cvs == NULL) { @@ -633,20 +614,6 @@ static int voice_apr_register(uint32_t session_id) goto err; } rtac_set_voice_handle(RTAC_CVS, common.apr_q6_cvs); - /* - * Register with modem for SSR callback for voice, volte and - * modem based QCHAT calls. The APR handle is not stored since - * it is used only to receive notifications and not for - * communication - */ - if (!is_voip_session(session_id)) { - modem_cvs = apr_register("MODEM", "CVS", - qdsp_cvs_callback, - 0xFFFFFFFF, &common); - if (modem_cvs == NULL) - pr_err("%s: Unable to register CVS for MODEM\n", - __func__); - } } if (common.apr_q6_cvp == NULL) { @@ -661,20 +628,6 @@ static int voice_apr_register(uint32_t session_id) goto err; } rtac_set_voice_handle(RTAC_CVP, common.apr_q6_cvp); - /* - * Register with modem for SSR callback for voice, volte and - * modem based QCHAT calls. The APR handle is not stored since - * it is used only to receive notifications and not for - * communication - */ - if (!is_voip_session(session_id)) { - modem_cvp = apr_register("MODEM", "CVP", - qdsp_cvp_callback, - 0xFFFFFFFF, &common); - if (modem_cvp == NULL) - pr_err("%s: Unable to register CVP for MODEM\n", - __func__); - } } mutex_unlock(&common.common_lock); @@ -6299,40 +6252,35 @@ static int32_t qdsp_mvm_callback(struct apr_client_data *data, void *priv) data->payload_size, data->opcode); if (data->opcode == RESET_EVENTS) { - - if (data->reset_proc == APR_DEST_MODEM) { - pr_debug("%s: Received MODEM reset event\n", __func__); - - } else { - pr_debug("%s: Reset event received in Voice service\n", + pr_debug("%s: Reset event received in Voice service\n", __func__); - if (common.mvs_info.ssr_cb) { - pr_debug("%s: Informing reset event to VoIP\n", + if (common.mvs_info.ssr_cb) { + pr_debug("%s: Informing reset event to VoIP\n", __func__); - common.mvs_info.ssr_cb(data->opcode, - common.mvs_info.private_data); - } + common.mvs_info.ssr_cb(data->opcode, + common.mvs_info.private_data); + } - apr_reset(c->apr_q6_mvm); - c->apr_q6_mvm = NULL; + apr_reset(c->apr_q6_mvm); + c->apr_q6_mvm = NULL; - /* clean up memory handle */ - c->cal_mem_handle = 0; - c->rtac_mem_handle = 0; - cal_utils_clear_cal_block_q6maps(MAX_VOICE_CAL_TYPES, + /* clean up memory handle */ + c->cal_mem_handle = 0; + c->rtac_mem_handle = 0; + cal_utils_clear_cal_block_q6maps(MAX_VOICE_CAL_TYPES, common.cal_data); - rtac_clear_mapping(VOICE_RTAC_CAL); + rtac_clear_mapping(VOICE_RTAC_CAL); - /* Sub-system restart is applicable to all sessions. */ - for (i = 0; i < MAX_VOC_SESSIONS; i++) { - c->voice[i].mvm_handle = 0; - c->voice[i].shmem_info.mem_handle = 0; - } + /* Sub-system restart is applicable to all sessions. */ + for (i = 0; i < MAX_VOC_SESSIONS; i++) { + c->voice[i].mvm_handle = 0; + c->voice[i].shmem_info.mem_handle = 0; + } /* Free the ION memory and clear handles for Source Tracking */ - if (is_source_tracking_shared_memomry_allocated()) { - msm_audio_ion_free( + if (is_source_tracking_shared_memomry_allocated()) { + msm_audio_ion_free( common.source_tracking_sh_mem.sh_mem_block.client, common.source_tracking_sh_mem.sh_mem_block.handle); common.source_tracking_sh_mem.mem_handle = 0; @@ -6340,7 +6288,6 @@ static int32_t qdsp_mvm_callback(struct apr_client_data *data, void *priv) NULL; common.source_tracking_sh_mem.sh_mem_block.handle = NULL; - } } /* clean up srvcc rec flag */ c->srvcc_rec_flag = false; @@ -6525,26 +6472,22 @@ static int32_t qdsp_cvs_callback(struct apr_client_data *data, void *priv) data->payload_size, data->opcode); if (data->opcode == RESET_EVENTS) { - if (data->reset_proc == APR_DEST_MODEM) { - pr_debug("%s: Received Modem reset event\n", __func__); - - } else { - pr_debug("%s: Reset event received in Voice service\n", - __func__); + pr_debug("%s: Reset event received in Voice service\n", + __func__); - apr_reset(c->apr_q6_cvs); - c->apr_q6_cvs = NULL; + apr_reset(c->apr_q6_cvs); + c->apr_q6_cvs = NULL; - /* Sub-system restart is applicable to all sessions. */ - for (i = 0; i < MAX_VOC_SESSIONS; i++) - c->voice[i].cvs_handle = 0; + /* Sub-system restart is applicable to all sessions. */ + for (i = 0; i < MAX_VOC_SESSIONS; i++) + c->voice[i].cvs_handle = 0; - cal_utils_clear_cal_block_q6maps(MAX_VOICE_CAL_TYPES, + cal_utils_clear_cal_block_q6maps(MAX_VOICE_CAL_TYPES, common.cal_data); /* Free the ION memory and clear handles for Source Tracking */ - if (is_source_tracking_shared_memomry_allocated()) { - msm_audio_ion_free( + if (is_source_tracking_shared_memomry_allocated()) { + msm_audio_ion_free( common.source_tracking_sh_mem.sh_mem_block.client, common.source_tracking_sh_mem.sh_mem_block.handle); common.source_tracking_sh_mem.mem_handle = 0; @@ -6552,9 +6495,7 @@ static int32_t qdsp_cvs_callback(struct apr_client_data *data, void *priv) NULL; common.source_tracking_sh_mem.sh_mem_block.handle = NULL; - } } - voc_set_error_state(data->reset_proc); return 0; } @@ -6805,28 +6746,24 @@ static int32_t qdsp_cvp_callback(struct apr_client_data *data, void *priv) c = priv; if (data->opcode == RESET_EVENTS) { - if (data->reset_proc == APR_DEST_MODEM) { - pr_debug("%s: Received Modem reset event\n", __func__); - - } else { - pr_debug("%s: Reset event received in Voice service\n", - __func__); + pr_debug("%s: Reset event received in Voice service\n", + __func__); - apr_reset(c->apr_q6_cvp); - c->apr_q6_cvp = NULL; - cal_utils_clear_cal_block_q6maps(MAX_VOICE_CAL_TYPES, + apr_reset(c->apr_q6_cvp); + c->apr_q6_cvp = NULL; + cal_utils_clear_cal_block_q6maps(MAX_VOICE_CAL_TYPES, common.cal_data); - /* Sub-system restart is applicable to all sessions. */ - for (i = 0; i < MAX_VOC_SESSIONS; i++) - c->voice[i].cvp_handle = 0; + /* Sub-system restart is applicable to all sessions. */ + for (i = 0; i < MAX_VOC_SESSIONS; i++) + c->voice[i].cvp_handle = 0; - /* - * Free the ION memory and clear handles for - * Source Tracking - */ - if (is_source_tracking_shared_memomry_allocated()) { - msm_audio_ion_free( + /* + * Free the ION memory and clear handles for + * Source Tracking + */ + if (is_source_tracking_shared_memomry_allocated()) { + msm_audio_ion_free( common.source_tracking_sh_mem.sh_mem_block.client, common.source_tracking_sh_mem.sh_mem_block.handle); common.source_tracking_sh_mem.mem_handle = 0; @@ -6834,9 +6771,7 @@ static int32_t qdsp_cvp_callback(struct apr_client_data *data, void *priv) NULL; common.source_tracking_sh_mem.sh_mem_block.handle = NULL; - } } - voc_set_error_state(data->reset_proc); return 0; } |