Loading sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +22 −7 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ struct msm_compr_pdata { struct msm_compr_dec_params *dec_params[MSM_FRONTEND_DAI_MAX]; struct msm_compr_ch_map *ch_map[MSM_FRONTEND_DAI_MAX]; int32_t ion_fd[MSM_FRONTEND_DAI_MAX]; bool is_in_use[MSM_FRONTEND_DAI_MAX]; }; struct msm_compr_audio { Loading Loading @@ -1580,12 +1581,17 @@ static int msm_compr_playback_open(struct snd_compr_stream *cstream) { struct snd_compr_runtime *runtime = cstream->runtime; struct snd_soc_pcm_runtime *rtd = cstream->private_data; struct msm_compr_audio *prtd; struct msm_compr_audio *prtd = NULL; struct msm_compr_pdata *pdata = snd_soc_platform_get_drvdata(rtd->platform); int ret = 0; pr_debug("%s\n", __func__); if (pdata->is_in_use[rtd->dai_link->be_id] == true) { pr_err("%s: %s is already in use,err: %d ", __func__, rtd->dai_link->cpu_dai_name, -EBUSY); return -EBUSY; } prtd = kzalloc(sizeof(struct msm_compr_audio), GFP_KERNEL); if (prtd == NULL) { pr_err("Failed to allocate memory for msm_compr_audio\n"); Loading @@ -1597,14 +1603,14 @@ static int msm_compr_playback_open(struct snd_compr_stream *cstream) pdata->cstream[rtd->dai_link->be_id] = cstream; pdata->audio_effects[rtd->dai_link->be_id] = kzalloc(sizeof(struct msm_compr_audio_effects), GFP_KERNEL); if (!pdata->audio_effects[rtd->dai_link->be_id]) { if (pdata->audio_effects[rtd->dai_link->be_id] == NULL) { pr_err("%s: Could not allocate memory for effects\n", __func__); ret = -ENOMEM; goto effect_err; } pdata->dec_params[rtd->dai_link->be_id] = kzalloc(sizeof(struct msm_compr_dec_params), GFP_KERNEL); if (!pdata->dec_params[rtd->dai_link->be_id]) { if (pdata->dec_params[rtd->dai_link->be_id] == NULL) { pr_err("%s: Could not allocate memory for dec params\n", __func__); ret = -ENOMEM; Loading Loading @@ -1665,14 +1671,17 @@ static int msm_compr_playback_open(struct snd_compr_stream *cstream) if (ret < 0) goto map_err; } pdata->is_in_use[rtd->dai_link->be_id] = true; return 0; map_err: q6asm_audio_client_free(prtd->audio_client); ac_err: kfree(pdata->dec_params[rtd->dai_link->be_id]); pdata->dec_params[rtd->dai_link->be_id] = NULL; param_err: kfree(pdata->audio_effects[rtd->dai_link->be_id]); pdata->audio_effects[rtd->dai_link->be_id] = NULL; effect_err: pdata->cstream[rtd->dai_link->be_id] = NULL; runtime->private_data = NULL; Loading Loading @@ -1842,10 +1851,15 @@ static int msm_compr_playback_free(struct snd_compr_stream *cstream) q6asm_audio_client_free(ac); msm_adsp_clean_mixer_ctl_pp_event_queue(soc_prtd); if (pdata->audio_effects[soc_prtd->dai_link->be_id] != NULL) { kfree(pdata->audio_effects[soc_prtd->dai_link->be_id]); pdata->audio_effects[soc_prtd->dai_link->be_id] = NULL; } if (pdata->dec_params[soc_prtd->dai_link->be_id] != NULL) { kfree(pdata->dec_params[soc_prtd->dai_link->be_id]); pdata->dec_params[soc_prtd->dai_link->be_id] = NULL; } pdata->is_in_use[soc_prtd->dai_link->be_id] = false; kfree(prtd); runtime->private_data = NULL; Loading Loading @@ -4049,6 +4063,7 @@ static int msm_compr_probe(struct snd_soc_platform *platform) pdata->dec_params[i] = NULL; pdata->cstream[i] = NULL; pdata->ch_map[i] = NULL; pdata->is_in_use[i] = false; } snd_soc_add_platform_controls(platform, msm_compr_gapless_controls, Loading Loading
sound/soc/msm/qdsp6v2/msm-compress-q6-v2.c +22 −7 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ struct msm_compr_pdata { struct msm_compr_dec_params *dec_params[MSM_FRONTEND_DAI_MAX]; struct msm_compr_ch_map *ch_map[MSM_FRONTEND_DAI_MAX]; int32_t ion_fd[MSM_FRONTEND_DAI_MAX]; bool is_in_use[MSM_FRONTEND_DAI_MAX]; }; struct msm_compr_audio { Loading Loading @@ -1580,12 +1581,17 @@ static int msm_compr_playback_open(struct snd_compr_stream *cstream) { struct snd_compr_runtime *runtime = cstream->runtime; struct snd_soc_pcm_runtime *rtd = cstream->private_data; struct msm_compr_audio *prtd; struct msm_compr_audio *prtd = NULL; struct msm_compr_pdata *pdata = snd_soc_platform_get_drvdata(rtd->platform); int ret = 0; pr_debug("%s\n", __func__); if (pdata->is_in_use[rtd->dai_link->be_id] == true) { pr_err("%s: %s is already in use,err: %d ", __func__, rtd->dai_link->cpu_dai_name, -EBUSY); return -EBUSY; } prtd = kzalloc(sizeof(struct msm_compr_audio), GFP_KERNEL); if (prtd == NULL) { pr_err("Failed to allocate memory for msm_compr_audio\n"); Loading @@ -1597,14 +1603,14 @@ static int msm_compr_playback_open(struct snd_compr_stream *cstream) pdata->cstream[rtd->dai_link->be_id] = cstream; pdata->audio_effects[rtd->dai_link->be_id] = kzalloc(sizeof(struct msm_compr_audio_effects), GFP_KERNEL); if (!pdata->audio_effects[rtd->dai_link->be_id]) { if (pdata->audio_effects[rtd->dai_link->be_id] == NULL) { pr_err("%s: Could not allocate memory for effects\n", __func__); ret = -ENOMEM; goto effect_err; } pdata->dec_params[rtd->dai_link->be_id] = kzalloc(sizeof(struct msm_compr_dec_params), GFP_KERNEL); if (!pdata->dec_params[rtd->dai_link->be_id]) { if (pdata->dec_params[rtd->dai_link->be_id] == NULL) { pr_err("%s: Could not allocate memory for dec params\n", __func__); ret = -ENOMEM; Loading Loading @@ -1665,14 +1671,17 @@ static int msm_compr_playback_open(struct snd_compr_stream *cstream) if (ret < 0) goto map_err; } pdata->is_in_use[rtd->dai_link->be_id] = true; return 0; map_err: q6asm_audio_client_free(prtd->audio_client); ac_err: kfree(pdata->dec_params[rtd->dai_link->be_id]); pdata->dec_params[rtd->dai_link->be_id] = NULL; param_err: kfree(pdata->audio_effects[rtd->dai_link->be_id]); pdata->audio_effects[rtd->dai_link->be_id] = NULL; effect_err: pdata->cstream[rtd->dai_link->be_id] = NULL; runtime->private_data = NULL; Loading Loading @@ -1842,10 +1851,15 @@ static int msm_compr_playback_free(struct snd_compr_stream *cstream) q6asm_audio_client_free(ac); msm_adsp_clean_mixer_ctl_pp_event_queue(soc_prtd); if (pdata->audio_effects[soc_prtd->dai_link->be_id] != NULL) { kfree(pdata->audio_effects[soc_prtd->dai_link->be_id]); pdata->audio_effects[soc_prtd->dai_link->be_id] = NULL; } if (pdata->dec_params[soc_prtd->dai_link->be_id] != NULL) { kfree(pdata->dec_params[soc_prtd->dai_link->be_id]); pdata->dec_params[soc_prtd->dai_link->be_id] = NULL; } pdata->is_in_use[soc_prtd->dai_link->be_id] = false; kfree(prtd); runtime->private_data = NULL; Loading Loading @@ -4049,6 +4063,7 @@ static int msm_compr_probe(struct snd_soc_platform *platform) pdata->dec_params[i] = NULL; pdata->cstream[i] = NULL; pdata->ch_map[i] = NULL; pdata->is_in_use[i] = false; } snd_soc_add_platform_controls(platform, msm_compr_gapless_controls, Loading