diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2007-08-18 10:36:09 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-10-09 21:05:27 -0400 |
commit | 33bc4dea0ece371ccadbac8bf90fd0b8e2803f06 (patch) | |
tree | 4cffc487c1366de00a4193e6bd4c7f37d253e9b6 /drivers/media/video/ivtv | |
parent | b1139e353c7fc636bfe413f3296ba0284eb60c2e (diff) |
V4L/DVB (6043): ivtv: fix incorrect round-robin implementation
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/ivtv')
-rw-r--r-- | drivers/media/video/ivtv/ivtv-irq.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/media/video/ivtv/ivtv-irq.c b/drivers/media/video/ivtv/ivtv-irq.c index 88c6f4ff5c6d..a97d55fd2277 100644 --- a/drivers/media/video/ivtv/ivtv-irq.c +++ b/drivers/media/video/ivtv/ivtv-irq.c | |||
@@ -859,8 +859,9 @@ irqreturn_t ivtv_irq_handler(int irq, void *dev_id) | |||
859 | } | 859 | } |
860 | 860 | ||
861 | if ((combo & IVTV_IRQ_DMA) && !test_bit(IVTV_F_I_DMA, &itv->i_flags)) { | 861 | if ((combo & IVTV_IRQ_DMA) && !test_bit(IVTV_F_I_DMA, &itv->i_flags)) { |
862 | itv->irq_rr_idx++; | ||
862 | for (i = 0; i < IVTV_MAX_STREAMS; i++) { | 863 | for (i = 0; i < IVTV_MAX_STREAMS; i++) { |
863 | int idx = (i + itv->irq_rr_idx++) % IVTV_MAX_STREAMS; | 864 | int idx = (i + itv->irq_rr_idx) % IVTV_MAX_STREAMS; |
864 | struct ivtv_stream *s = &itv->streams[idx]; | 865 | struct ivtv_stream *s = &itv->streams[idx]; |
865 | 866 | ||
866 | if (!test_and_clear_bit(IVTV_F_S_DMA_PENDING, &s->s_flags)) | 867 | if (!test_and_clear_bit(IVTV_F_S_DMA_PENDING, &s->s_flags)) |
@@ -877,8 +878,9 @@ irqreturn_t ivtv_irq_handler(int irq, void *dev_id) | |||
877 | } | 878 | } |
878 | 879 | ||
879 | if ((combo & IVTV_IRQ_DMA) && !test_bit(IVTV_F_I_PIO, &itv->i_flags)) { | 880 | if ((combo & IVTV_IRQ_DMA) && !test_bit(IVTV_F_I_PIO, &itv->i_flags)) { |
881 | itv->irq_rr_idx++; | ||
880 | for (i = 0; i < IVTV_MAX_STREAMS; i++) { | 882 | for (i = 0; i < IVTV_MAX_STREAMS; i++) { |
881 | int idx = (i + itv->irq_rr_idx++) % IVTV_MAX_STREAMS; | 883 | int idx = (i + itv->irq_rr_idx) % IVTV_MAX_STREAMS; |
882 | struct ivtv_stream *s = &itv->streams[idx]; | 884 | struct ivtv_stream *s = &itv->streams[idx]; |
883 | 885 | ||
884 | if (!test_and_clear_bit(IVTV_F_S_PIO_PENDING, &s->s_flags)) | 886 | if (!test_and_clear_bit(IVTV_F_S_PIO_PENDING, &s->s_flags)) |