Lines Matching refs:dma_q
180 struct cx231xx_dmaqueue *dma_q, in buffer_filled() argument
239 static inline void get_next_buf(struct cx231xx_dmaqueue *dma_q, in get_next_buf() argument
243 container_of(dma_q, struct cx231xx_video_mode, vidq); in get_next_buf()
248 if (list_empty(&dma_q->active)) { in get_next_buf()
259 *buf = list_entry(dma_q->active.next, struct cx231xx_buffer, vb.queue); in get_next_buf()
278 struct cx231xx_dmaqueue *dma_q = urb->context; in cx231xx_isoc_copy() local
320 if (dma_q->is_partial_line) { in cx231xx_isoc_copy()
322 sav_eav = dma_q->last_sav; in cx231xx_isoc_copy()
328 dma_q->partial_buf, in cx231xx_isoc_copy()
336 bytes_parsed += cx231xx_get_video_line(dev, dma_q, in cx231xx_isoc_copy()
358 dma_q, sav_eav, /* SAV/EAV */ in cx231xx_isoc_copy()
366 memcpy(dma_q->partial_buf, p_buffer + buffer_size - 4, 4); in cx231xx_isoc_copy()
375 struct cx231xx_dmaqueue *dma_q = urb->context; in cx231xx_bulk_copy() local
399 if (dma_q->is_partial_line) { in cx231xx_bulk_copy()
401 sav_eav = dma_q->last_sav; in cx231xx_bulk_copy()
407 dma_q->partial_buf, in cx231xx_bulk_copy()
415 bytes_parsed += cx231xx_get_video_line(dev, dma_q, in cx231xx_bulk_copy()
437 dma_q, sav_eav, /* SAV/EAV */ in cx231xx_bulk_copy()
445 memcpy(dma_q->partial_buf, p_buffer + buffer_size - 4, 4); in cx231xx_bulk_copy()
512 struct cx231xx_dmaqueue *dma_q, u8 sav_eav, in cx231xx_get_video_line() argument
548 dma_q->last_sav = sav_eav; in cx231xx_get_video_line()
550 bytes_copied = cx231xx_copy_video_line(dev, dma_q, p_buffer, in cx231xx_get_video_line()
557 struct cx231xx_dmaqueue *dma_q, u8 *p_line, in cx231xx_copy_video_line() argument
564 if (dma_q->current_field != field_number) in cx231xx_copy_video_line()
565 cx231xx_reset_video_buffer(dev, dma_q); in cx231xx_copy_video_line()
574 dma_q->current_field = field_number; in cx231xx_copy_video_line()
576 bytes_to_copy = dma_q->bytes_left_in_line; in cx231xx_copy_video_line()
580 if (dma_q->lines_completed >= dma_q->lines_per_field) { in cx231xx_copy_video_line()
581 dma_q->bytes_left_in_line -= bytes_to_copy; in cx231xx_copy_video_line()
582 dma_q->is_partial_line = (dma_q->bytes_left_in_line == 0) ? in cx231xx_copy_video_line()
587 dma_q->is_partial_line = 1; in cx231xx_copy_video_line()
592 dma_q->bytes_left_in_line -= bytes_to_copy; in cx231xx_copy_video_line()
593 dma_q->is_partial_line = (dma_q->bytes_left_in_line == 0) in cx231xx_copy_video_line()
599 cx231xx_do_copy(dev, dma_q, p_line, bytes_to_copy); in cx231xx_copy_video_line()
601 dma_q->pos += bytes_to_copy; in cx231xx_copy_video_line()
602 dma_q->bytes_left_in_line -= bytes_to_copy; in cx231xx_copy_video_line()
604 if (dma_q->bytes_left_in_line == 0) { in cx231xx_copy_video_line()
605 dma_q->bytes_left_in_line = _line_size; in cx231xx_copy_video_line()
606 dma_q->lines_completed++; in cx231xx_copy_video_line()
607 dma_q->is_partial_line = 0; in cx231xx_copy_video_line()
609 if (cx231xx_is_buffer_done(dev, dma_q) && buf) { in cx231xx_copy_video_line()
610 buffer_filled(dev, dma_q, buf); in cx231xx_copy_video_line()
612 dma_q->pos = 0; in cx231xx_copy_video_line()
614 dma_q->lines_completed = 0; in cx231xx_copy_video_line()
622 struct cx231xx_dmaqueue *dma_q) in cx231xx_reset_video_buffer() argument
627 if (dma_q->current_field == 1) { in cx231xx_reset_video_buffer()
628 if (dma_q->lines_completed >= dma_q->lines_per_field) in cx231xx_reset_video_buffer()
629 dma_q->field1_done = 1; in cx231xx_reset_video_buffer()
631 dma_q->field1_done = 0; in cx231xx_reset_video_buffer()
641 get_next_buf(dma_q, &buf); in cx231xx_reset_video_buffer()
643 dma_q->pos = 0; in cx231xx_reset_video_buffer()
644 dma_q->field1_done = 0; in cx231xx_reset_video_buffer()
645 dma_q->current_field = -1; in cx231xx_reset_video_buffer()
649 dma_q->bytes_left_in_line = dev->width << 1; in cx231xx_reset_video_buffer()
650 dma_q->lines_completed = 0; in cx231xx_reset_video_buffer()
653 int cx231xx_do_copy(struct cx231xx *dev, struct cx231xx_dmaqueue *dma_q, in cx231xx_do_copy() argument
673 current_line_bytes_copied = _line_size - dma_q->bytes_left_in_line; in cx231xx_do_copy()
676 offset = (dma_q->current_field == 1) ? 0 : _line_size; in cx231xx_do_copy()
682 startwrite += (dma_q->lines_completed * _line_size * 2); in cx231xx_do_copy()
687 lencopy = dma_q->bytes_left_in_line > bytes_to_copy ? in cx231xx_do_copy()
688 bytes_to_copy : dma_q->bytes_left_in_line; in cx231xx_do_copy()
710 u8 cx231xx_is_buffer_done(struct cx231xx *dev, struct cx231xx_dmaqueue *dma_q) in cx231xx_is_buffer_done() argument
715 buffer_complete = ((dma_q->current_field == 2) && in cx231xx_is_buffer_done()
716 (dma_q->lines_completed >= dma_q->lines_per_field) && in cx231xx_is_buffer_done()
717 dma_q->field1_done); in cx231xx_is_buffer_done()