--------------------- 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 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) {