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:
parent
9470195a9c
commit
09521d2e3e
@ -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 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user