Commit f1aac484 authored by Mark Brown's avatar Mark Brown

ASoC: Take a pm_runtime reference on DAPM devices that are enabled

As for PCMs take a runtime power management reference to devices that are
in a non-off bias, avoiding the need to do this in individual drivers.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent beaff340
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/jiffies.h> #include <linux/jiffies.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <sound/core.h> #include <sound/core.h>
#include <sound/pcm.h> #include <sound/pcm.h>
...@@ -1206,6 +1207,9 @@ static void dapm_pre_sequence_async(void *data, async_cookie_t cookie) ...@@ -1206,6 +1207,9 @@ static void dapm_pre_sequence_async(void *data, async_cookie_t cookie)
/* If we're off and we're not supposed to be go into STANDBY */ /* If we're off and we're not supposed to be go into STANDBY */
if (d->bias_level == SND_SOC_BIAS_OFF && if (d->bias_level == SND_SOC_BIAS_OFF &&
d->target_bias_level != SND_SOC_BIAS_OFF) { d->target_bias_level != SND_SOC_BIAS_OFF) {
if (d->dev)
pm_runtime_get_sync(d->dev);
ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_STANDBY); ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_STANDBY);
if (ret != 0) if (ret != 0)
dev_err(d->dev, dev_err(d->dev,
...@@ -1245,6 +1249,9 @@ static void dapm_post_sequence_async(void *data, async_cookie_t cookie) ...@@ -1245,6 +1249,9 @@ static void dapm_post_sequence_async(void *data, async_cookie_t cookie)
ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_OFF); ret = snd_soc_dapm_set_bias_level(d, SND_SOC_BIAS_OFF);
if (ret != 0) if (ret != 0)
dev_err(d->dev, "Failed to turn off bias: %d\n", ret); dev_err(d->dev, "Failed to turn off bias: %d\n", ret);
if (d->dev)
pm_runtime_put_sync(d->dev);
} }
/* If we just powered up then move to active bias */ /* If we just powered up then move to active bias */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment