diff options
| -rw-r--r-- | Documentation/sound/alsa/SB-Live-mixer.txt | 6 | ||||
| -rw-r--r-- | sound/pci/hda/hda_codec.c | 4 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 25 |
3 files changed, 31 insertions, 4 deletions
diff --git a/Documentation/sound/alsa/SB-Live-mixer.txt b/Documentation/sound/alsa/SB-Live-mixer.txt index f5639d40521d..f4b5988f450c 100644 --- a/Documentation/sound/alsa/SB-Live-mixer.txt +++ b/Documentation/sound/alsa/SB-Live-mixer.txt | |||
| @@ -87,14 +87,14 @@ accumulator. ALSA uses accumulators 0 and 1 for left and right PCM. | |||
| 87 | The result is forwarded to the ADC capture FIFO (thus to the standard capture | 87 | The result is forwarded to the ADC capture FIFO (thus to the standard capture |
| 88 | PCM device). | 88 | PCM device). |
| 89 | 89 | ||
| 90 | name='Music Playback Volume',index=0 | 90 | name='Synth Playback Volume',index=0 |
| 91 | 91 | ||
| 92 | This control is used to attenuate samples for left and right MIDI FX-bus | 92 | This control is used to attenuate samples for left and right MIDI FX-bus |
| 93 | accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples. | 93 | accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples. |
| 94 | The result samples are forwarded to the front DAC PCM slots of the AC97 codec. | 94 | The result samples are forwarded to the front DAC PCM slots of the AC97 codec. |
| 95 | 95 | ||
| 96 | name='Music Capture Volume',index=0 | 96 | name='Synth Capture Volume',index=0 |
| 97 | name='Music Capture Switch',index=0 | 97 | name='Synth Capture Switch',index=0 |
| 98 | 98 | ||
| 99 | These controls are used to attenuate samples for left and right MIDI FX-bus | 99 | These controls are used to attenuate samples for left and right MIDI FX-bus |
| 100 | accumulator. ALSA uses accumulators 4 and 5 for left and right PCM. | 100 | accumulator. ALSA uses accumulators 4 and 5 for left and right PCM. |
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 430f41db6044..759ade12e758 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
| @@ -937,6 +937,7 @@ void snd_hda_shutup_pins(struct hda_codec *codec) | |||
| 937 | } | 937 | } |
| 938 | EXPORT_SYMBOL_HDA(snd_hda_shutup_pins); | 938 | EXPORT_SYMBOL_HDA(snd_hda_shutup_pins); |
| 939 | 939 | ||
| 940 | #ifdef SND_HDA_NEEDS_RESUME | ||
| 940 | /* Restore the pin controls cleared previously via snd_hda_shutup_pins() */ | 941 | /* Restore the pin controls cleared previously via snd_hda_shutup_pins() */ |
| 941 | static void restore_shutup_pins(struct hda_codec *codec) | 942 | static void restore_shutup_pins(struct hda_codec *codec) |
| 942 | { | 943 | { |
| @@ -953,6 +954,7 @@ static void restore_shutup_pins(struct hda_codec *codec) | |||
| 953 | } | 954 | } |
| 954 | codec->pins_shutup = 0; | 955 | codec->pins_shutup = 0; |
| 955 | } | 956 | } |
| 957 | #endif | ||
| 956 | 958 | ||
| 957 | static void init_hda_cache(struct hda_cache_rec *cache, | 959 | static void init_hda_cache(struct hda_cache_rec *cache, |
| 958 | unsigned int record_size); | 960 | unsigned int record_size); |
| @@ -1329,6 +1331,7 @@ static void purify_inactive_streams(struct hda_codec *codec) | |||
| 1329 | } | 1331 | } |
| 1330 | } | 1332 | } |
| 1331 | 1333 | ||
| 1334 | #ifdef SND_HDA_NEEDS_RESUME | ||
| 1332 | /* clean up all streams; called from suspend */ | 1335 | /* clean up all streams; called from suspend */ |
| 1333 | static void hda_cleanup_all_streams(struct hda_codec *codec) | 1336 | static void hda_cleanup_all_streams(struct hda_codec *codec) |
| 1334 | { | 1337 | { |
| @@ -1340,6 +1343,7 @@ static void hda_cleanup_all_streams(struct hda_codec *codec) | |||
| 1340 | really_cleanup_stream(codec, p); | 1343 | really_cleanup_stream(codec, p); |
| 1341 | } | 1344 | } |
| 1342 | } | 1345 | } |
| 1346 | #endif | ||
| 1343 | 1347 | ||
| 1344 | /* | 1348 | /* |
| 1345 | * amp access functions | 1349 | * amp access functions |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 52928d9a72da..d3bd2c10180f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -14868,6 +14868,23 @@ static void alc269_fixup_hweq(struct hda_codec *codec, | |||
| 14868 | alc_write_coef_idx(codec, 0x1e, coef | 0x80); | 14868 | alc_write_coef_idx(codec, 0x1e, coef | 0x80); |
| 14869 | } | 14869 | } |
| 14870 | 14870 | ||
| 14871 | static void alc271_fixup_dmic(struct hda_codec *codec, | ||
| 14872 | const struct alc_fixup *fix, int action) | ||
| 14873 | { | ||
| 14874 | static struct hda_verb verbs[] = { | ||
| 14875 | {0x20, AC_VERB_SET_COEF_INDEX, 0x0d}, | ||
| 14876 | {0x20, AC_VERB_SET_PROC_COEF, 0x4000}, | ||
| 14877 | {} | ||
| 14878 | }; | ||
| 14879 | unsigned int cfg; | ||
| 14880 | |||
| 14881 | if (strcmp(codec->chip_name, "ALC271X")) | ||
| 14882 | return; | ||
| 14883 | cfg = snd_hda_codec_get_pincfg(codec, 0x12); | ||
| 14884 | if (get_defcfg_connect(cfg) == AC_JACK_PORT_FIXED) | ||
| 14885 | snd_hda_sequence_write(codec, verbs); | ||
| 14886 | } | ||
| 14887 | |||
| 14871 | enum { | 14888 | enum { |
| 14872 | ALC269_FIXUP_SONY_VAIO, | 14889 | ALC269_FIXUP_SONY_VAIO, |
| 14873 | ALC275_FIXUP_SONY_VAIO_GPIO2, | 14890 | ALC275_FIXUP_SONY_VAIO_GPIO2, |
| @@ -14876,6 +14893,7 @@ enum { | |||
| 14876 | ALC269_FIXUP_ASUS_G73JW, | 14893 | ALC269_FIXUP_ASUS_G73JW, |
| 14877 | ALC269_FIXUP_LENOVO_EAPD, | 14894 | ALC269_FIXUP_LENOVO_EAPD, |
| 14878 | ALC275_FIXUP_SONY_HWEQ, | 14895 | ALC275_FIXUP_SONY_HWEQ, |
| 14896 | ALC271_FIXUP_DMIC, | ||
| 14879 | }; | 14897 | }; |
| 14880 | 14898 | ||
| 14881 | static const struct alc_fixup alc269_fixups[] = { | 14899 | static const struct alc_fixup alc269_fixups[] = { |
| @@ -14929,7 +14947,11 @@ static const struct alc_fixup alc269_fixups[] = { | |||
| 14929 | .v.func = alc269_fixup_hweq, | 14947 | .v.func = alc269_fixup_hweq, |
| 14930 | .chained = true, | 14948 | .chained = true, |
| 14931 | .chain_id = ALC275_FIXUP_SONY_VAIO_GPIO2 | 14949 | .chain_id = ALC275_FIXUP_SONY_VAIO_GPIO2 |
| 14932 | } | 14950 | }, |
| 14951 | [ALC271_FIXUP_DMIC] = { | ||
| 14952 | .type = ALC_FIXUP_FUNC, | ||
| 14953 | .v.func = alc271_fixup_dmic, | ||
| 14954 | }, | ||
| 14933 | }; | 14955 | }; |
| 14934 | 14956 | ||
| 14935 | static struct snd_pci_quirk alc269_fixup_tbl[] = { | 14957 | static struct snd_pci_quirk alc269_fixup_tbl[] = { |
| @@ -14938,6 +14960,7 @@ static struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
| 14938 | SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), | 14960 | SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), |
| 14939 | SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), | 14961 | SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO), |
| 14940 | SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), | 14962 | SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), |
| 14963 | SND_PCI_QUIRK_VENDOR(0x1025, "Acer Aspire", ALC271_FIXUP_DMIC), | ||
| 14941 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), | 14964 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), |
| 14942 | SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE), | 14965 | SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE), |
| 14943 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), | 14966 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), |
