ALSA: ctxfi - Fix wrong model id for UAA

CTUAA should be checked instead of CTHENDRIX.  The latter is for 20k2 chip.
Also, fixed the detection of UAA/HENDRIX models by fixing the mask bits.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2009-06-08 18:29:38 +02:00
parent 9470195a9c
commit 09521d2e3e
2 changed files with 10 additions and 9 deletions

View File

@ -44,8 +44,8 @@ static struct snd_pci_quirk __devinitdata subsys_20k1_list[] = {
SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x002f, "SB055x", CTSB055X), SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x002f, "SB055x", CTSB055X),
SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x0029, "SB073x", CTSB073X), SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x0029, "SB073x", CTSB073X),
SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x0031, "SB073x", CTSB073X), SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x0031, "SB073x", CTSB073X),
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_CREATIVE, 0x6000, SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_CREATIVE, 0xf000, 0x6000,
PCI_SUBDEVICE_ID_CREATIVE_HENDRIX, "UAA", CTUAA), "UAA", CTUAA),
SND_PCI_QUIRK_VENDOR(PCI_VENDOR_ID_CREATIVE, SND_PCI_QUIRK_VENDOR(PCI_VENDOR_ID_CREATIVE,
"Unknown", CT20K1_UNKNOWN), "Unknown", CT20K1_UNKNOWN),
{ } /* terminator */ { } /* terminator */
@ -60,8 +60,9 @@ static struct snd_pci_quirk __devinitdata subsys_20k2_list[] = {
"SB0880", CTSB0880), "SB0880", CTSB0880),
SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, PCI_SUBDEVICE_ID_CREATIVE_SB08803, SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, PCI_SUBDEVICE_ID_CREATIVE_SB08803,
"SB0880", CTSB0880), "SB0880", CTSB0880),
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_CREATIVE, 0x6000, SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_CREATIVE, 0xf000,
PCI_SUBDEVICE_ID_CREATIVE_HENDRIX, "UAA", CTHENDRIX), PCI_SUBDEVICE_ID_CREATIVE_HENDRIX, "HENDRIX",
CTHENDRIX),
{ } /* terminator */ { } /* terminator */
}; };

View File

@ -1541,7 +1541,7 @@ static int hw_is_adc_input_selected(struct hw *hw, enum ADCSRC type)
return is_adc_input_selected_SB055x(hw, type); return is_adc_input_selected_SB055x(hw, type);
case CTSB073X: case CTSB073X:
return is_adc_input_selected_hendrix(hw, type); return is_adc_input_selected_hendrix(hw, type);
case CTHENDRIX: case CTUAA:
return is_adc_input_selected_hendrix(hw, type); return is_adc_input_selected_hendrix(hw, type);
default: default:
return is_adc_input_selected_SBx(hw, type); return is_adc_input_selected_SBx(hw, type);
@ -1692,7 +1692,7 @@ static int hw_adc_input_select(struct hw *hw, enum ADCSRC type)
return adc_input_select_SB055x(hw, type, state); return adc_input_select_SB055x(hw, type, state);
case CTSB073X: case CTSB073X:
return adc_input_select_hendrix(hw, type, state); return adc_input_select_hendrix(hw, type, state);
case CTHENDRIX: case CTUAA:
return adc_input_select_hendrix(hw, type, state); return adc_input_select_hendrix(hw, type, state);
default: default:
return adc_input_select_SBx(hw, type, state); return adc_input_select_SBx(hw, type, state);
@ -1780,7 +1780,7 @@ static int hw_adc_init(struct hw *hw, const struct adc_conf *info)
static int hw_have_digit_io_switch(struct hw *hw) static int hw_have_digit_io_switch(struct hw *hw)
{ {
/* SB073x and Vista compatible cards have no digit IO switch */ /* SB073x and Vista compatible cards have no digit IO switch */
return !(hw->model == CTSB073X || hw->model == CTHENDRIX); return !(hw->model == CTSB073X || hw->model == CTUAA);
} }
#define CTLBITS(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) #define CTLBITS(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
@ -1916,7 +1916,7 @@ static int hw_card_start(struct hw *hw)
goto error1; goto error1;
/* Switch to X-Fi mode from UAA mode if neeeded */ /* Switch to X-Fi mode from UAA mode if neeeded */
if (hw->model == CTHENDRIX) { if (hw->model == CTUAA) {
err = uaa_to_xfi(pci); err = uaa_to_xfi(pci);
if (err) if (err)
goto error2; goto error2;
@ -2027,7 +2027,7 @@ static int hw_card_init(struct hw *hw, struct card_conf *info)
case CTSB073X: case CTSB073X:
hw_write_20kx(hw, GPIOCTL, 0x00e6); hw_write_20kx(hw, GPIOCTL, 0x00e6);
break; break;
case CTHENDRIX: /* Vista compatible cards */ case CTUAA:
hw_write_20kx(hw, GPIOCTL, 0x00c2); hw_write_20kx(hw, GPIOCTL, 0x00c2);
break; break;
default: default: