I am using a ESS Allegro card (maestro3 driver). I could not use the input
(mic), because its volume could not be set by the AC'97 mixer.
I just found that the hw has a 5-bit setting, while the alsa AC'97 code only
used 4 bits. It was easy enough for me to change that to 5-bits and make my
mic work.
The questions are: does anybody else have trouble in setting the mic-in
volume?
Should we make that volume 5-bit (it will only look buggy to 4-bit hw, but
will work for both)?
If not, is there any way to have the card driver (i.e. maestro3 etc.) tell
the mixer what to use?
The patch is:
--- ac97_codec.c Fri Jun 21 16:09:15 2002
+++ /usr/src/linux/sound/pci/ac97/ac97_codec.c Sun Jun 16 21:56:00 2002
@@ -579,7 +579,7 @@
static const snd_kcontrol_new_t snd_ac97_controls_mic[3] = {
AC97_SINGLE("Mic Playback Switch", AC97_MIC, 15, 1, 1),
-AC97_SINGLE("Mic Playback Volume", AC97_MIC, 0, 15, 1),
+AC97_SINGLE("Mic Playback Volume", AC97_MIC, 0, 31, 1),
AC97_SINGLE("Mic Boost (+20dB)", AC97_MIC, 6, 1, 0)
};
@@ -1137,7 +1137,7 @@
for (idx = 0; idx < 3; idx++)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_mic[idx], ac97))) < 0)
return err;
- snd_ac97_write_cache(ac97, AC97_MIC, 0x801f);
+ snd_ac97_write_cache(ac97, AC97_MIC, 0x805f);
/* build Line controls */
for (idx = 0; idx < 2; idx++)