diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 08:41:41 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 13:07:53 -0400 |
commit | 816724e65c72a90a44fbad0ef0b59b186c85fa90 (patch) | |
tree | 421fa29aedff988e392f92780637553e275d37a0 /sound/pci/hda/patch_analog.c | |
parent | 70ac4385a13f78bc478f26d317511893741b05bd (diff) | |
parent | d384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (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.c | 61 |
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 */ | ||
1337 | static 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 | |||
1367 | static 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 */ |
1333 | enum { AD1981_BASIC, AD1981_HP }; | 1377 | enum { AD1981_BASIC, AD1981_HP, AD1981_THINKPAD }; |
1334 | 1378 | ||
1335 | static struct hda_board_config ad1981_cfg_tbl[] = { | 1379 | static 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; |