Re: 2.5.68-mm2 bttv oops

Andrew Morton (akpm@digeo.com)
Wed, 23 Apr 2003 21:31:19 -0700


steven roemen <sdroemen1@cox.net> wrote:
>
> here's what is in the syslog after booting the 2.5.68-mm2 kernel:
> bttv is built into the kernel.

This'll fix it up

25-akpm/drivers/media/video/bttv-driver.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)

diff -puN drivers/media/video/bttv-driver.c~irqreturn-bttv drivers/media/video/bttv-driver.c
--- 25/drivers/media/video/bttv-driver.c~irqreturn-bttv Wed Apr 23 18:00:18 2003
+++ 25-akpm/drivers/media/video/bttv-driver.c Wed Apr 23 18:02:52 2003
@@ -1279,7 +1279,7 @@ static int bttv_prepare_buffer(struct bt
}

static int
-buffer_setup(struct file *file, int *count, int *size)
+buffer_setup(struct file *file, unsigned int *count, unsigned int *size)
{
struct bttv_fh *fh = file->private_data;

@@ -3156,22 +3156,23 @@ bttv_irq_switch_fields(struct bttv *btv)
spin_unlock(&btv->s_lock);
}

-static void bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
+static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
{
u32 stat,astat;
u32 dstat;
int count;
struct bttv *btv;
+ int handled = 0;

btv=(struct bttv *)dev_id;
count=0;
- while (1)
- {
+ while (1) {
/* get/clear interrupt status bits */
stat=btread(BT848_INT_STAT);
astat=stat&btread(BT848_INT_MASK);
if (!astat)
- return;
+ break;
+ handled = 1;
btwrite(stat,BT848_INT_STAT);

/* get device status bits */
@@ -3231,6 +3232,7 @@ static void bttv_irq(int irq, void *dev_
"bttv%d: IRQ lockup, cleared int mask\n", btv->nr);
}
}
+ return IRQ_RETVAL(handled);
}


_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/