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>