diff options
author | Takashi Iwai <tiwai@suse.de> | 2011-08-18 09:43:38 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-08-18 09:43:38 -0400 |
commit | 9fbbc94fe0f0a85d048b74fced3cfca404d78a3c (patch) | |
tree | e4f9446723ddf370a4b483c91ffb2370f4e423b0 | |
parent | 6ebb80530b0ed6b2e93f2e6497890b4437807055 (diff) |
ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models
These are confirmed to work with the auto-parser.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 4 | ||||
-rw-r--r-- | sound/pci/hda/alc861_quirks.c | 329 |
2 files changed, 0 insertions, 333 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index b6af77efbeee..12c7ea02e5d3 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -154,10 +154,6 @@ ALC861/660 | |||
154 | 3stack-dig 3-jack with SPDIF I/O | 154 | 3stack-dig 3-jack with SPDIF I/O |
155 | 6stack-dig 6-jack with SPDIF I/O | 155 | 6stack-dig 6-jack with SPDIF I/O |
156 | 3stack-660 3-jack (for ALC660) | 156 | 3stack-660 3-jack (for ALC660) |
157 | uniwill-m31 Uniwill M31 laptop | ||
158 | toshiba Toshiba laptop support | ||
159 | asus Asus laptop support | ||
160 | asus-laptop ASUS F2/F3 laptops | ||
161 | auto auto-config reading BIOS (default) | 157 | auto auto-config reading BIOS (default) |
162 | 158 | ||
163 | ALC861VD/660VD | 159 | ALC861VD/660VD |
diff --git a/sound/pci/hda/alc861_quirks.c b/sound/pci/hda/alc861_quirks.c index d719ec6350eb..ab8c7cdff6cf 100644 --- a/sound/pci/hda/alc861_quirks.c +++ b/sound/pci/hda/alc861_quirks.c | |||
@@ -10,10 +10,7 @@ enum { | |||
10 | ALC660_3ST, | 10 | ALC660_3ST, |
11 | ALC861_3ST_DIG, | 11 | ALC861_3ST_DIG, |
12 | ALC861_6ST_DIG, | 12 | ALC861_6ST_DIG, |
13 | ALC861_UNIWILL_M31, | ||
14 | ALC861_TOSHIBA, | ||
15 | ALC861_ASUS, | 13 | ALC861_ASUS, |
16 | ALC861_ASUS_LAPTOP, | ||
17 | ALC861_MODEL_LAST, | 14 | ALC861_MODEL_LAST, |
18 | }; | 15 | }; |
19 | 16 | ||
@@ -65,23 +62,6 @@ static const struct hda_channel_mode alc861_threestack_modes[2] = { | |||
65 | { 2, alc861_threestack_ch2_init }, | 62 | { 2, alc861_threestack_ch2_init }, |
66 | { 6, alc861_threestack_ch6_init }, | 63 | { 6, alc861_threestack_ch6_init }, |
67 | }; | 64 | }; |
68 | /* Set mic1 as input and unmute the mixer */ | ||
69 | static const struct hda_verb alc861_uniwill_m31_ch2_init[] = { | ||
70 | { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
71 | { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x01 << 8)) }, /*mic*/ | ||
72 | { } /* end */ | ||
73 | }; | ||
74 | /* Set mic1 as output and mute mixer */ | ||
75 | static const struct hda_verb alc861_uniwill_m31_ch4_init[] = { | ||
76 | { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, | ||
77 | { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x01 << 8)) }, /*mic*/ | ||
78 | { } /* end */ | ||
79 | }; | ||
80 | |||
81 | static const struct hda_channel_mode alc861_uniwill_m31_modes[2] = { | ||
82 | { 2, alc861_uniwill_m31_ch2_init }, | ||
83 | { 4, alc861_uniwill_m31_ch4_init }, | ||
84 | }; | ||
85 | 65 | ||
86 | /* Set mic1 and line-in as input and unmute the mixer */ | 66 | /* Set mic1 and line-in as input and unmute the mixer */ |
87 | static const struct hda_verb alc861_asus_ch2_init[] = { | 67 | static const struct hda_verb alc861_asus_ch2_init[] = { |
@@ -179,84 +159,6 @@ static const struct snd_kcontrol_new alc861_3ST_mixer[] = { | |||
179 | { } /* end */ | 159 | { } /* end */ |
180 | }; | 160 | }; |
181 | 161 | ||
182 | static const struct snd_kcontrol_new alc861_toshiba_mixer[] = { | ||
183 | /* output mixer control */ | ||
184 | HDA_CODEC_MUTE("Master Playback Switch", 0x03, 0x0, HDA_OUTPUT), | ||
185 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT), | ||
186 | HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT), | ||
187 | |||
188 | { } /* end */ | ||
189 | }; | ||
190 | |||
191 | static const struct snd_kcontrol_new alc861_uniwill_m31_mixer[] = { | ||
192 | /* output mixer control */ | ||
193 | HDA_CODEC_MUTE("Front Playback Switch", 0x03, 0x0, HDA_OUTPUT), | ||
194 | HDA_CODEC_MUTE("Surround Playback Switch", 0x06, 0x0, HDA_OUTPUT), | ||
195 | HDA_CODEC_MUTE_MONO("Center Playback Switch", 0x05, 1, 0x0, HDA_OUTPUT), | ||
196 | HDA_CODEC_MUTE_MONO("LFE Playback Switch", 0x05, 2, 0x0, HDA_OUTPUT), | ||
197 | /*HDA_CODEC_MUTE("Side Playback Switch", 0x04, 0x0, HDA_OUTPUT), */ | ||
198 | |||
199 | /* Input mixer control */ | ||
200 | /* HDA_CODEC_VOLUME("Input Playback Volume", 0x15, 0x0, HDA_OUTPUT), | ||
201 | HDA_CODEC_MUTE("Input Playback Switch", 0x15, 0x0, HDA_OUTPUT), */ | ||
202 | HDA_CODEC_VOLUME("CD Playback Volume", 0x15, 0x0, HDA_INPUT), | ||
203 | HDA_CODEC_MUTE("CD Playback Switch", 0x15, 0x0, HDA_INPUT), | ||
204 | HDA_CODEC_VOLUME("Line Playback Volume", 0x15, 0x02, HDA_INPUT), | ||
205 | HDA_CODEC_MUTE("Line Playback Switch", 0x15, 0x02, HDA_INPUT), | ||
206 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT), | ||
207 | HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT), | ||
208 | HDA_CODEC_MUTE("Front Mic Playback Switch", 0x10, 0x01, HDA_OUTPUT), | ||
209 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x1a, 0x03, HDA_INPUT), | ||
210 | |||
211 | { | ||
212 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | ||
213 | .name = "Channel Mode", | ||
214 | .info = alc_ch_mode_info, | ||
215 | .get = alc_ch_mode_get, | ||
216 | .put = alc_ch_mode_put, | ||
217 | .private_value = ARRAY_SIZE(alc861_uniwill_m31_modes), | ||
218 | }, | ||
219 | { } /* end */ | ||
220 | }; | ||
221 | |||
222 | static const struct snd_kcontrol_new alc861_asus_mixer[] = { | ||
223 | /* output mixer control */ | ||
224 | HDA_CODEC_MUTE("Front Playback Switch", 0x03, 0x0, HDA_OUTPUT), | ||
225 | HDA_CODEC_MUTE("Surround Playback Switch", 0x06, 0x0, HDA_OUTPUT), | ||
226 | HDA_CODEC_MUTE_MONO("Center Playback Switch", 0x05, 1, 0x0, HDA_OUTPUT), | ||
227 | HDA_CODEC_MUTE_MONO("LFE Playback Switch", 0x05, 2, 0x0, HDA_OUTPUT), | ||
228 | HDA_CODEC_MUTE("Side Playback Switch", 0x04, 0x0, HDA_OUTPUT), | ||
229 | |||
230 | /* Input mixer control */ | ||
231 | HDA_CODEC_VOLUME("Input Playback Volume", 0x15, 0x0, HDA_OUTPUT), | ||
232 | HDA_CODEC_MUTE("Input Playback Switch", 0x15, 0x0, HDA_OUTPUT), | ||
233 | HDA_CODEC_VOLUME("CD Playback Volume", 0x15, 0x0, HDA_INPUT), | ||
234 | HDA_CODEC_MUTE("CD Playback Switch", 0x15, 0x0, HDA_INPUT), | ||
235 | HDA_CODEC_VOLUME("Line Playback Volume", 0x15, 0x02, HDA_INPUT), | ||
236 | HDA_CODEC_MUTE("Line Playback Switch", 0x15, 0x02, HDA_INPUT), | ||
237 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT), | ||
238 | HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT), | ||
239 | HDA_CODEC_MUTE("Front Mic Playback Switch", 0x10, 0x01, HDA_OUTPUT), | ||
240 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x1a, 0x03, HDA_OUTPUT), | ||
241 | |||
242 | { | ||
243 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | ||
244 | .name = "Channel Mode", | ||
245 | .info = alc_ch_mode_info, | ||
246 | .get = alc_ch_mode_get, | ||
247 | .put = alc_ch_mode_put, | ||
248 | .private_value = ARRAY_SIZE(alc861_asus_modes), | ||
249 | }, | ||
250 | { } | ||
251 | }; | ||
252 | |||
253 | /* additional mixer */ | ||
254 | static const struct snd_kcontrol_new alc861_asus_laptop_mixer[] = { | ||
255 | HDA_CODEC_VOLUME("CD Playback Volume", 0x15, 0x0, HDA_INPUT), | ||
256 | HDA_CODEC_MUTE("CD Playback Switch", 0x15, 0x0, HDA_INPUT), | ||
257 | { } | ||
258 | }; | ||
259 | |||
260 | /* | 162 | /* |
261 | * generic initialization of ADC, input mixers and output mixers | 163 | * generic initialization of ADC, input mixers and output mixers |
262 | */ | 164 | */ |
@@ -387,164 +289,6 @@ static const struct hda_verb alc861_threestack_init_verbs[] = { | |||
387 | { } | 289 | { } |
388 | }; | 290 | }; |
389 | 291 | ||
390 | static const struct hda_verb alc861_uniwill_m31_init_verbs[] = { | ||
391 | /* | ||
392 | * Unmute ADC0 and set the default input to mic-in | ||
393 | */ | ||
394 | /* port-A for surround (rear panel) */ | ||
395 | { 0x0e, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, | ||
396 | /* port-B for mic-in (rear panel) with vref */ | ||
397 | { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
398 | /* port-C for line-in (rear panel) */ | ||
399 | { 0x0c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 }, | ||
400 | /* port-D for Front */ | ||
401 | { 0x0b, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, | ||
402 | { 0x0b, AC_VERB_SET_CONNECT_SEL, 0x00 }, | ||
403 | /* port-E for HP out (front panel) */ | ||
404 | /* this has to be set to VREF80 */ | ||
405 | { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
406 | /* route front PCM to HP */ | ||
407 | { 0x0f, AC_VERB_SET_CONNECT_SEL, 0x00 }, | ||
408 | /* port-F for mic-in (front panel) with vref */ | ||
409 | { 0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
410 | /* port-G for CLFE (rear panel) */ | ||
411 | { 0x1f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, | ||
412 | /* port-H for side (rear panel) */ | ||
413 | { 0x20, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, | ||
414 | /* CD-in */ | ||
415 | { 0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 }, | ||
416 | /* route front mic to ADC1*/ | ||
417 | {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
418 | {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
419 | /* Unmute DAC0~3 & spdif out*/ | ||
420 | {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
421 | {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
422 | {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
423 | {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
424 | {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
425 | |||
426 | /* Unmute Mixer 14 (mic) 1c (Line in)*/ | ||
427 | {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
428 | {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
429 | {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
430 | {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
431 | |||
432 | /* Unmute Stereo Mixer 15 */ | ||
433 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
434 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
435 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
436 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb00c}, /* Output 0~12 step */ | ||
437 | |||
438 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
439 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
440 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
441 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
442 | {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
443 | {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
444 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
445 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
446 | /* hp used DAC 3 (Front) */ | ||
447 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, | ||
448 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
449 | { } | ||
450 | }; | ||
451 | |||
452 | static const struct hda_verb alc861_asus_init_verbs[] = { | ||
453 | /* | ||
454 | * Unmute ADC0 and set the default input to mic-in | ||
455 | */ | ||
456 | /* port-A for surround (rear panel) | ||
457 | * according to codec#0 this is the HP jack | ||
458 | */ | ||
459 | { 0x0e, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0 }, /* was 0x00 */ | ||
460 | /* route front PCM to HP */ | ||
461 | { 0x0e, AC_VERB_SET_CONNECT_SEL, 0x01 }, | ||
462 | /* port-B for mic-in (rear panel) with vref */ | ||
463 | { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
464 | /* port-C for line-in (rear panel) */ | ||
465 | { 0x0c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 }, | ||
466 | /* port-D for Front */ | ||
467 | { 0x0b, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, | ||
468 | { 0x0b, AC_VERB_SET_CONNECT_SEL, 0x00 }, | ||
469 | /* port-E for HP out (front panel) */ | ||
470 | /* this has to be set to VREF80 */ | ||
471 | { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
472 | /* route front PCM to HP */ | ||
473 | { 0x0f, AC_VERB_SET_CONNECT_SEL, 0x00 }, | ||
474 | /* port-F for mic-in (front panel) with vref */ | ||
475 | { 0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, | ||
476 | /* port-G for CLFE (rear panel) */ | ||
477 | { 0x1f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, | ||
478 | /* port-H for side (rear panel) */ | ||
479 | { 0x20, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, | ||
480 | /* CD-in */ | ||
481 | { 0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 }, | ||
482 | /* route front mic to ADC1*/ | ||
483 | {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
484 | {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
485 | /* Unmute DAC0~3 & spdif out*/ | ||
486 | {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
487 | {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
488 | {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
489 | {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
490 | {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
491 | /* Unmute Mixer 14 (mic) 1c (Line in)*/ | ||
492 | {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
493 | {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
494 | {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
495 | {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
496 | |||
497 | /* Unmute Stereo Mixer 15 */ | ||
498 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
499 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
500 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
501 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb00c}, /* Output 0~12 step */ | ||
502 | |||
503 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
504 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
505 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
506 | {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
507 | {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
508 | {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
509 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
510 | {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
511 | /* hp used DAC 3 (Front) */ | ||
512 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, | ||
513 | {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
514 | { } | ||
515 | }; | ||
516 | |||
517 | /* additional init verbs for ASUS laptops */ | ||
518 | static const struct hda_verb alc861_asus_laptop_init_verbs[] = { | ||
519 | { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x45 }, /* HP-out */ | ||
520 | { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2) }, /* mute line-in */ | ||
521 | { } | ||
522 | }; | ||
523 | |||
524 | static const struct hda_verb alc861_toshiba_init_verbs[] = { | ||
525 | {0x0f, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC_HP_EVENT}, | ||
526 | |||
527 | { } | ||
528 | }; | ||
529 | |||
530 | /* toggle speaker-output according to the hp-jack state */ | ||
531 | static void alc861_toshiba_automute(struct hda_codec *codec) | ||
532 | { | ||
533 | unsigned int present = snd_hda_jack_detect(codec, 0x0f); | ||
534 | |||
535 | snd_hda_codec_amp_stereo(codec, 0x16, HDA_INPUT, 0, | ||
536 | HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); | ||
537 | snd_hda_codec_amp_stereo(codec, 0x1a, HDA_INPUT, 3, | ||
538 | HDA_AMP_MUTE, present ? 0 : HDA_AMP_MUTE); | ||
539 | } | ||
540 | |||
541 | static void alc861_toshiba_unsol_event(struct hda_codec *codec, | ||
542 | unsigned int res) | ||
543 | { | ||
544 | if ((res >> 26) == ALC_HP_EVENT) | ||
545 | alc861_toshiba_automute(codec); | ||
546 | } | ||
547 | |||
548 | #define ALC861_DIGOUT_NID 0x07 | 292 | #define ALC861_DIGOUT_NID 0x07 |
549 | 293 | ||
550 | static const struct hda_channel_mode alc861_8ch_modes[1] = { | 294 | static const struct hda_channel_mode alc861_8ch_modes[1] = { |
@@ -585,32 +329,14 @@ static const char * const alc861_models[ALC861_MODEL_LAST] = { | |||
585 | [ALC660_3ST] = "3stack-660", | 329 | [ALC660_3ST] = "3stack-660", |
586 | [ALC861_3ST_DIG] = "3stack-dig", | 330 | [ALC861_3ST_DIG] = "3stack-dig", |
587 | [ALC861_6ST_DIG] = "6stack-dig", | 331 | [ALC861_6ST_DIG] = "6stack-dig", |
588 | [ALC861_UNIWILL_M31] = "uniwill-m31", | ||
589 | [ALC861_TOSHIBA] = "toshiba", | ||
590 | [ALC861_ASUS] = "asus", | ||
591 | [ALC861_ASUS_LAPTOP] = "asus-laptop", | ||
592 | [ALC861_AUTO] = "auto", | 332 | [ALC861_AUTO] = "auto", |
593 | }; | 333 | }; |
594 | 334 | ||
595 | static const struct snd_pci_quirk alc861_cfg_tbl[] = { | 335 | static const struct snd_pci_quirk alc861_cfg_tbl[] = { |
596 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC861_3ST), | 336 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC861_3ST), |
597 | SND_PCI_QUIRK(0x1043, 0x1335, "ASUS F2/3", ALC861_ASUS_LAPTOP), | ||
598 | SND_PCI_QUIRK(0x1043, 0x1338, "ASUS F2/3", ALC861_ASUS_LAPTOP), | ||
599 | SND_PCI_QUIRK(0x1043, 0x1393, "ASUS", ALC861_ASUS), | ||
600 | SND_PCI_QUIRK(0x1043, 0x13d7, "ASUS A9rp", ALC861_ASUS_LAPTOP), | ||
601 | SND_PCI_QUIRK(0x1043, 0x81cb, "ASUS P1-AH2", ALC861_3ST_DIG), | 337 | SND_PCI_QUIRK(0x1043, 0x81cb, "ASUS P1-AH2", ALC861_3ST_DIG), |
602 | SND_PCI_QUIRK(0x1179, 0xff00, "Toshiba", ALC861_TOSHIBA), | ||
603 | /* FIXME: the entry below breaks Toshiba A100 (model=auto works!) | ||
604 | * Any other models that need this preset? | ||
605 | */ | ||
606 | /* SND_PCI_QUIRK(0x1179, 0xff10, "Toshiba", ALC861_TOSHIBA), */ | ||
607 | SND_PCI_QUIRK(0x1462, 0x7254, "HP dx2200 (MSI MS-7254)", ALC861_3ST), | 338 | SND_PCI_QUIRK(0x1462, 0x7254, "HP dx2200 (MSI MS-7254)", ALC861_3ST), |
608 | SND_PCI_QUIRK(0x1462, 0x7297, "HP dx2250 (MSI MS-7297)", ALC861_3ST), | 339 | SND_PCI_QUIRK(0x1462, 0x7297, "HP dx2250 (MSI MS-7297)", ALC861_3ST), |
609 | SND_PCI_QUIRK(0x1584, 0x2b01, "Uniwill X40AIx", ALC861_UNIWILL_M31), | ||
610 | SND_PCI_QUIRK(0x1584, 0x9072, "Uniwill m31", ALC861_UNIWILL_M31), | ||
611 | SND_PCI_QUIRK(0x1584, 0x9075, "Airis Praxis N1212", ALC861_ASUS_LAPTOP), | ||
612 | /* FIXME: the below seems conflict */ | ||
613 | /* SND_PCI_QUIRK(0x1584, 0x9075, "Uniwill", ALC861_UNIWILL_M31), */ | ||
614 | SND_PCI_QUIRK(0x1849, 0x0660, "Asrock 939SLI32", ALC660_3ST), | 340 | SND_PCI_QUIRK(0x1849, 0x0660, "Asrock 939SLI32", ALC660_3ST), |
615 | SND_PCI_QUIRK(0x8086, 0xd600, "Intel", ALC861_3ST), | 341 | SND_PCI_QUIRK(0x8086, 0xd600, "Intel", ALC861_3ST), |
616 | {} | 342 | {} |
@@ -666,60 +392,5 @@ static const struct alc_config_preset alc861_presets[] = { | |||
666 | .adc_nids = alc861_adc_nids, | 392 | .adc_nids = alc861_adc_nids, |
667 | .input_mux = &alc861_capture_source, | 393 | .input_mux = &alc861_capture_source, |
668 | }, | 394 | }, |
669 | [ALC861_UNIWILL_M31] = { | ||
670 | .mixers = { alc861_uniwill_m31_mixer }, | ||
671 | .init_verbs = { alc861_uniwill_m31_init_verbs }, | ||
672 | .num_dacs = ARRAY_SIZE(alc861_dac_nids), | ||
673 | .dac_nids = alc861_dac_nids, | ||
674 | .dig_out_nid = ALC861_DIGOUT_NID, | ||
675 | .num_channel_mode = ARRAY_SIZE(alc861_uniwill_m31_modes), | ||
676 | .channel_mode = alc861_uniwill_m31_modes, | ||
677 | .need_dac_fix = 1, | ||
678 | .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), | ||
679 | .adc_nids = alc861_adc_nids, | ||
680 | .input_mux = &alc861_capture_source, | ||
681 | }, | ||
682 | [ALC861_TOSHIBA] = { | ||
683 | .mixers = { alc861_toshiba_mixer }, | ||
684 | .init_verbs = { alc861_base_init_verbs, | ||
685 | alc861_toshiba_init_verbs }, | ||
686 | .num_dacs = ARRAY_SIZE(alc861_dac_nids), | ||
687 | .dac_nids = alc861_dac_nids, | ||
688 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), | ||
689 | .channel_mode = alc883_3ST_2ch_modes, | ||
690 | .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), | ||
691 | .adc_nids = alc861_adc_nids, | ||
692 | .input_mux = &alc861_capture_source, | ||
693 | .unsol_event = alc861_toshiba_unsol_event, | ||
694 | .init_hook = alc861_toshiba_automute, | ||
695 | }, | ||
696 | [ALC861_ASUS] = { | ||
697 | .mixers = { alc861_asus_mixer }, | ||
698 | .init_verbs = { alc861_asus_init_verbs }, | ||
699 | .num_dacs = ARRAY_SIZE(alc861_dac_nids), | ||
700 | .dac_nids = alc861_dac_nids, | ||
701 | .dig_out_nid = ALC861_DIGOUT_NID, | ||
702 | .num_channel_mode = ARRAY_SIZE(alc861_asus_modes), | ||
703 | .channel_mode = alc861_asus_modes, | ||
704 | .need_dac_fix = 1, | ||
705 | .hp_nid = 0x06, | ||
706 | .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), | ||
707 | .adc_nids = alc861_adc_nids, | ||
708 | .input_mux = &alc861_capture_source, | ||
709 | }, | ||
710 | [ALC861_ASUS_LAPTOP] = { | ||
711 | .mixers = { alc861_toshiba_mixer, alc861_asus_laptop_mixer }, | ||
712 | .init_verbs = { alc861_asus_init_verbs, | ||
713 | alc861_asus_laptop_init_verbs }, | ||
714 | .num_dacs = ARRAY_SIZE(alc861_dac_nids), | ||
715 | .dac_nids = alc861_dac_nids, | ||
716 | .dig_out_nid = ALC861_DIGOUT_NID, | ||
717 | .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), | ||
718 | .channel_mode = alc883_3ST_2ch_modes, | ||
719 | .need_dac_fix = 1, | ||
720 | .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), | ||
721 | .adc_nids = alc861_adc_nids, | ||
722 | .input_mux = &alc861_capture_source, | ||
723 | }, | ||
724 | }; | 395 | }; |
725 | 396 | ||