Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a9a6f23 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'fix/hda' into for-linus

parents b3c27b51 1c7276cf
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -87,14 +87,14 @@ accumulator. ALSA uses accumulators 0 and 1 for left and right PCM.
The result is forwarded to the ADC capture FIFO (thus to the standard capture
The result is forwarded to the ADC capture FIFO (thus to the standard capture
PCM device).
PCM device).


name='Music Playback Volume',index=0
name='Synth Playback Volume',index=0


This control is used to attenuate samples for left and right MIDI FX-bus
This control is used to attenuate samples for left and right MIDI FX-bus
accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
The result samples are forwarded to the front DAC PCM slots of the AC97 codec.
The result samples are forwarded to the front DAC PCM slots of the AC97 codec.


name='Music Capture Volume',index=0
name='Synth Capture Volume',index=0
name='Music Capture Switch',index=0
name='Synth Capture Switch',index=0


These controls are used to attenuate samples for left and right MIDI FX-bus
These controls are used to attenuate samples for left and right MIDI FX-bus
accumulator. ALSA uses accumulators 4 and 5 for left and right PCM.
accumulator. ALSA uses accumulators 4 and 5 for left and right PCM.
+4 −0
Original line number Original line Diff line number Diff line
@@ -937,6 +937,7 @@ void snd_hda_shutup_pins(struct hda_codec *codec)
}
}
EXPORT_SYMBOL_HDA(snd_hda_shutup_pins);
EXPORT_SYMBOL_HDA(snd_hda_shutup_pins);


#ifdef SND_HDA_NEEDS_RESUME
/* Restore the pin controls cleared previously via snd_hda_shutup_pins() */
/* Restore the pin controls cleared previously via snd_hda_shutup_pins() */
static void restore_shutup_pins(struct hda_codec *codec)
static void restore_shutup_pins(struct hda_codec *codec)
{
{
@@ -953,6 +954,7 @@ static void restore_shutup_pins(struct hda_codec *codec)
	}
	}
	codec->pins_shutup = 0;
	codec->pins_shutup = 0;
}
}
#endif


static void init_hda_cache(struct hda_cache_rec *cache,
static void init_hda_cache(struct hda_cache_rec *cache,
			   unsigned int record_size);
			   unsigned int record_size);
@@ -1329,6 +1331,7 @@ static void purify_inactive_streams(struct hda_codec *codec)
	}
	}
}
}


#ifdef SND_HDA_NEEDS_RESUME
/* clean up all streams; called from suspend */
/* clean up all streams; called from suspend */
static void hda_cleanup_all_streams(struct hda_codec *codec)
static void hda_cleanup_all_streams(struct hda_codec *codec)
{
{
@@ -1340,6 +1343,7 @@ static void hda_cleanup_all_streams(struct hda_codec *codec)
			really_cleanup_stream(codec, p);
			really_cleanup_stream(codec, p);
	}
	}
}
}
#endif


/*
/*
 * amp access functions
 * amp access functions
+24 −1
Original line number Original line Diff line number Diff line
@@ -14868,6 +14868,23 @@ static void alc269_fixup_hweq(struct hda_codec *codec,
	alc_write_coef_idx(codec, 0x1e, coef | 0x80);
	alc_write_coef_idx(codec, 0x1e, coef | 0x80);
}
}
static void alc271_fixup_dmic(struct hda_codec *codec,
			      const struct alc_fixup *fix, int action)
{
	static struct hda_verb verbs[] = {
		{0x20, AC_VERB_SET_COEF_INDEX, 0x0d},
		{0x20, AC_VERB_SET_PROC_COEF, 0x4000},
		{}
	};
	unsigned int cfg;
	if (strcmp(codec->chip_name, "ALC271X"))
		return;
	cfg = snd_hda_codec_get_pincfg(codec, 0x12);
	if (get_defcfg_connect(cfg) == AC_JACK_PORT_FIXED)
		snd_hda_sequence_write(codec, verbs);
}
enum {
enum {
	ALC269_FIXUP_SONY_VAIO,
	ALC269_FIXUP_SONY_VAIO,
	ALC275_FIXUP_SONY_VAIO_GPIO2,
	ALC275_FIXUP_SONY_VAIO_GPIO2,
@@ -14876,6 +14893,7 @@ enum {
	ALC269_FIXUP_ASUS_G73JW,
	ALC269_FIXUP_ASUS_G73JW,
	ALC269_FIXUP_LENOVO_EAPD,
	ALC269_FIXUP_LENOVO_EAPD,
	ALC275_FIXUP_SONY_HWEQ,
	ALC275_FIXUP_SONY_HWEQ,
	ALC271_FIXUP_DMIC,
};
};
static const struct alc_fixup alc269_fixups[] = {
static const struct alc_fixup alc269_fixups[] = {
@@ -14929,7 +14947,11 @@ static const struct alc_fixup alc269_fixups[] = {
		.v.func = alc269_fixup_hweq,
		.v.func = alc269_fixup_hweq,
		.chained = true,
		.chained = true,
		.chain_id = ALC275_FIXUP_SONY_VAIO_GPIO2
		.chain_id = ALC275_FIXUP_SONY_VAIO_GPIO2
	}
	},
	[ALC271_FIXUP_DMIC] = {
		.type = ALC_FIXUP_FUNC,
		.v.func = alc271_fixup_dmic,
	},
};
};
static struct snd_pci_quirk alc269_fixup_tbl[] = {
static struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -14938,6 +14960,7 @@ static struct snd_pci_quirk alc269_fixup_tbl[] = {
	SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
	SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
	SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
	SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
	SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
	SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
	SND_PCI_QUIRK_VENDOR(0x1025, "Acer Aspire", ALC271_FIXUP_DMIC),
	SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
	SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
	SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE),
	SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE),
	SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
	SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),