Skip site navigation (1)Skip section navigation (2)
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>