|
@@ -991,6 +991,7 @@ struct ca0132_spec {
|
|
|
enum {
|
|
|
QUIRK_NONE,
|
|
|
QUIRK_ALIENWARE,
|
|
|
+ QUIRK_ALIENWARE_M17XR4,
|
|
|
QUIRK_SBZ,
|
|
|
QUIRK_R3DI,
|
|
|
};
|
|
@@ -1040,6 +1041,7 @@ static const struct hda_pintbl r3di_pincfgs[] = {
|
|
|
};
|
|
|
|
|
|
static const struct snd_pci_quirk ca0132_quirks[] = {
|
|
|
+ SND_PCI_QUIRK(0x1028, 0x057b, "Alienware M17x R4", QUIRK_ALIENWARE_M17XR4),
|
|
|
SND_PCI_QUIRK(0x1028, 0x0685, "Alienware 15 2015", QUIRK_ALIENWARE),
|
|
|
SND_PCI_QUIRK(0x1028, 0x0688, "Alienware 17 2015", QUIRK_ALIENWARE),
|
|
|
SND_PCI_QUIRK(0x1028, 0x0708, "Alienware 15 R2 2016", QUIRK_ALIENWARE),
|
|
@@ -6130,7 +6132,10 @@ static void ca0132_init_dmic(struct hda_codec *codec)
|
|
|
* Bit 6: set to select Data2, clear for Data1
|
|
|
* Bit 7: set to enable DMic, clear for AMic
|
|
|
*/
|
|
|
- val = 0x23;
|
|
|
+ if (spec->quirk == QUIRK_ALIENWARE_M17XR4)
|
|
|
+ val = 0x33;
|
|
|
+ else
|
|
|
+ val = 0x23;
|
|
|
/* keep a copy of dmic ctl val for enable/disable dmic purpuse */
|
|
|
spec->dmic_ctl = val;
|
|
|
snd_hda_codec_write(codec, spec->input_pins[0], 0,
|