ASoC: dpcm: allow start or stop during pause for backend
commit 21fca8bdbb upstream.
soc_compr_trigger_fe() allows start or stop after pause_push.
In dpcm_be_dai_trigger(), however, only pause_release is allowed
command after pause_push.
So, start or stop after pause in compress offload is always
returned as error if the compress offload is used with dpcm.
To fix the problem, SND_SOC_DPCM_STATE_PAUSED should be allowed
for start or stop command.
Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/004d01d607c1$7a3d5250$6eb7f6f0$@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0185a432ad
commit
e1093a170f
1 changed files with 4 additions and 2 deletions
|
|
@ -2266,7 +2266,8 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
|
|||
switch (cmd) {
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_PREPARE) &&
|
||||
(be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP))
|
||||
(be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP) &&
|
||||
(be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED))
|
||||
continue;
|
||||
|
||||
ret = dpcm_do_trigger(dpcm, be_substream, cmd);
|
||||
|
|
@ -2296,7 +2297,8 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
|
|||
be->dpcm[stream].state = SND_SOC_DPCM_STATE_START;
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
|
||||
if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_START) &&
|
||||
(be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED))
|
||||
continue;
|
||||
|
||||
if (!snd_soc_dpcm_can_be_free_stop(fe, be, stream))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue