aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt13
-rw-r--r--sound/pci/hda/patch_realtek.c48
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 {
98enum { 98enum {
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
1351static struct hda_verb alc880_pin_tcl_S700_init_verbs[] = { 1352static 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
4285static 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 */
5006static struct hda_board_config alc883_cfg_tbl[] = { 5035static 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 },