aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2007-08-18 10:36:09 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-10-09 21:05:27 -0400
commit33bc4dea0ece371ccadbac8bf90fd0b8e2803f06 (patch)
tree4cffc487c1366de00a4193e6bd4c7f37d253e9b6
parentb1139e353c7fc636bfe413f3296ba0284eb60c2e (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>
-rw-r--r--drivers/media/video/ivtv/ivtv-irq.c6
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))