summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/bt8xx
diff options
context:
space:
mode:
authorHolger Waechtler <devnull@localhost>2003-06-21 14:54:16 +0000
committerHolger Waechtler <devnull@localhost>2003-06-21 14:54:16 +0000
commit6cb7f752732bf161ea8a56f8531c21d37fd98fc0 (patch)
tree65109db0c67b73298436212e7fc0b92d3b1a99ed /linux/drivers/media/dvb/bt8xx
parente3fcc2f04b88285be9b9f480461348dee33cdd3c (diff)
downloadmediapointer-dvb-s2-6cb7f752732bf161ea8a56f8531c21d37fd98fc0.tar.gz
mediapointer-dvb-s2-6cb7f752732bf161ea8a56f8531c21d37fd98fc0.tar.bz2
- 2.5 API changes for bt878
- remove flush_workqueue(wq) from dvb_net.c -- don't we have to ensure that the handler has finished? all other drivers don't do this as well...?
Diffstat (limited to 'linux/drivers/media/dvb/bt8xx')
-rw-r--r--linux/drivers/media/dvb/bt8xx/bt878.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/linux/drivers/media/dvb/bt8xx/bt878.c b/linux/drivers/media/dvb/bt8xx/bt878.c
index 27f01bb73..f876332e0 100644
--- a/linux/drivers/media/dvb/bt8xx/bt878.c
+++ b/linux/drivers/media/dvb/bt8xx/bt878.c
@@ -36,13 +36,13 @@
#include <asm/pgtable.h>
#include <asm/page.h>
#include <linux/types.h>
-#include <linux/wrapper.h>
#include <linux/interrupt.h>
#include <linux/kmod.h>
#include <linux/vmalloc.h>
#include <linux/init.h>
#include "bt878.h"
+#include "dvb_functions.h"
/**************************************/
/* Miscellaneous utility definitions */
@@ -273,7 +273,8 @@ EXPORT_SYMBOL(bt878_stop);
/* Interrupt service routine */
/*****************************/
-static void bt878_irq(int irq, void *dev_id, struct pt_regs * regs)
+static
+irqreturn_t bt878_irq(int irq, void *dev_id, struct pt_regs * regs)
{
u32 stat,astat,mask;
int count;
@@ -285,7 +286,8 @@ static void bt878_irq(int irq, void *dev_id, struct pt_regs * regs)
while(1) {
stat=btread(BT878_AINT_STAT);
mask=btread(BT878_AINT_MASK);
- if(!(astat=(stat&mask))) return; /* this interrupt is not for me */
+ if(!(astat=(stat&mask)))
+ return IRQ_NONE; /* this interrupt is not for me */
/* dprintk("bt878(%d) debug: irq count %d, stat 0x%8.8x, mask 0x%8.8x\n",bt->nr,count,stat,mask); */
btwrite(astat,BT878_AINT_STAT); /* try to clear interupt condition */
@@ -324,8 +326,9 @@ static void bt878_irq(int irq, void *dev_id, struct pt_regs * regs)
bt->finished_block = (stat & BT878_ARISCS) >> 28;
spin_unlock(&bt->s_lock);
wake_up_interruptible(&bt->readq);
- if(bt->tasklet) tasklet_schedule(bt->tasklet);
- return;
+ if(bt->tasklet)
+ tasklet_schedule(bt->tasklet);
+ break;
}
count++;
if(count>20) {
@@ -335,6 +338,8 @@ static void bt878_irq(int irq, void *dev_id, struct pt_regs * regs)
break;
}
}
+
+ return IRQ_HANDLED;
}
/***********************/