[alsa-devel] [PATCH] ALSA: hda - More pop noise fixes for Dell XPS 13 9333
Gabriele Mazzotta
gabriele.mzt at gmail.com
Thu Aug 7 18:35:39 CEST 2014
On init, mic-in is always set as input source, indipendently on what
is plugged in. Since setting/unsetting mic-in as input source causes
a pop noise, make sure the internal microphone is selected as input
source on boot.
On shutdown, make sure the codec is not suspended as that would cause
a pop noise.
Signed-off-by: Gabriele Mazzotta <gabriele.mzt at gmail.com>
---
sound/pci/hda/hda_codec.c | 2 ++
sound/pci/hda/hda_codec.h | 1 +
sound/pci/hda/patch_realtek.c | 12 ++++++++++++
3 files changed, 15 insertions(+)
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 4c20277..92d8292 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -5348,6 +5348,8 @@ void snd_hda_bus_reboot_notify(struct hda_bus *bus)
if (!bus)
return;
list_for_each_entry(codec, &bus->codec_list, list) {
+ if (codec->resume_at_reboot)
+ hda_call_codec_resume(codec);
if (hda_codec_is_power_on(codec) &&
codec->patch_ops.reboot_notify)
codec->patch_ops.reboot_notify(codec);
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 5825aa1..5c3c66e 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -366,6 +366,7 @@ struct hda_codec {
unsigned int cached_write:1; /* write only to caches */
unsigned int dp_mst:1; /* support DP1.2 Multi-stream transport */
unsigned int dump_coef:1; /* dump processing coefs in codec proc file */
+ unsigned int resume_at_reboot:1; /* resume codec at reboot */
#ifdef CONFIG_PM
unsigned int power_on :1; /* current (global) power-state */
unsigned int d3_stop_clk:1; /* support D3 operation without BCLK */
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index b60824e..defaa2a 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4018,8 +4018,20 @@ static void alc_fixup_dell_xps13(struct hda_codec *codec,
{
if (action == HDA_FIXUP_ACT_PROBE) {
struct alc_spec *spec = codec->spec;
+ struct hda_input_mux *imux = &spec->gen.input_mux;
+ int i;
+
spec->shutup = alc_no_shutup;
codec->power_filter = alc_power_filter_xps13;
+ codec->resume_at_reboot = 1;
+
+ /* Make the internal mic the default input source. */
+ for (i = 0; i < imux->num_items; i++) {
+ if (spec->gen.imux_pins[i] == 0x12) {
+ spec->gen.cur_mux[0] = i;
+ break;
+ }
+ }
}
}
--
2.1.0.rc1
More information about the Alsa-devel
mailing list