[linux-dvb] flexcop stops generating interrupts.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 4 May 2005, Q-ha Park wrote:

> New finding!
>
> Data_receive_error bit is indeed related to the frontend. On a
> non-working box, I closed the frontend, and rezaps the frontend. It
> gets successfully locked but still no interrupts are generated.  0x20c
> reads 0x100 (Data_receive_error set). Redoing the whole thing again
> results in the same value read at 0x20c.
>
> So my question becomes; On what conditions does FC2 set the
> Data_receive_error bit? But I've seen that the Data_receive_error bit
> being set doesn't always stop generating interrupts. In fact, most of
> the time it works just fine. Should we focus on stv0299.c instead of
> FC2 chipset? I don't know. What are the ways to recover from this
> state other than reloading the driver? All these questions are too hw
> specific, which is not described at length elsewhere, and without
> which I'm stuck.

Yesterday was my day of mixing things up.... I misunderstood your finding 
from yesterday... (and also some of Johannes' mails I got wrong) sorry to 
both of you.

Could you please apply the attached patch? It prints out, when any error 
is set in 0x20c during an IRQ. Maybe the Data_receive_error bit is set 
when the last IRQ took place.

To the stv0299. I'm not sure if any AirStar or CableStar user has also 
these problem. Afaik no one ever reported this behaviour here?

I also will ask BBTI if they know about a workaround or a pitfall in the 
stv0299.

regards
Patrick.

--
   Mail: patrick.boettcher@xxxxxxx
   WWW:  http://www.wi-bw.tfh-wildau.de/~pboettch/
-------------- next part --------------
Index: flexcop-pci.c
===================================================================
RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/b2c2/flexcop-pci.c,v
retrieving revision 1.6
diff -u -3 -p -r1.6 flexcop-pci.c
--- flexcop-pci.c	15 Apr 2005 12:06:09 -0000	1.6
+++ flexcop-pci.c	4 May 2005 06:25:50 -0000
@@ -100,6 +100,16 @@ static irqreturn_t flexcop_pci_irq(int i
 
 	spin_lock_irq(&fc_pci->irq_lock);
 
+   /* errors */
+	if (v.irq_20c.Data_receiver_error)
+		err("data receiver error");
+	if (v.irq_20c.Continuity_error_flag)
+		err("Contunuity error flag is set");
+	if (v.irq_20c.LLC_SNAP_FLAG_set)
+		err("LLC_SNAP_FLAG_set is set");
+	if (v.irq_20c.Transport_Error)
+		err("Transport error");
+
 	if (v.irq_20c.DMA1_IRQ_Status == 1) {
 		if (fc_pci->active_dma1_addr == 0)
 			flexcop_pass_dmx_packets(fc_pci->fc_dev,fc_pci->dma[0].cpu_addr0,fc_pci->dma[0].size / 188);

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux