diff options
author | Zhang Peng <peng.zhang_8@nxp.com> | 2020-09-18 13:28:02 +0800 |
---|---|---|
committer | Zhang Peng <peng.zhang_8@nxp.com> | 2020-09-18 18:56:17 +0800 |
commit | 06491aba0cc5b81ac1340c91661cd34399b8ab86 (patch) | |
tree | f328386298202f1ed8a40d34d394b3adb574653a /sound/soc | |
parent | f3981967d671a2e0fd284bd29573ad762429ef15 (diff) |
MLK-24816-1 ASoc: fsl_dsp: Support seek for compress pipeline
For supporting seek for compress pipeline, remove delate comp operation
in dsp_platform_compr_trigger_stop. Remove connect comp operation in
dsp_platform_compr_trigger_start. Only connect component once.
Signed-off-by: Zhang Peng <peng.zhang_8@nxp.com>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/fsl/fsl_dsp_platform_compress.c | 58 |
1 files changed, 11 insertions, 47 deletions
diff --git a/sound/soc/fsl/fsl_dsp_platform_compress.c b/sound/soc/fsl/fsl_dsp_platform_compress.c index 9ba8f2556bfd..b60dd776cfe7 100644 --- a/sound/soc/fsl/fsl_dsp_platform_compress.c +++ b/sound/soc/fsl/fsl_dsp_platform_compress.c @@ -214,6 +214,16 @@ static int dsp_platform_compr_set_params(struct snd_compr_stream *cstream, goto err_comp1_create; } + ret = xaf_connect(drv->client, + &drv->component[0], + &drv->component[1], + 1, + OUTBUF_SIZE); + if (ret) { + dev_err(component->dev, "Failed to connect component, err = %d\n", ret); + goto err_comp1_create; + } + drv->client->input_bytes = 0; drv->client->consume_bytes = 0; drv->client->offset = 0; @@ -291,16 +301,6 @@ static int dsp_platform_compr_trigger_start(struct snd_compr_stream *cstream) drv->client->input_bytes, XF_EMPTY_THIS_BUFFER); - ret = xaf_connect(drv->client, - &drv->component[0], - &drv->component[1], - 1, - OUTBUF_SIZE); - if (ret) { - dev_err(component->dev, "Failed to connect component, err = %d\n", ret); - return ret; - } - schedule_work(&drv->client->work); } @@ -331,20 +331,6 @@ static int dsp_platform_compr_trigger_stop(struct snd_compr_stream *cstream) drv->client->offset = 0; drv->client->ping_pong_offset = 0; - if (!dsp_priv->dsp_is_lpa) { - ret = xaf_comp_delete(drv->client, &drv->component[0]); - if (ret) { - dev_err(component->dev, "Fail to delete component, err = %d\n", ret); - return ret; - } - - ret = xaf_comp_delete(drv->client, &drv->component[1]); - if (ret) { - dev_err(component->dev, "Fail to delete component, err = %d\n", ret); - return ret; - } - } - return 0; } @@ -489,7 +475,7 @@ static int dsp_platform_compr_copy(struct snd_compr_stream *cstream, } drv->client->input_bytes += copied; - if (cstream->runtime->state == SNDRV_PCM_STATE_RUNNING) { + if (cstream->runtime->state == SNDRV_PCM_STATE_RUNNING && copied) { ret = xaf_comp_process(drv->client, p_comp, p_comp->inptr, copied, XF_EMPTY_THIS_BUFFER); @@ -531,17 +517,6 @@ static int dsp_platform_compr_lpa_pcm_copy(struct snd_compr_stream *cstream, ret = xaf_comp_process(drv->client, p_comp, p_comp->inptr+drv->client->ping_pong_offset, drv->client->offset+copied, XF_EMPTY_THIS_BUFFER); - if (!drv->client->input_bytes) { - ret = xaf_connect(drv->client, - &drv->component[0], - &drv->component[1], - 1, - OUTBUF_SIZE); - if (ret) { - dev_err(component->dev, "Failed to connect component, err = %d\n", ret); - return ret; - } - } schedule_work(&drv->client->work); drv->client->input_bytes += drv->client->offset+copied; @@ -602,17 +577,6 @@ static int dsp_platform_compr_lpa_copy(struct snd_compr_stream *cstream, ret = xaf_comp_process(drv->client, p_comp, p_comp->inptr, drv->client->offset+copied, XF_EMPTY_THIS_BUFFER); - if (!drv->client->input_bytes) { - ret = xaf_connect(drv->client, - &drv->component[0], - &drv->component[1], - 1, - OUTBUF_SIZE); - if (ret) { - dev_err(component->dev, "Failed to connect component, err = %d\n", ret); - return ret; - } - } schedule_work(&drv->client->work); drv->client->input_bytes += drv->client->offset+copied; |