Skip to content

Commit

Permalink
ALSA: hda/ca0132 - Add ZxR quirks + new quirk check function
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Connor McAdams authored and Takashi Iwai committed Oct 2, 2018
1 parent 8e6bc6b commit b29733d
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions sound/pci/hda/patch_ca0132.c
Original file line number Diff line number Diff line change
Expand Up @@ -1071,6 +1071,8 @@ enum {
QUIRK_ALIENWARE,
QUIRK_ALIENWARE_M17XR4,
QUIRK_SBZ,
QUIRK_ZXR,
QUIRK_ZXR_DBPRO,
QUIRK_R3DI,
QUIRK_R3D,
QUIRK_AE5,
Expand Down Expand Up @@ -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;
Expand All @@ -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;

Expand Down

0 comments on commit b29733d

Please sign in to comment.