summaryrefslogtreecommitdiffstats
path: root/sound/pci/oxygen/xonar_wm87x6.c
diff options
context:
space:
mode:
authorClemens Ladisch2010-09-07 13:37:10 +0200
committerTakashi Iwai2010-09-08 08:26:13 +0200
commit4c25b93223340deff73381cc47f9244fb379a74d (patch)
tree6669e6b0810e530fa65e1b59d704e6c58467976e /sound/pci/oxygen/xonar_wm87x6.c
parentALSA: usb-audio: fix detection of vendor-specific device protocol settings (diff)
downloadkernel-qcow2-linux-4c25b93223340deff73381cc47f9244fb379a74d.tar.gz
kernel-qcow2-linux-4c25b93223340deff73381cc47f9244fb379a74d.tar.xz
kernel-qcow2-linux-4c25b93223340deff73381cc47f9244fb379a74d.zip
ALSA: virtuoso: work around missing reset in the Xonar DS Windows driver
For the WM8776 chip, this driver uses a different sample format and more features than the Windows driver. When rebooting from Linux into Windows, the latter driver does not reset the chip but assumes all its registers have their default settings, so we get garbled sound or, if the output happened to be muted before rebooting, no sound. To make that driver happy, hook our driver's cleanup function into the shutdown notifier and ensure that the chip gets reset. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Reported-and-tested-by: Nathan Schagen Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/oxygen/xonar_wm87x6.c')
-rw-r--r--sound/pci/oxygen/xonar_wm87x6.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/pci/oxygen/xonar_wm87x6.c b/sound/pci/oxygen/xonar_wm87x6.c
index dbc4b89d74e4..0b89932fb8c4 100644
--- a/sound/pci/oxygen/xonar_wm87x6.c
+++ b/sound/pci/oxygen/xonar_wm87x6.c
@@ -193,6 +193,7 @@ static void xonar_ds_init(struct oxygen *chip)
static void xonar_ds_cleanup(struct oxygen *chip)
{
xonar_disable_output(chip);
+ wm8776_write(chip, WM8776_RESET, 0);
}
static void xonar_ds_suspend(struct oxygen *chip)