Date: Sun, 23 Aug 1998 10:11:08 -0700 (PDT) From: Bernie Doehner <bad@uhf.wireless.net> To: Jos Backus <Jos.Backus@nl.origin-it.com> Cc: freebsd-multimedia@FreeBSD.ORG Subject: Re: AudioTrix Pro detected but produces no sound :-( Message-ID: <Pine.BSF.3.96.980823100513.1143A-100000@uhf.wireless.net> In-Reply-To: <19980823184000.A27965@hal.mpn.cp.philips.com>
next in thread | previous in thread | raw e-mail | index | archive | help
What OS version are you running? I have found BIG problems with the stock
August 4 SNAP sound driver and my OPTI931 card (problems related to
improper flag setting, and improper I/O handling - see below).
June 7th Luigi driver works even worse. I have submited my suggested patch
to Luigi for evaluation but I think he's been very busy. See below
for my patch with reference to Aug 4th SNAP shipped sound driver... Note:
I have only fixed/tested under Opti931. Luigi reminded me that Trix and
others might need to be "fixed" to and that I didn't address them (kinda
hard since I don't understand this stuff very well and I can only test on
the 931).
Bernie
The "patch":
diff -ru snd/dmabuf.c snd.snap/dmabuf.c
--- snd/dmabuf.c Sat Feb 21 09:51:39 1998
+++ snd.snap/dmabuf.c Mon Aug 17 11:42:05 1998
@@ -270,10 +270,12 @@
else
timeout = 1 ;
ret = tsleep( (caddr_t)b, PRIBIO|PCATCH, "dspwr", timeout);
- if (ret == EINTR || ret == ERESTART)
+ /* if (ret == EINTR || ret == ERESTART)*/
+ if (ret == EINTR )
d->flags |= SND_F_ABORTING ;
splx(s);
- if (ret == EINTR)
+/* if (ret == EINTR) */
+ if (ret == EINTR || ret == ERESTART)
break ;
continue;
}
@@ -459,8 +461,9 @@
l &= DMA_ALIGN_MASK ; /* realign sizes */
if (l != b->dl) {
/* for any reason, size has changed. Stop and restart */
+ if (b->dl >0 )
+ d->callback(d, SND_CB_RD | SND_CB_STOP );
b->dl = l ;
- d->callback(d, SND_CB_RD | SND_CB_STOP );
d->callback(d, SND_CB_RD | SND_CB_START );
}
} else {
@@ -553,10 +556,12 @@
else
timeout = 1; /* maybe data will be ready earlier */
ret = tsleep( (caddr_t)b, PRIBIO | PCATCH , "dsprd", timeout ) ;
- if (ret == EINTR || ret == ERESTART)
+/* if (ret == EINTR || ret == ERESTART) */
+ if (ret == EINTR )
d->flags |= SND_F_ABORTING ;
splx(s);
- if (ret == EINTR)
+/* if (ret == EINTR) */
+ if (ret == EINTR || ret == ERESTART)
break ;
continue;
}
@@ -593,7 +598,7 @@
s = spltty(); /* no interrupts here ... */
d->flags &= ~SND_F_READING ;
if (d->flags & SND_F_ABORTING) {
- d->flags |= ~SND_F_ABORTING;
+ d->flags &= ~SND_F_ABORTING;
splx(s);
dsp_rdabort(d, 1 /* restart */);
/* XXX return EINTR ? */
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980823100513.1143A-100000>
