[PATCH 3/8] ASoC: SOF: pcm: add mechanisms to disable ALSA pause_push/release
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Thu Jun 10 22:53:21 CEST 2021
PulseAudio, PipeWire and CRAS do not use pause push/release, which
means that we can optionally disable this capability without any
impact on most users.
In addition, on some platforms, e.g. based on HDaudio DMAs, support for
pause_push/release prevents the system from entering low-power
states.
This patch suggests an opt-in selection via kconfig or kernel
parameter to disable pause.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen at linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
---
sound/soc/sof/Kconfig | 9 +++++++++
sound/soc/sof/pcm.c | 7 +++++++
2 files changed, 16 insertions(+)
diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig
index cd659493b5df..81b834558a2d 100644
--- a/sound/soc/sof/Kconfig
+++ b/sound/soc/sof/Kconfig
@@ -55,6 +55,15 @@ config SND_SOC_SOF_DEBUG_PROBES
Say Y if you want to enable probes.
If unsure, select "N".
+config SND_SOC_SOF_PCM_DISABLE_PAUSE
+ bool "SOF disable pause push/release"
+ help
+ This option disables ALSA pause push/release capabilities for
+ SOF drivers. These capabilities are not used by typical
+ sound servers such as PulseAudio, PipeWire and CRAS.
+ Say Y if you want to disable pause push/release
+ If unsure, select "N".
+
config SND_SOC_SOF_DEVELOPER_SUPPORT
bool "SOF developer options support"
depends on EXPERT
diff --git a/sound/soc/sof/pcm.c b/sound/soc/sof/pcm.c
index 9893b182da43..bab837ed8c7f 100644
--- a/sound/soc/sof/pcm.c
+++ b/sound/soc/sof/pcm.c
@@ -10,6 +10,7 @@
// PCM Layer, interface between ALSA and IPC.
//
+#include <linux/moduleparam.h>
#include <linux/pm_runtime.h>
#include <sound/pcm_params.h>
#include <sound/sof.h>
@@ -20,6 +21,10 @@
#include "compress.h"
#endif
+static bool pcm_disable_pause = IS_ENABLED(CONFIG_SND_SOC_SOF_PCM_DISABLE_PAUSE);
+module_param_named(disable_pause, pcm_disable_pause, bool, 0444);
+MODULE_PARM_DESC(disable_pause, "SOF HDA disable pause");
+
/* Create DMA buffer page table for DSP */
static int create_page_table(struct snd_soc_component *component,
struct snd_pcm_substream *substream,
@@ -480,6 +485,8 @@ static int sof_pcm_open(struct snd_soc_component *component,
/* set runtime config */
runtime->hw.info = ops->hw_info; /* platform-specific */
+ if (pcm_disable_pause)
+ runtime->hw.info &= ~SNDRV_PCM_INFO_PAUSE;
/* set any runtime constraints based on topology */
runtime->hw.formats = le64_to_cpu(caps->formats);
--
2.25.1
More information about the Alsa-devel
mailing list