Skip to content

Commit 1921336

Browse files
committed
ASoC: SOF: Add support for hint from topology for pause support
A new token is added to topology: 1202: SOF_TKN_STREAM_PLAYBACK_PAUSE_SUPPORTED The snd_sof_pcm_stream.pause_supported is updated based on the new token as hint for platform code that the PAUSE support should or should not be advertised to user space. If the token does not exist then the PAUSE is advised to be disabled. Reasoning: End-users are using media servers to use audio (Pulseaudio, Pipewire, CRAS, etc) and they never use pause operation. Media players using ALSA directly have support for PCMs without pause support. The pause/resume has never been tested in a same depth as other use cases and we have corner cases that receives virtually no testing at all, like suspending while the stream is paused. We do not test the pause/resume in a more complex environment either and it might have hidden issues. Note: it is up to the platform code to use this flag to disable (or enable) the pause support, this patch is just stores it as a hint. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
1 parent ca0a005 commit 1921336

3 files changed

Lines changed: 14 additions & 0 deletions

File tree

include/uapi/sound/sof/tokens.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@
153153
/* Stream */
154154
#define SOF_TKN_STREAM_PLAYBACK_COMPATIBLE_D0I3 1200
155155
#define SOF_TKN_STREAM_CAPTURE_COMPATIBLE_D0I3 1201
156+
#define SOF_TKN_STREAM_PLAYBACK_PAUSE_SUPPORTED 1202
157+
#define SOF_TKN_STREAM_CAPTURE_PAUSE_SUPPORTED 1203
156158

157159
/* Led control for mute switches */
158160
#define SOF_TKN_MUTE_LED_USE 1300

sound/soc/sof/sof-audio.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,14 @@ struct snd_sof_pcm_stream {
332332
struct work_struct period_elapsed_work;
333333
struct snd_soc_dapm_widget_list *list; /* list of connected DAPM widgets */
334334
bool d0i3_compatible; /* DSP can be in D0I3 when this pcm is opened */
335+
/*
336+
* Hint for the core and platform code about PCM pause/resume support.
337+
* Note: Users are using audio via media servers (Pulseaudio, Pipewire,
338+
* CRAS, etc) and media servers do not use pause/resume.
339+
* Media players using the ALSA directly have means to handle PCM devices
340+
* without pause/resume support also.
341+
*/
342+
bool pause_supported;
335343
unsigned int dsp_max_burst_size_in_ms; /* The maximum size of the host DMA burst in ms */
336344
/*
337345
* flag to indicate that the DSP pipelines should be kept

sound/soc/sof/topology.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,10 @@ static const struct sof_topology_token stream_tokens[] = {
407407
offsetof(struct snd_sof_pcm, stream[0].d0i3_compatible)},
408408
{SOF_TKN_STREAM_CAPTURE_COMPATIBLE_D0I3, SND_SOC_TPLG_TUPLE_TYPE_BOOL, get_token_u16,
409409
offsetof(struct snd_sof_pcm, stream[1].d0i3_compatible)},
410+
{SOF_TKN_STREAM_PLAYBACK_PAUSE_SUPPORTED, SND_SOC_TPLG_TUPLE_TYPE_BOOL, get_token_u16,
411+
offsetof(struct snd_sof_pcm, stream[0].pause_supported)},
412+
{SOF_TKN_STREAM_CAPTURE_PAUSE_SUPPORTED, SND_SOC_TPLG_TUPLE_TYPE_BOOL, get_token_u16,
413+
offsetof(struct snd_sof_pcm, stream[1].pause_supported)},
410414
};
411415

412416
/* Leds */

0 commit comments

Comments
 (0)