Messages in this thread | | | Date | Mon, 25 May 2009 18:40:42 -0400 | From | "M. Vefa Bicakci" <> | Subject | Re: [Bisected regression] Microphone no longer works on Toshiba Satellite A100 |
| |
Takashi Iwai wrote: >>> [snip] > Thanks. Does the patch below work?
Yes, I just tried it by compiling alsa-driver-1.0.20 after applying the patch you provided, and I can happily say that it works beautifully.
Thank you so much! I really hope that this patch will be included in the next ALSA release and the next -rc release for 2.6.30.
> > (snip) >> When one first boots this laptop, alsamixer does not show PCM playback and >> Digital Input capture channels. However, if I run a ALSA-compatible program >> which uses the PCM playback (such as mpg321) or the Digital Input capture >> channel (such as arecord), then the respective channels appear in alsamixer. >> Does this mean that a new "model=..." quirk needs to be written for this >> this laptop? ("model=toshiba" does not work properly.) > > The PCM and Digital Capture Volume are implemented in alsa-lib softvol > plugin and is irrelevant with the driver model. They appear either > when you first use PCM via alsa-lib with that configuration, or when > you restore the previous volume setting via alsactl. > > Usually distro udev or init script restores the previous volume via > alsactl, so this will appear after the very first use after the > installation...
That clears up a lot of things. I am sorry if this was already documented in the ALSA documentation/wiki and I missed it.
> thanks, > > Takashi
Thank you once again,
M. Vefa Bicakci
> --- > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c > index bcbb736..0fd258e 100644 > --- a/sound/pci/hda/patch_realtek.c > +++ b/sound/pci/hda/patch_realtek.c > @@ -776,6 +776,12 @@ static void alc_set_input_pin(struct hda_codec *codec, hda_nid_t nid, > pincap = (pincap & AC_PINCAP_VREF) >> AC_PINCAP_VREF_SHIFT; > if (pincap & AC_PINCAP_VREF_80) > val = PIN_VREF80; > + else if (pincap & AC_PINCAP_VREF_50) > + val = PIN_VREF50; > + else if (pincap & AC_PINCAP_VREF_100) > + val = PIN_VREF100; > + else if (pincap & AC_PINCAP_VREF_GRD) > + val = PIN_VREFGRD; > } > snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, val); > } > > >
| |