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);