summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/video/bttv-driver.c20
-rw-r--r--v4l/ChangeLog8
2 files changed, 24 insertions, 4 deletions
diff --git a/linux/drivers/media/video/bttv-driver.c b/linux/drivers/media/video/bttv-driver.c
index fc3cfe53b..839e69dc9 100644
--- a/linux/drivers/media/video/bttv-driver.c
+++ b/linux/drivers/media/video/bttv-driver.c
@@ -1,5 +1,5 @@
/*
- $Id: bttv-driver.c,v 1.61 2005/10/09 18:07:06 mchehab Exp $
+ $Id: bttv-driver.c,v 1.62 2005/10/15 17:02:48 nsh Exp $
bttv - Bt848 frame grabber driver
@@ -3764,10 +3764,22 @@ static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
count++;
if (count > 4) {
- btwrite(0, BT848_INT_MASK);
- printk(KERN_ERR
- "bttv%d: IRQ lockup, cleared int mask [", btv->c.nr);
+
+ if (count > 8 || !(astat & BT848_INT_GPINT)) {
+ btwrite(0, BT848_INT_MASK);
+
+ printk(KERN_ERR
+ "bttv%d: IRQ lockup, cleared int mask [", btv->c.nr);
+ } else {
+ printk(KERN_ERR
+ "bttv%d: IRQ lockup, clearing GPINT from int mask [", btv->c.nr);
+
+ btwrite(btread(BT848_INT_MASK) & (-1 ^ BT848_INT_GPINT),
+ BT848_INT_MASK);
+ };
+
bttv_print_irqbits(stat,astat);
+
printk("]\n");
}
}
diff --git a/v4l/ChangeLog b/v4l/ChangeLog
index 23960488f..e64766483 100644
--- a/v4l/ChangeLog
+++ b/v4l/ChangeLog
@@ -1,3 +1,11 @@
+2005-10-15 17:01 nshmyrev
+
+ * ../linux/drivers/media/video/bttv-driver.c: (bttv_irq):
+
+ More intellect on clearing in bits on irq lock.
+
+ Signed-off-by: Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
2005-10-15 14:14 nshmyrev
* ../linux/Documentation/video4linux/CARDLIST.saa7134: