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: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
beaff340e0
commit
f1aac484f7
1 changed files with 7 additions and 0 deletions
|
@ -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)
|
||||||
/* 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)
|
||||||
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 */
|
||||||
|
|
Reference in a new issue