Mailing List archive

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

[linux-dvb] removing obsolete fidbirq()



vpeirq() has proved to work stable and fine,

I think now we can get rid of the fidbirq() leftovers
from the budget-core.c

In this patch, saa7146 interrupt is enabled only for vpeirq() 
and all of the code for fidbirq() tasklet is removed.

Emard
diff -pur /home/emard/src/dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget-core.c dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget-core.c
--- /home/emard/src/dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget-core.c	Wed Feb 12 17:41:28 2003
+++ dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget-core.c	Wed Feb 12 22:15:22 2003
@@ -58,7 +58,7 @@ TTBStop(struct budget_s *budget)
                 return budget->feeding;
 
         saa7146_write(budget->dev, MC1, MASK_20); // DMA3 off
-	IER_DISABLE(budget->dev, MASK_07|MASK_10);
+	IER_DISABLE(budget->dev, MASK_10);
         return 0;
 }
 
@@ -98,7 +98,7 @@ TTBStart(struct budget_s *budget)
       	saa7146_write(dev, MC2, (MASK_04 | MASK_20));
      	saa7146_write(dev, MC1, (MASK_04 | MASK_20)); // DMA3 on
 
-	IER_ENABLE(budget->dev, MASK_07|MASK_10); // FIDB + VPE
+	IER_ENABLE(budget->dev, MASK_10); // VPE
 
         return ++budget->feeding;
 }
@@ -135,82 +135,6 @@ static void vpeirq (unsigned long data)
         }
 }
 
-/* TS_PACKETS is minumum number of accumulated 188-byte packets 
-** (TS_SIZE=188) that is considered 'complete' and can
-** be delivered to the sw_demux in one 'quantum'.
-** TS_QUANTUM is size in bytes of TS_PACKETS
-** TS_MAX_PACKETS is number of TS_PACKETS in one DMA window
-** TS_BUFLEN is 1024*188
-*/
-static
-void fidbirq (unsigned long data)
-{
-	struct budget_s *budget = (struct budget_s*) data;
-	u8 *mem=(u8 *)(budget->grabbing);
-	u8 oldtsf = budget->tsf;
-	u8 newtsf = 0x80 & saa7146_read(budget->dev, PSR);
-	u16 oldpkt = budget->ttbp;
-	u16 newpkt = saa7146_read(budget->dev, PCI_VDP3)/TS_QUANTUM; /* PCI_VDP3 = 0..TS_BUFLEN-1 */
-	u8 *olddma = mem + oldpkt*TS_QUANTUM; /* rounded to first complete packet */
-
-	DEB_EE(("budget: %p\n", budget));
-	
-	/* Zero-Packet-Loss fidbirq by EMARD */
-
-	budget->ttbp = newpkt;
-	budget->tsf = newtsf;
-	
-	/* exit immediately when the card is not set for feeding
-	** or when values are out of expected boundaries
-	*/
-	if(budget->feeding == 0 ||
-		oldpkt >= TS_MAX_PACKETS || newpkt >= TS_MAX_PACKETS)
-		return;
-
-	/* use heuristic methods for recovering from lost interrupt
-	*/
-	if(oldtsf == newtsf)
-	{
-		/* interrupt is probably lost, some data can't be
-		** retrieved because of DMA overwriting, but let's 
-		** try to save what is left of good data in the DMA
-		** window.
-		*/
-		if(newpkt != oldpkt)
-		{	/* DMA is probably in progress right now,
-			** overwriting data. Shift oldpkt 1 packets
-			** forward from newpkt as a gap for racing with 
-			** ongoing DMA transfer. Consider TS_MAX_PACKETS-1 packets
-			** are still valid in DMA window.
-			*/
-			oldpkt = (newpkt + 1) % TS_MAX_PACKETS;
-			olddma = mem + oldpkt*TS_QUANTUM;
-			/* from now on, proceed as usual */
-		}
-	}
-
-	if(oldpkt < newpkt)
-	{	/* no wraparound - dump linear data
-		** from olddma to newdma
-		*/
-		if(*olddma == 0x47)
-			dvb_dmx_swfilter_packets(&budget->demux, olddma,
-				TS_PACKETS*(newpkt-oldpkt));
-	}
-	else
-	{ 	/* wraparound - dump in two chunks,
-		** from olddma to end of DMA window
-		** and from begin of DMA window to newdma
-		*/
-		if(*olddma == 0x47)
-			dvb_dmx_swfilter_packets(&budget->demux, olddma,
-				TS_PACKETS*(TS_MAX_PACKETS - oldpkt));
-		if(*mem == 0x47 && newpkt > 0)
-			dvb_dmx_swfilter_packets(&budget->demux, mem,
-				TS_PACKETS*newpkt);
-	}			
-}
-
 inline static void 
 Set22K(struct budget_s *budget, int state)
 {
@@ -574,7 +498,6 @@ int budget_attach (struct saa7146_dev* d
 	/* upload all */
         saa7146_write(dev, GPIO_CTRL, 0x000000);
 
-	tasklet_init (&budget->fidb_tasklet, fidbirq, (unsigned long) budget);
 	tasklet_init (&budget->vpe_tasklet, vpeirq, (unsigned long) budget);
 
 	saa7146_setgpio(dev, 2, SAA7146_GPIO_OUTHI); /* frontend power on */
@@ -619,8 +542,6 @@ void budget_irq(struct saa7146_dev* dev,
 
 	DEB_EE(("dev: %p, budget: %p\n",dev,budget));
 
-	if (*isr & MASK_07)
-		tasklet_schedule (&budget->fidb_tasklet);
 	if (*isr & MASK_10)
 		tasklet_schedule (&budget->vpe_tasklet);
 }
diff -pur /home/emard/src/dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.c dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.c
--- /home/emard/src/dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.c	Fri Feb  7 15:19:11 2003
+++ dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.c	Wed Feb 12 22:15:22 2003
@@ -86,7 +86,7 @@ struct saa7146_extension budget_extensio
 	.attach		= this_budget_attach,
 	.detach		= budget_detach,
 
-	.irq_mask	= MASK_07|MASK_10,
+	.irq_mask	= MASK_10,
 	.irq_func	= budget_irq,
 };	
 
diff -pur /home/emard/src/dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.h dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.h
--- /home/emard/src/dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.h	Fri Feb  7 15:19:11 2003
+++ dvb-kernel/linux/drivers/media/dvb/ttpci-budget/budget.h	Wed Feb 12 22:14:41 2003
@@ -68,10 +68,7 @@ static struct saa7146_pci_extension_data
 #define TS_WIDTH  (4*188)
 #define TS_HEIGHT (1024/4)
 #define TS_BUFLEN (TS_WIDTH*TS_HEIGHT)
-
-#define TS_PACKETS	1
-#define TS_QUANTUM	(TS_PACKETS*TS_SIZE)
-#define TS_MAX_PACKETS	(TS_BUFLEN/TS_QUANTUM)
+#define TS_MAX_PACKETS (TS_BUFLEN/TS_SIZE)
 
 #define BUDGET_TT		   0
 #define BUDGET_TT_HW_DISEQC	   1

Home | Main Index | Thread Index