--- alsa-driver-1.0.16.orig/alsa-kernel/pci/hda/patch_realtek.c 2008-02-05 12:23:24.000000000 +0300 +++ alsa-driver-1.0.16/alsa-kernel/pci/hda/patch_realtek.c 2008-04-27 20:40:52.000000000 +0400 @@ -146,6 +146,7 @@ ALC861VD_LENOVO, ALC861VD_DALLAS, ALC861VD_HP, + ALC861VD_TOSHIBA, ALC861VD_AUTO, ALC861VD_MODEL_LAST, }; @@ -11865,6 +11866,13 @@ }, }; +static struct hda_input_mux alc861vd_toshiba_capture_source = { + .num_items = 1, + .items = { + { "Mic", 0x0 }, + }, +}; + #define alc861vd_mux_enum_info alc_mux_enum_info #define alc861vd_mux_enum_get alc_mux_enum_get @@ -12081,6 +12089,26 @@ { } /* end */ }; +/* Pin assignment: Front = 0x14, HP = 0x15, + * Mic = 0x18 + */ +static struct snd_kcontrol_new alc861vd_toshiba_mixer[] = { + HDA_CODEC_VOLUME("Front Playback Volume", 0x02, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), + + HDA_CODEC_VOLUME("Headphone Playback Volume", 0x03, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Headphone Playback Switch", 0x0d, 2, HDA_INPUT), + + HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT), + + HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT), + HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), + + { } /* end */ +}; + /* * generic initialization of ADC, input mixers and output mixers */ @@ -12348,6 +12376,7 @@ [ALC861VD_LENOVO] = "lenovo", [ALC861VD_DALLAS] = "dallas", [ALC861VD_HP] = "hp", + [ALC861VD_TOSHIBA] = "toshiba", [ALC861VD_AUTO] = "auto", }; @@ -12362,6 +12391,7 @@ /*SND_PCI_QUIRK(0x1179, 0xff00, "DALLAS", ALC861VD_DALLAS),*/ /*lenovo*/ SND_PCI_QUIRK(0x1179, 0xff01, "DALLAS", ALC861VD_DALLAS), SND_PCI_QUIRK(0x1179, 0xff03, "Toshiba P205", ALC861VD_LENOVO), + SND_PCI_QUIRK(0x1179, 0xff31, "Toshiba L30", ALC861VD_TOSHIBA), SND_PCI_QUIRK(0x1565, 0x820d, "Biostar NF61S SE", ALC861VD_6ST_DIG), SND_PCI_QUIRK(0x17aa, 0x2066, "Lenovo", ALC861VD_LENOVO), SND_PCI_QUIRK(0x17aa, 0x3802, "Lenovo 3000 C200", ALC861VD_LENOVO), @@ -12470,6 +12500,19 @@ .unsol_event = alc861vd_dallas_unsol_event, .init_hook = alc861vd_dallas_automute, }, + [ALC861VD_TOSHIBA] = { + .mixers = { alc861vd_toshiba_mixer }, + .init_verbs = { alc861vd_dallas_verbs }, + .num_dacs = ARRAY_SIZE(alc861vd_dac_nids), + .dac_nids = alc861vd_dac_nids, + .num_adc_nids = ARRAY_SIZE(alc861vd_adc_nids), + .adc_nids = alc861vd_adc_nids, + .num_channel_mode = ARRAY_SIZE(alc861vd_3stack_2ch_modes), + .channel_mode = alc861vd_3stack_2ch_modes, + .input_mux = &alc861vd_toshiba_capture_source, + .unsol_event = alc861vd_dallas_unsol_event, + .init_hook = alc861vd_dallas_automute, + }, }; /*