---------------------
PatchSet 3159 
Date: 2005/05/07 18:51:51
Author: perex
Branch: HEAD
Tag: (none) 
Log:
Summary: cs4281 - fix DLLRDY not seen problem

Reset the FPDN bit of the EPPMC register if needed.

Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org>

Members: 
	pci/cs4281.c:1.77->1.78 

Index: /sound/pci/cs4281.c
diff -u /sound/pci/cs4281.c.old /sound/pci/cs4281.c
--- /sound/pci/cs4281.c.old	Mon Apr 11 08:58:25 2005
+++ /sound/pci/cs4281.c	Sat May  7 10:51:51 2005
@@ -206,7 +206,10 @@
 
 #define BA0_PMCS		0x0344	/* Power Management Control/Status */
 #define BA0_CWPR		0x03e0	/* Configuration Write Protect */
+
 #define BA0_EPPMC		0x03e4	/* Extended PCI Power Management Control */
+#define BA0_EPPMC_FPDN		(1<<14) /* Full Power DowN */
+
 #define BA0_GPIOR		0x03e8	/* GPIO Pin Interface Register */
 
 #define BA0_SPMC		0x03ec	/* Serial Port Power Management Control (& ASDIN2 enable) */
@@ -1461,6 +1464,11 @@
 	int timeout;
 	int retry_count = 2;
 
+	/* Having EPPMC.FPDN=1 prevent proper chip initialisation */
+	tmp = snd_cs4281_peekBA0(chip, BA0_EPPMC);
+	if (tmp & BA0_EPPMC_FPDN)
+		snd_cs4281_pokeBA0(chip, BA0_EPPMC, tmp & ~BA0_EPPMC_FPDN);
+
       __retry:
 	tmp = snd_cs4281_peekBA0(chip, BA0_CFLR);
 	if (tmp != BA0_CFLR_DEFAULT) {