diff options
author | Tobin Davis <tdavis@dsl-only.net> | 2006-10-13 06:32:16 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-02-09 03:00:51 -0500 |
commit | c07584c83287ae5a13cc836f69a1d824ad068c66 (patch) | |
tree | 2282c42c7663000d300ab3addc83bd1c7214f6ad /sound/pci/hda/patch_realtek.c | |
parent | 734c2d4bb7cfccaab79923331efc7422e4e76a8a (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>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 54 |
1 files changed, 53 insertions, 1 deletions
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[] = { | |||
4309 | static struct hda_verb alc882_eapd_verbs[] = { | 4310 | static 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 | ||
4879 | static 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 | |||
4878 | static struct snd_kcontrol_new alc883_chmode_mixer[] = { | 4914 | static 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 | ||