mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
ALSA: hda/realtek: Fix speaker pop on Star Labs StarFighter
On Star Labs StarFighter (Realtek ALC233/235), the internal speakers can emit an audible pop when entering or leaving runtime suspend. Mute the speaker output paths via snd_hda_gen_shutup_speakers() in the Realtek shutup callback before the codec is powered down. This is enough to avoid the pop without special EAPD handling. Test results: - runtime PM pop fixed - still reaches D3 (PCI 0000:00:1f.3 power_state=D3hot) - does not address pops on cold boot (G3 exit) or around display manager start/shutdown journalctl -k (boot): - snd_hda_codec_alc269 hdaudioC0D0: ALC233: picked fixup for PCI SSID 7017:2014 - snd_hda_codec_alc269 hdaudioC0D0: autoconfig for ALC233: line_outs=1 (0x1b/0x0/0x0/0x0/0x0) type:speaker Suggested-by: Takashi Iwai <tiwai@suse.com> Tested-by: Sean Rhodes <sean@starlabs.systems> Signed-off-by: Sean Rhodes <sean@starlabs.systems> Link: https://patch.msgid.link/4d5fb71b132bb283fd41c622b8413770b2065242.1771532060.git.sean@starlabs.systems Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
6de23f81a5
commit
1cb3c20688
1 changed files with 25 additions and 0 deletions
|
|
@ -1017,6 +1017,24 @@ static int alc269_resume(struct hda_codec *codec)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define STARLABS_STARFIGHTER_SHUTUP_DELAY_MS 30
|
||||
|
||||
static void starlabs_starfighter_shutup(struct hda_codec *codec)
|
||||
{
|
||||
if (snd_hda_gen_shutup_speakers(codec))
|
||||
msleep(STARLABS_STARFIGHTER_SHUTUP_DELAY_MS);
|
||||
}
|
||||
|
||||
static void alc233_fixup_starlabs_starfighter(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix,
|
||||
int action)
|
||||
{
|
||||
struct alc_spec *spec = codec->spec;
|
||||
|
||||
if (action == HDA_FIXUP_ACT_PRE_PROBE)
|
||||
spec->shutup = starlabs_starfighter_shutup;
|
||||
}
|
||||
|
||||
static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
|
|
@ -4040,6 +4058,7 @@ enum {
|
|||
ALC245_FIXUP_CLEVO_NOISY_MIC,
|
||||
ALC269_FIXUP_VAIO_VJFH52_MIC_NO_PRESENCE,
|
||||
ALC233_FIXUP_MEDION_MTL_SPK,
|
||||
ALC233_FIXUP_STARLABS_STARFIGHTER,
|
||||
ALC294_FIXUP_BASS_SPEAKER_15,
|
||||
ALC283_FIXUP_DELL_HP_RESUME,
|
||||
ALC294_FIXUP_ASUS_CS35L41_SPI_2,
|
||||
|
|
@ -6499,6 +6518,10 @@ static const struct hda_fixup alc269_fixups[] = {
|
|||
{ }
|
||||
},
|
||||
},
|
||||
[ALC233_FIXUP_STARLABS_STARFIGHTER] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc233_fixup_starlabs_starfighter,
|
||||
},
|
||||
[ALC294_FIXUP_BASS_SPEAKER_15] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc294_fixup_bass_speaker_15,
|
||||
|
|
@ -7651,6 +7674,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x2782, 0x1705, "MEDION E15433", ALC269VC_FIXUP_INFINIX_Y4_MAX),
|
||||
SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
|
||||
SND_PCI_QUIRK(0x2782, 0x4900, "MEDION E15443", ALC233_FIXUP_MEDION_MTL_SPK),
|
||||
SND_PCI_QUIRK(0x7017, 0x2014, "Star Labs StarFighter", ALC233_FIXUP_STARLABS_STARFIGHTER),
|
||||
SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
|
||||
SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
|
||||
SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10),
|
||||
|
|
@ -7747,6 +7771,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
|
|||
{.id = ALC298_FIXUP_TPT470_DOCK_FIX, .name = "tpt470-dock-fix"},
|
||||
{.id = ALC298_FIXUP_TPT470_DOCK, .name = "tpt470-dock"},
|
||||
{.id = ALC233_FIXUP_LENOVO_MULTI_CODECS, .name = "dual-codecs"},
|
||||
{.id = ALC233_FIXUP_STARLABS_STARFIGHTER, .name = "starlabs-starfighter"},
|
||||
{.id = ALC700_FIXUP_INTEL_REFERENCE, .name = "alc700-ref"},
|
||||
{.id = ALC269_FIXUP_SONY_VAIO, .name = "vaio"},
|
||||
{.id = ALC269_FIXUP_DELL_M101Z, .name = "dell-m101z"},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue