aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound/soc-dapm.h
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-05-07 16:11:40 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-05-10 05:36:48 -0400
commit1547aba993c990e5a316751431328145b38e1fea (patch)
treed9e549fa2d6bb67a632a0cfeefd39e3a077cac5d /include/sound/soc-dapm.h
parent9949788b793826f2d19e929ac0219ad0e0891e2d (diff)
ASoC: Support leaving paths enabled over system suspend
Some devices can usefully run audio while the Linux system is suspended. One of the most common examples is smartphone systems, which are normally designed to allow audio to be run between the baseband and the CODEC without passing through the CPU and so can suspend the CPU when on a voice call for additional power savings. Support such systems by providing an API snd_soc_dapm_ignore_suspend(). This can be used to mark DAPM endpoints as not being sensitive to system suspend. When the system is being suspended paths between endpoints which are marked as ignoring suspend will be kept active. Both source and sink must be marked, and there must already be an active path between the two endpoints prior to suspend. When paths are active over suspend the bias management will hold the device bias in the ON state. This is used to avoid suspending the CODEC while it is still in use. Tested-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/sound/soc-dapm.h')
-rw-r--r--include/sound/soc-dapm.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 55c6d3d1894f..66ff4c124dbd 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -341,6 +341,7 @@ int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, const char *pin);
341int snd_soc_dapm_sync(struct snd_soc_codec *codec); 341int snd_soc_dapm_sync(struct snd_soc_codec *codec);
342int snd_soc_dapm_force_enable_pin(struct snd_soc_codec *codec, 342int snd_soc_dapm_force_enable_pin(struct snd_soc_codec *codec,
343 const char *pin); 343 const char *pin);
344int snd_soc_dapm_ignore_suspend(struct snd_soc_codec *codec, const char *pin);
344 345
345/* dapm widget types */ 346/* dapm widget types */
346enum snd_soc_dapm_type { 347enum snd_soc_dapm_type {
@@ -428,6 +429,7 @@ struct snd_soc_dapm_widget {
428 unsigned char new:1; /* cnew complete */ 429 unsigned char new:1; /* cnew complete */
429 unsigned char ext:1; /* has external widgets */ 430 unsigned char ext:1; /* has external widgets */
430 unsigned char force:1; /* force state */ 431 unsigned char force:1; /* force state */
432 unsigned char ignore_suspend:1; /* kept enabled over suspend */
431 433
432 int (*power_check)(struct snd_soc_dapm_widget *w); 434 int (*power_check)(struct snd_soc_dapm_widget *w);
433 435