patch-2.3.99-pre9 linux/drivers/sound/ac97_codec.c
Next file: linux/drivers/sound/cmpci.c
Previous file: linux/drivers/scsi/megaraid.h
Back to the patch index
Back to the overall index
- Lines: 27
- Date:
Sun May 21 20:18:08 2000
- Orig file:
v2.3.99-pre8/linux/drivers/sound/ac97_codec.c
- Orig date:
Thu May 11 15:30:07 2000
diff -u --recursive --new-file v2.3.99-pre8/linux/drivers/sound/ac97_codec.c linux/drivers/sound/ac97_codec.c
@@ -71,6 +71,7 @@
{0x83847605, "SigmaTel STAC9704" , NULL},
{0x83847608, "SigmaTel STAC9708" , NULL},
{0x83847609, "SigmaTel STAC9721/23" , sigmatel_init},
+ {0x54524106, "TriTech TR28026" , NULL},
{0x54524108, "TriTech TR28028" , NULL},
{0x574D4C00, "Wolfson WM9704" , NULL},
{0x00000000, NULL, NULL}
@@ -330,6 +331,10 @@
/* else, write the first set in the mask as the
output */
+ /* clear out current set value first (AC97 supports only 1 input!) */
+ val = (1 << ac97_rm2oss[codec->codec_read(codec, AC97_RECORD_SELECT)&0x07]);
+ if (mask != val) mask &= ~val;
+
val = ffs(mask);
val = ac97_oss_rm[val-1];
val |= val << 8; /* set both channels */
@@ -418,6 +423,7 @@
switch (_IOC_NR(cmd)) {
case SOUND_MIXER_RECSRC: /* Arg contains a bit for each recording source */
if (!codec->recmask_io) return -EINVAL;
+ if(!val) return 0;
if (!(val &= codec->record_sources)) return -EINVAL;
codec->recmask_io(codec, 0, val);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)