Lines Matching full:s
20 static void ivtv_dma_dec_start(struct ivtv_stream *s);
31 struct ivtv_stream *s = &itv->streams[IVTV_ENC_STREAM_TYPE_PCM]; in ivtv_pcm_work_handler() local
43 buf = ivtv_dequeue(s, &s->q_io); in ivtv_pcm_work_handler()
45 buf = ivtv_dequeue(s, &s->q_full); in ivtv_pcm_work_handler()
54 ivtv_enqueue(s, buf, &s->q_free); in ivtv_pcm_work_handler()
60 struct ivtv_stream *s = &itv->streams[itv->cur_pio_stream]; in ivtv_pio_work_handler() local
66 s->vdev.v4l2_dev == NULL || !ivtv_use_pio(s)) { in ivtv_pio_work_handler()
72 IVTV_DEBUG_HI_DMA("Process PIO %s\n", s->name); in ivtv_pio_work_handler()
73 list_for_each_entry(buf, &s->q_dma.list, list) { in ivtv_pio_work_handler()
74 u32 size = s->sg_processing[i].size & 0x3ffff; in ivtv_pio_work_handler()
77 if (s->type == IVTV_DEC_STREAM_TYPE_VBI) { in ivtv_pio_work_handler()
78 memcpy_fromio(buf->buf, itv->dec_mem + s->sg_processing[i].src - IVTV_DECODER_OFFSET, size); in ivtv_pio_work_handler()
81 memcpy_fromio(buf->buf, itv->enc_mem + s->sg_processing[i].src, size); in ivtv_pio_work_handler()
84 if (i == s->sg_processing_size) in ivtv_pio_work_handler()
111 static int stream_enc_dma_append(struct ivtv_stream *s, u32 data[CX2341X_MBOX_MAX_DATA]) in stream_enc_dma_append() argument
113 struct ivtv *itv = s->itv; in stream_enc_dma_append()
118 int skip_bufs = s->q_predma.buffers; in stream_enc_dma_append()
119 int idx = s->sg_pending_size; in stream_enc_dma_append()
123 if (s->vdev.v4l2_dev == NULL) { in stream_enc_dma_append()
124 IVTV_DEBUG_WARN("Stream %s not started\n", s->name); in stream_enc_dma_append()
127 if (!test_bit(IVTV_F_S_CLAIMED, &s->s_flags)) { in stream_enc_dma_append()
128 IVTV_DEBUG_WARN("Stream %s not open\n", s->name); in stream_enc_dma_append()
133 switch (s->type) { in stream_enc_dma_append()
137 s->pending_pts = 0; in stream_enc_dma_append()
145 s->pending_pts = ((u64) data[5] << 32) | data[6]; in stream_enc_dma_append()
151 s->pending_pts = read_dec(offset - 8) | in stream_enc_dma_append()
164 s->pending_pts = read_enc(offset - 4) | ((u64)read_enc(offset - 8) << 32); in stream_enc_dma_append()
170 s->pending_pts = 0; in stream_enc_dma_append()
179 if (s->sg_pending_size == 0 && ivtv_use_dma(s)) { in stream_enc_dma_append()
180 if (itv->has_cx23415 && (s->type == IVTV_ENC_STREAM_TYPE_PCM || in stream_enc_dma_append()
181 s->type == IVTV_DEC_STREAM_TYPE_VBI)) { in stream_enc_dma_append()
182 s->pending_backup = read_dec(offset - IVTV_DECODER_OFFSET); in stream_enc_dma_append()
186 s->pending_backup = read_enc(offset); in stream_enc_dma_append()
189 s->pending_offset = offset; in stream_enc_dma_append()
193 if (s->type == IVTV_ENC_STREAM_TYPE_YUV) { in stream_enc_dma_append()
197 bytes_needed = s->buf_size * ((bytes_needed + s->buf_size - 1) / s->buf_size); in stream_enc_dma_append()
201 IVTV_DEBUG_HI_DMA("%s %s: 0x%08x bytes at 0x%08x\n", in stream_enc_dma_append()
202 ivtv_use_pio(s) ? "PIO" : "DMA", s->name, bytes_needed, offset); in stream_enc_dma_append()
204 rc = ivtv_queue_move(s, &s->q_free, &s->q_full, &s->q_predma, bytes_needed); in stream_enc_dma_append()
206 IVTV_DEBUG_WARN("Cannot obtain %d bytes for %s data transfer\n", in stream_enc_dma_append()
207 bytes_needed, s->name); in stream_enc_dma_append()
210 if (rc && !s->buffers_stolen && test_bit(IVTV_F_S_APPL_IO, &s->s_flags)) { in stream_enc_dma_append()
211 IVTV_WARN("All %s stream buffers are full. Dropping data.\n", s->name); in stream_enc_dma_append()
214 s->buffers_stolen = rc; in stream_enc_dma_append()
217 buf = list_entry(s->q_predma.list.next, struct ivtv_buffer, list); in stream_enc_dma_append()
219 list_for_each_entry(buf, &s->q_predma.list, list) { in stream_enc_dma_append()
222 s->sg_pending[idx].dst = buf->dma_handle; in stream_enc_dma_append()
223 s->sg_pending[idx].src = offset; in stream_enc_dma_append()
224 s->sg_pending[idx].size = s->buf_size; in stream_enc_dma_append()
225 buf->bytesused = min(size, s->buf_size); in stream_enc_dma_append()
226 buf->dma_xfer_cnt = s->dma_xfer_cnt; in stream_enc_dma_append()
228 s->q_predma.bytesused += buf->bytesused; in stream_enc_dma_append()
230 offset += s->buf_size; in stream_enc_dma_append()
233 ivtv_buf_sync_for_device(s, buf); in stream_enc_dma_append()
242 s->sg_pending_size = idx; in stream_enc_dma_append()
246 static void dma_post(struct ivtv_stream *s) in dma_post() argument
248 struct ivtv *itv = s->itv; in dma_post()
255 IVTV_DEBUG_HI_DMA("%s %s completed (%x)\n", ivtv_use_pio(s) ? "PIO" : "DMA", in dma_post()
256 s->name, s->dma_offset); in dma_post()
257 list_for_each(p, &s->q_dma.list) { in dma_post()
262 ivtv_buf_sync_for_cpu(s, buf); in dma_post()
264 if (x == 0 && ivtv_use_dma(s)) { in dma_post()
265 offset = s->dma_last_offset; in dma_post()
273 IVTV_DEBUG_WARN("%s: Couldn't find start of buffer within the first 256 bytes\n", s->name); in dma_post()
274 offset = s->dma_last_offset; in dma_post()
276 if (s->dma_last_offset != offset) in dma_post()
277 IVTV_DEBUG_WARN("%s: offset %d -> %d\n", s->name, s->dma_last_offset, offset); in dma_post()
278 s->dma_last_offset = offset; in dma_post()
280 if (itv->has_cx23415 && (s->type == IVTV_ENC_STREAM_TYPE_PCM || in dma_post()
281 s->type == IVTV_DEC_STREAM_TYPE_VBI)) { in dma_post()
282 write_dec_sync(0, s->dma_offset - IVTV_DECODER_OFFSET); in dma_post()
285 write_enc_sync(0, s->dma_offset); in dma_post()
291 *u32buf = cpu_to_le32(s->dma_backup); in dma_post()
295 if (s->type == IVTV_ENC_STREAM_TYPE_MPG || in dma_post()
296 s->type == IVTV_ENC_STREAM_TYPE_VBI) in dma_post()
300 buf->bytesused += s->dma_last_offset; in dma_post()
301 if (buf && s->type == IVTV_DEC_STREAM_TYPE_VBI) { in dma_post()
302 list_for_each_entry(buf, &s->q_dma.list, list) { in dma_post()
304 s->q_dma.bytesused -= buf->bytesused; in dma_post()
305 ivtv_process_vbi_data(itv, buf, 0, s->type); in dma_post()
306 s->q_dma.bytesused += buf->bytesused; in dma_post()
308 if (s->fh == NULL) { in dma_post()
309 ivtv_queue_move(s, &s->q_dma, NULL, &s->q_free, 0); in dma_post()
314 ivtv_queue_move(s, &s->q_dma, NULL, &s->q_full, s->q_dma.bytesused); in dma_post()
316 if (s->type == IVTV_ENC_STREAM_TYPE_PCM && in dma_post()
333 if (s->fh) in dma_post()
334 wake_up(&s->waitq); in dma_post()
337 void ivtv_dma_stream_dec_prepare(struct ivtv_stream *s, u32 offset, int lock) in ivtv_dma_stream_dec_prepare() argument
339 struct ivtv *itv = s->itv; in ivtv_dma_stream_dec_prepare()
350 IVTV_DEBUG_HI_DMA("DEC PREPARE DMA %s: %08x %08x\n", s->name, s->q_predma.bytesused, offset); in ivtv_dma_stream_dec_prepare()
353 if (s->type == IVTV_DEC_STREAM_TYPE_YUV && f->offset_y) { in ivtv_dma_stream_dec_prepare()
355 s->sg_pending[idx].src = yi->blanking_dmaptr; in ivtv_dma_stream_dec_prepare()
356 s->sg_pending[idx].dst = offset; in ivtv_dma_stream_dec_prepare()
357 s->sg_pending[idx].size = 720 * 16; in ivtv_dma_stream_dec_prepare()
363 list_for_each_entry(buf, &s->q_predma.list, list) { in ivtv_dma_stream_dec_prepare()
365 if (s->type == IVTV_DEC_STREAM_TYPE_YUV && !y_done && in ivtv_dma_stream_dec_prepare()
367 s->sg_pending[idx].src = buf->dma_handle; in ivtv_dma_stream_dec_prepare()
368 s->sg_pending[idx].dst = offset; in ivtv_dma_stream_dec_prepare()
369 s->sg_pending[idx].size = y_size - bytes_written; in ivtv_dma_stream_dec_prepare()
371 if (s->sg_pending[idx].size != buf->bytesused) { in ivtv_dma_stream_dec_prepare()
373 s->sg_pending[idx].src = in ivtv_dma_stream_dec_prepare()
374 buf->dma_handle + s->sg_pending[idx - 1].size; in ivtv_dma_stream_dec_prepare()
375 s->sg_pending[idx].dst = offset; in ivtv_dma_stream_dec_prepare()
376 s->sg_pending[idx].size = in ivtv_dma_stream_dec_prepare()
377 buf->bytesused - s->sg_pending[idx - 1].size; in ivtv_dma_stream_dec_prepare()
378 offset += s->sg_pending[idx].size; in ivtv_dma_stream_dec_prepare()
382 s->sg_pending[idx].src = buf->dma_handle; in ivtv_dma_stream_dec_prepare()
383 s->sg_pending[idx].dst = offset; in ivtv_dma_stream_dec_prepare()
384 s->sg_pending[idx].size = buf->bytesused; in ivtv_dma_stream_dec_prepare()
390 ivtv_buf_sync_for_device(s, buf); in ivtv_dma_stream_dec_prepare()
393 s->sg_pending_size = idx; in ivtv_dma_stream_dec_prepare()
396 ivtv_stream_sync_for_device(s); in ivtv_dma_stream_dec_prepare()
402 ivtv_dma_dec_start(s); in ivtv_dma_stream_dec_prepare()
404 set_bit(IVTV_F_S_DMA_PENDING, &s->s_flags); in ivtv_dma_stream_dec_prepare()
408 ivtv_dma_dec_start(s); in ivtv_dma_stream_dec_prepare()
410 set_bit(IVTV_F_S_DMA_PENDING, &s->s_flags); in ivtv_dma_stream_dec_prepare()
414 static void ivtv_dma_enc_start_xfer(struct ivtv_stream *s) in ivtv_dma_enc_start_xfer() argument
416 struct ivtv *itv = s->itv; in ivtv_dma_enc_start_xfer()
418 s->sg_dma->src = cpu_to_le32(s->sg_processing[s->sg_processed].src); in ivtv_dma_enc_start_xfer()
419 s->sg_dma->dst = cpu_to_le32(s->sg_processing[s->sg_processed].dst); in ivtv_dma_enc_start_xfer()
420 s->sg_dma->size = cpu_to_le32(s->sg_processing[s->sg_processed].size | 0x80000000); in ivtv_dma_enc_start_xfer()
421 s->sg_processed++; in ivtv_dma_enc_start_xfer()
423 ivtv_stream_sync_for_device(s); in ivtv_dma_enc_start_xfer()
424 write_reg(s->sg_handle, IVTV_REG_ENCDMAADDR); in ivtv_dma_enc_start_xfer()
430 static void ivtv_dma_dec_start_xfer(struct ivtv_stream *s) in ivtv_dma_dec_start_xfer() argument
432 struct ivtv *itv = s->itv; in ivtv_dma_dec_start_xfer()
434 s->sg_dma->src = cpu_to_le32(s->sg_processing[s->sg_processed].src); in ivtv_dma_dec_start_xfer()
435 s->sg_dma->dst = cpu_to_le32(s->sg_processing[s->sg_processed].dst); in ivtv_dma_dec_start_xfer()
436 s->sg_dma->size = cpu_to_le32(s->sg_processing[s->sg_processed].size | 0x80000000); in ivtv_dma_dec_start_xfer()
437 s->sg_processed++; in ivtv_dma_dec_start_xfer()
439 ivtv_stream_sync_for_device(s); in ivtv_dma_dec_start_xfer()
440 write_reg(s->sg_handle, IVTV_REG_DECDMAADDR); in ivtv_dma_dec_start_xfer()
447 static void ivtv_dma_enc_start(struct ivtv_stream *s) in ivtv_dma_enc_start() argument
449 struct ivtv *itv = s->itv; in ivtv_dma_enc_start()
453 IVTV_DEBUG_HI_DMA("start %s for %s\n", ivtv_use_dma(s) ? "DMA" : "PIO", s->name); in ivtv_dma_enc_start()
455 if (s->q_predma.bytesused) in ivtv_dma_enc_start()
456 ivtv_queue_move(s, &s->q_predma, NULL, &s->q_dma, s->q_predma.bytesused); in ivtv_dma_enc_start()
458 if (ivtv_use_dma(s)) in ivtv_dma_enc_start()
459 s->sg_pending[s->sg_pending_size - 1].size += 256; in ivtv_dma_enc_start()
469 clear_bit(IVTV_F_S_DMA_HAS_VBI, &s->s_flags); in ivtv_dma_enc_start()
470 if (s->type == IVTV_ENC_STREAM_TYPE_MPG && s_vbi->sg_pending_size && in ivtv_dma_enc_start()
471 s->sg_pending_size + s_vbi->sg_pending_size <= s->buffers) { in ivtv_dma_enc_start()
476 s->sg_pending[s->sg_pending_size++] = s_vbi->sg_pending[i]; in ivtv_dma_enc_start()
481 set_bit(IVTV_F_S_DMA_HAS_VBI, &s->s_flags); in ivtv_dma_enc_start()
482 IVTV_DEBUG_HI_DMA("include DMA for %s\n", s_vbi->name); in ivtv_dma_enc_start()
485 s->dma_xfer_cnt++; in ivtv_dma_enc_start()
486 memcpy(s->sg_processing, s->sg_pending, sizeof(struct ivtv_sg_host_element) * s->sg_pending_size); in ivtv_dma_enc_start()
487 s->sg_processing_size = s->sg_pending_size; in ivtv_dma_enc_start()
488 s->sg_pending_size = 0; in ivtv_dma_enc_start()
489 s->sg_processed = 0; in ivtv_dma_enc_start()
490 s->dma_offset = s->pending_offset; in ivtv_dma_enc_start()
491 s->dma_backup = s->pending_backup; in ivtv_dma_enc_start()
492 s->dma_pts = s->pending_pts; in ivtv_dma_enc_start()
494 if (ivtv_use_pio(s)) { in ivtv_dma_enc_start()
498 itv->cur_pio_stream = s->type; in ivtv_dma_enc_start()
502 ivtv_dma_enc_start_xfer(s); in ivtv_dma_enc_start()
504 itv->cur_dma_stream = s->type; in ivtv_dma_enc_start()
508 static void ivtv_dma_dec_start(struct ivtv_stream *s) in ivtv_dma_dec_start() argument
510 struct ivtv *itv = s->itv; in ivtv_dma_dec_start()
512 if (s->q_predma.bytesused) in ivtv_dma_dec_start()
513 ivtv_queue_move(s, &s->q_predma, NULL, &s->q_dma, s->q_predma.bytesused); in ivtv_dma_dec_start()
514 s->dma_xfer_cnt++; in ivtv_dma_dec_start()
515 memcpy(s->sg_processing, s->sg_pending, sizeof(struct ivtv_sg_host_element) * s->sg_pending_size); in ivtv_dma_dec_start()
516 s->sg_processing_size = s->sg_pending_size; in ivtv_dma_dec_start()
517 s->sg_pending_size = 0; in ivtv_dma_dec_start()
518 s->sg_processed = 0; in ivtv_dma_dec_start()
520 IVTV_DEBUG_HI_DMA("start DMA for %s\n", s->name); in ivtv_dma_dec_start()
522 ivtv_dma_dec_start_xfer(s); in ivtv_dma_dec_start()
524 itv->cur_dma_stream = s->type; in ivtv_dma_dec_start()
529 struct ivtv_stream *s = NULL; in ivtv_irq_dma_read() local
541 s = &itv->streams[itv->cur_dma_stream]; in ivtv_irq_dma_read()
542 ivtv_stream_sync_for_cpu(s); in ivtv_irq_dma_read()
547 s->sg_processed, s->sg_processing_size, itv->dma_retries); in ivtv_irq_dma_read()
552 s->sg_processed = s->sg_processing_size; in ivtv_irq_dma_read()
557 s->sg_processed = 0; in ivtv_irq_dma_read()
561 if (s->sg_processed < s->sg_processing_size) { in ivtv_irq_dma_read()
563 ivtv_dma_dec_start_xfer(s); in ivtv_irq_dma_read()
566 if (s->type == IVTV_DEC_STREAM_TYPE_YUV) in ivtv_irq_dma_read()
568 IVTV_DEBUG_HI_DMA("DEC DATA READ %s: %d\n", s->name, s->q_dma.bytesused); in ivtv_irq_dma_read()
576 ivtv_vapi(itv, CX2341X_DEC_SCHED_DMA_FROM_HOST, 3, 0, s->q_dma.bytesused, in ivtv_irq_dma_read()
580 while ((buf = ivtv_dequeue(s, &s->q_dma)) != NULL) { in ivtv_irq_dma_read()
581 ivtv_buf_sync_for_cpu(s, buf); in ivtv_irq_dma_read()
582 ivtv_enqueue(s, buf, &s->q_free); in ivtv_irq_dma_read()
584 wake_up(&s->waitq); in ivtv_irq_dma_read()
595 struct ivtv_stream *s; in ivtv_irq_enc_dma_complete() local
605 s = &itv->streams[itv->cur_dma_stream]; in ivtv_irq_enc_dma_complete()
606 ivtv_stream_sync_for_cpu(s); in ivtv_irq_enc_dma_complete()
610 s->dma_offset, s->sg_processed, s->sg_processing_size, itv->dma_retries); in ivtv_irq_enc_dma_complete()
615 s->sg_processed = s->sg_processing_size; in ivtv_irq_enc_dma_complete()
620 s->sg_processed = 0; in ivtv_irq_enc_dma_complete()
624 if (s->sg_processed < s->sg_processing_size) { in ivtv_irq_enc_dma_complete()
626 ivtv_dma_enc_start_xfer(s); in ivtv_irq_enc_dma_complete()
631 dma_post(s); in ivtv_irq_enc_dma_complete()
632 if (test_and_clear_bit(IVTV_F_S_DMA_HAS_VBI, &s->s_flags)) { in ivtv_irq_enc_dma_complete()
633 s = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI]; in ivtv_irq_enc_dma_complete()
634 dma_post(s); in ivtv_irq_enc_dma_complete()
636 s->sg_processing_size = 0; in ivtv_irq_enc_dma_complete()
637 s->sg_processed = 0; in ivtv_irq_enc_dma_complete()
643 struct ivtv_stream *s; in ivtv_irq_enc_pio_complete() local
649 s = &itv->streams[itv->cur_pio_stream]; in ivtv_irq_enc_pio_complete()
650 IVTV_DEBUG_HI_IRQ("ENC PIO COMPLETE %s\n", s->name); in ivtv_irq_enc_pio_complete()
653 dma_post(s); in ivtv_irq_enc_pio_complete()
654 if (s->type == IVTV_ENC_STREAM_TYPE_MPG) in ivtv_irq_enc_pio_complete()
656 else if (s->type == IVTV_ENC_STREAM_TYPE_YUV) in ivtv_irq_enc_pio_complete()
658 else if (s->type == IVTV_ENC_STREAM_TYPE_PCM) in ivtv_irq_enc_pio_complete()
661 if (test_and_clear_bit(IVTV_F_S_DMA_HAS_VBI, &s->s_flags)) { in ivtv_irq_enc_pio_complete()
662 s = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI]; in ivtv_irq_enc_pio_complete()
663 dma_post(s); in ivtv_irq_enc_pio_complete()
694 struct ivtv_stream *s = &itv->streams[itv->cur_dma_stream]; in ivtv_irq_dma_err() local
696 if (s->type >= IVTV_DEC_STREAM_TYPE_MPG) { in ivtv_irq_dma_err()
702 ivtv_dma_dec_start(s); in ivtv_irq_dma_err()
723 s->sg_processed = 0; in ivtv_irq_dma_err()
725 ivtv_dma_enc_start_xfer(s); in ivtv_irq_dma_err()
745 struct ivtv_stream *s; in ivtv_irq_enc_start_cap() local
756 s = &itv->streams[ivtv_stream_map[data[0]]]; in ivtv_irq_enc_start_cap()
757 if (!stream_enc_dma_append(s, data)) { in ivtv_irq_enc_start_cap()
758 set_bit(ivtv_use_pio(s) ? IVTV_F_S_PIO_PENDING : IVTV_F_S_DMA_PENDING, &s->s_flags); in ivtv_irq_enc_start_cap()
765 struct ivtv_stream *s; in ivtv_irq_enc_vbi_cap() local
768 s = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI]; in ivtv_irq_enc_vbi_cap()
770 if (!stream_enc_dma_append(s, data)) in ivtv_irq_enc_vbi_cap()
771 set_bit(ivtv_use_pio(s) ? IVTV_F_S_PIO_PENDING : IVTV_F_S_DMA_PENDING, &s->s_flags); in ivtv_irq_enc_vbi_cap()
777 struct ivtv_stream *s = &itv->streams[IVTV_DEC_STREAM_TYPE_VBI]; in ivtv_irq_dec_vbi_reinsert() local
780 if (test_bit(IVTV_F_S_CLAIMED, &s->s_flags) && in ivtv_irq_dec_vbi_reinsert()
781 !stream_enc_dma_append(s, data)) { in ivtv_irq_dec_vbi_reinsert()
782 set_bit(IVTV_F_S_PIO_PENDING, &s->s_flags); in ivtv_irq_dec_vbi_reinsert()
789 struct ivtv_stream *s; in ivtv_irq_dec_data_req() local
800 s = &itv->streams[IVTV_DEC_STREAM_TYPE_YUV]; in ivtv_irq_dec_data_req()
806 s = &itv->streams[IVTV_DEC_STREAM_TYPE_MPG]; in ivtv_irq_dec_data_req()
808 IVTV_DEBUG_HI_IRQ("DEC DATA REQ %s: %d %08x %u\n", s->name, s->q_full.bytesused, in ivtv_irq_dec_data_req()
810 if (itv->dma_data_req_size == 0 || s->q_full.bytesused < itv->dma_data_req_size) { in ivtv_irq_dec_data_req()
811 set_bit(IVTV_F_S_NEEDS_DATA, &s->s_flags); in ivtv_irq_dec_data_req()
816 clear_bit(IVTV_F_S_NEEDS_DATA, &s->s_flags); in ivtv_irq_dec_data_req()
817 ivtv_queue_move(s, &s->q_full, NULL, &s->q_predma, itv->dma_data_req_size); in ivtv_irq_dec_data_req()
818 ivtv_dma_stream_dec_prepare(s, itv->dma_data_req_offset + IVTV_DECODER_OFFSET, 0); in ivtv_irq_dec_data_req()
865 struct ivtv_stream *s = ivtv_get_output_stream(itv); in ivtv_irq_vsync() local
878 if (s) in ivtv_irq_vsync()
879 wake_up(&s->waitq); in ivtv_irq_vsync()
881 if (s && s->vdev.v4l2_dev) in ivtv_irq_vsync()
882 v4l2_event_queue(&s->vdev, frame ? &evtop : &evbottom); in ivtv_irq_vsync()
1022 struct ivtv_stream *s = &itv->streams[idx]; in ivtv_irq_handler() local
1024 if (!test_and_clear_bit(IVTV_F_S_DMA_PENDING, &s->s_flags)) in ivtv_irq_handler()
1026 if (s->type >= IVTV_DEC_STREAM_TYPE_MPG) in ivtv_irq_handler()
1027 ivtv_dma_dec_start(s); in ivtv_irq_handler()
1029 ivtv_dma_enc_start(s); in ivtv_irq_handler()
1042 struct ivtv_stream *s = &itv->streams[idx]; in ivtv_irq_handler() local
1044 if (!test_and_clear_bit(IVTV_F_S_PIO_PENDING, &s->s_flags)) in ivtv_irq_handler()
1046 if (s->type == IVTV_DEC_STREAM_TYPE_VBI || s->type < IVTV_DEC_STREAM_TYPE_MPG) in ivtv_irq_handler()
1047 ivtv_dma_enc_start(s); in ivtv_irq_handler()
1058 /* If we've just handled a 'forced' vsync, it's safest to say it in ivtv_irq_handler()