aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_analog.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-06-24 08:41:41 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-06-24 13:07:53 -0400
commit816724e65c72a90a44fbad0ef0b59b186c85fa90 (patch)
tree421fa29aedff988e392f92780637553e275d37a0 /sound/pci/hda/patch_analog.c
parent70ac4385a13f78bc478f26d317511893741b05bd (diff)
parentd384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff)
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
Conflicts: fs/nfs/inode.c fs/super.c Fix conflicts between patch 'NFS: Split fs/nfs/inode.c' and patch 'VFS: Permit filesystem to override root dentry on mount'
Diffstat (limited to 'sound/pci/hda/patch_analog.c')
-rw-r--r--sound/pci/hda/patch_analog.c61
1 files changed, 58 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 40f000ba1362..dd4e00a82b55 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -789,6 +789,8 @@ static struct hda_board_config ad1986a_cfg_tbl[] = {
789 { .modelname = "3stack", .config = AD1986A_3STACK }, 789 { .modelname = "3stack", .config = AD1986A_3STACK },
790 { .pci_subvendor = 0x10de, .pci_subdevice = 0xcb84, 790 { .pci_subvendor = 0x10de, .pci_subdevice = 0xcb84,
791 .config = AD1986A_3STACK }, /* ASUS A8N-VM CSM */ 791 .config = AD1986A_3STACK }, /* ASUS A8N-VM CSM */
792 { .pci_subvendor = 0x1043, .pci_subdevice = 0x81b3,
793 .config = AD1986A_3STACK }, /* ASUS P5RD2-VM / P5GPL-X SE */
792 { .modelname = "laptop", .config = AD1986A_LAPTOP }, 794 { .modelname = "laptop", .config = AD1986A_LAPTOP },
793 { .pci_subvendor = 0x144d, .pci_subdevice = 0xc01e, 795 { .pci_subvendor = 0x144d, .pci_subdevice = 0xc01e,
794 .config = AD1986A_LAPTOP }, /* FSC V2060 */ 796 .config = AD1986A_LAPTOP }, /* FSC V2060 */
@@ -809,6 +811,8 @@ static struct hda_board_config ad1986a_cfg_tbl[] = {
809 .config = AD1986A_LAPTOP_EAPD }, /* ASUS Z62F */ 811 .config = AD1986A_LAPTOP_EAPD }, /* ASUS Z62F */
810 { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af, 812 { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af,
811 .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */ 813 .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */
814 { .pci_subvendor = 0x17aa, .pci_subdevice = 0x2066,
815 .config = AD1986A_LAPTOP_EAPD }, /* Lenovo 3000 N100-07684JU */
812 {} 816 {}
813}; 817};
814 818
@@ -963,7 +967,7 @@ static struct snd_kcontrol_new ad1983_mixers[] = {
963 }, 967 },
964 { 968 {
965 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 969 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
966 .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Route", 970 .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Source",
967 .info = ad1983_spdif_route_info, 971 .info = ad1983_spdif_route_info,
968 .get = ad1983_spdif_route_get, 972 .get = ad1983_spdif_route_get,
969 .put = ad1983_spdif_route_put, 973 .put = ad1983_spdif_route_put,
@@ -1103,7 +1107,7 @@ static struct snd_kcontrol_new ad1981_mixers[] = {
1103 /* identical with AD1983 */ 1107 /* identical with AD1983 */
1104 { 1108 {
1105 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1109 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1106 .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Route", 1110 .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Source",
1107 .info = ad1983_spdif_route_info, 1111 .info = ad1983_spdif_route_info,
1108 .get = ad1983_spdif_route_get, 1112 .get = ad1983_spdif_route_get,
1109 .put = ad1983_spdif_route_put, 1113 .put = ad1983_spdif_route_put,
@@ -1329,13 +1333,60 @@ static int ad1981_hp_init(struct hda_codec *codec)
1329 return 0; 1333 return 0;
1330} 1334}
1331 1335
1336/* configuration for Lenovo Thinkpad T60 */
1337static struct snd_kcontrol_new ad1981_thinkpad_mixers[] = {
1338 HDA_CODEC_VOLUME("Master Playback Volume", 0x05, 0x0, HDA_OUTPUT),
1339 HDA_CODEC_MUTE("Master Playback Switch", 0x05, 0x0, HDA_OUTPUT),
1340 HDA_CODEC_VOLUME("PCM Playback Volume", 0x11, 0x0, HDA_OUTPUT),
1341 HDA_CODEC_MUTE("PCM Playback Switch", 0x11, 0x0, HDA_OUTPUT),
1342 HDA_CODEC_VOLUME("Mic Playback Volume", 0x12, 0x0, HDA_OUTPUT),
1343 HDA_CODEC_MUTE("Mic Playback Switch", 0x12, 0x0, HDA_OUTPUT),
1344 HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1345 HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1346 HDA_CODEC_VOLUME("Mic Boost", 0x08, 0x0, HDA_INPUT),
1347 HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1348 HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1349 {
1350 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1351 .name = "Capture Source",
1352 .info = ad198x_mux_enum_info,
1353 .get = ad198x_mux_enum_get,
1354 .put = ad198x_mux_enum_put,
1355 },
1356 /* identical with AD1983 */
1357 {
1358 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1359 .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Source",
1360 .info = ad1983_spdif_route_info,
1361 .get = ad1983_spdif_route_get,
1362 .put = ad1983_spdif_route_put,
1363 },
1364 { } /* end */
1365};
1366
1367static struct hda_input_mux ad1981_thinkpad_capture_source = {
1368 .num_items = 3,
1369 .items = {
1370 { "Mic", 0x0 },
1371 { "Mix", 0x2 },
1372 { "CD", 0x4 },
1373 },
1374};
1375
1332/* models */ 1376/* models */
1333enum { AD1981_BASIC, AD1981_HP }; 1377enum { AD1981_BASIC, AD1981_HP, AD1981_THINKPAD };
1334 1378
1335static struct hda_board_config ad1981_cfg_tbl[] = { 1379static struct hda_board_config ad1981_cfg_tbl[] = {
1336 { .modelname = "hp", .config = AD1981_HP }, 1380 { .modelname = "hp", .config = AD1981_HP },
1337 /* All HP models */ 1381 /* All HP models */
1338 { .pci_subvendor = 0x103c, .config = AD1981_HP }, 1382 { .pci_subvendor = 0x103c, .config = AD1981_HP },
1383 { .pci_subvendor = 0x30b0, .pci_subdevice = 0x103c,
1384 .config = AD1981_HP }, /* HP nx6320 (reversed SSID, H/W bug) */
1385 { .modelname = "thinkpad", .config = AD1981_THINKPAD },
1386 /* Lenovo Thinkpad T60/X60/Z6xx */
1387 { .pci_subvendor = 0x17aa, .config = AD1981_THINKPAD },
1388 { .pci_subvendor = 0x1014, .pci_subdevice = 0x0597,
1389 .config = AD1981_THINKPAD }, /* Z60m/t */
1339 { .modelname = "basic", .config = AD1981_BASIC }, 1390 { .modelname = "basic", .config = AD1981_BASIC },
1340 {} 1391 {}
1341}; 1392};
@@ -1381,6 +1432,10 @@ static int patch_ad1981(struct hda_codec *codec)
1381 codec->patch_ops.init = ad1981_hp_init; 1432 codec->patch_ops.init = ad1981_hp_init;
1382 codec->patch_ops.unsol_event = ad1981_hp_unsol_event; 1433 codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
1383 break; 1434 break;
1435 case AD1981_THINKPAD:
1436 spec->mixers[0] = ad1981_thinkpad_mixers;
1437 spec->input_mux = &ad1981_thinkpad_capture_source;
1438 break;
1384 } 1439 }
1385 1440
1386 return 0; 1441 return 0;