mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-13 01:08:50 +00:00
ALSA: hda/ca0132 - Add ZxR quirks + new quirk check function
This patch adds quirk ID's for the ZxR and it's daughter board, the DBPro. It also adds a function for determining the quirk for each board through HDA subsytem ID's instead of PCI subsystem ID's. Signed-off-by: Connor McAdams <conmanx360@gmail.com> Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8e6bc6b3aa
commit
b29733db3b
@ -1071,6 +1071,8 @@ enum {
|
||||
QUIRK_ALIENWARE,
|
||||
QUIRK_ALIENWARE_M17XR4,
|
||||
QUIRK_SBZ,
|
||||
QUIRK_ZXR,
|
||||
QUIRK_ZXR_DBPRO,
|
||||
QUIRK_R3DI,
|
||||
QUIRK_R3D,
|
||||
QUIRK_AE5,
|
||||
@ -8376,6 +8378,29 @@ static int ca0132_prepare_verbs(struct hda_codec *codec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* The Sound Blaster ZxR shares the same PCI subsystem ID as some regular
|
||||
* Sound Blaster Z cards. However, they have different HDA codec subsystem
|
||||
* ID's. So, we check for the ZxR's subsystem ID, as well as the DBPro
|
||||
* daughter boards ID.
|
||||
*/
|
||||
static void sbz_detect_quirk(struct hda_codec *codec)
|
||||
{
|
||||
struct ca0132_spec *spec = codec->spec;
|
||||
|
||||
switch (codec->core.subsystem_id) {
|
||||
case 0x11020033:
|
||||
spec->quirk = QUIRK_ZXR;
|
||||
break;
|
||||
case 0x1102003f:
|
||||
spec->quirk = QUIRK_ZXR_DBPRO;
|
||||
break;
|
||||
default:
|
||||
spec->quirk = QUIRK_SBZ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int patch_ca0132(struct hda_codec *codec)
|
||||
{
|
||||
struct ca0132_spec *spec;
|
||||
@ -8401,6 +8426,9 @@ static int patch_ca0132(struct hda_codec *codec)
|
||||
else
|
||||
spec->quirk = QUIRK_NONE;
|
||||
|
||||
if (spec->quirk == QUIRK_SBZ)
|
||||
sbz_detect_quirk(codec);
|
||||
|
||||
spec->dsp_state = DSP_DOWNLOAD_INIT;
|
||||
spec->num_mixers = 1;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user