aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobin Davis <tdavis@dsl-only.net>2006-10-13 06:32:16 -0400
committerJaroslav Kysela <perex@suse.cz>2007-02-09 03:00:51 -0500
commitc07584c83287ae5a13cc836f69a1d824ad068c66 (patch)
tree2282c42c7663000d300ab3addc83bd1c7214f6ad
parent734c2d4bb7cfccaab79923331efc7422e4e76a8a (diff)
[ALSA] hda-codec - Add support for Medion laptops
This patch adds audio support for Medion's line of laptops, based on code shipped with the laptops. Microphone support is still being explored. Signed-off-by: Tobin Davis <tdavis@dsl-only.net> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt1
-rw-r--r--sound/pci/hda/patch_realtek.c54
2 files changed, 54 insertions, 1 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 9fef210ab50a..08f63ee53742 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -817,6 +817,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
817 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O 817 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
818 6stack-dig-demo 6-jack digital for Intel demo board 818 6stack-dig-demo 6-jack digital for Intel demo board
819 acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) 819 acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
820 medion Medion Laptops
820 auto auto-config reading BIOS (default) 821 auto auto-config reading BIOS (default)
821 822
822 ALC861/660 823 ALC861/660
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 4e0c3c1b908b..0b14bd17181a 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -112,6 +112,7 @@ enum {
112 ALC883_6ST_DIG, 112 ALC883_6ST_DIG,
113 ALC888_DEMO_BOARD, 113 ALC888_DEMO_BOARD,
114 ALC883_ACER, 114 ALC883_ACER,
115 ALC883_MEDION,
115 ALC883_AUTO, 116 ALC883_AUTO,
116 ALC883_MODEL_LAST, 117 ALC883_MODEL_LAST,
117}; 118};
@@ -4309,7 +4310,7 @@ static struct hda_verb alc882_init_verbs[] = {
4309static struct hda_verb alc882_eapd_verbs[] = { 4310static struct hda_verb alc882_eapd_verbs[] = {
4310 /* change to EAPD mode */ 4311 /* change to EAPD mode */
4311 {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, 4312 {0x20, AC_VERB_SET_COEF_INDEX, 0x07},
4312 {0x20, AC_VERB_SET_PROC_COEF, 0x3060}, 4313 {0x20, AC_VERB_SET_PROC_COEF, 0x3070},
4313 { } 4314 { }
4314}; 4315};
4315 4316
@@ -4875,6 +4876,41 @@ static struct snd_kcontrol_new alc883_3ST_6ch_mixer[] = {
4875 { } /* end */ 4876 { } /* end */
4876}; 4877};
4877 4878
4879static snd_kcontrol_new_t alc883_fivestack_mixer[] = {
4880 HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
4881 HDA_CODEC_MUTE("Front Playback Switch", 0x14, 0x0, HDA_OUTPUT),
4882 HDA_CODEC_VOLUME("Surround Playback Volume", 0x0d, 0x0, HDA_OUTPUT),
4883 HDA_CODEC_MUTE("Surround Playback Switch", 0x15, 0x0, HDA_OUTPUT),
4884 HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT),
4885 HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT),
4886 HDA_CODEC_MUTE_MONO("Center Playback Switch", 0x16, 1, 0x0, HDA_OUTPUT),
4887 HDA_CODEC_MUTE_MONO("LFE Playback Switch", 0x16, 2, 0x0, HDA_OUTPUT),
4888 HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
4889 HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
4890 HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
4891 HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
4892 HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
4893 HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
4894 HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
4895 HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
4896 HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
4897 HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT),
4898 HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT),
4899 HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
4900 HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT),
4901
4902 {
4903 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
4904 /* .name = "Capture Source", */
4905 .name = "Input Source",
4906 .count = 1,
4907 .info = alc883_mux_enum_info,
4908 .get = alc883_mux_enum_get,
4909 .put = alc883_mux_enum_put,
4910 },
4911 { } /* end */
4912};
4913
4878static struct snd_kcontrol_new alc883_chmode_mixer[] = { 4914static struct snd_kcontrol_new alc883_chmode_mixer[] = {
4879 { 4915 {
4880 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 4916 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -5082,6 +5118,8 @@ static struct hda_board_config alc883_cfg_tbl[] = {
5082 .config = ALC883_ACER }, 5118 .config = ALC883_ACER },
5083 { .pci_subvendor = 0x1025, .pci_subdevice = 0x009f, 5119 { .pci_subvendor = 0x1025, .pci_subdevice = 0x009f,
5084 .config = ALC883_ACER }, 5120 .config = ALC883_ACER },
5121 { .pci_subvendor = 0x161f, .pci_subdevice = 0x2054,
5122 .modelname = "medion", .config = ALC883_MEDION }
5085 { .modelname = "auto", .config = ALC883_AUTO }, 5123 { .modelname = "auto", .config = ALC883_AUTO },
5086 {} 5124 {}
5087}; 5125};
@@ -5169,6 +5207,20 @@ static struct alc_config_preset alc883_presets[] = {
5169 .channel_mode = alc883_3ST_2ch_modes, 5207 .channel_mode = alc883_3ST_2ch_modes,
5170 .input_mux = &alc883_capture_source, 5208 .input_mux = &alc883_capture_source,
5171 }, 5209 },
5210 [ALC883_MEDION] = {
5211 .mixers = { alc883_fivestack_mixer,
5212 alc883_chmode_mixer },
5213 .init_verbs = { alc883_init_verbs,
5214 alc882_eapd_verbs },
5215 .num_dacs = ARRAY_SIZE(alc883_dac_nids),
5216 .dac_nids = alc883_dac_nids,
5217 .num_adc_nids = ARRAY_SIZE(alc883_adc_nids),
5218 .adc_nids = alc883_adc_nids,
5219 .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes),
5220 .channel_mode = alc883_sixstack_modes,
5221 .input_mux = &alc883_capture_source,
5222 }
5223
5172}; 5224};
5173 5225
5174 5226