diff options
author | Holger Waechtler <devnull@localhost> | 2003-06-21 14:54:16 +0000 |
---|---|---|
committer | Holger Waechtler <devnull@localhost> | 2003-06-21 14:54:16 +0000 |
commit | 6cb7f752732bf161ea8a56f8531c21d37fd98fc0 (patch) | |
tree | 65109db0c67b73298436212e7fc0b92d3b1a99ed /linux/drivers/media/dvb/bt8xx | |
parent | e3fcc2f04b88285be9b9f480461348dee33cdd3c (diff) | |
download | mediapointer-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.c | 15 |
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; } /***********************/ |