675
731
HDA_CODEC_MUTE("Aux Playback Switch", 0x16, 0x0, HDA_OUTPUT),
676
732
HDA_CODEC_VOLUME("Mic Playback Volume", 0x13, 0x0, HDA_OUTPUT),
677
733
HDA_CODEC_MUTE("Mic Playback Switch", 0x13, 0x0, HDA_OUTPUT),
678
HDA_CODEC_VOLUME("Mic Boost", 0x0f, 0x0, HDA_OUTPUT),
734
HDA_CODEC_VOLUME("Mic Boost Volume", 0x0f, 0x0, HDA_OUTPUT),
679
735
HDA_CODEC_VOLUME("Mono Playback Volume", 0x1e, 0x0, HDA_OUTPUT),
680
736
HDA_CODEC_MUTE("Mono Playback Switch", 0x1e, 0x0, HDA_OUTPUT),
681
737
HDA_CODEC_VOLUME("Capture Volume", 0x12, 0x0, HDA_OUTPUT),
1522
1580
HDA_CODEC_MUTE("Mic Playback Switch", 0x1c, 0x0, HDA_OUTPUT),
1523
1581
HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1524
1582
HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1525
HDA_CODEC_VOLUME("Front Mic Boost", 0x08, 0x0, HDA_INPUT),
1526
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0x0, HDA_INPUT),
1583
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x08, 0x0, HDA_INPUT),
1584
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0x0, HDA_INPUT),
1527
1585
HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1528
1586
HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1733
1791
HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1734
1792
HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1736
HDA_CODEC_VOLUME("Mic Boost", 0x08, 0x0, HDA_INPUT),
1737
HDA_CODEC_VOLUME("Internal Mic Boost", 0x18, 0x0, HDA_INPUT),
1794
HDA_CODEC_VOLUME("Mic Boost Volume", 0x08, 0x0, HDA_INPUT),
1795
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x18, 0x0, HDA_INPUT),
1738
1796
HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1739
1797
HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
2166
2230
HDA_CODEC_VOLUME("Analog Mix Playback Volume", 0x21, 0x0, HDA_OUTPUT),
2167
2231
HDA_CODEC_MUTE("Analog Mix Playback Switch", 0x21, 0x0, HDA_OUTPUT),
2169
HDA_CODEC_VOLUME("Front Mic Boost", 0x39, 0x0, HDA_OUTPUT),
2170
HDA_CODEC_VOLUME("Mic Boost", 0x3c, 0x0, HDA_OUTPUT),
2233
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
2234
HDA_CODEC_VOLUME("Mic Boost Volume", 0x3c, 0x0, HDA_OUTPUT),
2239
static struct snd_kcontrol_new ad1988_6stack_fp_mixers[] = {
2240
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x03, 0x0, HDA_OUTPUT),
2242
HDA_BIND_MUTE("Front Playback Switch", 0x29, 2, HDA_INPUT),
2243
HDA_BIND_MUTE("Surround Playback Switch", 0x2a, 2, HDA_INPUT),
2244
HDA_BIND_MUTE_MONO("Center Playback Switch", 0x27, 1, 2, HDA_INPUT),
2245
HDA_BIND_MUTE_MONO("LFE Playback Switch", 0x27, 2, 2, HDA_INPUT),
2246
HDA_BIND_MUTE("Side Playback Switch", 0x28, 2, HDA_INPUT),
2247
HDA_BIND_MUTE("Headphone Playback Switch", 0x22, 2, HDA_INPUT),
2248
HDA_BIND_MUTE("Mono Playback Switch", 0x1e, 2, HDA_INPUT),
2250
HDA_CODEC_VOLUME("CD Playback Volume", 0x20, 0x6, HDA_INPUT),
2251
HDA_CODEC_MUTE("CD Playback Switch", 0x20, 0x6, HDA_INPUT),
2252
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x20, 0x0, HDA_INPUT),
2253
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x20, 0x0, HDA_INPUT),
2254
HDA_CODEC_VOLUME("Line Playback Volume", 0x20, 0x1, HDA_INPUT),
2255
HDA_CODEC_MUTE("Line Playback Switch", 0x20, 0x1, HDA_INPUT),
2256
HDA_CODEC_VOLUME("Mic Playback Volume", 0x20, 0x4, HDA_INPUT),
2257
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x4, HDA_INPUT),
2259
HDA_CODEC_VOLUME("Analog Mix Playback Volume", 0x21, 0x0, HDA_OUTPUT),
2260
HDA_CODEC_MUTE("Analog Mix Playback Switch", 0x21, 0x0, HDA_OUTPUT),
2262
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
2263
HDA_CODEC_VOLUME("Mic Boost Volume", 0x3c, 0x0, HDA_OUTPUT),
2547
static struct hda_verb ad1988_6stack_fp_init_verbs[] = {
2548
/* Front, Surround, CLFE, side DAC; unmute as default */
2549
{0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2550
{0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2551
{0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2552
{0x0a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2553
/* Headphone; unmute as default */
2554
{0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2555
/* Port-A front headphon path */
2556
{0x37, AC_VERB_SET_CONNECT_SEL, 0x00}, /* DAC0:03h */
2557
{0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2558
{0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
2559
{0x11, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2560
{0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
2561
/* Port-D line-out path */
2562
{0x29, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2563
{0x29, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
2564
{0x12, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2565
{0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2566
/* Port-F surround path */
2567
{0x2a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2568
{0x2a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
2569
{0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2570
{0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2571
/* Port-G CLFE path */
2572
{0x27, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2573
{0x27, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
2574
{0x24, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2575
{0x24, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2576
/* Port-H side path */
2577
{0x28, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2578
{0x28, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
2579
{0x25, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2580
{0x25, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2582
{0x36, AC_VERB_SET_CONNECT_SEL, 0x1}, /* DAC1:04h */
2583
{0x1e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2584
{0x1e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
2585
{0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2586
{0x13, AC_VERB_SET_AMP_GAIN_MUTE, 0xb01f}, /* unmute, 0dB */
2587
/* Port-B front mic-in path */
2588
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
2589
{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
2590
{0x39, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
2591
/* Port-C line-in path */
2592
{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
2593
{0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
2594
{0x3a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
2595
{0x33, AC_VERB_SET_CONNECT_SEL, 0x0},
2596
/* Port-E mic-in path */
2597
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
2598
{0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
2599
{0x3c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
2600
{0x34, AC_VERB_SET_CONNECT_SEL, 0x0},
2601
/* Analog CD Input */
2602
{0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
2603
/* Analog Mix output amp */
2604
{0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE | 0x1f}, /* 0dB */
2454
2609
static struct hda_verb ad1988_capture_init_verbs[] = {
2455
2610
/* mute analog mix */
2456
2611
{0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
2920
3077
/* create playback/capture controls for input pins */
2921
static int ad1988_auto_create_analog_input_ctls(struct ad198x_spec *spec,
3078
static int ad1988_auto_create_analog_input_ctls(struct hda_codec *codec,
2922
3079
const struct auto_pin_cfg *cfg)
3081
struct ad198x_spec *spec = codec->spec;
2924
3082
struct hda_input_mux *imux = &spec->private_imux;
3083
int i, err, type, type_idx;
2927
for (i = 0; i < AUTO_PIN_LAST; i++) {
2928
err = new_analog_input(spec, cfg->input_pins[i],
2929
auto_pin_cfg_labels[i],
2930
i <= AUTO_PIN_FRONT_MIC);
3085
for (i = 0; i < cfg->num_inputs; i++) {
3087
type = cfg->inputs[i].type;
3088
label = hda_get_autocfg_input_label(codec, cfg, i);
3089
snd_hda_add_imux_item(imux, label,
3090
ad1988_pin_to_adc_idx(cfg->inputs[i].pin),
3092
err = new_analog_input(spec, cfg->inputs[i].pin,
3094
type == AUTO_PIN_MIC);
2933
imux->items[imux->num_items].label = auto_pin_cfg_labels[i];
2934
imux->items[imux->num_items].index = ad1988_pin_to_adc_idx(cfg->input_pins[i]);
2937
imux->items[imux->num_items].label = "Mix";
2938
imux->items[imux->num_items].index = 9;
3098
snd_hda_add_imux_item(imux, "Mix", 9, NULL);
2941
3100
if ((err = add_control(spec, AD_CTL_WIDGET_VOL,
2942
3101
"Analog Mix Playback Volume",
3157
3316
spec->mixers[0] = ad1988_6stack_mixers1_rev2;
3159
3318
spec->mixers[0] = ad1988_6stack_mixers1;
3160
spec->mixers[1] = ad1988_6stack_mixers2;
3319
if (board_config == AD1988_6STACK_DIG_FP) {
3320
spec->mixers[1] = ad1988_6stack_fp_mixers;
3321
spec->slave_vols = ad1988_6stack_fp_slave_vols;
3322
spec->slave_sws = ad1988_6stack_fp_slave_sws;
3323
spec->alt_dac_nid = ad1988_alt_dac_nid;
3324
spec->stream_analog_alt_playback =
3325
&ad198x_pcm_analog_alt_playback;
3327
spec->mixers[1] = ad1988_6stack_mixers2;
3161
3328
spec->num_init_verbs = 1;
3162
spec->init_verbs[0] = ad1988_6stack_init_verbs;
3163
if (board_config == AD1988_6STACK_DIG) {
3329
if (board_config == AD1988_6STACK_DIG_FP)
3330
spec->init_verbs[0] = ad1988_6stack_fp_init_verbs;
3332
spec->init_verbs[0] = ad1988_6stack_init_verbs;
3333
if ((board_config == AD1988_6STACK_DIG) ||
3334
(board_config == AD1988_6STACK_DIG_FP)) {
3164
3335
spec->multiout.dig_out_nid = AD1988_SPDIF_OUT;
3165
3336
spec->dig_in_nid = AD1988_SPDIF_IN;
3304
3476
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x01, HDA_INPUT),
3305
3477
HDA_CODEC_VOLUME("CD Playback Volume", 0x20, 0x02, HDA_INPUT),
3306
3478
HDA_CODEC_MUTE("CD Playback Switch", 0x20, 0x02, HDA_INPUT),
3307
HDA_CODEC_VOLUME("Mic Boost", 0x15, 0x0, HDA_INPUT),
3308
HDA_CODEC_VOLUME("Front Mic Boost", 0x14, 0x0, HDA_INPUT),
3479
HDA_CODEC_VOLUME("Mic Boost Volume", 0x15, 0x0, HDA_INPUT),
3480
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3309
3481
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3310
3482
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3311
3483
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
3502
3675
HDA_CODEC_MUTE("Beep Playback Switch", 0x20, 0x03, HDA_INPUT),
3503
3676
HDA_CODEC_VOLUME("Docking Mic Playback Volume", 0x20, 0x04, HDA_INPUT),
3504
3677
HDA_CODEC_MUTE("Docking Mic Playback Switch", 0x20, 0x04, HDA_INPUT),
3505
HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
3506
HDA_CODEC_VOLUME("Internal Mic Boost", 0x15, 0x0, HDA_INPUT),
3507
HDA_CODEC_VOLUME("Docking Mic Boost", 0x25, 0x0, HDA_OUTPUT),
3678
HDA_CODEC_VOLUME("Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3679
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x15, 0x0, HDA_INPUT),
3680
HDA_CODEC_VOLUME("Dock Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
3508
3681
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3509
3682
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3510
3683
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
3563
3736
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x20, 0x00, HDA_INPUT),
3564
3737
HDA_CODEC_VOLUME("Line-In Playback Volume", 0x20, 0x01, HDA_INPUT),
3565
3738
HDA_CODEC_MUTE("Line-In Playback Switch", 0x20, 0x01, HDA_INPUT),
3566
HDA_CODEC_VOLUME("Line-In Boost", 0x15, 0x0, HDA_INPUT),
3567
HDA_CODEC_VOLUME("Front Mic Boost", 0x14, 0x0, HDA_INPUT),
3739
HDA_CODEC_VOLUME("Line-In Boost Volume", 0x15, 0x0, HDA_INPUT),
3740
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3568
3741
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3569
3742
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3570
3743
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
3742
3921
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x04, HDA_INPUT),
3743
3922
HDA_CODEC_VOLUME("CD Playback Volume", 0x20, 0x02, HDA_INPUT),
3744
3923
HDA_CODEC_MUTE("CD Playback Switch", 0x20, 0x02, HDA_INPUT),
3745
HDA_CODEC_VOLUME("Front Mic Boost", 0x14, 0x0, HDA_INPUT),
3746
HDA_CODEC_VOLUME("Line Boost", 0x15, 0x0, HDA_INPUT),
3747
HDA_CODEC_VOLUME("Mic Boost", 0x25, 0x0, HDA_OUTPUT),
3924
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3925
HDA_CODEC_VOLUME("Line Boost Volume", 0x15, 0x0, HDA_INPUT),
3926
HDA_CODEC_VOLUME("Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
3748
3927
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3749
3928
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3750
3929
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
3885
4064
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x20, 0x01, HDA_INPUT),
3886
4065
HDA_CODEC_VOLUME("Dock Mic Playback Volume", 0x20, 0x04, HDA_INPUT),
3887
4066
HDA_CODEC_MUTE("Dock Mic Playback Switch", 0x20, 0x04, HDA_INPUT),
3888
HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
3889
HDA_CODEC_VOLUME("Internal Mic Boost", 0x15, 0x0, HDA_INPUT),
3890
HDA_CODEC_VOLUME("Dock Mic Boost", 0x25, 0x0, HDA_OUTPUT),
4067
HDA_CODEC_VOLUME("Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
4068
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x15, 0x0, HDA_INPUT),
4069
HDA_CODEC_VOLUME("Dock Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
3891
4070
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3892
4071
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
4123
4302
HDA_CODEC_MUTE("PCM Playback Switch", 0x20, 0x5, HDA_INPUT),
4124
4303
HDA_CODEC_VOLUME("Mic Playback Volume", 0x20, 0x00, HDA_INPUT),
4125
4304
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x00, HDA_INPUT),
4126
HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
4127
HDA_CODEC_VOLUME("Internal Mic Boost", 0x17, 0x0, HDA_INPUT),
4305
HDA_CODEC_VOLUME("Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
4306
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x17, 0x0, HDA_INPUT),
4128
4307
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
4129
4308
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
4490
4670
HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x13, 1, 0x0, HDA_OUTPUT),
4491
4671
HDA_CODEC_MUTE_MONO("Mono Playback Switch", 0x13, 1, 0x0, HDA_OUTPUT),
4493
HDA_CODEC_VOLUME("Mic Boost", 0x3c, 0x0, HDA_OUTPUT),
4494
HDA_CODEC_VOLUME("Front Mic Boost", 0x39, 0x0, HDA_OUTPUT),
4495
HDA_CODEC_VOLUME("Line-In Boost", 0x3a, 0x0, HDA_OUTPUT),
4673
HDA_CODEC_VOLUME("Mic Boost Volume", 0x3c, 0x0, HDA_OUTPUT),
4674
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
4675
HDA_CODEC_VOLUME("Line-In Boost Volume", 0x3a, 0x0, HDA_OUTPUT),
4496
4676
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
4497
4677
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
4498
4678
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),