Skip to content

Commit

Permalink
ASoC: SOF: Intel: hda-pcm: Follow the pause_supported flag to drop PA…
Browse files Browse the repository at this point in the history
…USE support

If the stream's pause_supported flag is false then mask out the PAUSE
support, so user space will be prevented to use it.

Introduce a module parameter to ignore the pause_supported flag, named as
force_pause_support to allow testing of the PAUSE feature.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
  • Loading branch information
ujfalusi committed Jul 12, 2024
1 parent 18f45d8 commit e5e16f5
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions sound/soc/sof/intel/hda-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ static bool hda_disable_rewinds;
module_param_named(disable_rewinds, hda_disable_rewinds, bool, 0444);
MODULE_PARM_DESC(disable_rewinds, "SOF HDA disable rewinds");

static bool hda_force_pause_support;
module_param_named(force_pause_support, hda_force_pause_support, bool, 0444);
MODULE_PARM_DESC(force_pause_support,
"SOF HDA ignore pause_supported flag to allow pause operation");

u32 hda_dsp_get_mult_div(struct snd_sof_dev *sdev, int rate)
{
switch (rate) {
Expand Down Expand Up @@ -240,6 +245,14 @@ int hda_dsp_pcm_open(struct snd_sof_dev *sdev,
if (hda_always_enable_dmi_l1 && direction == SNDRV_PCM_STREAM_CAPTURE)
runtime->hw.info &= ~SNDRV_PCM_INFO_PAUSE;

/*
* Follow the pause_supported flag (unless a module parameter is set to
* ignore it) and disable the pause push/release support
*/
if (!hda_force_pause_support &&
!spcm->stream[substream->stream].pause_supported)
runtime->hw.info &= ~SNDRV_PCM_INFO_PAUSE;

if (hda_always_enable_dmi_l1 ||
direction == SNDRV_PCM_STREAM_PLAYBACK ||
spcm->stream[substream->stream].d0i3_compatible)
Expand Down

0 comments on commit e5e16f5

Please sign in to comment.