[alsa-devel] snd-hda-intel: Fix volume-wheel and microphone on Fujitsu-Siemens Amilo M3438G

Takashi Iwai tiwai at suse.de
Fri Feb 8 12:54:22 CET 2008


At Thu, 7 Feb 2008 00:02:21 +0100,
M G wrote:
> 
> On Feb 6, 2008 5:36 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > At Wed, 6 Feb 2008 17:14:37 +0100,
> >
> > M G wrote:
> > >
> > > Currently the default model that gets selected on this hardware is "F1734".
> > > Using this model neither the volume-wheel nor microphone (internal or
> > > external) work.
> >
> > Thanks for your patch.
> >
> >
> > > The first part of my patch changes the default model to "fujitsu", this
> > > enables the volume wheel on the left side of the laptop.
> >
> > The concern is whether you lose any functionality by this rename.
> > The support of the volume knob control with the existing F1734 model
> > would be easy.  You'd need to add a proper verb to enable the
> > unsolicited event and register the handler, such as, uniwill_p53 one.
> >
> >
> > > The second part changes the capture settings and thus makes it possible to
> > > record from microphones. Now when capturing from the external microphone I
> > > can hear myself talking but its quite quiet. I can improve this a little by
> > > raising the capture volume, but if I raise it above 40 I can no longer
> > > record anything.
> >
> > Using 6stack_capture_source looks wrong to me.  It is actually for
> > desktops.  But yours isn't, I guess.
> >
> > The recording quality might be improved by setting the proper pin VREF
> > level.
> >
> > Anyway, it'd be more helpful if you can show the detailed information,
> > e.g. the output of alsa-info.sh script.
> >
> >
> > Takashi
> 
> 
> No, it's a Laptop. The standard capture source has front mic at 0x3
> while the 6stack capture source has front mic at 0x1; this is the only
> difference but this seems to be what makes it work, I don't know why.
> (Btw: It is always front mic, no matter what microphone I use. As soon
> as I plug the external mic the internal one gets muted and the
> external one takes over it's channel)

OK, then I think it's better to change the existing F1734 stuff rather
than moving to model fujitsu.  Model fujitsu is, apparently, for the
distinct int/ext mics while yours has only one mic input regardless of
connection.

Was the headphone muted automatically even without your patch?

> About the technical stuff: I don't know what an unsolicited event or a
> VREF is, I'm not a programmer. I just fiddled around with stuff until
> it was working but don't understand it :)
> 
> I have uploaded the output of alsa-info.sh twice. First with normal
> alsa und then with my patch (don't know is this is important)
> http://pastebin.com/f22f73445
> http://pastebin.com/f4a7b49d7

Thanks.  Could you try the patch below?


Takashi

diff -r f7393208ebd3 pci/hda/patch_realtek.c
--- a/pci/hda/patch_realtek.c	Fri Feb 08 12:45:40 2008 +0100
+++ b/pci/hda/patch_realtek.c	Fri Feb 08 12:54:24 2008 +0100
@@ -1325,6 +1325,14 @@ static struct snd_kcontrol_new alc880_f1
 	{ } /* end */
 };
 
+static struct hda_input_mux alc880_f1734_capture_source = {
+	.num_items = 2,
+	.items = {
+		{ "Mic", 0x1 },
+		{ "CD", 0x4 },
+	},
+};
+
 
 /*
  * ALC880 ASUS model
@@ -1935,6 +1943,9 @@ static struct hda_verb alc880_pin_f1734_
 	{0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
 	{0x1b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
 	{0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
+
+	{0x14, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN|ALC880_HP_EVENT},
+	{0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN|ALC880_DCVOL_EVENT},
 
 	{ }
 };
@@ -3059,7 +3070,9 @@ static struct alc_config_preset alc880_p
 		.hp_nid = 0x02,
 		.num_channel_mode = ARRAY_SIZE(alc880_2_jack_modes),
 		.channel_mode = alc880_2_jack_modes,
-		.input_mux = &alc880_capture_source,
+		.input_mux = &alc880_f1734_capture_source,
+		.unsol_event = alc880_uniwill_p53_unsol_event,
+		.init_hook = alc880_uniwill_p53_hp_automute,
 	},
 	[ALC880_ASUS] = {
 		.mixers = { alc880_asus_mixer },


More information about the Alsa-devel mailing list