On Mon, Aug 18, 2008 at 1:20 PM, Takashi Iwai tiwai@suse.de wrote:
At Sun, 17 Aug 2008 22:07:19 +0300,
Note that "Mic Playback Volume" controls only the volume of analog playback. It doesn't change the recording level at all.
thanks for reminding, sure.
the reasoning for the original patch sounds reasonable. The mic volume is tunable, only at the very low range. I recall the laptop came with Win98, and there was no problem then with the sound -> not a HW problem. I have never got this laptop mic working with linux, so this is not anything that broke recently. I see there is check_volume_resolution function which tries to guess some of the register ranges, but maybe it get's it wrong with this HW.
Maybe, maybe not. You should check rather ac97 registers in /proc/asound/card0/codec97#0/ac97#0-0+regs. If build with CONFIG_SND_DEBUG=y, you can write to the register directly, too. See Documentaiton[/sound/alsa]/Procfile.txt.
I checked this file. It seems it gets the regs right for the mic (range 0x1f). The capture range is 0xf. I don't have the specs to compare it against, so I assume there is nothing to do more here.
It seems mic value decreases while going up to full, where as capture increases. Another difference is maybe stereo / mono related, the capture changes both bytes whereas mic only the other one. Also one thing, should the mic level be around 0x40 - 0x5f, not 0x0 - 0x1f. Here's the diff of the registers between mixing the capture and mic from min to max:
$ diff /tmp/ac97_regs_capt_{min,full} 15c15 < 0:1c = 0000 ---
0:1c = 0f0f
$ diff /tmp/ac97_regs_mic_{min,full} 8c8 < 0:0e = 005f ---
0:0e = 0040
I'll recompile it with sound debug just to test it...
Thanks,
ikke