Commit fcaa5698 authored by Jaroslav Kysela's avatar Jaroslav Kysela

[ALSA] Add support for Audigy2LS on MSI motherboard

CA0106 driver
Add support for Audigy2LS on MSI motherboard.
Fixes Bug #0901
Signed-off-by: default avatarJames Courtier-Dutton <James@superbug.demon.co.uk>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ae596ed5
/*
* Copyright (c) 2004 James Courtier-Dutton <James@superbug.demon.co.uk>
* Driver CA0106 chips. e.g. Sound Blaster Audigy LS and Live 24bit
* Version: 0.0.21
* Version: 0.0.22
*
* FEATURES currently supported:
* Front, Rear and Center/LFE.
......@@ -75,6 +75,8 @@
* 0.0.21
* Add 4 capture channels. (SPDIF only comes in on channel 0. )
* Add SPDIF capture using optional digital I/O module for SB Live 24bit. (Analog capture does not yet work.)
* 0.0.22
* Add support for MSI K8N Diamond Motherboard with onboard SB Live 24bit without AC97. From kiksen, bug #901
*
* BUGS:
* Some stability problems when unloading the snd-ca0106 kernel module.
......@@ -169,6 +171,7 @@ static ca0106_names_t ca0106_chip_names[] = {
{ 0x10051102, "AudigyLS [SB0310b]"} , /* Unknown AudigyLS that also says SB0310 on it */
{ 0x10061102, "Live! 7.1 24bit [SB0410]"} , /* New Sound Blaster Live! 7.1 24bit. This does not have an AC97. 53SB041000001 */
{ 0x10071102, "Live! 7.1 24bit [SB0413]"} , /* New Dell Sound Blaster Live! 7.1 24bit. This does not have an AC97. */
{ 0x10091462, "MSI K8N Diamond MB [SB0438]"}, /* MSI K8N Diamond Motherboard with onboard SB Live 24bit without AC97 */
{ 0, "AudigyLS [Unknown]" }
};
......@@ -1133,7 +1136,9 @@ static int __devinit snd_ca0106_create(snd_card_t *card,
snd_ca0106_ptr_write(chip, CAPTURE_SOURCE, 0x0, 0x333300e4); /* Select MIC, Line in, TAD in, AUX in */
chip->capture_source = 3; /* Set CAPTURE_SOURCE */
if ((chip->serial == 0x10061102) || (chip->serial == 0x10071102) ) { /* The SB0410 and SB0413 use GPIO differently. */
if ((chip->serial == 0x10061102) ||
(chip->serial == 0x10071102) ||
(chip->serial == 0x10091462)) { /* The SB0410 and SB0413 use GPIO differently. */
/* FIXME: Still need to find out what the other GPIO bits do. E.g. For digital spdif out. */
outl(0x0, chip->port+GPIO);
//outl(0x00f0e000, chip->port+GPIO); /* Analog */
......@@ -1200,7 +1205,9 @@ static int __devinit snd_ca0106_probe(struct pci_dev *pci,
snd_card_free(card);
return err;
}
if ((chip->serial != 0x10061102) && (chip->serial != 0x10071102) ) { /* The SB0410 and SB0413 do not have an ac97 chip. */
if ((chip->serial != 0x10061102) &&
(chip->serial != 0x10071102) &&
(chip->serial != 0x10091462) ) { /* The SB0410 and SB0413 do not have an ac97 chip. */
if ((err = snd_ca0106_ac97(chip)) < 0) {
snd_card_free(card);
return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment