aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_analog.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2006-04-18 06:54:11 -0400
committerJaroslav Kysela <perex@suse.cz>2006-06-22 15:32:44 -0400
commit01686c5fce4682350849f9f2c262fcaf67ec73c3 (patch)
treebaa73c310d68bbc12b3f212326ab3fd5003bb5e6 /sound/pci/hda/patch_analog.c
parent7152447df98b3981d621224be947a2c8d77aed06 (diff)
[ALSA] hda-codec - Add Thinkpad X60/T60/Z60 support
Added the support for Thinkpad X60/T60/Z60 laptops with AD1981HD codec. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_analog.c')
-rw-r--r--sound/pci/hda/patch_analog.c44
1 files changed, 43 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 40f000ba136..8ddae0a25ea 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -1329,13 +1329,50 @@ static int ad1981_hp_init(struct hda_codec *codec)
1329 return 0; 1329 return 0;
1330} 1330}
1331 1331
1332/* configuration for Lenovo Thinkpad T60 */
1333static struct snd_kcontrol_new ad1981_thinkpad_mixers[] = {
1334 HDA_CODEC_VOLUME("Master Playback Volume", 0x05, 0x0, HDA_OUTPUT),
1335 HDA_CODEC_MUTE("Master Playback Switch", 0x05, 0x0, HDA_OUTPUT),
1336 HDA_CODEC_VOLUME("PCM Playback Volume", 0x11, 0x0, HDA_OUTPUT),
1337 HDA_CODEC_MUTE("PCM Playback Switch", 0x11, 0x0, HDA_OUTPUT),
1338 HDA_CODEC_VOLUME("Mic Playback Volume", 0x12, 0x0, HDA_OUTPUT),
1339 HDA_CODEC_MUTE("Mic Playback Switch", 0x12, 0x0, HDA_OUTPUT),
1340 HDA_CODEC_VOLUME("CD Playback Volume", 0x1d, 0x0, HDA_OUTPUT),
1341 HDA_CODEC_MUTE("CD Playback Switch", 0x1d, 0x0, HDA_OUTPUT),
1342 HDA_CODEC_VOLUME("Mic Boost", 0x08, 0x0, HDA_INPUT),
1343 HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT),
1344 HDA_CODEC_MUTE("Capture Switch", 0x15, 0x0, HDA_OUTPUT),
1345 {
1346 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1347 .name = "Capture Source",
1348 .info = ad198x_mux_enum_info,
1349 .get = ad198x_mux_enum_get,
1350 .put = ad198x_mux_enum_put,
1351 },
1352 { } /* end */
1353};
1354
1355static struct hda_input_mux ad1981_thinkpad_capture_source = {
1356 .num_items = 3,
1357 .items = {
1358 { "Mic", 0x0 },
1359 { "Mix", 0x2 },
1360 { "CD", 0x4 },
1361 },
1362};
1363
1332/* models */ 1364/* models */
1333enum { AD1981_BASIC, AD1981_HP }; 1365enum { AD1981_BASIC, AD1981_HP, AD1981_THINKPAD };
1334 1366
1335static struct hda_board_config ad1981_cfg_tbl[] = { 1367static struct hda_board_config ad1981_cfg_tbl[] = {
1336 { .modelname = "hp", .config = AD1981_HP }, 1368 { .modelname = "hp", .config = AD1981_HP },
1337 /* All HP models */ 1369 /* All HP models */
1338 { .pci_subvendor = 0x103c, .config = AD1981_HP }, 1370 { .pci_subvendor = 0x103c, .config = AD1981_HP },
1371 { .modelname = "thinkpad", .config = AD1981_THINKPAD },
1372 /* Lenovo Thinkpad T60/X60/Z6xx */
1373 { .pci_subvendor = 0x17aa, .config = AD1981_THINKPAD },
1374 { .pci_subvendor = 0x1014, .pci_subsystem = 0x0597,
1375 .config = AD1981_THINKPAD }, /* Z60m/t */
1339 { .modelname = "basic", .config = AD1981_BASIC }, 1376 { .modelname = "basic", .config = AD1981_BASIC },
1340 {} 1377 {}
1341}; 1378};
@@ -1381,6 +1418,11 @@ static int patch_ad1981(struct hda_codec *codec)
1381 codec->patch_ops.init = ad1981_hp_init; 1418 codec->patch_ops.init = ad1981_hp_init;
1382 codec->patch_ops.unsol_event = ad1981_hp_unsol_event; 1419 codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
1383 break; 1420 break;
1421 case AD1981_THINKPAD:
1422 spec->mixers[0] = ad1981_thinkpad_mixers;
1423 spec->multiout.dig_out_nid = 0;
1424 spec->input_mux = &ad1981_thinkpad_capture_source;
1425 break;
1384 } 1426 }
1385 1427
1386 return 0; 1428 return 0;