All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

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.