aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornshmyrev@yandex.ru <nshmyrev@yandex.ru>2005-11-09 00:37:41 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-09 10:56:19 -0500
commitc58c21c7a2ef7d1eb45231d5c1bb24d88a9666b8 (patch)
treecc95753e4ee03568799cab041f76b0222b765c1c
parentcf1c5d1d58793bb9320467226ffc850c75c20902 (diff)
[PATCH] v4l: 797: more intellect on clearing in bits on irq lock
- More intellect on clearing in bits on irq lock. Signed-off-by: Nickolay V. Shmyrev <<nshmyrev@yandex.ru>> Signed-off-by: Nickolay V. Shmyrev <nshmyrev@yandex.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/media/video/bttv-driver.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c
index 504d717b1158..058b923b4b13 100644
--- a/drivers/media/video/bttv-driver.c
+++ b/drivers/media/video/bttv-driver.c
@@ -3736,10 +3736,22 @@ static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs)
3736 3736
3737 count++; 3737 count++;
3738 if (count > 4) { 3738 if (count > 4) {
3739 btwrite(0, BT848_INT_MASK); 3739
3740 printk(KERN_ERR 3740 if (count > 8 || !(astat & BT848_INT_GPINT)) {
3741 "bttv%d: IRQ lockup, cleared int mask [", btv->c.nr); 3741 btwrite(0, BT848_INT_MASK);
3742
3743 printk(KERN_ERR
3744 "bttv%d: IRQ lockup, cleared int mask [", btv->c.nr);
3745 } else {
3746 printk(KERN_ERR
3747 "bttv%d: IRQ lockup, clearing GPINT from int mask [", btv->c.nr);
3748
3749 btwrite(btread(BT848_INT_MASK) & (-1 ^ BT848_INT_GPINT),
3750 BT848_INT_MASK);
3751 };
3752
3742 bttv_print_irqbits(stat,astat); 3753 bttv_print_irqbits(stat,astat);
3754
3743 printk("]\n"); 3755 printk("]\n");
3744 } 3756 }
3745 } 3757 }