All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions
@ 2022-04-06 19:00 Pierre-Louis Bossart
  2022-04-06 19:00 ` [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE Pierre-Louis Bossart
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Pierre-Louis Bossart @ 2022-04-06 19:00 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, broonie, Pierre-Louis Bossart

With additional tests with the introduction of a 'deep-buffer' PCM
device mixed with the regular low-latency path, we came up with two
improvements in the BE state machine and transitions. The short
explanation is that the BE cannot directly use the trigger commands
provided by the FE, and a translation is needed to deal with paused
states.

Pierre-Louis Bossart (2):
  ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE
  ASoC: soc-pcm: improve BE transition for TRIGGER_START

 include/sound/soc-dpcm.h |  2 ++
 sound/soc/soc-pcm.c      | 38 +++++++++++++++++++++++++++++++++++---
 2 files changed, 37 insertions(+), 3 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE
  2022-04-06 19:00 [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Pierre-Louis Bossart
@ 2022-04-06 19:00 ` Pierre-Louis Bossart
  2022-04-07  7:58   ` Amadeusz Sławiński
  2022-04-06 19:00 ` [PATCH 2/2] ASoC: soc-pcm: improve BE transition for TRIGGER_START Pierre-Louis Bossart
  2022-04-20 21:40 ` [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Mark Brown
  2 siblings, 1 reply; 6+ messages in thread
From: Pierre-Louis Bossart @ 2022-04-06 19:00 UTC (permalink / raw)
  To: alsa-devel
  Cc: tiwai, Bard Liao, Ranjani Sridharan, Pierre-Louis Bossart,
	broonie, Rander Wang, Péter Ujfalusi

Commit 3aa1e96a2b95 ("ASoC: soc-pcm: fix BE handling of PAUSE_RELEASE")
did not modify the existing logic and kept the same logic for the following
transition

    play FE1    -> BE state is START
    pause FE1   -> BE state is PAUSED
    play FE2    -> BE state is START
    stop FE2    -> BE state is STOP <<< !!
    release FE1 -> BE state is START
    stop FE1    -> BE state is STOP

At the time it was identified by reviewers that a better solution
might consist in

    play FE1    -> BE state is START
    pause FE1   -> BE state is PAUSED
    play FE2    -> BE state is START
    stop FE2    -> BE state is PAUSE <<< !!
    release FE1 -> BE state is START
    stop FE1    -> BE state is STOP

This patch suggest a transition to PAUSE when all the 'active' streams
are paused. This would allow for a more consistent resource management
for platforms where PAUSE and STOP are handled differently.

To track the special case of an FE going from PAUSE_PUSH to STOP, we
add a state variable for each FE context. This 'fe_pause' boolean is
set on PAUSE_PUSH and cleared on either PAUSE_RELEASE and STOP
triggers.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
---
 include/sound/soc-dpcm.h |  2 ++
 sound/soc/soc-pcm.c      | 31 ++++++++++++++++++++++++++++---
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/include/sound/soc-dpcm.h b/include/sound/soc-dpcm.h
index 75b92d883976..5b689c663290 100644
--- a/include/sound/soc-dpcm.h
+++ b/include/sound/soc-dpcm.h
@@ -103,6 +103,8 @@ struct snd_soc_dpcm_runtime {
 	int trigger_pending; /* trigger cmd + 1 if pending, 0 if not */
 
 	int be_start; /* refcount protected by BE stream pcm lock */
+	int be_pause; /* refcount protected by BE stream pcm lock */
+	bool fe_pause; /* used to track STOP after PAUSE */
 };
 
 #define for_each_dpcm_fe(be, stream, _dpcm)				\
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 11c9853e9e80..e8700dd1839f 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -2090,6 +2090,7 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
 			       int cmd)
 {
 	struct snd_soc_pcm_runtime *be;
+	bool pause_stop_transition;
 	struct snd_soc_dpcm *dpcm;
 	unsigned long flags;
 	int ret = 0;
@@ -2148,10 +2149,12 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
 		case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
 			if (!be->dpcm[stream].be_start &&
 			    (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START) &&
-			    (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP) &&
 			    (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED))
 				goto next;
 
+			fe->dpcm[stream].fe_pause = false;
+			be->dpcm[stream].be_pause--;
+
 			be->dpcm[stream].be_start++;
 			if (be->dpcm[stream].be_start != 1)
 				goto next;
@@ -2175,14 +2178,33 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
 			if (be->dpcm[stream].be_start != 0)
 				goto next;
 
-			ret = soc_pcm_trigger(be_substream, cmd);
+			pause_stop_transition = false;
+			if (fe->dpcm[stream].fe_pause) {
+				pause_stop_transition = true;
+				fe->dpcm[stream].fe_pause = false;
+				be->dpcm[stream].be_pause--;
+			}
+
+			if (be->dpcm[stream].be_pause != 0)
+				ret = soc_pcm_trigger(be_substream, SNDRV_PCM_TRIGGER_PAUSE_PUSH);
+			else
+				ret = soc_pcm_trigger(be_substream, SNDRV_PCM_TRIGGER_STOP);
+
 			if (ret) {
 				if (be->dpcm[stream].state == SND_SOC_DPCM_STATE_START)
 					be->dpcm[stream].be_start++;
+				if (pause_stop_transition) {
+					fe->dpcm[stream].fe_pause = true;
+					be->dpcm[stream].be_pause++;
+				}
 				goto next;
 			}
 
-			be->dpcm[stream].state = SND_SOC_DPCM_STATE_STOP;
+			if (be->dpcm[stream].be_pause != 0)
+				be->dpcm[stream].state = SND_SOC_DPCM_STATE_PAUSED;
+			else
+				be->dpcm[stream].state = SND_SOC_DPCM_STATE_STOP;
+
 			break;
 		case SNDRV_PCM_TRIGGER_SUSPEND:
 			if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
@@ -2204,6 +2226,9 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
 			if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
 				goto next;
 
+			fe->dpcm[stream].fe_pause = true;
+			be->dpcm[stream].be_pause++;
+
 			be->dpcm[stream].be_start--;
 			if (be->dpcm[stream].be_start != 0)
 				goto next;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] ASoC: soc-pcm: improve BE transition for TRIGGER_START
  2022-04-06 19:00 [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Pierre-Louis Bossart
  2022-04-06 19:00 ` [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE Pierre-Louis Bossart
@ 2022-04-06 19:00 ` Pierre-Louis Bossart
  2022-04-20 21:40 ` [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Mark Brown
  2 siblings, 0 replies; 6+ messages in thread
From: Pierre-Louis Bossart @ 2022-04-06 19:00 UTC (permalink / raw)
  To: alsa-devel
  Cc: tiwai, Bard Liao, Ranjani Sridharan, Pierre-Louis Bossart,
	broonie, Rander Wang, Péter Ujfalusi

When the BE was in PAUSED state, the correct trigger is PAUSE_RELEASE.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
---
 sound/soc/soc-pcm.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index e8700dd1839f..6f43db35a5c8 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -2122,6 +2122,13 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
 			if (be->dpcm[stream].be_start != 1)
 				goto next;
 
+			if (be->dpcm[stream].state == SND_SOC_DPCM_STATE_PAUSED)
+				ret = soc_pcm_trigger(be_substream,
+						      SNDRV_PCM_TRIGGER_PAUSE_RELEASE);
+			else
+				ret = soc_pcm_trigger(be_substream,
+						      SNDRV_PCM_TRIGGER_START);
+
 			ret = soc_pcm_trigger(be_substream, cmd);
 			if (ret) {
 				be->dpcm[stream].be_start--;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE
  2022-04-06 19:00 ` [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE Pierre-Louis Bossart
@ 2022-04-07  7:58   ` Amadeusz Sławiński
  2022-04-07 13:23     ` Pierre-Louis Bossart
  0 siblings, 1 reply; 6+ messages in thread
From: Amadeusz Sławiński @ 2022-04-07  7:58 UTC (permalink / raw)
  To: Pierre-Louis Bossart, alsa-devel
  Cc: tiwai, Bard Liao, Ranjani Sridharan, Rander Wang, broonie,
	Péter Ujfalusi

On 4/6/2022 9:00 PM, Pierre-Louis Bossart wrote:
> Commit 3aa1e96a2b95 ("ASoC: soc-pcm: fix BE handling of PAUSE_RELEASE")
> did not modify the existing logic and kept the same logic for the following
> transition
> 
>      play FE1    -> BE state is START
>      pause FE1   -> BE state is PAUSED
>      play FE2    -> BE state is START
>      stop FE2    -> BE state is STOP <<< !!
>      release FE1 -> BE state is START
>      stop FE1    -> BE state is STOP
> 
> At the time it was identified by reviewers that a better solution
> might consist in
> 
>      play FE1    -> BE state is START
>      pause FE1   -> BE state is PAUSED
>      play FE2    -> BE state is START
>      stop FE2    -> BE state is PAUSE <<< !!
>      release FE1 -> BE state is START
>      stop FE1    -> BE state is STOP
> 
> This patch suggest a transition to PAUSE when all the 'active' streams
> are paused. This would allow for a more consistent resource management
> for platforms where PAUSE and STOP are handled differently.
> 
> To track the special case of an FE going from PAUSE_PUSH to STOP, we
> add a state variable for each FE context. This 'fe_pause' boolean is
> set on PAUSE_PUSH and cleared on either PAUSE_RELEASE and STOP
> triggers.
> 
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> Reviewed-by: Rander Wang <rander.wang@intel.com>
> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
> ---
>   include/sound/soc-dpcm.h |  2 ++
>   sound/soc/soc-pcm.c      | 31 ++++++++++++++++++++++++++++---
>   2 files changed, 30 insertions(+), 3 deletions(-)
> 
> diff --git a/include/sound/soc-dpcm.h b/include/sound/soc-dpcm.h
> index 75b92d883976..5b689c663290 100644
> --- a/include/sound/soc-dpcm.h
> +++ b/include/sound/soc-dpcm.h
> @@ -103,6 +103,8 @@ struct snd_soc_dpcm_runtime {
>   	int trigger_pending; /* trigger cmd + 1 if pending, 0 if not */
>   
>   	int be_start; /* refcount protected by BE stream pcm lock */
> +	int be_pause; /* refcount protected by BE stream pcm lock */
> +	bool fe_pause; /* used to track STOP after PAUSE */
>   };
>   
>   #define for_each_dpcm_fe(be, stream, _dpcm)				\
> diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
> index 11c9853e9e80..e8700dd1839f 100644
> --- a/sound/soc/soc-pcm.c
> +++ b/sound/soc/soc-pcm.c
> @@ -2090,6 +2090,7 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
>   			       int cmd)
>   {
>   	struct snd_soc_pcm_runtime *be;
> +	bool pause_stop_transition;
>   	struct snd_soc_dpcm *dpcm;
>   	unsigned long flags;
>   	int ret = 0;
> @@ -2148,10 +2149,12 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
>   		case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
>   			if (!be->dpcm[stream].be_start &&
>   			    (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START) &&
> -			    (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP) &&
>   			    (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED))
>   				goto next;
>   
> +			fe->dpcm[stream].fe_pause = false;
> +			be->dpcm[stream].be_pause--;
> +
>   			be->dpcm[stream].be_start++;
>   			if (be->dpcm[stream].be_start != 1)
>   				goto next;
> @@ -2175,14 +2178,33 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
>   			if (be->dpcm[stream].be_start != 0)
>   				goto next;
>   
> -			ret = soc_pcm_trigger(be_substream, cmd);
> +			pause_stop_transition = false;
> +			if (fe->dpcm[stream].fe_pause) {

As you access fe here anyway, any chance something like
if (fe->dpcm[stream].state == SND_SOC_DPCM_STATE_PAUSED)
can be used here instead of adding fe_pause to snd_soc_dpcm_runtime?

> +				pause_stop_transition = true;
> +				fe->dpcm[stream].fe_pause = false;
> +				be->dpcm[stream].be_pause--;
> +			}
> +
> +			if (be->dpcm[stream].be_pause != 0)
> +				ret = soc_pcm_trigger(be_substream, SNDRV_PCM_TRIGGER_PAUSE_PUSH);
> +			else
> +				ret = soc_pcm_trigger(be_substream, SNDRV_PCM_TRIGGER_STOP);
> +
>   			if (ret) {
>   				if (be->dpcm[stream].state == SND_SOC_DPCM_STATE_START)
>   					be->dpcm[stream].be_start++;
> +				if (pause_stop_transition) {
> +					fe->dpcm[stream].fe_pause = true;
> +					be->dpcm[stream].be_pause++;
> +				}
>   				goto next;
>   			}
>   
> -			be->dpcm[stream].state = SND_SOC_DPCM_STATE_STOP;
> +			if (be->dpcm[stream].be_pause != 0)
> +				be->dpcm[stream].state = SND_SOC_DPCM_STATE_PAUSED;
> +			else
> +				be->dpcm[stream].state = SND_SOC_DPCM_STATE_STOP;
> +
>   			break;
>   		case SNDRV_PCM_TRIGGER_SUSPEND:
>   			if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
> @@ -2204,6 +2226,9 @@ int dpcm_be_dai_trigger(struct snd_soc_pcm_runtime *fe, int stream,
>   			if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
>   				goto next;
>   
> +			fe->dpcm[stream].fe_pause = true;
> +			be->dpcm[stream].be_pause++;
> +
>   			be->dpcm[stream].be_start--;
>   			if (be->dpcm[stream].be_start != 0)
>   				goto next;


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE
  2022-04-07  7:58   ` Amadeusz Sławiński
@ 2022-04-07 13:23     ` Pierre-Louis Bossart
  0 siblings, 0 replies; 6+ messages in thread
From: Pierre-Louis Bossart @ 2022-04-07 13:23 UTC (permalink / raw)
  To: Amadeusz Sławiński, alsa-devel
  Cc: tiwai, Bard Liao, Ranjani Sridharan, Rander Wang, broonie,
	Péter Ujfalusi


>> diff --git a/include/sound/soc-dpcm.h b/include/sound/soc-dpcm.h
>> index 75b92d883976..5b689c663290 100644
>> --- a/include/sound/soc-dpcm.h
>> +++ b/include/sound/soc-dpcm.h
>> @@ -103,6 +103,8 @@ struct snd_soc_dpcm_runtime {
>>       int trigger_pending; /* trigger cmd + 1 if pending, 0 if not */
>>       int be_start; /* refcount protected by BE stream pcm lock */
>> +    int be_pause; /* refcount protected by BE stream pcm lock */
>> +    bool fe_pause; /* used to track STOP after PAUSE */
>>   };
>>   #define for_each_dpcm_fe(be, stream, _dpcm)                \
>> diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
>> index 11c9853e9e80..e8700dd1839f 100644
>> --- a/sound/soc/soc-pcm.c
>> +++ b/sound/soc/soc-pcm.c
>> @@ -2090,6 +2090,7 @@ int dpcm_be_dai_trigger(struct 
>> snd_soc_pcm_runtime *fe, int stream,
>>                      int cmd)
>>   {
>>       struct snd_soc_pcm_runtime *be;
>> +    bool pause_stop_transition;
>>       struct snd_soc_dpcm *dpcm;
>>       unsigned long flags;
>>       int ret = 0;
>> @@ -2148,10 +2149,12 @@ int dpcm_be_dai_trigger(struct 
>> snd_soc_pcm_runtime *fe, int stream,
>>           case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
>>               if (!be->dpcm[stream].be_start &&
>>                   (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START) &&
>> -                (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP) &&
>>                   (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED))
>>                   goto next;
>> +            fe->dpcm[stream].fe_pause = false;
>> +            be->dpcm[stream].be_pause--;
>> +
>>               be->dpcm[stream].be_start++;
>>               if (be->dpcm[stream].be_start != 1)
>>                   goto next;
>> @@ -2175,14 +2178,33 @@ int dpcm_be_dai_trigger(struct 
>> snd_soc_pcm_runtime *fe, int stream,
>>               if (be->dpcm[stream].be_start != 0)
>>                   goto next;
>> -            ret = soc_pcm_trigger(be_substream, cmd);
>> +            pause_stop_transition = false;
>> +            if (fe->dpcm[stream].fe_pause) {
> 
> As you access fe here anyway, any chance something like
> if (fe->dpcm[stream].state == SND_SOC_DPCM_STATE_PAUSED)
> can be used here instead of adding fe_pause to snd_soc_dpcm_runtime?

I didn't want to make any assumption on whether the state of the FE is 
updated before or after the BE state, depending on the trigger order, so 
only used the trigger command to drive the state machine changes.

>> +                pause_stop_transition = true;
>> +                fe->dpcm[stream].fe_pause = false;
>> +                be->dpcm[stream].be_pause--;
>> +            }
>> +
>> +            if (be->dpcm[stream].be_pause != 0)
>> +                ret = soc_pcm_trigger(be_substream, 
>> SNDRV_PCM_TRIGGER_PAUSE_PUSH);
>> +            else
>> +                ret = soc_pcm_trigger(be_substream, 
>> SNDRV_PCM_TRIGGER_STOP);
>> +
>>               if (ret) {
>>                   if (be->dpcm[stream].state == SND_SOC_DPCM_STATE_START)
>>                       be->dpcm[stream].be_start++;
>> +                if (pause_stop_transition) {
>> +                    fe->dpcm[stream].fe_pause = true;
>> +                    be->dpcm[stream].be_pause++;
>> +                }
>>                   goto next;
>>               }
>> -            be->dpcm[stream].state = SND_SOC_DPCM_STATE_STOP;
>> +            if (be->dpcm[stream].be_pause != 0)
>> +                be->dpcm[stream].state = SND_SOC_DPCM_STATE_PAUSED;
>> +            else
>> +                be->dpcm[stream].state = SND_SOC_DPCM_STATE_STOP;
>> +
>>               break;
>>           case SNDRV_PCM_TRIGGER_SUSPEND:
>>               if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
>> @@ -2204,6 +2226,9 @@ int dpcm_be_dai_trigger(struct 
>> snd_soc_pcm_runtime *fe, int stream,
>>               if (be->dpcm[stream].state != SND_SOC_DPCM_STATE_START)
>>                   goto next;
>> +            fe->dpcm[stream].fe_pause = true;
>> +            be->dpcm[stream].be_pause++;
>> +
>>               be->dpcm[stream].be_start--;
>>               if (be->dpcm[stream].be_start != 0)
>>                   goto next;
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions
  2022-04-06 19:00 [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Pierre-Louis Bossart
  2022-04-06 19:00 ` [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE Pierre-Louis Bossart
  2022-04-06 19:00 ` [PATCH 2/2] ASoC: soc-pcm: improve BE transition for TRIGGER_START Pierre-Louis Bossart
@ 2022-04-20 21:40 ` Mark Brown
  2 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2022-04-20 21:40 UTC (permalink / raw)
  To: Pierre-Louis Bossart, alsa-devel; +Cc: tiwai

On Wed, 6 Apr 2022 14:00:54 -0500, Pierre-Louis Bossart wrote:
> With additional tests with the introduction of a 'deep-buffer' PCM
> device mixed with the regular low-latency path, we came up with two
> improvements in the BE state machine and transitions. The short
> explanation is that the BE cannot directly use the trigger commands
> provided by the FE, and a translation is needed to deal with paused
> states.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE
      commit: 9995c1d096c8ab1b5f1edc4141257719f6a53524
[2/2] ASoC: soc-pcm: improve BE transition for TRIGGER_START
      commit: 374b50e234a3e2f92bb881a814218f9740e85dcc

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-20 21:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-06 19:00 [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Pierre-Louis Bossart
2022-04-06 19:00 ` [PATCH 1/2] ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE Pierre-Louis Bossart
2022-04-07  7:58   ` Amadeusz Sławiński
2022-04-07 13:23     ` Pierre-Louis Bossart
2022-04-06 19:00 ` [PATCH 2/2] ASoC: soc-pcm: improve BE transition for TRIGGER_START Pierre-Louis Bossart
2022-04-20 21:40 ` [PATCH 0/2] ASoC: soc-pcm: improve BE state transitions Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.