diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-07-28 08:42:36 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-09-23 04:39:22 -0400 |
commit | 4b146cb087b4a668511f6c991da1dc40e2e04b0d (patch) | |
tree | 4be992353d1fb0b981290de789a0a96e49d7ea7a | |
parent | 68ab801e32bbe2caac8b8c6e6e94f41fe7d687ad (diff) |
[ALSA] Misc fixes for Realtek HD-audio codecs
- Added model=arima for Arima W820Di1 with ALC882 codec chip
- Added EAPD-control verbs to TCL S700 init verbs
- Added missing model strings for Realtek codecs (to be specified
via module option explicitly for testing/debugging)
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r-- | Documentation/sound/alsa/ALSA-Configuration.txt | 13 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 48 |
2 files changed, 52 insertions, 9 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 7344815b855e..d0dbc3fb20c2 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -778,11 +778,15 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
778 | 6stack-digout 6-jack with a SPDIF out | 778 | 6stack-digout 6-jack with a SPDIF out |
779 | w810 3-jack | 779 | w810 3-jack |
780 | z71v 3-jack (HP shared SPDIF) | 780 | z71v 3-jack (HP shared SPDIF) |
781 | asus 3-jack | 781 | asus 3-jack (ASUS Mobo) |
782 | asus-w1v ASUS W1V | ||
783 | asus-dig ASUS with SPDIF out | ||
784 | asus-dig2 ASUS with SPDIF out (using GPIO2) | ||
782 | uniwill 3-jack | 785 | uniwill 3-jack |
783 | F1734 2-jack | 786 | F1734 2-jack |
784 | lg LG laptop (m1 express dual) | 787 | lg LG laptop (m1 express dual) |
785 | lg-lw LG LW20 laptop | 788 | lg-lw LG LW20 laptop |
789 | tcl TCL S700 | ||
786 | clevo Clevo laptops (m520G, m665n) | 790 | clevo Clevo laptops (m520G, m665n) |
787 | test for testing/debugging purpose, almost all controls can be | 791 | test for testing/debugging purpose, almost all controls can be |
788 | adjusted. Appearing only when compiled with | 792 | adjusted. Appearing only when compiled with |
@@ -791,6 +795,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
791 | 795 | ||
792 | ALC260 | 796 | ALC260 |
793 | hp HP machines | 797 | hp HP machines |
798 | hp-3013 HP machines (3013-variant) | ||
794 | fujitsu Fujitsu S7020 | 799 | fujitsu Fujitsu S7020 |
795 | acer Acer TravelMate | 800 | acer Acer TravelMate |
796 | basic fixed pin assignment (old default model) | 801 | basic fixed pin assignment (old default model) |
@@ -806,18 +811,22 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
806 | ALC882/885 | 811 | ALC882/885 |
807 | 3stack-dig 3-jack with SPDIF I/O | 812 | 3stack-dig 3-jack with SPDIF I/O |
808 | 6stck-dig 6-jack digital with SPDIF I/O | 813 | 6stck-dig 6-jack digital with SPDIF I/O |
814 | arima Arima W820Di1 | ||
809 | auto auto-config reading BIOS (default) | 815 | auto auto-config reading BIOS (default) |
810 | 816 | ||
811 | ALC883/888 | 817 | ALC883/888 |
812 | 3stack-dig 3-jack with SPDIF I/O | 818 | 3stack-dig 3-jack with SPDIF I/O |
813 | 6stack-dig 6-jack digital with SPDIF I/O | 819 | 6stack-dig 6-jack digital with SPDIF I/O |
814 | 6stack-dig-demo 6-stack digital for Intel demo board | 820 | 3stack-6ch 3-jack 6-channel |
821 | 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O | ||
822 | 6stack-dig-demo 6-jack digital for Intel demo board | ||
815 | auto auto-config reading BIOS (default) | 823 | auto auto-config reading BIOS (default) |
816 | 824 | ||
817 | ALC861/660 | 825 | ALC861/660 |
818 | 3stack 3-jack | 826 | 3stack 3-jack |
819 | 3stack-dig 3-jack with SPDIF I/O | 827 | 3stack-dig 3-jack with SPDIF I/O |
820 | 6stack-dig 6-jack with SPDIF I/O | 828 | 6stack-dig 6-jack with SPDIF I/O |
829 | 3stack-660 3-jack (for ALC660) | ||
821 | auto auto-config reading BIOS (default) | 830 | auto auto-config reading BIOS (default) |
822 | 831 | ||
823 | CMI9880 | 832 | CMI9880 |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 42c4f90a92b8..378e5f111e34 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -98,6 +98,7 @@ enum { | |||
98 | enum { | 98 | enum { |
99 | ALC882_3ST_DIG, | 99 | ALC882_3ST_DIG, |
100 | ALC882_6ST_DIG, | 100 | ALC882_6ST_DIG, |
101 | ALC882_ARIMA, | ||
101 | ALC882_AUTO, | 102 | ALC882_AUTO, |
102 | ALC882_MODEL_LAST, | 103 | ALC882_MODEL_LAST, |
103 | }; | 104 | }; |
@@ -1349,6 +1350,10 @@ static struct hda_verb alc880_pin_clevo_init_verbs[] = { | |||
1349 | }; | 1350 | }; |
1350 | 1351 | ||
1351 | static struct hda_verb alc880_pin_tcl_S700_init_verbs[] = { | 1352 | static struct hda_verb alc880_pin_tcl_S700_init_verbs[] = { |
1353 | /* change to EAPD mode */ | ||
1354 | {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, | ||
1355 | {0x20, AC_VERB_SET_PROC_COEF, 0x3060}, | ||
1356 | |||
1352 | /* Headphone output */ | 1357 | /* Headphone output */ |
1353 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | 1358 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, |
1354 | /* Front output*/ | 1359 | /* Front output*/ |
@@ -2146,6 +2151,7 @@ static struct hda_board_config alc880_cfg_tbl[] = { | |||
2146 | { .pci_subvendor = 0x107b, .pci_subdevice = 0x4040, .config = ALC880_3ST }, | 2151 | { .pci_subvendor = 0x107b, .pci_subdevice = 0x4040, .config = ALC880_3ST }, |
2147 | { .pci_subvendor = 0x107b, .pci_subdevice = 0x4041, .config = ALC880_3ST }, | 2152 | { .pci_subvendor = 0x107b, .pci_subdevice = 0x4041, .config = ALC880_3ST }, |
2148 | /* TCL S700 */ | 2153 | /* TCL S700 */ |
2154 | { .modelname = "tcl", .config = ALC880_TCL_S700 }, | ||
2149 | { .pci_subvendor = 0x19db, .pci_subdevice = 0x4188, .config = ALC880_TCL_S700 }, | 2155 | { .pci_subvendor = 0x19db, .pci_subdevice = 0x4188, .config = ALC880_TCL_S700 }, |
2150 | 2156 | ||
2151 | /* Back 3 jack, front 2 jack (Internal add Aux-In) */ | 2157 | /* Back 3 jack, front 2 jack (Internal add Aux-In) */ |
@@ -2232,8 +2238,11 @@ static struct hda_board_config alc880_cfg_tbl[] = { | |||
2232 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1133, .config = ALC880_ASUS }, | 2238 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1133, .config = ALC880_ASUS }, |
2233 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1123, .config = ALC880_ASUS_DIG }, | 2239 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1123, .config = ALC880_ASUS_DIG }, |
2234 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1143, .config = ALC880_ASUS }, | 2240 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1143, .config = ALC880_ASUS }, |
2241 | { .modelname = "asus-w1v", .config = ALC880_ASUS_W1V }, | ||
2235 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x10b3, .config = ALC880_ASUS_W1V }, | 2242 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x10b3, .config = ALC880_ASUS_W1V }, |
2243 | { .modelname = "asus-dig", .config = ALC880_ASUS_DIG }, | ||
2236 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x8181, .config = ALC880_ASUS_DIG }, /* ASUS P4GPL-X */ | 2244 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x8181, .config = ALC880_ASUS_DIG }, /* ASUS P4GPL-X */ |
2245 | { .modelname = "asus-dig2", .config = ALC880_ASUS_DIG2 }, | ||
2237 | { .pci_subvendor = 0x1558, .pci_subdevice = 0x5401, .config = ALC880_ASUS_DIG2 }, | 2246 | { .pci_subvendor = 0x1558, .pci_subdevice = 0x5401, .config = ALC880_ASUS_DIG2 }, |
2238 | 2247 | ||
2239 | { .modelname = "uniwill", .config = ALC880_UNIWILL_DIG }, | 2248 | { .modelname = "uniwill", .config = ALC880_UNIWILL_DIG }, |
@@ -3906,6 +3915,7 @@ static struct hda_board_config alc260_cfg_tbl[] = { | |||
3906 | { .pci_subvendor = 0x152d, .pci_subdevice = 0x0729, | 3915 | { .pci_subvendor = 0x152d, .pci_subdevice = 0x0729, |
3907 | .config = ALC260_BASIC }, /* CTL Travel Master U553W */ | 3916 | .config = ALC260_BASIC }, /* CTL Travel Master U553W */ |
3908 | { .modelname = "hp", .config = ALC260_HP }, | 3917 | { .modelname = "hp", .config = ALC260_HP }, |
3918 | { .modelname = "hp-3013", .config = ALC260_HP_3013 }, | ||
3909 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3010, .config = ALC260_HP }, | 3919 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3010, .config = ALC260_HP }, |
3910 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3011, .config = ALC260_HP }, | 3920 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3011, .config = ALC260_HP }, |
3911 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3012, .config = ALC260_HP_3013 }, | 3921 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3012, .config = ALC260_HP_3013 }, |
@@ -4272,6 +4282,13 @@ static struct hda_verb alc882_init_verbs[] = { | |||
4272 | { } | 4282 | { } |
4273 | }; | 4283 | }; |
4274 | 4284 | ||
4285 | static struct hda_verb alc882_eapd_verbs[] = { | ||
4286 | /* change to EAPD mode */ | ||
4287 | {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, | ||
4288 | {0x20, AC_VERB_SET_PROC_COEF, 0x3060}, | ||
4289 | { } | ||
4290 | }; | ||
4291 | |||
4275 | /* | 4292 | /* |
4276 | * generic initialization of ADC, input mixers and output mixers | 4293 | * generic initialization of ADC, input mixers and output mixers |
4277 | */ | 4294 | */ |
@@ -4403,6 +4420,9 @@ static struct hda_board_config alc882_cfg_tbl[] = { | |||
4403 | .config = ALC882_6ST_DIG }, /* Foxconn */ | 4420 | .config = ALC882_6ST_DIG }, /* Foxconn */ |
4404 | { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, | 4421 | { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, |
4405 | .config = ALC882_6ST_DIG }, /* ECS to Intel*/ | 4422 | .config = ALC882_6ST_DIG }, /* ECS to Intel*/ |
4423 | { .modelname = "arima", .config = ALC882_ARIMA }, | ||
4424 | { .pci_subvendor = 0x161f, .pci_subdevice = 0x2054, | ||
4425 | .config = ALC882_ARIMA }, /* Arima W820Di1 */ | ||
4406 | { .modelname = "auto", .config = ALC882_AUTO }, | 4426 | { .modelname = "auto", .config = ALC882_AUTO }, |
4407 | {} | 4427 | {} |
4408 | }; | 4428 | }; |
@@ -4430,6 +4450,15 @@ static struct alc_config_preset alc882_presets[] = { | |||
4430 | .channel_mode = alc882_sixstack_modes, | 4450 | .channel_mode = alc882_sixstack_modes, |
4431 | .input_mux = &alc882_capture_source, | 4451 | .input_mux = &alc882_capture_source, |
4432 | }, | 4452 | }, |
4453 | [ALC882_ARIMA] = { | ||
4454 | .mixers = { alc882_base_mixer, alc882_chmode_mixer }, | ||
4455 | .init_verbs = { alc882_init_verbs, alc882_eapd_verbs }, | ||
4456 | .num_dacs = ARRAY_SIZE(alc882_dac_nids), | ||
4457 | .dac_nids = alc882_dac_nids, | ||
4458 | .num_channel_mode = ARRAY_SIZE(alc882_sixstack_modes), | ||
4459 | .channel_mode = alc882_sixstack_modes, | ||
4460 | .input_mux = &alc882_capture_source, | ||
4461 | }, | ||
4433 | }; | 4462 | }; |
4434 | 4463 | ||
4435 | 4464 | ||
@@ -5005,16 +5034,18 @@ static struct snd_kcontrol_new alc883_capture_mixer[] = { | |||
5005 | */ | 5034 | */ |
5006 | static struct hda_board_config alc883_cfg_tbl[] = { | 5035 | static struct hda_board_config alc883_cfg_tbl[] = { |
5007 | { .modelname = "3stack-dig", .config = ALC883_3ST_2ch_DIG }, | 5036 | { .modelname = "3stack-dig", .config = ALC883_3ST_2ch_DIG }, |
5037 | { .modelname = "3stack-6ch-dig", .config = ALC883_3ST_6ch_DIG }, | ||
5038 | { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, | ||
5039 | .config = ALC883_3ST_6ch_DIG }, /* ECS to Intel*/ | ||
5040 | { .modelname = "3stack-6ch", .config = ALC883_3ST_6ch }, | ||
5041 | { .pci_subvendor = 0x108e, .pci_subdevice = 0x534d, | ||
5042 | .config = ALC883_3ST_6ch }, | ||
5008 | { .modelname = "6stack-dig", .config = ALC883_6ST_DIG }, | 5043 | { .modelname = "6stack-dig", .config = ALC883_6ST_DIG }, |
5009 | { .modelname = "6stack-dig-demo", .config = ALC888_DEMO_BOARD }, | ||
5010 | { .pci_subvendor = 0x1462, .pci_subdevice = 0x6668, | 5044 | { .pci_subvendor = 0x1462, .pci_subdevice = 0x6668, |
5011 | .config = ALC883_6ST_DIG }, /* MSI */ | 5045 | .config = ALC883_6ST_DIG }, /* MSI */ |
5012 | { .pci_subvendor = 0x105b, .pci_subdevice = 0x6668, | 5046 | { .pci_subvendor = 0x105b, .pci_subdevice = 0x6668, |
5013 | .config = ALC883_6ST_DIG }, /* Foxconn */ | 5047 | .config = ALC883_6ST_DIG }, /* Foxconn */ |
5014 | { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, | 5048 | { .modelname = "6stack-dig-demo", .config = ALC888_DEMO_BOARD }, |
5015 | .config = ALC883_3ST_6ch_DIG }, /* ECS to Intel*/ | ||
5016 | { .pci_subvendor = 0x108e, .pci_subdevice = 0x534d, | ||
5017 | .config = ALC883_3ST_6ch }, | ||
5018 | { .modelname = "auto", .config = ALC883_AUTO }, | 5049 | { .modelname = "auto", .config = ALC883_AUTO }, |
5019 | {} | 5050 | {} |
5020 | }; | 5051 | }; |
@@ -5223,8 +5254,10 @@ static int patch_alc883(struct hda_codec *codec) | |||
5223 | spec->stream_digital_playback = &alc883_pcm_digital_playback; | 5254 | spec->stream_digital_playback = &alc883_pcm_digital_playback; |
5224 | spec->stream_digital_capture = &alc883_pcm_digital_capture; | 5255 | spec->stream_digital_capture = &alc883_pcm_digital_capture; |
5225 | 5256 | ||
5226 | spec->adc_nids = alc883_adc_nids; | 5257 | if (! spec->adc_nids && spec->input_mux) { |
5227 | spec->num_adc_nids = ARRAY_SIZE(alc883_adc_nids); | 5258 | spec->adc_nids = alc883_adc_nids; |
5259 | spec->num_adc_nids = ARRAY_SIZE(alc883_adc_nids); | ||
5260 | } | ||
5228 | 5261 | ||
5229 | codec->patch_ops = alc_patch_ops; | 5262 | codec->patch_ops = alc_patch_ops; |
5230 | if (board_config == ALC883_AUTO) | 5263 | if (board_config == ALC883_AUTO) |
@@ -6504,6 +6537,7 @@ static struct hda_board_config alc861_cfg_tbl[] = { | |||
6504 | { .modelname = "3stack", .config = ALC861_3ST }, | 6537 | { .modelname = "3stack", .config = ALC861_3ST }, |
6505 | { .pci_subvendor = 0x8086, .pci_subdevice = 0xd600, | 6538 | { .pci_subvendor = 0x8086, .pci_subdevice = 0xd600, |
6506 | .config = ALC861_3ST }, | 6539 | .config = ALC861_3ST }, |
6540 | { .modelname = "3stack-660", .config = ALC660_3ST }, | ||
6507 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x81e7, | 6541 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x81e7, |
6508 | .config = ALC660_3ST }, | 6542 | .config = ALC660_3ST }, |
6509 | { .modelname = "3stack-dig", .config = ALC861_3ST_DIG }, | 6543 | { .modelname = "3stack-dig", .config = ALC861_3ST_DIG }, |