summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorVenkata Narendra Kumar Gutta <vgutta@codeaurora.org>2016-01-13 12:40:29 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:18:11 -0700
commited4192660712a01160ef2f7b61f532d9aeef2cca (patch)
treedb20d6a2a171f6fd90cff3c3d6daf29d9e8c1167 /sound/soc
parent33fa8b5095891d7ed8ad9447cdb105049d2dd321 (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.c155
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;
}