Skip to content

Commit dd9aa33

Browse files
jason77-wangtiwai
authored andcommitted
ALSA: hda/realtek - Can't adjust speaker's volume on a Dell AIO
We have a Dell AIO on which we can't adjust its speaker's volume. The problem is it is connected to a Audio Output node without Amp-out capability. To fix it, we change it to be connnected to a node with Amp-out capability. Cc: <[email protected]> Signed-off-by: Hui Wang <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
1 parent 0984d15 commit dd9aa33

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

sound/pci/hda/patch_realtek.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4689,6 +4689,22 @@ static void alc290_fixup_mono_speakers(struct hda_codec *codec,
46894689
}
46904690
}
46914691

4692+
static void alc298_fixup_speaker_volume(struct hda_codec *codec,
4693+
const struct hda_fixup *fix, int action)
4694+
{
4695+
if (action == HDA_FIXUP_ACT_PRE_PROBE) {
4696+
/* The speaker is routed to the Node 0x06 by a mistake, as a result
4697+
we can't adjust the speaker's volume since this node does not has
4698+
Amp-out capability. we change the speaker's route to:
4699+
Node 0x02 (Audio Output) -> Node 0x0c (Audio Mixer) -> Node 0x17 (
4700+
Pin Complex), since Node 0x02 has Amp-out caps, we can adjust
4701+
speaker's volume now. */
4702+
4703+
hda_nid_t conn1[1] = { 0x0c };
4704+
snd_hda_override_conn_list(codec, 0x17, 1, conn1);
4705+
}
4706+
}
4707+
46924708
/* Hook to update amp GPIO4 for automute */
46934709
static void alc280_hp_gpio4_automute_hook(struct hda_codec *codec,
46944710
struct hda_jack_callback *jack)
@@ -4838,6 +4854,7 @@ enum {
48384854
ALC280_FIXUP_HP_HEADSET_MIC,
48394855
ALC221_FIXUP_HP_FRONT_MIC,
48404856
ALC292_FIXUP_TPT460,
4857+
ALC298_FIXUP_SPK_VOLUME,
48414858
};
48424859

48434860
static const struct hda_fixup alc269_fixups[] = {
@@ -5493,6 +5510,10 @@ static const struct hda_fixup alc269_fixups[] = {
54935510
.chained = true,
54945511
.chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE,
54955512
},
5513+
[ALC298_FIXUP_SPK_VOLUME] = {
5514+
.type = HDA_FIXUP_FUNC,
5515+
.v.func = alc298_fixup_speaker_volume,
5516+
},
54965517
};
54975518

54985519
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -5539,6 +5560,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
55395560
SND_PCI_QUIRK(0x1028, 0x0704, "Dell XPS 13 9350", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE),
55405561
SND_PCI_QUIRK(0x1028, 0x0725, "Dell Inspiron 3162", ALC255_FIXUP_DELL_SPK_NOISE),
55415562
SND_PCI_QUIRK(0x1028, 0x075b, "Dell XPS 13 9360", ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE),
5563+
SND_PCI_QUIRK(0x1028, 0x075d, "Dell AIO", ALC298_FIXUP_SPK_VOLUME),
55425564
SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
55435565
SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
55445566
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),

0 commit comments

Comments
 (0)