* [RFC] ASoC: wm8962: Allow codec to work when CONFIG_PM=n
@ 2014-12-30 15:58 Fabio Estevam
2014-12-30 16:22 ` Mark Brown
0 siblings, 1 reply; 2+ messages in thread
From: Fabio Estevam @ 2014-12-30 15:58 UTC (permalink / raw)
To: broonie; +Cc: Fabio Estevam, alsa-devel, b50113
From: Fabio Estevam <fabio.estevam@freescale.com>
Currently the codec does not work in the CONFIG_PM=n case because the regulators
and clock are kept disabled.
Allow the codec to be functional by calling wm8962_runtime_resume() when
CONFIG_PM=n.
Tested on a imx6sl-evk in the CONFIG_PM=y and CONFIG_PM=n cases.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Probably there is a better solution, hence I am sending it as RFC.
Thanks
sound/soc/codecs/wm8962.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index d32d554..0b041c9 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -3546,6 +3546,9 @@ static int wm8962_set_pdata_from_of(struct i2c_client *i2c,
return 0;
}
+static int wm8962_runtime_resume(struct device *dev);
+static int wm8962_runtime_suspend(struct device *dev);
+
static int wm8962_i2c_probe(struct i2c_client *i2c,
const struct i2c_device_id *id)
{
@@ -3771,6 +3774,9 @@ static int wm8962_i2c_probe(struct i2c_client *i2c,
/* The drivers should power up as needed */
regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
+ if (!IS_ENABLED(CONFIG_PM))
+ wm8962_runtime_resume(&i2c->dev);
+
return 0;
err_enable:
@@ -3781,11 +3787,12 @@ err:
static int wm8962_i2c_remove(struct i2c_client *client)
{
+ if (!IS_ENABLED(CONFIG_PM))
+ wm8962_runtime_suspend(&client->dev);
snd_soc_unregister_codec(&client->dev);
return 0;
}
-#ifdef CONFIG_PM
static int wm8962_runtime_resume(struct device *dev)
{
struct wm8962_priv *wm8962 = dev_get_drvdata(dev);
@@ -3860,7 +3867,6 @@ static int wm8962_runtime_suspend(struct device *dev)
return 0;
}
-#endif
static struct dev_pm_ops wm8962_pm = {
SET_RUNTIME_PM_OPS(wm8962_runtime_suspend, wm8962_runtime_resume, NULL)
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [RFC] ASoC: wm8962: Allow codec to work when CONFIG_PM=n
2014-12-30 15:58 [RFC] ASoC: wm8962: Allow codec to work when CONFIG_PM=n Fabio Estevam
@ 2014-12-30 16:22 ` Mark Brown
0 siblings, 0 replies; 2+ messages in thread
From: Mark Brown @ 2014-12-30 16:22 UTC (permalink / raw)
To: Fabio Estevam; +Cc: Fabio Estevam, alsa-devel, b50113
[-- Attachment #1.1: Type: text/plain, Size: 386 bytes --]
On Tue, Dec 30, 2014 at 01:58:16PM -0200, Fabio Estevam wrote:
> + if (!IS_ENABLED(CONFIG_PM))
> + wm8962_runtime_resume(&i2c->dev);
> +
A much neater idiom for this is to have the probe() just default the
device to being runtime PM enabled, then if runtime PM is enabled it'll
work out that the device is idle and power it off but if runtime PM is
disabled it'll just stay powered.
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-12-30 16:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-30 15:58 [RFC] ASoC: wm8962: Allow codec to work when CONFIG_PM=n Fabio Estevam
2014-12-30 16:22 ` Mark Brown
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.