Merge "asoc: msm-lsm-client: deregister SM even if SVA is not started"

This commit is contained in:
qctecmdr 2020-12-16 02:16:31 -08:00 • committed by Gerrit - the friendly Code Review server
commit 16c4424372
2 changed files with 29 additions and 26 deletions

View file

@ -3117,22 +3117,22 @@ static int msm_lsm_close(struct snd_pcm_substream *substream)
"%s: LSM client session stopped %d\n",
__func__, ret);
/*
* Go Ahead and try de-register sound model,
* even if stop failed
*/
prtd->lsm_client->started = false;
ret = q6lsm_deregister_sound_model(prtd->lsm_client);
if (ret)
dev_err(rtd->dev,
"%s: dereg_snd_model failed, err = %d\n",
__func__, ret);
else
dev_dbg(rtd->dev, "%s: dereg_snd_model successful\n",
__func__);
}
/*
* De-register existing sound models
* to free SM and CAL buffer, even if
* lsm client is not started.
*/
ret = q6lsm_deregister_sound_model(prtd->lsm_client);
if (ret)
dev_err(rtd->dev, "%s: dereg_snd_model failed, err = %d\n",
__func__, ret);
else
dev_dbg(rtd->dev, "%s: dereg_snd_model successful\n",
__func__);
msm_pcm_routing_dereg_phy_stream(rtd->dai_link->id,
SNDRV_PCM_STREAM_CAPTURE);

View file

@ -1735,21 +1735,24 @@ int q6lsm_deregister_sound_model(struct lsm_client *client)
break;
}
} else {
memset(&cmd, 0, sizeof(cmd));
q6lsm_add_hdr(client, &cmd.hdr, sizeof(cmd.hdr), false);
cmd.hdr.opcode = LSM_SESSION_CMD_DEREGISTER_SOUND_MODEL;
rc = q6lsm_apr_send_pkt(client, client->apr, &cmd.hdr, true, NULL);
if (rc) {
pr_err("%s: Failed cmd opcode 0x%x, rc %d\n", __func__,
cmd.hdr.opcode, rc);
} else {
pr_debug("%s: Deregister sound model succeeded\n", __func__);
}
p_info.param_type = LSM_DEREG_SND_MODEL;
sm = &client->stage_cfg[p_info.stage_idx].sound_model;
q6lsm_snd_model_buf_free(client, &p_info, sm);
if (sm && sm->data) {
memset(&cmd, 0, sizeof(cmd));
q6lsm_add_hdr(client, &cmd.hdr, sizeof(cmd.hdr), false);
cmd.hdr.opcode = LSM_SESSION_CMD_DEREGISTER_SOUND_MODEL;
p_info.param_type = LSM_DEREG_SND_MODEL;
rc = q6lsm_apr_send_pkt(client, client->apr, &cmd.hdr, true, NULL);
if (rc) {
pr_err("%s: Failed cmd opcode 0x%x, rc %d\n", __func__,
cmd.hdr.opcode, rc);
} else {
pr_debug("%s: Deregister sound model succeeded\n", __func__);
}
q6lsm_snd_model_buf_free(client, &p_info, sm);
}
}
return rc;