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

Merge branch 'fix/hda' into for-linus

parents b3c27b51 1c7276cf
...@@ -87,14 +87,14 @@ accumulator. ALSA uses accumulators 0 and 1 for left and right PCM. ...@@ -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.
......
...@@ -937,6 +937,7 @@ void snd_hda_shutup_pins(struct hda_codec *codec) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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
......
...@@ -14868,6 +14868,23 @@ static void alc269_fixup_hweq(struct hda_codec *codec, ...@@ -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 { ...@@ -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[] = { ...@@ -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[] = { ...@@ -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),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment