Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Mar 1997 23:58:07 -0500
From:      "Louis A. Mamakos" <louie@TransSys.COM>
To:        Steve Passe <smp@csn.net>
Cc:        multimedia@freebsd.org
Subject:   Re: Where do I get the Win/TV code? 
Message-ID:  <199703210458.XAA00760@whizzo.transsys.com>
In-Reply-To: Your message of "Thu, 20 Mar 1997 19:31:15 MST." <199703210231.TAA12679@Ilsa.StevesCafe.com> 
References:  <199703210231.TAA12679@Ilsa.StevesCafe.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multipart MIME message.

--==_Exmh_2276042640
Content-Type: text/plain; charset=us-ascii

I built a new kernel with this version of the Bt848 driver code, and 
interestingly enough, got the mysterious system hang once.  Further, I
also bot the mysterious 60 interrupts per second on the shared IRQ 
used by the Hauppauge board.

The good news is that the audio on my WinCast/TV dbx board is working
great! 

I added this code to the interrupt service function, which seems to have
improved things.  This was in my local version of the driver, and I
guess didn't get submitted.  The interesting thing is that it appears
that under some circumstances, interrupts can get unmasked depending on
what the current state of affairs is, regardless of any process
having the device open or not.  I'm not quite certain about
the return inside the if statement or not; perhaps someone could
sanity check that for me.

louie


--==_Exmh_2276042640
Content-Type: application/octet-stream ; name="diff"
Content-Description: diff
Content-Disposition: attachment; filename="diff"

--- brooktree848.c.orig	Thu Mar 20 20:48:16 1997
+++ brooktree848.c	Thu Mar 20 23:18:40 1997
@@ -364,11 +364,22 @@
 	s_status = *bt_reg;
 	*bt_reg = 0;
 
+	/*
+	 * check to see if any interrupts are unmasked on this device.  If
+	 * none are, then we likely got here by way of being on a PCI shared
+	 * interrupt dispatch list.
+	 */
+	btl_reg = (u_long *) &bt848[BKTR_INT_MASK];
+	if (*btl_reg == 0)
+	    return;		/* bail out now, before we do something we
+				   shouldn't */
+
 	if (!(bktr->flags & METEOR_OPEN)) {
 		bts_reg = (u_short *) &bt848[BKTR_GPIO_DMA_CTL];
 		*bts_reg = 0;
 		btl_reg = (u_long *) &bt848[BKTR_INT_MASK];
 		*btl_reg = 0;
+		return;		/* no reason to continue, right? */
 	}
 
 	btl_reg = (u_long *) &bt848[BKTR_INT_STAT];

--==_Exmh_2276042640--





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703210458.XAA00760>