diff options
author | Markus Bollinger <bollinger@digigram.com> | 2006-03-31 05:48:51 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-03-31 10:59:01 -0500 |
commit | 0bd43b5bc9e61e9dc48ad5ee68737316e5d94b60 (patch) | |
tree | 2761424f8ef54e8b3876edb7dd5440d856324024 /sound/pci/pcxhr | |
parent | ce7415f496e21775156b08452d22211f8c3ccc53 (diff) |
[ALSA] pcxhr - Fix the crash with REV01 board
On a new board revision for pcxhr boards, the
PCXHR_CHIPSC_GPI_USERI bit is no more supported.
The cards concerned have a REV01 in their PCI ID.
As the current driver tests this bit and does not load the
first Xilinx binary when it's 1, the card will crash on Xilinx
access over PCI. (the PCI will freeze ....)
The fix (fix to version 1.0.11rc4) works for both REV00 and
REV01 cards.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/pcxhr')
-rw-r--r-- | sound/pci/pcxhr/pcxhr_core.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/sound/pci/pcxhr/pcxhr_core.c b/sound/pci/pcxhr/pcxhr_core.c index fdc652c6992d..c40f59062684 100644 --- a/sound/pci/pcxhr/pcxhr_core.c +++ b/sound/pci/pcxhr/pcxhr_core.c | |||
@@ -274,12 +274,9 @@ int pcxhr_load_xilinx_binary(struct pcxhr_mgr *mgr, const struct firmware *xilin | |||
274 | 274 | ||
275 | /* test first xilinx */ | 275 | /* test first xilinx */ |
276 | chipsc = PCXHR_INPL(mgr, PCXHR_PLX_CHIPSC); | 276 | chipsc = PCXHR_INPL(mgr, PCXHR_PLX_CHIPSC); |
277 | if (!second) { | 277 | /* REV01 cards do not support the PCXHR_CHIPSC_GPI_USERI bit anymore */ |
278 | if (chipsc & PCXHR_CHIPSC_GPI_USERI) { | 278 | /* this bit will always be 1; no possibility to test presence of first xilinx */ |
279 | snd_printdd("no need to load first xilinx\n"); | 279 | if(second) { |
280 | return 0; /* first xilinx is already present and cannot be reset */ | ||
281 | } | ||
282 | } else { | ||
283 | if ((chipsc & PCXHR_CHIPSC_GPI_USERI) == 0) { | 280 | if ((chipsc & PCXHR_CHIPSC_GPI_USERI) == 0) { |
284 | snd_printk(KERN_ERR "error loading first xilinx\n"); | 281 | snd_printk(KERN_ERR "error loading first xilinx\n"); |
285 | return -EINVAL; | 282 | return -EINVAL; |