diff options
author | nshmyrev@yandex.ru <nshmyrev@yandex.ru> | 2005-11-09 00:37:41 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-09 10:56:19 -0500 |
commit | c58c21c7a2ef7d1eb45231d5c1bb24d88a9666b8 (patch) | |
tree | cc95753e4ee03568799cab041f76b0222b765c1c | |
parent | cf1c5d1d58793bb9320467226ffc850c75c20902 (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.c | 18 |
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 | } |