mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-09-22 04:15:02 +00:00
Merge "ASoC: msm: qdsp6v2: destroy CVD sessions during call teardown"
This commit is contained in:
commit
4826076232
4 changed files with 27 additions and 1 deletions
|
@ -62,6 +62,8 @@ Required properties:
|
|||
Required properties:
|
||||
|
||||
- compatible : "qcom,msm-pcm-voice"
|
||||
- qcom,destroy-cvd : Flag indicating whether to destroy cvd at
|
||||
the end of call for low memory targets
|
||||
|
||||
* msm-voice-host-pcm
|
||||
|
||||
|
@ -298,6 +300,11 @@ Example:
|
|||
compatible = "qcom,msm-voip-dsp";
|
||||
};
|
||||
|
||||
qcom,msm-pcm-voice {
|
||||
compatible = "qcom,msm-pcm-voice";
|
||||
qcom,destroy-cvd;
|
||||
};
|
||||
|
||||
qcom,msm-voice-host-pcm {
|
||||
compatible = "qcom,msm-voice-host-pcm";
|
||||
};
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <sound/initval.h>
|
||||
#include <sound/control.h>
|
||||
#include <asm/dma.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
#include "msm-pcm-voice-v2.h"
|
||||
#include "q6voice.h"
|
||||
|
@ -560,6 +561,8 @@ static struct snd_soc_platform_driver msm_soc_platform = {
|
|||
static int msm_pcm_probe(struct platform_device *pdev)
|
||||
{
|
||||
int rc;
|
||||
bool destroy_cvd = false;
|
||||
const char *is_destroy_cvd = "qcom,destroy-cvd";
|
||||
|
||||
if (!is_voc_initialized()) {
|
||||
pr_debug("%s: voice module not initialized yet, deferring probe()\n",
|
||||
|
@ -582,6 +585,11 @@ static int msm_pcm_probe(struct platform_device *pdev)
|
|||
|
||||
if (pdev->dev.of_node)
|
||||
dev_set_name(&pdev->dev, "%s", "msm-pcm-voice");
|
||||
pr_debug("%s: dev name %s\n",
|
||||
__func__, dev_name(&pdev->dev));
|
||||
destroy_cvd = of_property_read_bool(pdev->dev.of_node,
|
||||
is_destroy_cvd);
|
||||
voc_set_destroy_cvd_flag(destroy_cvd);
|
||||
|
||||
pr_debug("%s: dev name %s\n", __func__, dev_name(&pdev->dev));
|
||||
rc = snd_soc_register_platform(&pdev->dev,
|
||||
|
|
|
@ -983,7 +983,7 @@ static int voice_destroy_mvm_cvs_session(struct voice_data *v)
|
|||
is_qchat_session(v->session_id) ||
|
||||
is_volte_session(v->session_id) ||
|
||||
is_vowlan_session(v->session_id) ||
|
||||
v->voc_state == VOC_ERROR) {
|
||||
v->voc_state == VOC_ERROR || common.is_destroy_cvd) {
|
||||
/* Destroy CVS. */
|
||||
pr_debug("%s: CVS destroy session\n", __func__);
|
||||
|
||||
|
@ -1391,6 +1391,12 @@ int voc_enable_dtmf_rx_detection(uint32_t session_id, uint32_t enable)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void voc_set_destroy_cvd_flag(bool is_destroy_cvd)
|
||||
{
|
||||
pr_debug("%s: %d\n", __func__, is_destroy_cvd);
|
||||
common.is_destroy_cvd = is_destroy_cvd;
|
||||
}
|
||||
|
||||
int voc_alloc_cal_shared_memory(void)
|
||||
{
|
||||
int rc = 0;
|
||||
|
@ -6274,6 +6280,9 @@ static int __init voice_init(void)
|
|||
/* Initialize MVS info. */
|
||||
common.mvs_info.network_type = VSS_NETWORK_ID_DEFAULT;
|
||||
|
||||
/* Initialize is low memory flag */
|
||||
common.is_destroy_cvd = false;
|
||||
|
||||
mutex_init(&common.common_lock);
|
||||
|
||||
/* Initialize session id with vsid */
|
||||
|
|
|
@ -1474,6 +1474,7 @@ struct common_data {
|
|||
struct voice_data voice[MAX_VOC_SESSIONS];
|
||||
|
||||
bool srvcc_rec_flag;
|
||||
bool is_destroy_cvd;
|
||||
};
|
||||
|
||||
struct voice_session_itr {
|
||||
|
@ -1601,5 +1602,6 @@ int voc_set_ext_ec_ref(uint16_t port_id, bool state);
|
|||
int voc_update_amr_vocoder_rate(uint32_t session_id);
|
||||
int voc_disable_device(uint32_t session_id);
|
||||
int voc_enable_device(uint32_t session_id);
|
||||
void voc_set_destroy_cvd_flag(bool is_destroy_cvd);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue