summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2008-04-14 15:27:30 +0200
committerTakashi Iwai <tiwai@suse.de>2008-04-24 12:00:35 +0200
commit87b57fe2d3fb1ce33671b944db9a4cbe0cd065ea (patch)
treeacabbbd2e75feefb25ec0a450df9afb34e604363
parenta295e09e89d227506ae6c0a58e1cb6359c0cda1c (diff)
[ALSA] wm9713: Don't control touch screen power on suspend
Leave the power bit for the touch screen alone when suspending the WM9713 so that the touch screen driver can handle it. This allows the touch screen to be used as a wakeup source when the system is suspended. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/soc/codecs/wm9713.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index e3174c4d980d..1f241161445c 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1132,8 +1132,17 @@ static int wm9713_soc_suspend(struct platform_device *pdev,
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec;
+ u16 reg;
+
+ /* Disable everything except touchpanel - that will be handled
+ * by the touch driver and left disabled if touch is not in
+ * use. */
+ reg = ac97_read(codec, AC97_EXTENDED_MID);
+ ac97_write(codec, AC97_EXTENDED_MID, reg | 0x7fff);
+ ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xffff);
+ ac97_write(codec, AC97_POWERDOWN, 0x6f00);
+ ac97_write(codec, AC97_POWERDOWN, 0xffff);
- wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
return 0;
}