On one of the machines we enable, we found that the actual speaker volume
did not always correspond to the volume set in alsamixer. This patch
fixes that problem.
This patch was orginally written by Kailang @ Realtek, I've rebased it
to fit sound git master.
On one of the machines we enable, we found that the actual speaker volume
did not always correspond to the volume set in alsamixer. This patch
fixes that problem.
This patch was orginally written by Kailang @ Realtek, I've rebased it
to fit sound git master.
BugLink: https:/ /bugs.launchpad .net/bugs/ 1549660 pci/hda/ patch_realtek. c | 23 +++++++ +++++++ +++++++ --
Co-Authored-By: Kailang <email address hidden>
Signed-off-by: David Henningsson <email address hidden>
---
sound/
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/sound/ pci/hda/ patch_realtek. c b/sound/ pci/hda/ patch_realtek. c pci/hda/ patch_realtek. c pci/hda/ patch_realtek. c mode_mic_ in(struct hda_codec *codec, hda_nid_t hp_pin,
index efd4980..ab353b0 100644
--- a/sound/
+++ b/sound/
@@ -3801,6 +3801,10 @@ static void alc_headset_
static void alc_headset_ mode_default( struct hda_codec *codec) mode_default( struct hda_codec *codec)
{
+ static struct coef_fw coef0225[] = {
+ UPDATE_COEF(0x45, 0x3f<<10, 0x34<<10),
+ {}
+ };
static struct coef_fw coef0255[] = {
WRITE_COEF(0x45, 0xc089),
WRITE_COEF(0x45, 0xc489),
@@ -3842,6 +3846,9 @@ static void alc_headset_
};
switch (codec- >core.vendor_ id) { coef_fw( codec, coef0225); process_ coef_fw( codec, coef0255); FIXUP_DELL_ XPS_13_ HEADPHONE_ NOISE, FIXUP_LENOVO_ SPK_NOISE, FIXUP_LENOVO_ LINE2_MIC_ HOTKEY, FIXUP_DELL1_ MIC_NO_ PRESENCE,
+ case 0x10ec0225:
+ alc_process_
+ break;
case 0x10ec0255:
case 0x10ec0256:
alc_
@@ -4749,6 +4756,7 @@ enum {
ALC256_
ALC293_
ALC233_
+ ALC225_
};
static const struct hda_fixup alc269_fixups[] = { fixup_lenovo_ line2_mic_ hotkey, FIXUP_DELL1_ MIC_NO_ PRESENCE] = { SET_COEF_ INDEX, 0x36 }, SET_PROC_ COEF, 0x57d7 }, FIXUP_DELL1_ MIC_NO_ PRESENCE
@@ -5368,6 +5376,17 @@ static const struct hda_fixup alc269_fixups[] = {
.type = HDA_FIXUP_FUNC,
.v.func = alc233_
},
+ [ALC225_
+ .type = HDA_FIXUP_VERBS,
+ .v.verbs = (const struct hda_verb[]) {
+ /* Disable pass-through path for FRONT 14h */
+ { 0x20, AC_VERB_
+ { 0x20, AC_VERB_
+ {}
+ },
+ .chained = true,
+ .chain_id = ALC269_
+ },
};
static const struct snd_pci_quirk alc269_fixup_tbl[] = { fixup_models[ ] = {
@@ -5638,10 +5657,10 @@ static const struct hda_model_fixup alc269_
{0x21, 0x03211020}
static const struct snd_hda_pin_quirk alc269_ pin_fixup_ tbl[] = { PIN_QUIRK( 0x10ec0225, 0x1028, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE, PIN_QUIRK( 0x10ec0225, 0x1028, "Dell", ALC225_ FIXUP_DELL1_ MIC_NO_ PRESENCE, STANDARD_ PINS, PIN_QUIRK( 0x10ec0225, 0x1028, "Dell", ALC269_ FIXUP_DELL1_ MIC_NO_ PRESENCE, PIN_QUIRK( 0x10ec0225, 0x1028, "Dell", ALC225_ FIXUP_DELL1_ MIC_NO_ PRESENCE, STANDARD_ PINS, PIN_QUIRK( 0x10ec0255, 0x1028, "Dell", ALC255_ FIXUP_DELL2_ MIC_NO_ PRESENCE,
- SND_HDA_
+ SND_HDA_
ALC225_
{0x14, 0x901701a0}),
- SND_HDA_
+ SND_HDA_
ALC225_
{0x14, 0x901701b0}),
SND_HDA_
--
1.9.1