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>