|
28 | 28 | #include <sound/hda_codec.h>
|
29 | 29 | #include "hda_local.h"
|
30 | 30 | #include "hda_auto_parser.h"
|
| 31 | +#include "hda_beep.h" |
31 | 32 | #include "hda_jack.h"
|
32 | 33 | #include "hda_generic.h"
|
33 | 34 | #include "hda_component.h"
|
@@ -6922,6 +6923,30 @@ static void alc285_fixup_hp_envy_x360(struct hda_codec *codec,
|
6922 | 6923 | }
|
6923 | 6924 | }
|
6924 | 6925 |
|
| 6926 | +static void alc285_fixup_hp_beep(struct hda_codec *codec, |
| 6927 | + const struct hda_fixup *fix, int action) |
| 6928 | +{ |
| 6929 | + if (action == HDA_FIXUP_ACT_PRE_PROBE) { |
| 6930 | + codec->beep_just_power_on = true; |
| 6931 | + } else if (action == HDA_FIXUP_ACT_INIT) { |
| 6932 | +#ifdef CONFIG_SND_HDA_INPUT_BEEP |
| 6933 | + /* |
| 6934 | + * Just enable loopback to internal speaker and headphone jack. |
| 6935 | + * Disable amplification to get about the same beep volume as |
| 6936 | + * was on pure BIOS setup before loading the driver. |
| 6937 | + */ |
| 6938 | + alc_update_coef_idx(codec, 0x36, 0x7070, BIT(13)); |
| 6939 | + |
| 6940 | + snd_hda_enable_beep_device(codec, 1); |
| 6941 | + |
| 6942 | +#if !IS_ENABLED(CONFIG_INPUT_PCSPKR) |
| 6943 | + dev_warn_once(hda_codec_dev(codec), |
| 6944 | + "enable CONFIG_INPUT_PCSPKR to get PC beeps\n"); |
| 6945 | +#endif |
| 6946 | +#endif |
| 6947 | + } |
| 6948 | +} |
| 6949 | + |
6925 | 6950 | /* for hda_fixup_thinkpad_acpi() */
|
6926 | 6951 | #include "thinkpad_helper.c"
|
6927 | 6952 |
|
@@ -7706,6 +7731,7 @@ enum {
|
7706 | 7731 | ALC285_FIXUP_HP_GPIO_LED,
|
7707 | 7732 | ALC285_FIXUP_HP_MUTE_LED,
|
7708 | 7733 | ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED,
|
| 7734 | + ALC285_FIXUP_HP_BEEP_MICMUTE_LED, |
7709 | 7735 | ALC236_FIXUP_HP_MUTE_LED_COEFBIT2,
|
7710 | 7736 | ALC236_FIXUP_HP_GPIO_LED,
|
7711 | 7737 | ALC236_FIXUP_HP_MUTE_LED,
|
@@ -9302,6 +9328,12 @@ static const struct hda_fixup alc269_fixups[] = {
|
9302 | 9328 | .type = HDA_FIXUP_FUNC,
|
9303 | 9329 | .v.func = alc285_fixup_hp_spectre_x360_mute_led,
|
9304 | 9330 | },
|
| 9331 | + [ALC285_FIXUP_HP_BEEP_MICMUTE_LED] = { |
| 9332 | + .type = HDA_FIXUP_FUNC, |
| 9333 | + .v.func = alc285_fixup_hp_beep, |
| 9334 | + .chained = true, |
| 9335 | + .chain_id = ALC285_FIXUP_HP_MUTE_LED, |
| 9336 | + }, |
9305 | 9337 | [ALC236_FIXUP_HP_MUTE_LED_COEFBIT2] = {
|
9306 | 9338 | .type = HDA_FIXUP_FUNC,
|
9307 | 9339 | .v.func = alc236_fixup_hp_mute_led_coefbit2,
|
@@ -10391,7 +10423,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
10391 | 10423 | SND_PCI_QUIRK(0x103c, 0x8730, "HP ProBook 445 G7", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
|
10392 | 10424 | SND_PCI_QUIRK(0x103c, 0x8735, "HP ProBook 435 G7", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
|
10393 | 10425 | SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT),
|
10394 |
| - SND_PCI_QUIRK(0x103c, 0x8760, "HP", ALC285_FIXUP_HP_MUTE_LED), |
| 10426 | + SND_PCI_QUIRK(0x103c, 0x8760, "HP EliteBook 8{4,5}5 G7", ALC285_FIXUP_HP_BEEP_MICMUTE_LED), |
10395 | 10427 | SND_PCI_QUIRK(0x103c, 0x876e, "HP ENVY x360 Convertible 13-ay0xxx", ALC245_FIXUP_HP_X360_MUTE_LEDS),
|
10396 | 10428 | SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED),
|
10397 | 10429 | SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED),
|
|
0 commit comments