tangled
alpha
login
or
join now
tjh.dev
/
kernel
Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1
fork
atom
overview
issues
pulls
pipelines
Merge branch 'topic/hda' into for-linus
Takashi Iwai
15 years ago
c400c9e2
e38302f7
+549
-437
7 changed files
expand all
collapse all
unified
split
Documentation
sound
alsa
HD-Audio-Models.txt
sound
pci
hda
hda_codec.c
patch_analog.c
patch_conexant.c
patch_hdmi.c
patch_realtek.c
patch_sigmatel.c
-1
Documentation/sound/alsa/HD-Audio-Models.txt
···
149
149
acer-aspire-7730g Acer Aspire 7730G
150
150
acer-aspire-8930g Acer Aspire 8930G
151
151
medion Medion Laptops
152
152
-
medion-md2 Medion MD2
153
152
targa-dig Targa/MSI
154
153
targa-2ch-dig Targa/MSI with 2-channel
155
154
targa-8ch-dig Targa/MSI with 8-channel (MSI GX620)
+3
sound/pci/hda/hda_codec.c
···
4571
4571
}
4572
4572
memset(cfg->hp_pins + cfg->hp_outs, 0,
4573
4573
sizeof(hda_nid_t) * (AUTO_CFG_MAX_OUTS - cfg->hp_outs));
4574
4574
+
if (!cfg->hp_outs)
4575
4575
+
cfg->line_out_type = AUTO_PIN_HP_OUT;
4576
4576
+
4574
4577
}
4575
4578
4576
4579
/* sort by sequence */
+36
-36
sound/pci/hda/patch_analog.c
···
666
666
HDA_CODEC_MUTE("Aux Playback Switch", 0x16, 0x0, HDA_OUTPUT),
667
667
HDA_CODEC_VOLUME("Mic Playback Volume", 0x13, 0x0, HDA_OUTPUT),
668
668
HDA_CODEC_MUTE("Mic Playback Switch", 0x13, 0x0, HDA_OUTPUT),
669
669
-
HDA_CODEC_VOLUME("Mic Boost", 0x0f, 0x0, HDA_OUTPUT),
669
669
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x0f, 0x0, HDA_OUTPUT),
670
670
HDA_CODEC_VOLUME("Mono Playback Volume", 0x1e, 0x0, HDA_OUTPUT),
671
671
HDA_CODEC_MUTE("Mono Playback Switch", 0x1e, 0x0, HDA_OUTPUT),
672
672
HDA_CODEC_VOLUME("Capture Volume", 0x12, 0x0, HDA_OUTPUT),
···
729
729
HDA_CODEC_MUTE("Aux Playback Switch", 0x16, 0x0, HDA_OUTPUT),
730
730
HDA_CODEC_VOLUME("Mic Playback Volume", 0x13, 0x0, HDA_OUTPUT),
731
731
HDA_CODEC_MUTE("Mic Playback Switch", 0x13, 0x0, HDA_OUTPUT),
732
732
-
HDA_CODEC_VOLUME("Mic Boost", 0x0f, 0x0, HDA_OUTPUT),
732
732
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x0f, 0x0, HDA_OUTPUT),
733
733
/*
734
734
HDA_CODEC_VOLUME("Mono Playback Volume", 0x1e, 0x0, HDA_OUTPUT),
735
735
HDA_CODEC_MUTE("Mono Playback Switch", 0x1e, 0x0, HDA_OUTPUT), */
···
775
775
HDA_CODEC_MUTE("PCM Playback Switch", 0x03, 0x0, HDA_OUTPUT),
776
776
HDA_CODEC_VOLUME("Mic Playback Volume", 0x13, 0x0, HDA_OUTPUT),
777
777
HDA_CODEC_MUTE("Mic Playback Switch", 0x13, 0x0, HDA_OUTPUT),
778
778
-
HDA_CODEC_VOLUME("Mic Boost", 0x0f, 0x0, HDA_OUTPUT),
778
778
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x0f, 0x0, HDA_OUTPUT),
779
779
HDA_CODEC_VOLUME("Capture Volume", 0x12, 0x0, HDA_OUTPUT),
780
780
HDA_CODEC_MUTE("Capture Switch", 0x12, 0x0, HDA_OUTPUT),
781
781
{
···
1358
1358
HDA_CODEC_MUTE("Mic Playback Switch", 0x12, 0x0, HDA_OUTPUT),
1359
1359
HDA_CODEC_VOLUME("Line Playback Volume", 0x13, 0x0, HDA_OUTPUT),
1360
1360
HDA_CODEC_MUTE("Line Playback Switch", 0x13, 0x0, HDA_OUTPUT),
1361
1361
-
HDA_CODEC_VOLUME("Mic Boost", 0x0c, 0x0, HDA_OUTPUT),
1361
1361
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x0c, 0x0, HDA_OUTPUT),
1362
1362
HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1363
1363
HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1364
1364
{
···
1515
1515
HDA_CODEC_MUTE("Mic Playback Switch", 0x1c, 0x0, HDA_OUTPUT),
1516
1516
HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1517
1517
HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1518
1518
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x08, 0x0, HDA_INPUT),
1519
1519
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0x0, HDA_INPUT),
1518
1518
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x08, 0x0, HDA_INPUT),
1519
1519
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0x0, HDA_INPUT),
1520
1520
HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1521
1521
HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1522
1522
{
···
1726
1726
HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1727
1727
HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1728
1728
#endif
1729
1729
-
HDA_CODEC_VOLUME("Mic Boost", 0x08, 0x0, HDA_INPUT),
1730
1730
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x18, 0x0, HDA_INPUT),
1729
1729
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x08, 0x0, HDA_INPUT),
1730
1730
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x18, 0x0, HDA_INPUT),
1731
1731
HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1732
1732
HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1733
1733
{
···
1774
1774
HDA_CODEC_MUTE("Mic Playback Switch", 0x12, 0x0, HDA_OUTPUT),
1775
1775
HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1776
1776
HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1777
1777
-
HDA_CODEC_VOLUME("Mic Boost", 0x08, 0x0, HDA_INPUT),
1777
1777
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x08, 0x0, HDA_INPUT),
1778
1778
HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1779
1779
HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1780
1780
{
···
2160
2160
HDA_CODEC_VOLUME("Analog Mix Playback Volume", 0x21, 0x0, HDA_OUTPUT),
2161
2161
HDA_CODEC_MUTE("Analog Mix Playback Switch", 0x21, 0x0, HDA_OUTPUT),
2162
2162
2163
2163
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x39, 0x0, HDA_OUTPUT),
2164
2164
-
HDA_CODEC_VOLUME("Mic Boost", 0x3c, 0x0, HDA_OUTPUT),
2163
2163
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
2164
2164
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x3c, 0x0, HDA_OUTPUT),
2165
2165
2166
2166
{ } /* end */
2167
2167
};
···
2203
2203
HDA_CODEC_VOLUME("Analog Mix Playback Volume", 0x21, 0x0, HDA_OUTPUT),
2204
2204
HDA_CODEC_MUTE("Analog Mix Playback Switch", 0x21, 0x0, HDA_OUTPUT),
2205
2205
2206
2206
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x39, 0x0, HDA_OUTPUT),
2207
2207
-
HDA_CODEC_VOLUME("Mic Boost", 0x3c, 0x0, HDA_OUTPUT),
2206
2206
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
2207
2207
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x3c, 0x0, HDA_OUTPUT),
2208
2208
{
2209
2209
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
2210
2210
.name = "Channel Mode",
···
2232
2232
HDA_CODEC_VOLUME("Analog Mix Playback Volume", 0x21, 0x0, HDA_OUTPUT),
2233
2233
HDA_CODEC_MUTE("Analog Mix Playback Switch", 0x21, 0x0, HDA_OUTPUT),
2234
2234
2235
2235
-
HDA_CODEC_VOLUME("Mic Boost", 0x39, 0x0, HDA_OUTPUT),
2235
2235
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
2236
2236
2237
2237
{
2238
2238
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
···
2902
2902
idx = ad1988_pin_idx(pin);
2903
2903
bnid = ad1988_boost_nids[idx];
2904
2904
if (bnid) {
2905
2905
-
sprintf(name, "%s Boost", ctlname);
2905
2905
+
sprintf(name, "%s Boost Volume", ctlname);
2906
2906
return add_control(spec, AD_CTL_WIDGET_VOL, name,
2907
2907
HDA_COMPOSE_AMP_VAL(bnid, 3, idx, HDA_OUTPUT));
2908
2908
···
3300
3300
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x01, HDA_INPUT),
3301
3301
HDA_CODEC_VOLUME("CD Playback Volume", 0x20, 0x02, HDA_INPUT),
3302
3302
HDA_CODEC_MUTE("CD Playback Switch", 0x20, 0x02, HDA_INPUT),
3303
3303
-
HDA_CODEC_VOLUME("Mic Boost", 0x15, 0x0, HDA_INPUT),
3304
3304
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x14, 0x0, HDA_INPUT),
3303
3303
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x15, 0x0, HDA_INPUT),
3304
3304
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3305
3305
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3306
3306
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3307
3307
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
···
3499
3499
HDA_CODEC_MUTE("Beep Playback Switch", 0x20, 0x03, HDA_INPUT),
3500
3500
HDA_CODEC_VOLUME("Docking Mic Playback Volume", 0x20, 0x04, HDA_INPUT),
3501
3501
HDA_CODEC_MUTE("Docking Mic Playback Switch", 0x20, 0x04, HDA_INPUT),
3502
3502
-
HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
3503
3503
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x15, 0x0, HDA_INPUT),
3504
3504
-
HDA_CODEC_VOLUME("Docking Mic Boost", 0x25, 0x0, HDA_OUTPUT),
3502
3502
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3503
3503
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x15, 0x0, HDA_INPUT),
3504
3504
+
HDA_CODEC_VOLUME("Dock Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
3505
3505
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3506
3506
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3507
3507
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
···
3560
3560
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x20, 0x00, HDA_INPUT),
3561
3561
HDA_CODEC_VOLUME("Line-In Playback Volume", 0x20, 0x01, HDA_INPUT),
3562
3562
HDA_CODEC_MUTE("Line-In Playback Switch", 0x20, 0x01, HDA_INPUT),
3563
3563
-
HDA_CODEC_VOLUME("Line-In Boost", 0x15, 0x0, HDA_INPUT),
3564
3564
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x14, 0x0, HDA_INPUT),
3563
3563
+
HDA_CODEC_VOLUME("Line-In Boost Volume", 0x15, 0x0, HDA_INPUT),
3564
3564
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3565
3565
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3566
3566
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3567
3567
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
···
3745
3745
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x04, HDA_INPUT),
3746
3746
HDA_CODEC_VOLUME("CD Playback Volume", 0x20, 0x02, HDA_INPUT),
3747
3747
HDA_CODEC_MUTE("CD Playback Switch", 0x20, 0x02, HDA_INPUT),
3748
3748
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x14, 0x0, HDA_INPUT),
3749
3749
-
HDA_CODEC_VOLUME("Line Boost", 0x15, 0x0, HDA_INPUT),
3750
3750
-
HDA_CODEC_VOLUME("Mic Boost", 0x25, 0x0, HDA_OUTPUT),
3748
3748
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3749
3749
+
HDA_CODEC_VOLUME("Line Boost Volume", 0x15, 0x0, HDA_INPUT),
3750
3750
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
3751
3751
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3752
3752
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3753
3753
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
···
3888
3888
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x20, 0x01, HDA_INPUT),
3889
3889
HDA_CODEC_VOLUME("Dock Mic Playback Volume", 0x20, 0x04, HDA_INPUT),
3890
3890
HDA_CODEC_MUTE("Dock Mic Playback Switch", 0x20, 0x04, HDA_INPUT),
3891
3891
-
HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
3892
3892
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x15, 0x0, HDA_INPUT),
3893
3893
-
HDA_CODEC_VOLUME("Dock Mic Boost", 0x25, 0x0, HDA_OUTPUT),
3891
3891
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
3892
3892
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x15, 0x0, HDA_INPUT),
3893
3893
+
HDA_CODEC_VOLUME("Dock Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
3894
3894
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
3895
3895
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
3896
3896
{ } /* end */
···
4126
4126
HDA_CODEC_MUTE("PCM Playback Switch", 0x20, 0x5, HDA_INPUT),
4127
4127
HDA_CODEC_VOLUME("Mic Playback Volume", 0x20, 0x00, HDA_INPUT),
4128
4128
HDA_CODEC_MUTE("Mic Playback Switch", 0x20, 0x00, HDA_INPUT),
4129
4129
-
HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
4130
4130
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x17, 0x0, HDA_INPUT),
4129
4129
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x14, 0x0, HDA_INPUT),
4130
4130
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x17, 0x0, HDA_INPUT),
4131
4131
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
4132
4132
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
4133
4133
{
···
4255
4255
HDA_CODEC_MUTE("PCM Playback Switch", 0x20, 0x5, HDA_INPUT),
4256
4256
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
4257
4257
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
4258
4258
-
HDA_CODEC_VOLUME("Mic Boost", 0x25, 0x0, HDA_OUTPUT),
4259
4259
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x17, 0x0, HDA_INPUT),
4258
4258
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x25, 0x0, HDA_OUTPUT),
4259
4259
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x17, 0x0, HDA_INPUT),
4260
4260
{ } /* end */
4261
4261
};
4262
4262
···
4494
4494
HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x13, 1, 0x0, HDA_OUTPUT),
4495
4495
HDA_CODEC_MUTE_MONO("Mono Playback Switch", 0x13, 1, 0x0, HDA_OUTPUT),
4496
4496
4497
4497
-
HDA_CODEC_VOLUME("Mic Boost", 0x3c, 0x0, HDA_OUTPUT),
4498
4498
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x39, 0x0, HDA_OUTPUT),
4499
4499
-
HDA_CODEC_VOLUME("Line-In Boost", 0x3a, 0x0, HDA_OUTPUT),
4497
4497
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x3c, 0x0, HDA_OUTPUT),
4498
4498
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x39, 0x0, HDA_OUTPUT),
4499
4499
+
HDA_CODEC_VOLUME("Line-In Boost Volume", 0x3a, 0x0, HDA_OUTPUT),
4500
4500
HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
4501
4501
HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
4502
4502
HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
···
4547
4547
HDA_CODEC_MUTE("Line Playback Switch", 0x20, 0x01, HDA_INPUT),
4548
4548
HDA_CODEC_VOLUME("CD Playback Volume", 0x20, 0x06, HDA_INPUT),
4549
4549
HDA_CODEC_MUTE("CD Playback Switch", 0x20, 0x06, HDA_INPUT),
4550
4550
-
HDA_CODEC_VOLUME("Digital Mic Boost", 0x1f, 0x0, HDA_INPUT),
4550
4550
+
HDA_CODEC_VOLUME("Digital Mic Boost Volume", 0x1f, 0x0, HDA_INPUT),
4551
4551
{ } /* end */
4552
4552
};
4553
4553
+53
-55
sound/pci/hda/patch_conexant.c
···
869
869
}
870
870
871
871
static struct snd_kcontrol_new cxt5045_mixers[] = {
872
872
-
HDA_CODEC_VOLUME("Int Mic Capture Volume", 0x1a, 0x01, HDA_INPUT),
873
873
-
HDA_CODEC_MUTE("Int Mic Capture Switch", 0x1a, 0x01, HDA_INPUT),
874
874
-
HDA_CODEC_VOLUME("Ext Mic Capture Volume", 0x1a, 0x02, HDA_INPUT),
875
875
-
HDA_CODEC_MUTE("Ext Mic Capture Switch", 0x1a, 0x02, HDA_INPUT),
872
872
+
HDA_CODEC_VOLUME("Internal Mic Capture Volume", 0x1a, 0x01, HDA_INPUT),
873
873
+
HDA_CODEC_MUTE("Internal Mic Capture Switch", 0x1a, 0x01, HDA_INPUT),
874
874
+
HDA_CODEC_VOLUME("Mic Capture Volume", 0x1a, 0x02, HDA_INPUT),
875
875
+
HDA_CODEC_MUTE("Mic Capture Switch", 0x1a, 0x02, HDA_INPUT),
876
876
HDA_CODEC_VOLUME("PCM Playback Volume", 0x17, 0x0, HDA_INPUT),
877
877
HDA_CODEC_MUTE("PCM Playback Switch", 0x17, 0x0, HDA_INPUT),
878
878
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x17, 0x1, HDA_INPUT),
879
879
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x17, 0x1, HDA_INPUT),
880
880
-
HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x17, 0x2, HDA_INPUT),
881
881
-
HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x17, 0x2, HDA_INPUT),
878
878
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x17, 0x1, HDA_INPUT),
879
879
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x17, 0x1, HDA_INPUT),
880
880
+
HDA_CODEC_VOLUME("Mic Playback Volume", 0x17, 0x2, HDA_INPUT),
881
881
+
HDA_CODEC_MUTE("Mic Playback Switch", 0x17, 0x2, HDA_INPUT),
882
882
HDA_BIND_VOL("Master Playback Volume", &cxt5045_hp_bind_master_vol),
883
883
{
884
884
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
···
910
910
};
911
911
912
912
static struct snd_kcontrol_new cxt5045_mixers_hp530[] = {
913
913
-
HDA_CODEC_VOLUME("Int Mic Capture Volume", 0x1a, 0x02, HDA_INPUT),
914
914
-
HDA_CODEC_MUTE("Int Mic Capture Switch", 0x1a, 0x02, HDA_INPUT),
915
915
-
HDA_CODEC_VOLUME("Ext Mic Capture Volume", 0x1a, 0x01, HDA_INPUT),
916
916
-
HDA_CODEC_MUTE("Ext Mic Capture Switch", 0x1a, 0x01, HDA_INPUT),
913
913
+
HDA_CODEC_VOLUME("Internal Mic Capture Volume", 0x1a, 0x02, HDA_INPUT),
914
914
+
HDA_CODEC_MUTE("Internal Mic Capture Switch", 0x1a, 0x02, HDA_INPUT),
915
915
+
HDA_CODEC_VOLUME("Mic Capture Volume", 0x1a, 0x01, HDA_INPUT),
916
916
+
HDA_CODEC_MUTE("Mic Capture Switch", 0x1a, 0x01, HDA_INPUT),
917
917
HDA_CODEC_VOLUME("PCM Playback Volume", 0x17, 0x0, HDA_INPUT),
918
918
HDA_CODEC_MUTE("PCM Playback Switch", 0x17, 0x0, HDA_INPUT),
919
919
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x17, 0x2, HDA_INPUT),
920
920
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x17, 0x2, HDA_INPUT),
921
921
-
HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x17, 0x1, HDA_INPUT),
922
922
-
HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x17, 0x1, HDA_INPUT),
919
919
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x17, 0x2, HDA_INPUT),
920
920
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x17, 0x2, HDA_INPUT),
921
921
+
HDA_CODEC_VOLUME("Mic Playback Volume", 0x17, 0x1, HDA_INPUT),
922
922
+
HDA_CODEC_MUTE("Mic Playback Switch", 0x17, 0x1, HDA_INPUT),
923
923
HDA_BIND_VOL("Master Playback Volume", &cxt5045_hp_bind_master_vol),
924
924
{
925
925
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
···
947
947
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)},
948
948
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)},
949
949
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)},
950
950
-
/* Record selector: Int mic */
950
950
+
/* Record selector: Internal mic */
951
951
{0x1a, AC_VERB_SET_CONNECT_SEL,0x1},
952
952
{0x1a, AC_VERB_SET_AMP_GAIN_MUTE,
953
953
AC_AMP_SET_INPUT|AC_AMP_SET_RIGHT|AC_AMP_SET_LEFT|0x17},
···
960
960
};
961
961
962
962
static struct hda_verb cxt5045_benq_init_verbs[] = {
963
963
-
/* Int Mic, Mic */
963
963
+
/* Internal Mic, Mic */
964
964
{0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 },
965
965
{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 },
966
966
/* Line In,HP, Amp */
···
973
973
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)},
974
974
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)},
975
975
{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)},
976
976
-
/* Record selector: Int mic */
976
976
+
/* Record selector: Internal mic */
977
977
{0x1a, AC_VERB_SET_CONNECT_SEL, 0x1},
978
978
{0x1a, AC_VERB_SET_AMP_GAIN_MUTE,
979
979
AC_AMP_SET_INPUT|AC_AMP_SET_RIGHT|AC_AMP_SET_LEFT|0x17},
···
1376
1376
static struct snd_kcontrol_new cxt5047_base_mixers[] = {
1377
1377
HDA_CODEC_VOLUME("Mic Playback Volume", 0x19, 0x02, HDA_INPUT),
1378
1378
HDA_CODEC_MUTE("Mic Playback Switch", 0x19, 0x02, HDA_INPUT),
1379
1379
-
HDA_CODEC_VOLUME("Mic Boost", 0x1a, 0x0, HDA_OUTPUT),
1379
1379
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x1a, 0x0, HDA_OUTPUT),
1380
1380
HDA_CODEC_VOLUME("Capture Volume", 0x12, 0x03, HDA_INPUT),
1381
1381
HDA_CODEC_MUTE("Capture Switch", 0x12, 0x03, HDA_INPUT),
1382
1382
HDA_CODEC_VOLUME("PCM Volume", 0x10, 0x00, HDA_OUTPUT),
···
1796
1796
static struct snd_kcontrol_new cxt5051_capture_mixers[] = {
1797
1797
HDA_CODEC_VOLUME("Internal Mic Volume", 0x14, 0x00, HDA_INPUT),
1798
1798
HDA_CODEC_MUTE("Internal Mic Switch", 0x14, 0x00, HDA_INPUT),
1799
1799
-
HDA_CODEC_VOLUME("External Mic Volume", 0x14, 0x01, HDA_INPUT),
1800
1800
-
HDA_CODEC_MUTE("External Mic Switch", 0x14, 0x01, HDA_INPUT),
1799
1799
+
HDA_CODEC_VOLUME("Mic Volume", 0x14, 0x01, HDA_INPUT),
1800
1800
+
HDA_CODEC_MUTE("Mic Switch", 0x14, 0x01, HDA_INPUT),
1801
1801
HDA_CODEC_VOLUME("Docking Mic Volume", 0x15, 0x00, HDA_INPUT),
1802
1802
HDA_CODEC_MUTE("Docking Mic Switch", 0x15, 0x00, HDA_INPUT),
1803
1803
{}
···
1806
1806
static struct snd_kcontrol_new cxt5051_hp_mixers[] = {
1807
1807
HDA_CODEC_VOLUME("Internal Mic Volume", 0x14, 0x00, HDA_INPUT),
1808
1808
HDA_CODEC_MUTE("Internal Mic Switch", 0x14, 0x00, HDA_INPUT),
1809
1809
-
HDA_CODEC_VOLUME("External Mic Volume", 0x15, 0x00, HDA_INPUT),
1810
1810
-
HDA_CODEC_MUTE("External Mic Switch", 0x15, 0x00, HDA_INPUT),
1809
1809
+
HDA_CODEC_VOLUME("Mic Volume", 0x15, 0x00, HDA_INPUT),
1810
1810
+
HDA_CODEC_MUTE("Mic Switch", 0x15, 0x00, HDA_INPUT),
1811
1811
{}
1812
1812
};
1813
1813
···
1826
1826
static struct snd_kcontrol_new cxt5051_toshiba_mixers[] = {
1827
1827
HDA_CODEC_VOLUME("Internal Mic Volume", 0x14, 0x00, HDA_INPUT),
1828
1828
HDA_CODEC_MUTE("Internal Mic Switch", 0x14, 0x00, HDA_INPUT),
1829
1829
-
HDA_CODEC_VOLUME("External Mic Volume", 0x14, 0x01, HDA_INPUT),
1830
1830
-
HDA_CODEC_MUTE("External Mic Switch", 0x14, 0x01, HDA_INPUT),
1829
1829
+
HDA_CODEC_VOLUME("Mic Volume", 0x14, 0x01, HDA_INPUT),
1830
1830
+
HDA_CODEC_MUTE("Mic Switch", 0x14, 0x01, HDA_INPUT),
1831
1831
{}
1832
1832
};
1833
1833
···
1847
1847
{0x16, AC_VERB_SET_CONNECT_SEL, 0x00},
1848
1848
/* DAC1 */
1849
1849
{0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
1850
1850
-
/* Record selector: Int mic */
1850
1850
+
/* Record selector: Internal mic */
1851
1851
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0) | 0x44},
1852
1852
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1) | 0x44},
1853
1853
{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0) | 0x44},
···
1874
1874
{0x16, AC_VERB_SET_CONNECT_SEL, 0x00},
1875
1875
/* DAC1 */
1876
1876
{0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
1877
1877
-
/* Record selector: Int mic */
1877
1877
+
/* Record selector: Internal mic */
1878
1878
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1) | 0x44},
1879
1879
{0x14, AC_VERB_SET_CONNECT_SEL, 0x1},
1880
1880
/* SPDIF route: PCM */
···
1904
1904
{0x19, AC_VERB_SET_CONNECT_SEL, 0x00},
1905
1905
/* DAC1 */
1906
1906
{0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
1907
1907
-
/* Record selector: Int mic */
1907
1907
+
/* Record selector: Internal mic */
1908
1908
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0) | 0x44},
1909
1909
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1) | 0x44},
1910
1910
{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0) | 0x44},
···
1932
1932
{0x16, AC_VERB_SET_CONNECT_SEL, 0x00},
1933
1933
/* DAC1 */
1934
1934
{0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
1935
1935
-
/* Record selector: Int mic */
1935
1935
+
/* Record selector: Internal mic */
1936
1936
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1) | 0x44},
1937
1937
{0x14, AC_VERB_SET_CONNECT_SEL, 0x1},
1938
1938
/* SPDIF route: PCM */
···
2111
2111
{ 2, NULL },
2112
2112
};
2113
2113
2114
2114
+
#define HP_PRESENT_PORT_A (1 << 0)
2115
2115
+
#define HP_PRESENT_PORT_D (1 << 1)
2116
2116
+
#define hp_port_a_present(spec) ((spec)->hp_present & HP_PRESENT_PORT_A)
2117
2117
+
#define hp_port_d_present(spec) ((spec)->hp_present & HP_PRESENT_PORT_D)
2118
2118
+
2114
2119
static void cxt5066_update_speaker(struct hda_codec *codec)
2115
2120
{
2116
2121
struct conexant_spec *spec = codec->spec;
···
2125
2120
spec->hp_present, spec->cur_eapd);
2126
2121
2127
2122
/* Port A (HP) */
2128
2128
-
pinctl = ((spec->hp_present & 1) && spec->cur_eapd) ? PIN_HP : 0;
2123
2123
+
pinctl = (hp_port_a_present(spec) && spec->cur_eapd) ? PIN_HP : 0;
2129
2124
snd_hda_codec_write(codec, 0x19, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
2130
2125
pinctl);
2131
2126
2132
2127
/* Port D (HP/LO) */
2133
2133
-
if (spec->dell_automute) {
2134
2134
-
/* DELL AIO Port Rule: PortA> PortD> IntSpk */
2135
2135
-
pinctl = (!(spec->hp_present & 1) && spec->cur_eapd)
2136
2136
-
? PIN_OUT : 0;
2137
2137
-
} else if (spec->thinkpad) {
2138
2138
-
if (spec->cur_eapd)
2139
2139
-
pinctl = spec->port_d_mode;
2140
2140
-
/* Mute dock line-out if Port A (laptop HP) is present */
2141
2141
-
if (spec->hp_present& 1)
2128
2128
+
pinctl = spec->cur_eapd ? spec->port_d_mode : 0;
2129
2129
+
if (spec->dell_automute || spec->thinkpad) {
2130
2130
+
/* Mute if Port A is connected */
2131
2131
+
if (hp_port_a_present(spec))
2142
2132
pinctl = 0;
2143
2133
} else {
2144
2144
-
pinctl = ((spec->hp_present & 2) && spec->cur_eapd)
2145
2145
-
? spec->port_d_mode : 0;
2134
2134
+
/* Thinkpad/Dell doesn't give pin-D status */
2135
2135
+
if (!hp_port_d_present(spec))
2136
2136
+
pinctl = 0;
2146
2137
}
2147
2138
snd_hda_codec_write(codec, 0x1c, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
2148
2139
pinctl);
···
2380
2379
/* Port D */
2381
2380
portD = snd_hda_jack_detect(codec, 0x1c);
2382
2381
2383
2383
-
spec->hp_present = !!(portA);
2384
2384
-
spec->hp_present |= portD ? 2 : 0;
2382
2382
+
spec->hp_present = portA ? HP_PRESENT_PORT_A : 0;
2383
2383
+
spec->hp_present |= portD ? HP_PRESENT_PORT_D : 0;
2385
2384
snd_printdd("CXT5066: hp automute portA=%x portD=%x present=%d\n",
2386
2385
portA, portD, spec->hp_present);
2387
2386
cxt5066_update_speaker(codec);
···
2729
2728
static struct snd_kcontrol_new cxt5066_vostro_mixers[] = {
2730
2729
{
2731
2730
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
2732
2732
-
.name = "Int Mic Boost Capture Enum",
2731
2731
+
.name = "Internal Mic Boost Capture Enum",
2733
2732
.info = cxt5066_mic_boost_mux_enum_info,
2734
2733
.get = cxt5066_mic_boost_mux_enum_get,
2735
2734
.put = cxt5066_mic_boost_mux_enum_put,
···
2955
2954
{0x22, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2956
2955
2957
2956
/* internal microphone */
2958
2958
-
{0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, /* enable int mic */
2957
2957
+
{0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, /* enable internal mic */
2959
2958
2960
2959
/* EAPD */
2961
2960
{0x1d, AC_VERB_SET_EAPD_BTLENABLE, 0x2}, /* default on */
···
3010
3009
{0x22, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
3011
3010
3012
3011
/* internal microphone */
3013
3013
-
{0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, /* enable int mic */
3012
3012
+
{0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, /* enable internal mic */
3014
3013
3015
3014
/* EAPD */
3016
3015
{0x1d, AC_VERB_SET_EAPD_BTLENABLE, 0x2}, /* default on */
···
3098
3097
SND_PCI_QUIRK_MASK(0x1025, 0xff00, 0x0400, "Acer", CXT5066_IDEAPAD),
3099
3098
SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO),
3100
3099
SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD),
3100
3100
+
SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO),
3101
3101
SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO),
3102
3102
SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
3103
3103
SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP),
···
3110
3108
CXT5066_LAPTOP),
3111
3109
SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5),
3112
3110
SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD),
3113
3113
-
SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD),
3114
3111
SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD),
3115
3115
-
SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD),
3116
3116
-
SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD),
3117
3117
-
SND_PCI_QUIRK(0x17aa, 0x21c8, "Thinkpad Edge 11", CXT5066_IDEAPAD),
3118
3112
SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
3119
3119
-
SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD),
3120
3120
-
SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD),
3121
3121
-
SND_PCI_QUIRK(0x17aa, 0x3938, "Lenovo G series (AMD)", CXT5066_IDEAPAD),
3122
3122
-
SND_PCI_QUIRK(0x17aa, 0x3a0d, "ideapad", CXT5066_IDEAPAD),
3113
3113
+
SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo", CXT5066_IDEAPAD), /* Fallback for Lenovos without dock mic */
3123
3114
{}
3124
3115
};
3125
3116
···
3417
3422
AC_VERB_SET_PIN_WIDGET_CONTROL,
3418
3423
present ? 0 : PIN_OUT);
3419
3424
}
3425
3425
+
for (i = 0; !present && i < cfg->line_outs; i++)
3426
3426
+
if (snd_hda_jack_detect(codec, cfg->line_out_pins[i]))
3427
3427
+
present = 1;
3420
3428
for (i = 0; i < cfg->speaker_outs; i++) {
3421
3429
snd_hda_codec_write(codec, cfg->speaker_pins[i], 0,
3422
3430
AC_VERB_SET_PIN_WIDGET_CONTROL,
+81
-11
sound/pci/hda/patch_hdmi.c
···
31
31
#include <linux/init.h>
32
32
#include <linux/delay.h>
33
33
#include <linux/slab.h>
34
34
+
#include <linux/moduleparam.h>
34
35
#include <sound/core.h>
35
36
#include "hda_codec.h"
36
37
#include "hda_local.h"
38
38
+
39
39
+
static bool static_hdmi_pcm;
40
40
+
module_param(static_hdmi_pcm, bool, 0644);
41
41
+
MODULE_PARM_DESC(static_hdmi_pcm, "Don't restrict PCM parameters per ELD info");
37
42
38
43
/*
39
44
* The HDMI/DisplayPort configuration can be highly dynamic. A graphics device
···
832
827
*codec_pars = *hinfo;
833
828
834
829
eld = &spec->sink_eld[idx];
835
835
-
if (eld->sad_count > 0) {
830
830
+
if (!static_hdmi_pcm && eld->eld_valid && eld->sad_count > 0) {
836
831
hdmi_eld_update_pcm_info(eld, hinfo, codec_pars);
837
832
if (hinfo->channels_min > hinfo->channels_max ||
838
833
!hinfo->rates || !hinfo->formats)
···
909
904
spec->pin[spec->num_pins] = pin_nid;
910
905
spec->num_pins++;
911
906
912
912
-
/*
913
913
-
* It is assumed that converter nodes come first in the node list and
914
914
-
* hence have been registered and usable now.
915
915
-
*/
916
907
return hdmi_read_pin_conn(codec, pin_nid);
917
908
}
918
909
919
910
static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t nid)
920
911
{
912
912
+
int i, found_pin = 0;
921
913
struct hdmi_spec *spec = codec->spec;
922
914
923
923
-
if (spec->num_cvts >= MAX_HDMI_CVTS) {
924
924
-
snd_printk(KERN_WARNING
925
925
-
"HDMI: no space for converter %d\n", nid);
926
926
-
return -E2BIG;
915
915
+
for (i = 0; i < spec->num_pins; i++)
916
916
+
if (nid == spec->pin_cvt[i]) {
917
917
+
found_pin = 1;
918
918
+
break;
919
919
+
}
920
920
+
921
921
+
if (!found_pin) {
922
922
+
snd_printdd("HDMI: Skipping node %d (no connection)\n", nid);
923
923
+
return -EINVAL;
927
924
}
925
925
+
926
926
+
if (snd_BUG_ON(spec->num_cvts >= MAX_HDMI_CVTS))
927
927
+
return -E2BIG;
928
928
929
929
spec->cvt[spec->num_cvts] = nid;
930
930
spec->num_cvts++;
···
941
931
{
942
932
hda_nid_t nid;
943
933
int i, nodes;
934
934
+
int num_tmp_cvts = 0;
935
935
+
hda_nid_t tmp_cvt[MAX_HDMI_CVTS];
944
936
945
937
nodes = snd_hda_get_sub_nodes(codec, codec->afg, &nid);
946
938
if (!nid || nodes < 0) {
···
953
941
for (i = 0; i < nodes; i++, nid++) {
954
942
unsigned int caps;
955
943
unsigned int type;
944
944
+
unsigned int config;
956
945
957
946
caps = snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP);
958
947
type = get_wcaps_type(caps);
···
963
950
964
951
switch (type) {
965
952
case AC_WID_AUD_OUT:
966
966
-
hdmi_add_cvt(codec, nid);
953
953
+
if (num_tmp_cvts >= MAX_HDMI_CVTS) {
954
954
+
snd_printk(KERN_WARNING
955
955
+
"HDMI: no space for converter %d\n", nid);
956
956
+
continue;
957
957
+
}
958
958
+
tmp_cvt[num_tmp_cvts] = nid;
959
959
+
num_tmp_cvts++;
967
960
break;
968
961
case AC_WID_PIN:
969
962
caps = snd_hda_param_read(codec, nid, AC_PAR_PIN_CAP);
970
963
if (!(caps & (AC_PINCAP_HDMI | AC_PINCAP_DP)))
971
964
continue;
965
965
+
966
966
+
config = snd_hda_codec_read(codec, nid, 0,
967
967
+
AC_VERB_GET_CONFIG_DEFAULT, 0);
968
968
+
if (get_defcfg_connect(config) == AC_JACK_PORT_NONE)
969
969
+
continue;
970
970
+
972
971
hdmi_add_pin(codec, nid);
973
972
break;
974
973
}
975
974
}
975
975
+
976
976
+
for (i = 0; i < num_tmp_cvts; i++)
977
977
+
hdmi_add_cvt(codec, tmp_cvt[i]);
976
978
977
979
/*
978
980
* G45/IbexPeak don't support EPSS: the unsolicited pin hot plug event
···
1193
1165
return 0;
1194
1166
}
1195
1167
1168
1168
+
static unsigned int channels_2_6_8[] = {
1169
1169
+
2, 6, 8
1170
1170
+
};
1171
1171
+
1172
1172
+
static unsigned int channels_2_8[] = {
1173
1173
+
2, 8
1174
1174
+
};
1175
1175
+
1176
1176
+
static struct snd_pcm_hw_constraint_list hw_constraints_2_6_8_channels = {
1177
1177
+
.count = ARRAY_SIZE(channels_2_6_8),
1178
1178
+
.list = channels_2_6_8,
1179
1179
+
.mask = 0,
1180
1180
+
};
1181
1181
+
1182
1182
+
static struct snd_pcm_hw_constraint_list hw_constraints_2_8_channels = {
1183
1183
+
.count = ARRAY_SIZE(channels_2_8),
1184
1184
+
.list = channels_2_8,
1185
1185
+
.mask = 0,
1186
1186
+
};
1187
1187
+
1196
1188
static int simple_playback_pcm_open(struct hda_pcm_stream *hinfo,
1197
1189
struct hda_codec *codec,
1198
1190
struct snd_pcm_substream *substream)
1199
1191
{
1200
1192
struct hdmi_spec *spec = codec->spec;
1193
1193
+
struct snd_pcm_hw_constraint_list *hw_constraints_channels = NULL;
1194
1194
+
1195
1195
+
switch (codec->preset->id) {
1196
1196
+
case 0x10de0002:
1197
1197
+
case 0x10de0003:
1198
1198
+
case 0x10de0005:
1199
1199
+
case 0x10de0006:
1200
1200
+
hw_constraints_channels = &hw_constraints_2_8_channels;
1201
1201
+
break;
1202
1202
+
case 0x10de0007:
1203
1203
+
hw_constraints_channels = &hw_constraints_2_6_8_channels;
1204
1204
+
break;
1205
1205
+
default:
1206
1206
+
break;
1207
1207
+
}
1208
1208
+
1209
1209
+
if (hw_constraints_channels != NULL) {
1210
1210
+
snd_pcm_hw_constraint_list(substream->runtime, 0,
1211
1211
+
SNDRV_PCM_HW_PARAM_CHANNELS,
1212
1212
+
hw_constraints_channels);
1213
1213
+
}
1214
1214
+
1201
1215
return snd_hda_multi_out_dig_open(codec, &spec->multiout);
1202
1216
}
1203
1217
···
1602
1532
{ .id = 0x1002793c, .name = "RS600 HDMI", .patch = patch_atihdmi },
1603
1533
{ .id = 0x10027919, .name = "RS600 HDMI", .patch = patch_atihdmi },
1604
1534
{ .id = 0x1002791a, .name = "RS690/780 HDMI", .patch = patch_atihdmi },
1605
1605
-
{ .id = 0x1002aa01, .name = "R6xx HDMI", .patch = patch_atihdmi },
1535
1535
+
{ .id = 0x1002aa01, .name = "R6xx HDMI", .patch = patch_generic_hdmi },
1606
1536
{ .id = 0x10951390, .name = "SiI1390 HDMI", .patch = patch_generic_hdmi },
1607
1537
{ .id = 0x10951392, .name = "SiI1392 HDMI", .patch = patch_generic_hdmi },
1608
1538
{ .id = 0x17e80047, .name = "Chrontel HDMI", .patch = patch_generic_hdmi },
+363
-330
sound/pci/hda/patch_realtek.c
···
231
231
ALC888_ACER_ASPIRE_8930G,
232
232
ALC888_ACER_ASPIRE_7730G,
233
233
ALC883_MEDION,
234
234
-
ALC883_MEDION_MD2,
235
234
ALC883_MEDION_WIM2160,
236
235
ALC883_LAPTOP_EAPD,
237
236
ALC883_LENOVO_101E_2ch,
···
1677
1678
u32 val;
1678
1679
};
1679
1680
1681
1681
+
struct alc_model_fixup {
1682
1682
+
const int id;
1683
1683
+
const char *name;
1684
1684
+
};
1685
1685
+
1680
1686
struct alc_fixup {
1681
1687
unsigned int sku;
1682
1688
const struct alc_pincfg *pins;
1683
1689
const struct hda_verb *verbs;
1690
1690
+
void (*func)(struct hda_codec *codec, const struct alc_fixup *fix,
1691
1691
+
int pre_init);
1684
1692
};
1685
1693
1686
1686
-
static void alc_pick_fixup(struct hda_codec *codec,
1687
1687
-
const struct snd_pci_quirk *quirk,
1688
1688
-
const struct alc_fixup *fix,
1689
1689
-
int pre_init)
1694
1694
+
static void __alc_pick_fixup(struct hda_codec *codec,
1695
1695
+
const struct alc_fixup *fix,
1696
1696
+
const char *modelname,
1697
1697
+
int pre_init)
1690
1698
{
1691
1699
const struct alc_pincfg *cfg;
1692
1700
struct alc_spec *spec;
1693
1701
1694
1694
-
quirk = snd_pci_quirk_lookup(codec->bus->pci, quirk);
1695
1695
-
if (!quirk)
1696
1696
-
return;
1697
1697
-
fix += quirk->value;
1698
1702
cfg = fix->pins;
1699
1703
if (pre_init && fix->sku) {
1700
1704
#ifdef CONFIG_SND_DEBUG_VERBOSE
1701
1705
snd_printdd(KERN_INFO "hda_codec: %s: Apply sku override for %s\n",
1702
1702
-
codec->chip_name, quirk->name);
1706
1706
+
codec->chip_name, modelname);
1703
1707
#endif
1704
1708
spec = codec->spec;
1705
1709
spec->cdefine.sku_cfg = fix->sku;
···
1711
1709
if (pre_init && cfg) {
1712
1710
#ifdef CONFIG_SND_DEBUG_VERBOSE
1713
1711
snd_printdd(KERN_INFO "hda_codec: %s: Apply pincfg for %s\n",
1714
1714
-
codec->chip_name, quirk->name);
1712
1712
+
codec->chip_name, modelname);
1715
1713
#endif
1716
1714
for (; cfg->nid; cfg++)
1717
1715
snd_hda_codec_set_pincfg(codec, cfg->nid, cfg->val);
···
1719
1717
if (!pre_init && fix->verbs) {
1720
1718
#ifdef CONFIG_SND_DEBUG_VERBOSE
1721
1719
snd_printdd(KERN_INFO "hda_codec: %s: Apply fix-verbs for %s\n",
1722
1722
-
codec->chip_name, quirk->name);
1720
1720
+
codec->chip_name, modelname);
1723
1721
#endif
1724
1722
add_verb(codec->spec, fix->verbs);
1723
1723
+
}
1724
1724
+
if (fix->func) {
1725
1725
+
#ifdef CONFIG_SND_DEBUG_VERBOSE
1726
1726
+
snd_printdd(KERN_INFO "hda_codec: %s: Apply fix-func for %s\n",
1727
1727
+
codec->chip_name, modelname);
1728
1728
+
#endif
1729
1729
+
fix->func(codec, fix, pre_init);
1730
1730
+
}
1731
1731
+
}
1732
1732
+
1733
1733
+
static void alc_pick_fixup(struct hda_codec *codec,
1734
1734
+
const struct snd_pci_quirk *quirk,
1735
1735
+
const struct alc_fixup *fix,
1736
1736
+
int pre_init)
1737
1737
+
{
1738
1738
+
quirk = snd_pci_quirk_lookup(codec->bus->pci, quirk);
1739
1739
+
if (quirk) {
1740
1740
+
fix += quirk->value;
1741
1741
+
#ifdef CONFIG_SND_DEBUG_VERBOSE
1742
1742
+
__alc_pick_fixup(codec, fix, quirk->name, pre_init);
1743
1743
+
#else
1744
1744
+
__alc_pick_fixup(codec, fix, NULL, pre_init);
1745
1745
+
#endif
1746
1746
+
}
1747
1747
+
}
1748
1748
+
1749
1749
+
static void alc_pick_fixup_model(struct hda_codec *codec,
1750
1750
+
const struct alc_model_fixup *models,
1751
1751
+
const struct snd_pci_quirk *quirk,
1752
1752
+
const struct alc_fixup *fix,
1753
1753
+
int pre_init)
1754
1754
+
{
1755
1755
+
if (codec->modelname && models) {
1756
1756
+
while (models->name) {
1757
1757
+
if (!strcmp(codec->modelname, models->name)) {
1758
1758
+
fix += models->id;
1759
1759
+
break;
1760
1760
+
}
1761
1761
+
models++;
1762
1762
+
}
1763
1763
+
__alc_pick_fixup(codec, fix, codec->modelname, pre_init);
1764
1764
+
} else {
1765
1765
+
alc_pick_fixup(codec, quirk, fix, pre_init);
1725
1766
}
1726
1767
}
1727
1768
···
2026
1981
{0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
2027
1982
{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
2028
1983
{0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
1984
1984
+
{0x15, AC_VERB_SET_EAPD_BTLENABLE, 2},
2029
1985
{ }
2030
1986
};
2031
1987
···
2166
2120
{
2167
2121
.num_items = 5,
2168
2122
.items = {
2169
2169
-
{ "Ext Mic", 0x0 },
2123
2123
+
{ "Mic", 0x0 },
2170
2124
{ "Line In", 0x2 },
2171
2125
{ "CD", 0x4 },
2172
2126
{ "Input Mix", 0xa },
2173
2173
-
{ "Int Mic", 0xb },
2127
2127
+
{ "Internal Mic", 0xb },
2174
2128
},
2175
2129
},
2176
2130
{
2177
2131
.num_items = 4,
2178
2132
.items = {
2179
2179
-
{ "Ext Mic", 0x0 },
2133
2133
+
{ "Mic", 0x0 },
2180
2134
{ "Line In", 0x2 },
2181
2135
{ "CD", 0x4 },
2182
2136
{ "Input Mix", 0xa },
···
2233
2187
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
2234
2188
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
2235
2189
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
2236
2236
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
2190
2190
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
2237
2191
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
2238
2192
{ } /* end */
2239
2193
};
···
2251
2205
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
2252
2206
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
2253
2207
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
2254
2254
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
2208
2208
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
2255
2209
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
2256
2210
{ } /* end */
2257
2211
};
···
2842
2796
HDA_BIND_MUTE("Speaker Playback Switch", 0x0d, 2, HDA_INPUT),
2843
2797
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
2844
2798
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
2845
2845
-
HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
2846
2846
-
HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
2847
2847
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
2848
2848
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
2799
2799
+
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
2800
2800
+
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
2801
2801
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
2802
2802
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
2849
2803
{ } /* end */
2850
2804
};
2851
2805
···
3353
3307
};
3354
3308
3355
3309
/* auto-toggle front mic */
3356
3356
-
static void alc880_uniwill_mic_automute(struct hda_codec *codec)
3310
3310
+
static void alc88x_simple_mic_automute(struct hda_codec *codec)
3357
3311
{
3358
3312
unsigned int present;
3359
3313
unsigned char bits;
···
3375
3329
static void alc880_uniwill_init_hook(struct hda_codec *codec)
3376
3330
{
3377
3331
alc_automute_amp(codec);
3378
3378
-
alc880_uniwill_mic_automute(codec);
3332
3332
+
alc88x_simple_mic_automute(codec);
3379
3333
}
3380
3334
3381
3335
static void alc880_uniwill_unsol_event(struct hda_codec *codec,
···
3386
3340
*/
3387
3341
switch (res >> 28) {
3388
3342
case ALC880_MIC_EVENT:
3389
3389
-
alc880_uniwill_mic_automute(codec);
3343
3343
+
alc88x_simple_mic_automute(codec);
3390
3344
break;
3391
3345
default:
3392
3346
alc_automute_amp_unsol_event(codec, res);
···
5069
5023
return 0;
5070
5024
}
5071
5025
5026
5026
+
static const char *alc_get_line_out_pfx(const struct auto_pin_cfg *cfg,
5027
5027
+
bool can_be_master)
5028
5028
+
{
5029
5029
+
if (!cfg->hp_outs && !cfg->speaker_outs && can_be_master)
5030
5030
+
return "Master";
5031
5031
+
5032
5032
+
switch (cfg->line_out_type) {
5033
5033
+
case AUTO_PIN_SPEAKER_OUT:
5034
5034
+
return "Speaker";
5035
5035
+
case AUTO_PIN_HP_OUT:
5036
5036
+
return "Headphone";
5037
5037
+
default:
5038
5038
+
if (cfg->line_outs == 1)
5039
5039
+
return "PCM";
5040
5040
+
break;
5041
5041
+
}
5042
5042
+
return NULL;
5043
5043
+
}
5044
5044
+
5072
5045
/* add playback controls from the parsed DAC table */
5073
5046
static int alc880_auto_create_multi_out_ctls(struct alc_spec *spec,
5074
5047
const struct auto_pin_cfg *cfg)
···
5095
5030
static const char *chname[4] = {
5096
5031
"Front", "Surround", NULL /*CLFE*/, "Side"
5097
5032
};
5033
5033
+
const char *pfx = alc_get_line_out_pfx(cfg, false);
5098
5034
hda_nid_t nid;
5099
5035
int i, err;
5100
5036
···
5103
5037
if (!spec->multiout.dac_nids[i])
5104
5038
continue;
5105
5039
nid = alc880_idx_to_mixer(alc880_dac_to_idx(spec->multiout.dac_nids[i]));
5106
5106
-
if (i == 2) {
5040
5040
+
if (!pfx && i == 2) {
5107
5041
/* Center/LFE */
5108
5042
err = add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL,
5109
5043
"Center",
···
5130
5064
if (err < 0)
5131
5065
return err;
5132
5066
} else {
5133
5133
-
const char *pfx;
5134
5134
-
if (cfg->line_outs == 1 &&
5135
5135
-
cfg->line_out_type == AUTO_PIN_SPEAKER_OUT)
5136
5136
-
pfx = "Speaker";
5137
5137
-
else
5138
5138
-
pfx = chname[i];
5139
5139
-
err = add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL, pfx,
5067
5067
+
const char *name = pfx;
5068
5068
+
if (!name)
5069
5069
+
name = chname[i];
5070
5070
+
err = __add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL,
5071
5071
+
name, i,
5140
5072
HDA_COMPOSE_AMP_VAL(nid, 3, 0,
5141
5073
HDA_OUTPUT));
5142
5074
if (err < 0)
5143
5075
return err;
5144
5144
-
err = add_pb_sw_ctrl(spec, ALC_CTL_BIND_MUTE, pfx,
5076
5076
+
err = __add_pb_sw_ctrl(spec, ALC_CTL_BIND_MUTE,
5077
5077
+
name, i,
5145
5078
HDA_COMPOSE_AMP_VAL(nid, 3, 2,
5146
5079
HDA_INPUT));
5147
5080
if (err < 0)
···
5220
5155
{
5221
5156
struct alc_spec *spec = codec->spec;
5222
5157
struct hda_input_mux *imux = &spec->private_imux[0];
5223
5223
-
int i, err, idx, type, type_idx = 0;
5158
5158
+
int i, err, idx, type_idx = 0;
5159
5159
+
const char *prev_label = NULL;
5224
5160
5225
5161
for (i = 0; i < cfg->num_inputs; i++) {
5226
5162
hda_nid_t pin;
···
5231
5165
if (!alc_is_input_pin(codec, pin))
5232
5166
continue;
5233
5167
5234
5234
-
type = cfg->inputs[i].type;
5235
5235
-
if (i > 0 && type == cfg->inputs[i - 1].type)
5168
5168
+
label = hda_get_autocfg_input_label(codec, cfg, i);
5169
5169
+
if (prev_label && !strcmp(label, prev_label))
5236
5170
type_idx++;
5237
5171
else
5238
5172
type_idx = 0;
5239
5239
-
label = hda_get_autocfg_input_label(codec, cfg, i);
5173
5173
+
prev_label = label;
5174
5174
+
5240
5175
if (mixer) {
5241
5176
idx = get_connection_index(codec, mixer, pin);
5242
5177
if (idx >= 0) {
···
7473
7406
.num_items = 4,
7474
7407
.items = {
7475
7408
{ "Mic", 0x0 },
7476
7476
-
{ "Int Mic", 0x1 },
7409
7409
+
{ "Internal Mic", 0x1 },
7477
7410
{ "Line", 0x2 },
7478
7411
{ "CD", 0x4 },
7479
7412
},
···
7483
7416
.num_items = 2,
7484
7417
.items = {
7485
7418
{ "Mic", 0x0 },
7486
7486
-
{ "Int Mic", 0x1 },
7419
7419
+
{ "Internal Mic", 0x1 },
7487
7420
},
7488
7421
};
7489
7422
···
7918
7851
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
7919
7852
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
7920
7853
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
7921
7921
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
7854
7854
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
7922
7855
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
7923
7856
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
7924
7924
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
7857
7857
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
7925
7858
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
7926
7859
{ } /* end */
7927
7860
};
···
7945
7878
HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
7946
7879
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x00, HDA_INPUT),
7947
7880
HDA_CODEC_MUTE ("Mic Playback Switch", 0x0b, 0x00, HDA_INPUT),
7948
7948
-
HDA_CODEC_VOLUME("Line Boost", 0x1a, 0x00, HDA_INPUT),
7949
7949
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0x00, HDA_INPUT),
7881
7881
+
HDA_CODEC_VOLUME("Line Boost Volume", 0x1a, 0x00, HDA_INPUT),
7882
7882
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0x00, HDA_INPUT),
7950
7883
{ } /* end */
7951
7884
};
7952
7885
···
7963
7896
HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x07, HDA_INPUT),
7964
7897
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
7965
7898
HDA_CODEC_MUTE ("Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
7966
7966
-
HDA_CODEC_VOLUME("Line Boost", 0x15, 0x00, HDA_INPUT),
7967
7967
-
HDA_CODEC_VOLUME("Mic Boost", 0x19, 0x00, HDA_INPUT),
7899
7899
+
HDA_CODEC_VOLUME("Line Boost Volume", 0x15, 0x00, HDA_INPUT),
7900
7900
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x19, 0x00, HDA_INPUT),
7968
7901
{ } /* end */
7969
7902
};
7970
7903
···
7979
7912
HDA_BIND_MUTE ("Headphone Playback Switch", 0x0f, 0x02, HDA_INPUT),
7980
7913
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x07, HDA_INPUT),
7981
7914
HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x07, HDA_INPUT),
7982
7982
-
HDA_CODEC_VOLUME("Line Boost", 0x15, 0x00, HDA_INPUT),
7915
7915
+
HDA_CODEC_VOLUME("Line Boost Volume", 0x15, 0x00, HDA_INPUT),
7983
7916
{ } /* end */
7984
7917
};
7985
7918
···
7998
7931
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
7999
7932
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8000
7933
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8001
8001
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
7934
7934
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8002
7935
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8003
7936
{ } /* end */
8004
7937
};
···
8013
7946
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8014
7947
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8015
7948
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8016
8016
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
7949
7949
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8017
7950
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8018
7951
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8019
8019
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
7952
7952
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
8020
7953
{ } /* end */
8021
7954
};
8022
7955
···
8036
7969
HDA_CODEC_MUTE("Mobile Line Playback Switch", 0x0b, 0x03, HDA_INPUT),
8037
7970
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8038
7971
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8039
8039
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
7972
7972
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8040
7973
{ } /* end */
8041
7974
};
8042
7975
···
8049
7982
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8050
7983
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8051
7984
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8052
8052
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
7985
7985
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8053
7986
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8054
7987
{ } /* end */
8055
7988
};
···
8830
8763
HDA_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT),
8831
8764
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
8832
8765
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8833
8833
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8766
8766
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8834
8767
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8835
8768
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8836
8836
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
8769
8769
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
8837
8770
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8838
8771
{ } /* end */
8839
8772
};
···
8844
8777
HDA_CODEC_VOLUME("Speaker Playback Volume", 0x0d, 0x0, HDA_OUTPUT),
8845
8778
HDA_BIND_MUTE("Speaker Playback Switch", 0x0d, 2, HDA_INPUT),
8846
8779
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8847
8847
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8780
8780
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8848
8781
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8849
8849
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8850
8850
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
8851
8851
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8782
8782
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8783
8783
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
8784
8784
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8852
8785
{ } /* end */
8853
8786
};
8854
8787
···
8858
8791
HDA_CODEC_VOLUME("Speaker Playback Volume", 0x0d, 0x0, HDA_OUTPUT),
8859
8792
HDA_BIND_MUTE("Speaker Playback Switch", 0x0d, 2, HDA_INPUT),
8860
8793
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8861
8861
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8794
8794
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8862
8795
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8863
8863
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8864
8864
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
8865
8865
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8796
8796
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8797
8797
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
8798
8798
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8866
8799
{ } /* end */
8867
8800
};
8868
8801
···
8875
8808
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8876
8809
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8877
8810
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8878
8878
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8811
8811
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8879
8812
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8880
8813
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8881
8881
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
8814
8814
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
8882
8815
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8883
8816
{ } /* end */
8884
8817
};
···
8898
8831
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8899
8832
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8900
8833
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8901
8901
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8834
8834
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8902
8835
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8903
8836
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8904
8904
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
8837
8837
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
8905
8838
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8906
8839
{ } /* end */
8907
8840
};
···
8922
8855
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8923
8856
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8924
8857
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8925
8925
-
HDA_CODEC_VOLUME("Mic Boost", 0x19, 0, HDA_INPUT),
8858
8858
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x19, 0, HDA_INPUT),
8926
8859
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8927
8860
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8928
8928
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x18, 0, HDA_INPUT),
8861
8861
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x18, 0, HDA_INPUT),
8929
8862
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8930
8863
{ } /* end */
8931
8864
};
···
8946
8879
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8947
8880
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8948
8881
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x3, HDA_INPUT),
8949
8949
-
HDA_CODEC_VOLUME("Mic Boost", 0x1b, 0, HDA_INPUT),
8882
8882
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x1b, 0, HDA_INPUT),
8950
8883
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x3, HDA_INPUT),
8951
8884
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8952
8952
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x18, 0, HDA_INPUT),
8885
8885
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x18, 0, HDA_INPUT),
8953
8886
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8954
8887
{ } /* end */
8955
8888
};
···
8969
8902
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8970
8903
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8971
8904
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8972
8972
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8905
8905
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8973
8906
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8974
8907
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8975
8975
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
8908
8908
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
8976
8909
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8977
8910
{ } /* end */
8978
8911
};
···
8993
8926
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
8994
8927
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8995
8928
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
8996
8996
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8929
8929
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
8997
8930
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
8998
8931
{ } /* end */
8999
8932
};
···
9006
8939
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
9007
8940
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
9008
8941
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9009
9009
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8942
8942
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
9010
8943
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9011
9011
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
9012
9012
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
9013
9013
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8944
8944
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8945
8945
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
8946
8946
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9014
8947
{ } /* end */
9015
8948
};
9016
8949
9017
8950
static struct snd_kcontrol_new alc883_targa_8ch_mixer[] = {
9018
8951
HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT),
9019
8952
HDA_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT),
9020
9020
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
9021
9021
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
9022
9022
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8953
8953
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8954
8954
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
8955
8955
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9023
8956
{ } /* end */
9024
8957
};
9025
8958
···
9030
8963
HDA_BIND_MUTE("Speaker Playback Switch", 0x0d, 2, HDA_INPUT),
9031
8964
HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
9032
8965
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
9033
9033
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
8966
8966
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
9034
8967
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9035
8968
{ } /* end */
9036
8969
};
···
9043
8976
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
9044
8977
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9045
8978
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9046
9046
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
9047
9047
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9048
9048
-
{ } /* end */
9049
9049
-
};
9050
9050
-
9051
9051
-
static struct snd_kcontrol_new alc883_medion_md2_mixer[] = {
9052
9052
-
HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
9053
9053
-
HDA_CODEC_MUTE("Headphone Playback Switch", 0x14, 0x0, HDA_OUTPUT),
9054
9054
-
HDA_CODEC_MUTE("Front Playback Switch", 0x15, 0x0, HDA_OUTPUT),
9055
9055
-
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
9056
9056
-
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
9057
9057
-
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9058
9058
-
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9059
9059
-
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
9060
9060
-
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
8979
8979
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8980
8980
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9061
8981
{ } /* end */
9062
8982
};
9063
8983
···
9091
9037
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
9092
9038
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
9093
9039
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9094
9094
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
9040
9040
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
9095
9041
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9096
9042
{ } /* end */
9097
9043
};
···
9104
9050
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
9105
9051
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
9106
9052
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9107
9107
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
9053
9053
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
9108
9054
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9109
9055
{ } /* end */
9110
9056
};
···
9126
9072
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
9127
9073
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
9128
9074
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9129
9129
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
9075
9075
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
9130
9076
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9131
9077
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
9132
9132
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
9078
9078
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
9133
9079
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9134
9080
{ } /* end */
9135
9081
};
···
9150
9096
HDA_CODEC_MUTE("Enable Headphones", 0x15, 0x00, HDA_OUTPUT),
9151
9097
HDA_CODEC_MUTE_MONO("Enable LFE", 0x16, 2, 0x00, HDA_OUTPUT),
9152
9098
/* Boost mixers */
9153
9153
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0x00, HDA_INPUT),
9154
9154
-
HDA_CODEC_VOLUME("Line Boost", 0x1a, 0x00, HDA_INPUT),
9099
9099
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0x00, HDA_INPUT),
9100
9100
+
HDA_CODEC_VOLUME("Line Boost Volume", 0x1a, 0x00, HDA_INPUT),
9155
9101
/* Input mixers */
9156
9102
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x00, HDA_INPUT),
9157
9103
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x00, HDA_INPUT),
···
9165
9111
HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
9166
9112
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
9167
9113
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
9168
9168
-
HDA_CODEC_VOLUME("Mic Boost", 0x19, 0, HDA_INPUT),
9114
9114
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x19, 0, HDA_INPUT),
9169
9115
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
9170
9116
{ } /* end */
9171
9117
};
···
9195
9141
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
9196
9142
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
9197
9143
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
9198
9198
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
9144
9144
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
9199
9145
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
9200
9146
{ } /* end */
9201
9147
};
···
9235
9181
spec->autocfg.speaker_pins[0] = 0x14;
9236
9182
spec->autocfg.speaker_pins[1] = 0x17;
9237
9183
}
9238
9238
-
9239
9239
-
/* auto-toggle front mic */
9240
9240
-
/*
9241
9241
-
static void alc883_mitac_mic_automute(struct hda_codec *codec)
9242
9242
-
{
9243
9243
-
unsigned char bits = snd_hda_jack_detect(codec, 0x18) ? HDA_AMP_MUTE : 0;
9244
9244
-
9245
9245
-
snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, 1, HDA_AMP_MUTE, bits);
9246
9246
-
}
9247
9247
-
*/
9248
9184
9249
9185
static struct hda_verb alc883_mitac_verbs[] = {
9250
9186
/* HP */
···
9479
9435
alc888_lenovo_ms7195_rca_automute(codec);
9480
9436
}
9481
9437
9482
9482
-
static struct hda_verb alc883_medion_md2_verbs[] = {
9483
9483
-
{0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
9484
9484
-
{0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
9485
9485
-
9486
9486
-
{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
9487
9487
-
9488
9488
-
{0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
9489
9489
-
{ } /* end */
9490
9490
-
};
9491
9491
-
9492
9438
/* toggle speaker-output according to the hp-jack state */
9493
9493
-
static void alc883_medion_md2_setup(struct hda_codec *codec)
9439
9439
+
static void alc883_lenovo_nb0763_setup(struct hda_codec *codec)
9494
9440
{
9495
9441
struct alc_spec *spec = codec->spec;
9496
9442
···
9491
9457
/* toggle speaker-output according to the hp-jack state */
9492
9458
#define alc883_targa_init_hook alc882_targa_init_hook
9493
9459
#define alc883_targa_unsol_event alc882_targa_unsol_event
9494
9494
-
9495
9495
-
static void alc883_clevo_m720_mic_automute(struct hda_codec *codec)
9496
9496
-
{
9497
9497
-
unsigned int present;
9498
9498
-
9499
9499
-
present = snd_hda_jack_detect(codec, 0x18);
9500
9500
-
snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, 1,
9501
9501
-
HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);
9502
9502
-
}
9503
9460
9504
9461
static void alc883_clevo_m720_setup(struct hda_codec *codec)
9505
9462
{
···
9503
9478
static void alc883_clevo_m720_init_hook(struct hda_codec *codec)
9504
9479
{
9505
9480
alc_automute_amp(codec);
9506
9506
-
alc883_clevo_m720_mic_automute(codec);
9481
9481
+
alc88x_simple_mic_automute(codec);
9507
9482
}
9508
9483
9509
9484
static void alc883_clevo_m720_unsol_event(struct hda_codec *codec,
···
9511
9486
{
9512
9487
switch (res >> 26) {
9513
9488
case ALC880_MIC_EVENT:
9514
9514
-
alc883_clevo_m720_mic_automute(codec);
9489
9489
+
alc88x_simple_mic_automute(codec);
9515
9490
break;
9516
9491
default:
9517
9492
alc_automute_amp_unsol_event(codec, res);
···
9756
9731
[ALC888_ACER_ASPIRE_8930G] = "acer-aspire-8930g",
9757
9732
[ALC888_ACER_ASPIRE_7730G] = "acer-aspire-7730g",
9758
9733
[ALC883_MEDION] = "medion",
9759
9759
-
[ALC883_MEDION_MD2] = "medion-md2",
9760
9734
[ALC883_MEDION_WIM2160] = "medion-wim2160",
9761
9735
[ALC883_LAPTOP_EAPD] = "laptop-eapd",
9762
9736
[ALC883_LENOVO_101E_2ch] = "lenovo-101e",
···
10403
10379
.channel_mode = alc883_sixstack_modes,
10404
10380
.input_mux = &alc883_capture_source,
10405
10381
},
10406
10406
-
[ALC883_MEDION_MD2] = {
10407
10407
-
.mixers = { alc883_medion_md2_mixer},
10408
10408
-
.init_verbs = { alc883_init_verbs, alc883_medion_md2_verbs},
10409
10409
-
.num_dacs = ARRAY_SIZE(alc883_dac_nids),
10410
10410
-
.dac_nids = alc883_dac_nids,
10411
10411
-
.dig_out_nid = ALC883_DIGOUT_NID,
10412
10412
-
.num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes),
10413
10413
-
.channel_mode = alc883_3ST_2ch_modes,
10414
10414
-
.input_mux = &alc883_capture_source,
10415
10415
-
.unsol_event = alc_automute_amp_unsol_event,
10416
10416
-
.setup = alc883_medion_md2_setup,
10417
10417
-
.init_hook = alc_automute_amp,
10418
10418
-
},
10419
10382
[ALC883_MEDION_WIM2160] = {
10420
10383
.mixers = { alc883_medion_wim2160_mixer },
10421
10384
.init_verbs = { alc883_init_verbs, alc883_medion_wim2160_verbs },
···
10479
10468
.need_dac_fix = 1,
10480
10469
.input_mux = &alc883_lenovo_nb0763_capture_source,
10481
10470
.unsol_event = alc_automute_amp_unsol_event,
10482
10482
-
.setup = alc883_medion_md2_setup,
10471
10471
+
.setup = alc883_lenovo_nb0763_setup,
10483
10472
.init_hook = alc_automute_amp,
10484
10473
},
10485
10474
[ALC888_LENOVO_MS7195_DIG] = {
···
10841
10830
{
10842
10831
struct alc_spec *spec = codec->spec;
10843
10832
struct auto_pin_cfg *cfg = &spec->autocfg;
10844
10844
-
int i, err, type;
10833
10833
+
int i, err;
10845
10834
int type_idx = 0;
10846
10835
hda_nid_t nid;
10836
10836
+
const char *prev_label = NULL;
10847
10837
10848
10838
for (i = 0; i < cfg->num_inputs; i++) {
10849
10839
if (cfg->inputs[i].type > AUTO_PIN_MIC)
10850
10840
break;
10851
10841
nid = cfg->inputs[i].pin;
10852
10842
if (get_wcaps(codec, nid) & AC_WCAP_IN_AMP) {
10853
10853
-
char label[32];
10854
10854
-
type = cfg->inputs[i].type;
10855
10855
-
if (i > 0 && type == cfg->inputs[i - 1].type)
10843
10843
+
const char *label;
10844
10844
+
char boost_label[32];
10845
10845
+
10846
10846
+
label = hda_get_autocfg_input_label(codec, cfg, i);
10847
10847
+
if (prev_label && !strcmp(label, prev_label))
10856
10848
type_idx++;
10857
10849
else
10858
10850
type_idx = 0;
10859
10859
-
snprintf(label, sizeof(label), "%s Boost",
10860
10860
-
hda_get_autocfg_input_label(codec, cfg, i));
10861
10861
-
err = add_control(spec, ALC_CTL_WIDGET_VOL, label,
10862
10862
-
type_idx,
10851
10851
+
prev_label = label;
10852
10852
+
10853
10853
+
snprintf(boost_label, sizeof(boost_label),
10854
10854
+
"%s Boost Volume", label);
10855
10855
+
err = add_control(spec, ALC_CTL_WIDGET_VOL,
10856
10856
+
boost_label, type_idx,
10863
10857
HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_INPUT));
10864
10858
if (err < 0)
10865
10859
return err;
···
11112
11096
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
11113
11097
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11114
11098
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11115
11115
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11099
11099
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11116
11100
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11117
11101
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11118
11118
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
11102
11102
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
11119
11103
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0D, 0x0, HDA_OUTPUT),
11120
11104
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
11121
11105
HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT),
···
11216
11200
HDA_OUTPUT),
11217
11201
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11218
11202
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11219
11219
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11203
11203
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11220
11204
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11221
11205
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11222
11222
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
11206
11206
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
11223
11207
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
11224
11208
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
11225
11209
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
···
11241
11225
HDA_OUTPUT),
11242
11226
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x02, HDA_INPUT),
11243
11227
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x02, HDA_INPUT),
11244
11244
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x1a, 0, HDA_INPUT),
11228
11228
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x1a, 0, HDA_INPUT),
11245
11229
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x01, HDA_INPUT),
11246
11230
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x01, HDA_INPUT),
11247
11231
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
···
11252
11236
static struct snd_kcontrol_new alc262_HP_BPC_WildWest_option_mixer[] = {
11253
11237
HDA_CODEC_VOLUME("Rear Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11254
11238
HDA_CODEC_MUTE("Rear Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11255
11255
-
HDA_CODEC_VOLUME("Rear Mic Boost", 0x18, 0, HDA_INPUT),
11239
11239
+
HDA_CODEC_VOLUME("Rear Mic Boost Volume", 0x18, 0, HDA_INPUT),
11256
11240
{ } /* end */
11257
11241
};
11258
11242
···
11272
11256
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
11273
11257
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11274
11258
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11275
11275
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11259
11259
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11276
11260
{ } /* end */
11277
11261
};
11278
11262
···
11379
11363
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
11380
11364
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11381
11365
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11382
11382
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11366
11366
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11383
11367
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11384
11368
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11385
11385
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
11369
11369
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
11386
11370
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0d, 0x0, HDA_OUTPUT),
11387
11371
{ } /* end */
11388
11372
};
···
11396
11380
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
11397
11381
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11398
11382
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11399
11399
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11383
11383
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11400
11384
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11401
11385
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11402
11402
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
11386
11386
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
11403
11387
{ } /* end */
11404
11388
};
11405
11389
···
11467
11451
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
11468
11452
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11469
11453
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11470
11470
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11454
11454
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11471
11455
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11472
11456
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11473
11473
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
11457
11457
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
11474
11458
{ } /* end */
11475
11459
};
11476
11460
···
11654
11638
11655
11639
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11656
11640
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11657
11657
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11641
11641
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11658
11642
11659
11643
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0d, 0x0, HDA_OUTPUT),
11660
11644
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
···
11709
11693
.num_items = 3,
11710
11694
.items = {
11711
11695
{ "Mic", 0x0 },
11712
11712
-
{ "Int Mic", 0x1 },
11696
11696
+
{ "Internal Mic", 0x1 },
11713
11697
{ "CD", 0x4 },
11714
11698
},
11715
11699
};
···
11861
11845
},
11862
11846
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
11863
11847
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
11864
11864
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11848
11848
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11865
11849
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11866
11850
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11867
11867
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
11868
11868
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
11869
11869
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
11851
11851
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
11852
11852
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
11853
11853
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
11870
11854
{ } /* end */
11871
11855
};
11872
11856
···
11897
11881
},
11898
11882
HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
11899
11883
HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
11900
11900
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11884
11884
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11901
11885
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11902
11886
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11903
11903
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
11904
11904
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
11905
11905
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
11887
11887
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
11888
11888
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
11889
11889
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
11906
11890
{ } /* end */
11907
11891
};
11908
11892
···
11911
11895
ALC262_HIPPO_MASTER_SWITCH,
11912
11896
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
11913
11897
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
11914
11914
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
11898
11898
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
11915
11899
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11916
11900
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11917
11917
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
11901
11901
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
11918
11902
{ } /* end */
11919
11903
};
11920
11904
···
11940
11924
HDA_BIND_MUTE("Master Playback Switch", 0x0c, 2, HDA_INPUT),
11941
11925
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
11942
11926
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
11943
11943
-
HDA_CODEC_VOLUME("Mic Boost", 0x19, 0, HDA_INPUT),
11944
11944
-
HDA_CODEC_VOLUME("Headphone Mic Boost", 0x15, 0, HDA_INPUT),
11927
11927
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x19, 0, HDA_INPUT),
11928
11928
+
HDA_CODEC_VOLUME("Headphone Mic Boost Volume", 0x15, 0, HDA_INPUT),
11945
11929
{ } /* end */
11946
11930
};
11947
11931
···
12111
12095
spec->multiout.dac_nids = spec->private_dac_nids;
12112
12096
spec->multiout.dac_nids[0] = 2;
12113
12097
12114
12114
-
if (!cfg->speaker_pins[0] && !cfg->hp_pins[0])
12115
12115
-
pfx = "Master";
12116
12116
-
else if (cfg->line_out_type == AUTO_PIN_SPEAKER_OUT)
12117
12117
-
pfx = "Speaker";
12118
12118
-
else if (cfg->line_out_type == AUTO_PIN_HP_OUT)
12119
12119
-
pfx = "Headphone";
12120
12120
-
else
12098
12098
+
pfx = alc_get_line_out_pfx(cfg, true);
12099
12099
+
if (!pfx)
12121
12100
pfx = "Front";
12122
12101
for (i = 0; i < 2; i++) {
12123
12102
err = alc262_add_out_sw_ctl(spec, cfg->line_out_pins[i], pfx, i);
···
13013
13002
HDA_CODEC_MUTE("Front Playback Switch", 0x14, 0x0, HDA_OUTPUT),
13014
13003
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x3, 0x0, HDA_OUTPUT),
13015
13004
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
13016
13016
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
13017
13017
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
13018
13018
-
HDA_CODEC_VOLUME("Line In Boost", 0x1a, 0, HDA_INPUT),
13005
13005
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
13006
13006
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
13007
13007
+
HDA_CODEC_VOLUME("Line In Boost Volume", 0x1a, 0, HDA_INPUT),
13019
13008
{ }
13020
13009
};
13021
13010
···
13024
13013
HDA_CODEC_VOLUME("Front Playback Volume", 0x2, 0x0, HDA_OUTPUT),
13025
13014
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x3, 0x0, HDA_OUTPUT),
13026
13015
ALC262_HIPPO_MASTER_SWITCH,
13027
13027
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
13028
13028
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
13029
13029
-
HDA_CODEC_VOLUME("Line In Boost", 0x1a, 0, HDA_INPUT),
13016
13016
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
13017
13017
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
13018
13018
+
HDA_CODEC_VOLUME("Line In Boost Volume", 0x1a, 0, HDA_INPUT),
13030
13019
{ }
13031
13020
};
13032
13021
···
13130
13119
.put = alc268_acer_master_sw_put,
13131
13120
.private_value = HDA_COMPOSE_AMP_VAL(0x14, 3, 0, HDA_OUTPUT),
13132
13121
},
13133
13133
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
13134
13134
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x19, 0, HDA_INPUT),
13135
13135
-
HDA_CODEC_VOLUME("Line In Boost", 0x1a, 0, HDA_INPUT),
13122
13122
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
13123
13123
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
13124
13124
+
HDA_CODEC_VOLUME("Line In Boost Volume", 0x1a, 0, HDA_INPUT),
13136
13125
{ }
13137
13126
};
13138
13127
···
13148
13137
.put = alc268_acer_master_sw_put,
13149
13138
.private_value = HDA_COMPOSE_AMP_VAL(0x14, 3, 0, HDA_OUTPUT),
13150
13139
},
13151
13151
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
13152
13152
-
HDA_CODEC_VOLUME("Line In Boost", 0x1a, 0, HDA_INPUT),
13140
13140
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
13141
13141
+
HDA_CODEC_VOLUME("Line In Boost Volume", 0x1a, 0, HDA_INPUT),
13153
13142
{ }
13154
13143
};
13155
13144
···
13241
13230
HDA_CODEC_MUTE("Speaker Playback Switch", 0x14, 0x0, HDA_OUTPUT),
13242
13231
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x03, 0x0, HDA_OUTPUT),
13243
13232
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
13244
13244
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
13245
13245
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x19, 0, HDA_INPUT),
13233
13233
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
13234
13234
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
13246
13235
{ }
13247
13236
};
13248
13237
···
13275
13264
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
13276
13265
HDA_CODEC_VOLUME("Mic Capture Volume", 0x23, 0x0, HDA_OUTPUT),
13277
13266
HDA_BIND_MUTE("Mic Capture Switch", 0x23, 2, HDA_OUTPUT),
13278
13278
-
HDA_CODEC_VOLUME("Ext Mic Boost", 0x18, 0, HDA_INPUT),
13279
13279
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
13267
13267
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
13268
13268
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
13280
13269
{ }
13281
13270
};
13282
13271
···
14099
14088
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
14100
14089
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
14101
14090
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
14102
14102
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14091
14091
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14103
14092
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
14104
14093
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
14105
14105
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
14094
14094
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
14106
14095
HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
14107
14096
HDA_CODEC_MUTE_MONO("Mono Playback Switch", 0x16, 2, 0x0, HDA_OUTPUT),
14108
14097
{ } /* end */
···
14122
14111
},
14123
14112
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
14124
14113
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
14125
14125
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14114
14114
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14126
14115
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
14127
14116
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
14128
14128
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x19, 0, HDA_INPUT),
14117
14117
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
14129
14118
{ }
14130
14119
};
14131
14120
···
14143
14132
},
14144
14133
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
14145
14134
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
14146
14146
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14135
14135
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14147
14136
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
14148
14137
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x01, HDA_INPUT),
14149
14149
-
HDA_CODEC_VOLUME("Internal Mic Boost", 0x19, 0, HDA_INPUT),
14138
14138
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
14150
14139
HDA_CODEC_VOLUME("Dock Mic Playback Volume", 0x0b, 0x03, HDA_INPUT),
14151
14140
HDA_CODEC_MUTE("Dock Mic Playback Switch", 0x0b, 0x03, HDA_INPUT),
14152
14152
-
HDA_CODEC_VOLUME("Dock Mic Boost", 0x1b, 0, HDA_INPUT),
14141
14141
+
HDA_CODEC_VOLUME("Dock Mic Boost Volume", 0x1b, 0, HDA_INPUT),
14153
14142
{ }
14154
14143
};
14155
14144
···
14179
14168
static struct snd_kcontrol_new alc269_laptop_analog_capture_mixer[] = {
14180
14169
HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
14181
14170
HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT),
14182
14182
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14183
14183
-
HDA_CODEC_VOLUME("IntMic Boost", 0x19, 0, HDA_INPUT),
14171
14171
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14172
14172
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
14184
14173
{ } /* end */
14185
14174
};
14186
14175
14187
14176
static struct snd_kcontrol_new alc269_laptop_digital_capture_mixer[] = {
14188
14177
HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
14189
14178
HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT),
14190
14190
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14179
14179
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14191
14180
{ } /* end */
14192
14181
};
14193
14182
14194
14183
static struct snd_kcontrol_new alc269vb_laptop_analog_capture_mixer[] = {
14195
14184
HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT),
14196
14185
HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT),
14197
14197
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14198
14198
-
HDA_CODEC_VOLUME("IntMic Boost", 0x19, 0, HDA_INPUT),
14186
14186
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14187
14187
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
14199
14188
{ } /* end */
14200
14189
};
14201
14190
14202
14191
static struct snd_kcontrol_new alc269vb_laptop_digital_capture_mixer[] = {
14203
14192
HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT),
14204
14193
HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT),
14205
14205
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
14194
14194
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
14206
14195
{ } /* end */
14207
14196
};
14208
14197
···
14821
14810
}
14822
14811
#endif /* SND_HDA_NEEDS_RESUME */
14823
14812
14813
14813
+
static void alc269_fixup_hweq(struct hda_codec *codec,
14814
14814
+
const struct alc_fixup *fix, int pre_init)
14815
14815
+
{
14816
14816
+
int coef;
14817
14817
+
14818
14818
+
coef = alc_read_coef_idx(codec, 0x1e);
14819
14819
+
alc_write_coef_idx(codec, 0x1e, coef | 0x80);
14820
14820
+
}
14821
14821
+
14824
14822
enum {
14825
14823
ALC269_FIXUP_SONY_VAIO,
14826
14824
ALC275_FIX_SONY_VAIO_GPIO2,
14827
14825
ALC269_FIXUP_DELL_M101Z,
14828
14826
ALC269_FIXUP_SKU_IGNORE,
14829
14827
ALC269_FIXUP_ASUS_G73JW,
14828
14828
+
ALC269_FIXUP_LENOVO_EAPD,
14829
14829
+
ALC275_FIXUP_SONY_HWEQ,
14830
14830
};
14831
14831
14832
14832
static const struct alc_fixup alc269_fixups[] = {
···
14852
14830
{0x01, AC_VERB_SET_GPIO_MASK, 0x04},
14853
14831
{0x01, AC_VERB_SET_GPIO_DIRECTION, 0x04},
14854
14832
{0x01, AC_VERB_SET_GPIO_DATA, 0x00},
14833
14833
+
{0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREFGRD},
14855
14834
{ }
14856
14835
}
14857
14836
},
···
14873
14850
{ }
14874
14851
}
14875
14852
},
14853
14853
+
[ALC269_FIXUP_LENOVO_EAPD] = {
14854
14854
+
.verbs = (const struct hda_verb[]) {
14855
14855
+
{0x14, AC_VERB_SET_EAPD_BTLENABLE, 0},
14856
14856
+
{}
14857
14857
+
}
14858
14858
+
},
14859
14859
+
[ALC275_FIXUP_SONY_HWEQ] = {
14860
14860
+
.func = alc269_fixup_hweq,
14861
14861
+
.verbs = (const struct hda_verb[]) {
14862
14862
+
{0x01, AC_VERB_SET_GPIO_MASK, 0x04},
14863
14863
+
{0x01, AC_VERB_SET_GPIO_DIRECTION, 0x04},
14864
14864
+
{0x01, AC_VERB_SET_GPIO_DATA, 0x00},
14865
14865
+
{0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREFGRD},
14866
14866
+
{ }
14867
14867
+
}
14868
14868
+
}
14876
14869
};
14877
14870
14878
14871
static struct snd_pci_quirk alc269_fixup_tbl[] = {
14879
14872
SND_PCI_QUIRK(0x104d, 0x9073, "Sony VAIO", ALC275_FIX_SONY_VAIO_GPIO2),
14880
14880
-
SND_PCI_QUIRK(0x104d, 0x907b, "Sony VAIO", ALC275_FIX_SONY_VAIO_GPIO2),
14881
14881
-
SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIX_SONY_VAIO_GPIO2),
14873
14873
+
SND_PCI_QUIRK(0x104d, 0x907b, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
14874
14874
+
SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
14882
14875
SND_PCI_QUIRK_VENDOR(0x104d, "Sony VAIO", ALC269_FIXUP_SONY_VAIO),
14883
14876
SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
14884
14877
SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
14885
14878
SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE),
14886
14879
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
14880
14880
+
SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
14887
14881
{}
14888
14882
};
14889
14883
···
15935
15895
return 0;
15936
15896
}
15937
15897
15938
15938
-
static int alc861_create_out_sw(struct hda_codec *codec, const char *pfx,
15939
15939
-
hda_nid_t nid, unsigned int chs)
15898
15898
+
static int __alc861_create_out_sw(struct hda_codec *codec, const char *pfx,
15899
15899
+
hda_nid_t nid, int idx, unsigned int chs)
15940
15900
{
15941
15941
-
return add_pb_sw_ctrl(codec->spec, ALC_CTL_WIDGET_MUTE, pfx,
15901
15901
+
return __add_pb_sw_ctrl(codec->spec, ALC_CTL_WIDGET_MUTE, pfx, idx,
15942
15902
HDA_COMPOSE_AMP_VAL(nid, chs, 0, HDA_OUTPUT));
15943
15903
}
15904
15904
+
15905
15905
+
#define alc861_create_out_sw(codec, pfx, nid, chs) \
15906
15906
+
__alc861_create_out_sw(codec, pfx, nid, 0, chs)
15944
15907
15945
15908
/* add playback controls from the parsed DAC table */
15946
15909
static int alc861_auto_create_multi_out_ctls(struct hda_codec *codec,
···
15953
15910
static const char *chname[4] = {
15954
15911
"Front", "Surround", NULL /*CLFE*/, "Side"
15955
15912
};
15913
15913
+
const char *pfx = alc_get_line_out_pfx(cfg, true);
15956
15914
hda_nid_t nid;
15957
15915
int i, err;
15958
15958
-
15959
15959
-
if (cfg->line_outs == 1) {
15960
15960
-
const char *pfx = NULL;
15961
15961
-
if (!cfg->hp_outs)
15962
15962
-
pfx = "Master";
15963
15963
-
else if (cfg->line_out_type == AUTO_PIN_SPEAKER_OUT)
15964
15964
-
pfx = "Speaker";
15965
15965
-
if (pfx) {
15966
15966
-
nid = spec->multiout.dac_nids[0];
15967
15967
-
return alc861_create_out_sw(codec, pfx, nid, 3);
15968
15968
-
}
15969
15969
-
}
15970
15916
15971
15917
for (i = 0; i < cfg->line_outs; i++) {
15972
15918
nid = spec->multiout.dac_nids[i];
15973
15919
if (!nid)
15974
15920
continue;
15975
15975
-
if (i == 2) {
15921
15921
+
if (!pfx && i == 2) {
15976
15922
/* Center/LFE */
15977
15923
err = alc861_create_out_sw(codec, "Center", nid, 1);
15978
15924
if (err < 0)
···
15970
15938
if (err < 0)
15971
15939
return err;
15972
15940
} else {
15973
15973
-
err = alc861_create_out_sw(codec, chname[i], nid, 3);
15941
15941
+
const char *name = pfx;
15942
15942
+
if (!name)
15943
15943
+
name = chname[i];
15944
15944
+
err = __alc861_create_out_sw(codec, name, nid, i, 3);
15974
15945
if (err < 0)
15975
15946
return err;
15976
15947
}
···
16445
16410
static struct hda_input_mux alc861vd_dallas_capture_source = {
16446
16411
.num_items = 2,
16447
16412
.items = {
16448
16448
-
{ "Ext Mic", 0x0 },
16449
16449
-
{ "Int Mic", 0x1 },
16413
16413
+
{ "Mic", 0x0 },
16414
16414
+
{ "Internal Mic", 0x1 },
16450
16415
},
16451
16416
};
16452
16417
···
16525
16490
16526
16491
HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
16527
16492
16528
16528
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
16493
16493
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
16529
16494
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
16530
16495
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
16531
16496
16532
16532
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
16497
16497
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
16533
16498
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
16534
16499
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
16535
16500
···
16548
16513
16549
16514
HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
16550
16515
16551
16551
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
16516
16516
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
16552
16517
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
16553
16518
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
16554
16519
16555
16555
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
16520
16520
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
16556
16521
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
16557
16522
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
16558
16523
···
16572
16537
16573
16538
HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
16574
16539
16575
16575
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
16540
16540
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
16576
16541
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
16577
16542
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
16578
16543
16579
16579
-
HDA_CODEC_VOLUME("Front Mic Boost", 0x19, 0, HDA_INPUT),
16544
16544
+
HDA_CODEC_VOLUME("Front Mic Boost Volume", 0x19, 0, HDA_INPUT),
16580
16545
HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
16581
16546
HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
16582
16547
···
16587
16552
};
16588
16553
16589
16554
/* Pin assignment: Speaker=0x14, HP = 0x15,
16590
16590
-
* Ext Mic=0x18, Int Mic = 0x19, CD = 0x1c, PC Beep = 0x1d
16555
16555
+
* Mic=0x18, Internal Mic = 0x19, CD = 0x1c, PC Beep = 0x1d
16591
16556
*/
16592
16557
static struct snd_kcontrol_new alc861vd_dallas_mixer[] = {
16593
16558
HDA_CODEC_VOLUME("Speaker Playback Volume", 0x02, 0x0, HDA_OUTPUT),
16594
16559
HDA_BIND_MUTE("Speaker Playback Switch", 0x0c, 2, HDA_INPUT),
16595
16560
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x03, 0x0, HDA_OUTPUT),
16596
16561
HDA_BIND_MUTE("Headphone Playback Switch", 0x0d, 2, HDA_INPUT),
16597
16597
-
HDA_CODEC_VOLUME("Ext Mic Boost", 0x18, 0, HDA_INPUT),
16598
16598
-
HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
16599
16599
-
HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
16600
16600
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
16601
16601
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
16602
16602
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
16562
16562
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
16563
16563
+
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
16564
16564
+
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
16565
16565
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
16566
16566
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
16567
16567
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
16603
16568
{ } /* end */
16604
16569
};
16605
16570
···
16764
16729
{}
16765
16730
};
16766
16731
16767
16767
-
static void alc861vd_lenovo_mic_automute(struct hda_codec *codec)
16768
16768
-
{
16769
16769
-
unsigned int present;
16770
16770
-
unsigned char bits;
16771
16771
-
16772
16772
-
present = snd_hda_jack_detect(codec, 0x18);
16773
16773
-
bits = present ? HDA_AMP_MUTE : 0;
16774
16774
-
16775
16775
-
snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, 1,
16776
16776
-
HDA_AMP_MUTE, bits);
16777
16777
-
}
16778
16778
-
16779
16732
static void alc861vd_lenovo_setup(struct hda_codec *codec)
16780
16733
{
16781
16734
struct alc_spec *spec = codec->spec;
···
16774
16751
static void alc861vd_lenovo_init_hook(struct hda_codec *codec)
16775
16752
{
16776
16753
alc_automute_amp(codec);
16777
16777
-
alc861vd_lenovo_mic_automute(codec);
16754
16754
+
alc88x_simple_mic_automute(codec);
16778
16755
}
16779
16756
16780
16757
static void alc861vd_lenovo_unsol_event(struct hda_codec *codec,
···
16782
16759
{
16783
16760
switch (res >> 26) {
16784
16761
case ALC880_MIC_EVENT:
16785
16785
-
alc861vd_lenovo_mic_automute(codec);
16762
16762
+
alc88x_simple_mic_automute(codec);
16786
16763
break;
16787
16764
default:
16788
16765
alc_automute_amp_unsol_event(codec, res);
···
17078
17055
const struct auto_pin_cfg *cfg)
17079
17056
{
17080
17057
static const char *chname[4] = {"Front", "Surround", "CLFE", "Side"};
17058
17058
+
const char *pfx = alc_get_line_out_pfx(cfg, true);
17081
17059
hda_nid_t nid_v, nid_s;
17082
17060
int i, err;
17083
17061
···
17092
17068
alc880_dac_to_idx(
17093
17069
spec->multiout.dac_nids[i]));
17094
17070
17095
17095
-
if (i == 2) {
17071
17071
+
if (!pfx && i == 2) {
17096
17072
/* Center/LFE */
17097
17073
err = add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL,
17098
17074
"Center",
···
17119
17095
if (err < 0)
17120
17096
return err;
17121
17097
} else {
17122
17122
-
const char *pfx;
17123
17123
-
if (cfg->line_outs == 1 &&
17124
17124
-
cfg->line_out_type == AUTO_PIN_SPEAKER_OUT) {
17125
17125
-
if (!cfg->hp_pins)
17126
17126
-
pfx = "Speaker";
17127
17127
-
else
17128
17128
-
pfx = "PCM";
17129
17129
-
} else
17130
17130
-
pfx = chname[i];
17131
17131
-
err = add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL, pfx,
17098
17098
+
const char *name = pfx;
17099
17099
+
if (!name)
17100
17100
+
name = chname[i];
17101
17101
+
err = __add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL,
17102
17102
+
name, i,
17132
17103
HDA_COMPOSE_AMP_VAL(nid_v, 3, 0,
17133
17104
HDA_OUTPUT));
17134
17105
if (err < 0)
17135
17106
return err;
17136
17136
-
if (cfg->line_outs == 1 &&
17137
17137
-
cfg->line_out_type == AUTO_PIN_SPEAKER_OUT)
17138
17138
-
pfx = "Speaker";
17139
17139
-
err = add_pb_sw_ctrl(spec, ALC_CTL_BIND_MUTE, pfx,
17107
17107
+
err = __add_pb_sw_ctrl(spec, ALC_CTL_BIND_MUTE,
17108
17108
+
name, i,
17140
17109
HDA_COMPOSE_AMP_VAL(nid_s, 3, 2,
17141
17110
HDA_INPUT));
17142
17111
if (err < 0)
···
17593
17576
HDA_CODEC_VOLUME("Master Playback Volume", 0x02, 0x0, HDA_OUTPUT),
17594
17577
ALC262_HIPPO_MASTER_SWITCH,
17595
17578
17596
17596
-
HDA_CODEC_VOLUME("e-Mic Boost", 0x18, 0, HDA_INPUT),
17597
17597
-
HDA_CODEC_VOLUME("e-Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
17598
17598
-
HDA_CODEC_MUTE("e-Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
17579
17579
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
17580
17580
+
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
17581
17581
+
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
17599
17582
17600
17600
-
HDA_CODEC_VOLUME("i-Mic Boost", 0x19, 0, HDA_INPUT),
17601
17601
-
HDA_CODEC_VOLUME("i-Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
17602
17602
-
HDA_CODEC_MUTE("i-Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
17583
17583
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
17584
17584
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
17585
17585
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
17603
17586
{ } /* end */
17604
17587
};
17605
17588
···
17743
17726
17744
17727
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
17745
17728
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
17746
17746
-
HDA_CODEC_VOLUME("i-Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
17747
17747
-
HDA_CODEC_MUTE("i-Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
17729
17729
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
17730
17730
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
17748
17731
{ } /* end */
17749
17732
};
17750
17733
···
17755
17738
17756
17739
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
17757
17740
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
17758
17758
-
HDA_CODEC_VOLUME("i-Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
17759
17759
-
HDA_CODEC_MUTE("i-Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
17741
17741
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
17742
17742
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
17760
17743
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
17761
17744
HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
17762
17745
{ } /* end */
···
18589
18572
HDA_CODEC_VOLUME("Master Playback Volume", 0x02, 0x0, HDA_OUTPUT),
18590
18573
ALC262_HIPPO_MASTER_SWITCH,
18591
18574
18592
18592
-
HDA_CODEC_VOLUME("e-Mic/LineIn Boost", 0x18, 0, HDA_INPUT),
18593
18593
-
HDA_CODEC_VOLUME("e-Mic/LineIn Playback Volume", 0x0b, 0x0, HDA_INPUT),
18594
18594
-
HDA_CODEC_MUTE("e-Mic/LineIn Playback Switch", 0x0b, 0x0, HDA_INPUT),
18575
18575
+
HDA_CODEC_VOLUME("Mic/LineIn Boost Volume", 0x18, 0, HDA_INPUT),
18576
18576
+
HDA_CODEC_VOLUME("Mic/LineIn Playback Volume", 0x0b, 0x0, HDA_INPUT),
18577
18577
+
HDA_CODEC_MUTE("Mic/LineIn Playback Switch", 0x0b, 0x0, HDA_INPUT),
18595
18578
18596
18596
-
HDA_CODEC_VOLUME("i-Mic Boost", 0x19, 0, HDA_INPUT),
18597
18597
-
HDA_CODEC_VOLUME("i-Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
18598
18598
-
HDA_CODEC_MUTE("i-Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
18579
18579
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
18580
18580
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
18581
18581
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
18599
18582
{ } /* end */
18600
18583
};
18601
18584
···
18606
18589
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x03, 0x0, HDA_OUTPUT),
18607
18590
HDA_CODEC_MUTE("Headphone Playback Switch", 0x21, 0x0, HDA_OUTPUT),
18608
18591
18609
18609
-
HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
18610
18610
-
HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
18611
18611
-
HDA_CODEC_VOLUME("Ext Mic Boost", 0x18, 0, HDA_INPUT),
18592
18592
+
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
18593
18593
+
HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
18594
18594
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
18612
18595
18613
18613
-
HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
18614
18614
-
HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
18615
18615
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x19, 0, HDA_INPUT),
18596
18596
+
HDA_CODEC_VOLUME("Internal Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
18597
18597
+
HDA_CODEC_MUTE("Internal Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
18598
18598
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x19, 0, HDA_INPUT),
18616
18599
{ } /* end */
18617
18600
};
18618
18601
···
19117
19100
return 0;
19118
19101
}
19119
19102
19120
19120
-
static inline int alc662_add_vol_ctl(struct alc_spec *spec, const char *pfx,
19121
19121
-
hda_nid_t nid, unsigned int chs)
19103
19103
+
static inline int __alc662_add_vol_ctl(struct alc_spec *spec, const char *pfx,
19104
19104
+
hda_nid_t nid, int idx, unsigned int chs)
19122
19105
{
19123
19123
-
return add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL, pfx,
19106
19106
+
return __add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL, pfx, idx,
19124
19107
HDA_COMPOSE_AMP_VAL(nid, chs, 0, HDA_OUTPUT));
19125
19108
}
19126
19109
19127
19127
-
static inline int alc662_add_sw_ctl(struct alc_spec *spec, const char *pfx,
19128
19128
-
hda_nid_t nid, unsigned int chs)
19110
19110
+
static inline int __alc662_add_sw_ctl(struct alc_spec *spec, const char *pfx,
19111
19111
+
hda_nid_t nid, int idx, unsigned int chs)
19129
19112
{
19130
19130
-
return add_pb_sw_ctrl(spec, ALC_CTL_WIDGET_MUTE, pfx,
19113
19113
+
return __add_pb_sw_ctrl(spec, ALC_CTL_WIDGET_MUTE, pfx, idx,
19131
19114
HDA_COMPOSE_AMP_VAL(nid, chs, 0, HDA_INPUT));
19132
19115
}
19133
19116
19117
19117
+
#define alc662_add_vol_ctl(spec, pfx, nid, chs) \
19118
19118
+
__alc662_add_vol_ctl(spec, pfx, nid, 0, chs)
19119
19119
+
#define alc662_add_sw_ctl(spec, pfx, nid, chs) \
19120
19120
+
__alc662_add_sw_ctl(spec, pfx, nid, 0, chs)
19134
19121
#define alc662_add_stereo_vol(spec, pfx, nid) \
19135
19122
alc662_add_vol_ctl(spec, pfx, nid, 3)
19136
19123
#define alc662_add_stereo_sw(spec, pfx, nid) \
···
19148
19127
static const char *chname[4] = {
19149
19128
"Front", "Surround", NULL /*CLFE*/, "Side"
19150
19129
};
19130
19130
+
const char *pfx = alc_get_line_out_pfx(cfg, true);
19151
19131
hda_nid_t nid, mix;
19152
19132
int i, err;
19153
19133
···
19159
19137
mix = alc662_dac_to_mix(codec, cfg->line_out_pins[i], nid);
19160
19138
if (!mix)
19161
19139
continue;
19162
19162
-
if (i == 2) {
19140
19140
+
if (!pfx && i == 2) {
19163
19141
/* Center/LFE */
19164
19142
err = alc662_add_vol_ctl(spec, "Center", nid, 1);
19165
19143
if (err < 0)
···
19174
19152
if (err < 0)
19175
19153
return err;
19176
19154
} else {
19177
19177
-
const char *pfx;
19178
19178
-
if (cfg->line_outs == 1 &&
19179
19179
-
cfg->line_out_type == AUTO_PIN_SPEAKER_OUT) {
19180
19180
-
if (cfg->hp_outs)
19181
19181
-
pfx = "Speaker";
19182
19182
-
else
19183
19183
-
pfx = "PCM";
19184
19184
-
} else
19185
19185
-
pfx = chname[i];
19186
19186
-
err = alc662_add_vol_ctl(spec, pfx, nid, 3);
19155
19155
+
const char *name = pfx;
19156
19156
+
if (!name)
19157
19157
+
name = chname[i];
19158
19158
+
err = __alc662_add_vol_ctl(spec, name, nid, i, 3);
19187
19159
if (err < 0)
19188
19160
return err;
19189
19189
-
if (cfg->line_outs == 1 &&
19190
19190
-
cfg->line_out_type == AUTO_PIN_SPEAKER_OUT)
19191
19191
-
pfx = "Speaker";
19192
19192
-
err = alc662_add_sw_ctl(spec, pfx, mix, 3);
19161
19161
+
err = __alc662_add_sw_ctl(spec, name, mix, i, 3);
19193
19162
if (err < 0)
19194
19163
return err;
19195
19164
}
···
19377
19364
alc_inithook(codec);
19378
19365
}
19379
19366
19367
19367
+
static void alc272_fixup_mario(struct hda_codec *codec,
19368
19368
+
const struct alc_fixup *fix, int pre_init) {
19369
19369
+
if (snd_hda_override_amp_caps(codec, 0x2, HDA_OUTPUT,
19370
19370
+
(0x3b << AC_AMPCAP_OFFSET_SHIFT) |
19371
19371
+
(0x3b << AC_AMPCAP_NUM_STEPS_SHIFT) |
19372
19372
+
(0x03 << AC_AMPCAP_STEP_SIZE_SHIFT) |
19373
19373
+
(0 << AC_AMPCAP_MUTE_SHIFT)))
19374
19374
+
printk(KERN_WARNING
19375
19375
+
"hda_codec: failed to override amp caps for NID 0x2\n");
19376
19376
+
}
19377
19377
+
19380
19378
enum {
19381
19379
ALC662_FIXUP_ASPIRE,
19382
19380
ALC662_FIXUP_IDEAPAD,
19381
19381
+
ALC272_FIXUP_MARIO,
19383
19382
};
19384
19383
19385
19384
static const struct alc_fixup alc662_fixups[] = {
···
19407
19382
{ }
19408
19383
}
19409
19384
},
19385
19385
+
[ALC272_FIXUP_MARIO] = {
19386
19386
+
.func = alc272_fixup_mario,
19387
19387
+
}
19410
19388
};
19411
19389
19412
19390
static struct snd_pci_quirk alc662_fixup_tbl[] = {
···
19420
19392
{}
19421
19393
};
19422
19394
19395
19395
+
static const struct alc_model_fixup alc662_fixup_models[] = {
19396
19396
+
{.id = ALC272_FIXUP_MARIO, .name = "mario"},
19397
19397
+
{}
19398
19398
+
};
19423
19399
19424
19400
19425
19401
static int patch_alc662(struct hda_codec *codec)
···
19523
19491
codec->patch_ops = alc_patch_ops;
19524
19492
if (board_config == ALC662_AUTO) {
19525
19493
spec->init_hook = alc662_auto_init;
19526
19526
-
alc_pick_fixup(codec, alc662_fixup_tbl, alc662_fixups, 0);
19494
19494
+
alc_pick_fixup_model(codec, alc662_fixup_models,
19495
19495
+
alc662_fixup_tbl, alc662_fixups, 0);
19527
19496
}
19528
19497
19529
19498
alc_init_jacks(codec);
···
19651
19618
HDA_CODEC_MUTE("Front Playback Switch", 0x14, 0x0, HDA_OUTPUT),
19652
19619
HDA_CODEC_VOLUME("Headphone Playback Volume", 0x4, 0x0, HDA_OUTPUT),
19653
19620
HDA_CODEC_MUTE("Headphone Playback Switch", 0x16, 0x0, HDA_OUTPUT),
19654
19654
-
HDA_CODEC_VOLUME("Int Mic Boost", 0x12, 0, HDA_INPUT),
19655
19655
-
HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
19656
19656
-
HDA_CODEC_VOLUME("Line In Boost", 0x19, 0, HDA_INPUT),
19621
19621
+
HDA_CODEC_VOLUME("Internal Mic Boost Volume", 0x12, 0, HDA_INPUT),
19622
19622
+
HDA_CODEC_VOLUME("Mic Boost Volume", 0x18, 0, HDA_INPUT),
19623
19623
+
HDA_CODEC_VOLUME("Line In Boost Volume", 0x19, 0, HDA_INPUT),
19657
19624
{ }
19658
19625
};
19659
19626
+13
-4
sound/pci/hda/patch_sigmatel.c
···
389
389
0x11, 0x20, 0
390
390
};
391
391
392
392
+
#define STAC92HD88XXX_NUM_DMICS STAC92HD83XXX_NUM_DMICS
393
393
+
#define stac92hd88xxx_dmic_nids stac92hd83xxx_dmic_nids
394
394
+
392
395
#define STAC92HD87B_NUM_DMICS 1
393
396
static hda_nid_t stac92hd87b_dmic_nids[STAC92HD87B_NUM_DMICS + 1] = {
394
397
0x11, 0
···
3594
3591
if (check_mic_pin(codec, spec->dmic_nids[i],
3595
3592
&fixed, &ext, &dock))
3596
3593
return 0;
3597
3597
-
if (!fixed && !ext && !dock)
3594
3594
+
if (!fixed || (!ext && !dock))
3598
3595
return 0; /* no input to switch */
3599
3596
if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP))
3600
3597
return 0; /* no unsol support */
···
5425
5422
snd_hda_codec_write_cache(codec, codec->afg, 0, 0x7ED, 0);
5426
5423
codec->no_trigger_sense = 1;
5427
5424
codec->spec = spec;
5428
5428
-
spec->linear_tone_beep = 1;
5425
5425
+
spec->linear_tone_beep = 0;
5429
5426
codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs;
5430
5427
spec->digbeep_nid = 0x21;
5431
5428
spec->dmic_nids = stac92hd83xxx_dmic_nids;
···
5465
5462
spec->num_dmics = stac92xx_connected_ports(codec,
5466
5463
stac92hd87b_dmic_nids,
5467
5464
STAC92HD87B_NUM_DMICS);
5468
5468
-
/* Fall through */
5465
5465
+
spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids);
5466
5466
+
spec->pin_nids = stac92hd88xxx_pin_nids;
5467
5467
+
spec->mono_nid = 0;
5468
5468
+
spec->num_pwrs = 0;
5469
5469
+
break;
5469
5470
case 0x111d7666:
5470
5471
case 0x111d7667:
5471
5472
case 0x111d7668:
5472
5473
case 0x111d7669:
5474
5474
+
spec->num_dmics = stac92xx_connected_ports(codec,
5475
5475
+
stac92hd88xxx_dmic_nids,
5476
5476
+
STAC92HD88XXX_NUM_DMICS);
5473
5477
spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids);
5474
5478
spec->pin_nids = stac92hd88xxx_pin_nids;
5475
5479
spec->mono_nid = 0;
5476
5476
-
spec->digbeep_nid = 0;
5477
5480
spec->num_pwrs = 0;
5478
5481
break;
5479
5482
case 0x111d7604: