aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAriff Abdullah <ariff@FreeBSD.org>2005-11-07 09:26:17 +0000
committerAriff Abdullah <ariff@FreeBSD.org>2005-11-07 09:26:17 +0000
commitbeb1654e706766245166b860930f020b2dab57e4 (patch)
tree882b13dd47a11fbdf8c87e1aa5188d66b34d11f4 /sys
parent238c5dc5c3c388a9eb438b5dbd8b3e28dbeb20c5 (diff)
downloadsrc-beb1654e706766245166b860930f020b2dab57e4.tar.gz
src-beb1654e706766245166b860930f020b2dab57e4.zip
Fix recording device selection based on ALS4000 datasheet.
- http://www.alsa-project.org/alsa/ftp/manuals/avance_logic/ALS4000a.PDF Submitted by: Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
Notes
Notes: svn path=/head/; revision=152151
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/sound/pci/als4000.c31
1 files changed, 10 insertions, 21 deletions
diff --git a/sys/dev/sound/pci/als4000.c b/sys/dev/sound/pci/als4000.c
index 2df70dc2d296..5201c19b14ef 100644
--- a/sys/dev/sound/pci/als4000.c
+++ b/sys/dev/sound/pci/als4000.c
@@ -591,33 +591,22 @@ static int
alsmix_setrecsrc(struct snd_mixer *m, u_int32_t src)
{
struct sc_info *sc = mix_getdevinfo(m);
- u_int32_t i, l, r, mask;
+ u_int32_t i, l, r;
for (i = l = r = 0; i < SOUND_MIXER_NRDEVICES; i++) {
if (src & (1 << i)) {
- l |= amt[i].iselect;
- r |= amt[i].iselect << 1;
+ if (amt[i].iselect == 1) { /* microphone */
+ l |= amt[i].iselect;
+ r |= amt[i].iselect;
+ } else {
+ l |= amt[i].iselect;
+ r |= amt[i].iselect >> 1;
+ }
}
}
- /* ALS mixer is really an SB16 mixer */
-
- mask = 0;
-
- if (src & SOUND_MASK_MIC)
- mask |= 0x01;
-
- if (src & SOUND_MASK_CD)
- mask |= 0x06;
-
- if (src & SOUND_MASK_LINE)
- mask |= 0x18;
-
- if (src & SOUND_MASK_SYNTH)
- mask |= 0x60;
-
- als_mix_wr(sc, SB16_IMASK_L, l|mask);
- als_mix_wr(sc, SB16_IMASK_R, r|mask);
+ als_mix_wr(sc, SB16_IMASK_L, l);
+ als_mix_wr(sc, SB16_IMASK_R, r);
return src;
}