diff options
Diffstat (limited to 'sound/pci/cs4281.c')
-rw-r--r-- | sound/pci/cs4281.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c index 0b53f7c61f86..eb3c52b03af3 100644 --- a/sound/pci/cs4281.c +++ b/sound/pci/cs4281.c | |||
@@ -206,7 +206,10 @@ MODULE_PARM_DESC(dual_codec, "Secondary Codec ID (0 = disabled)."); | |||
206 | 206 | ||
207 | #define BA0_PMCS 0x0344 /* Power Management Control/Status */ | 207 | #define BA0_PMCS 0x0344 /* Power Management Control/Status */ |
208 | #define BA0_CWPR 0x03e0 /* Configuration Write Protect */ | 208 | #define BA0_CWPR 0x03e0 /* Configuration Write Protect */ |
209 | |||
209 | #define BA0_EPPMC 0x03e4 /* Extended PCI Power Management Control */ | 210 | #define BA0_EPPMC 0x03e4 /* Extended PCI Power Management Control */ |
211 | #define BA0_EPPMC_FPDN (1<<14) /* Full Power DowN */ | ||
212 | |||
210 | #define BA0_GPIOR 0x03e8 /* GPIO Pin Interface Register */ | 213 | #define BA0_GPIOR 0x03e8 /* GPIO Pin Interface Register */ |
211 | 214 | ||
212 | #define BA0_SPMC 0x03ec /* Serial Port Power Management Control (& ASDIN2 enable) */ | 215 | #define BA0_SPMC 0x03ec /* Serial Port Power Management Control (& ASDIN2 enable) */ |
@@ -1456,6 +1459,11 @@ static int snd_cs4281_chip_init(cs4281_t *chip) | |||
1456 | int timeout; | 1459 | int timeout; |
1457 | int retry_count = 2; | 1460 | int retry_count = 2; |
1458 | 1461 | ||
1462 | /* Having EPPMC.FPDN=1 prevent proper chip initialisation */ | ||
1463 | tmp = snd_cs4281_peekBA0(chip, BA0_EPPMC); | ||
1464 | if (tmp & BA0_EPPMC_FPDN) | ||
1465 | snd_cs4281_pokeBA0(chip, BA0_EPPMC, tmp & ~BA0_EPPMC_FPDN); | ||
1466 | |||
1459 | __retry: | 1467 | __retry: |
1460 | tmp = snd_cs4281_peekBA0(chip, BA0_CFLR); | 1468 | tmp = snd_cs4281_peekBA0(chip, BA0_CFLR); |
1461 | if (tmp != BA0_CFLR_DEFAULT) { | 1469 | if (tmp != BA0_CFLR_DEFAULT) { |
@@ -2119,7 +2127,7 @@ static struct pci_driver driver = { | |||
2119 | 2127 | ||
2120 | static int __init alsa_card_cs4281_init(void) | 2128 | static int __init alsa_card_cs4281_init(void) |
2121 | { | 2129 | { |
2122 | return pci_module_init(&driver); | 2130 | return pci_register_driver(&driver); |
2123 | } | 2131 | } |
2124 | 2132 | ||
2125 | static void __exit alsa_card_cs4281_exit(void) | 2133 | static void __exit alsa_card_cs4281_exit(void) |