diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-04-14 13:27:30 (GMT) |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 10:00:35 (GMT) |
commit | 87b57fe2d3fb1ce33671b944db9a4cbe0cd065ea (patch) | |
tree | acabbbd2e75feefb25ec0a450df9afb34e604363 /sound/soc/codecs | |
parent | a295e09e89d227506ae6c0a58e1cb6359c0cda1c (diff) | |
download | linux-87b57fe2d3fb1ce33671b944db9a4cbe0cd065ea.tar.xz |
[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>
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r-- | sound/soc/codecs/wm9713.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c index e3174c4..1f24116 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; } |