Lines Matching refs:itv

25 static int ivtv_yuv_prep_user_dma(struct ivtv *itv, struct ivtv_user_dma *dma,  in ivtv_yuv_prep_user_dma()  argument
30 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_prep_user_dma()
116 dma->SG_length = pci_map_sg(itv->pdev, dma->SGlist, dma->page_count, PCI_DMA_TODEVICE); in ivtv_yuv_prep_user_dma()
132 ivtv_udma_sync_for_device(itv); in ivtv_yuv_prep_user_dma()
137 int ivtv_yuv_filter_check(struct ivtv *itv) in ivtv_yuv_filter_check() argument
151 static void ivtv_yuv_filter(struct ivtv *itv, int h_filter, int v_filter_1, int v_filter_2) in ivtv_yuv_filter() argument
211 static void ivtv_yuv_handle_horizontal(struct ivtv *itv, struct yuv_frame_info *f) in ivtv_yuv_handle_horizontal() argument
213 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_handle_horizontal()
368 ivtv_yuv_filter(itv, h_filter, -1, -1); in ivtv_yuv_handle_horizontal()
373 static void ivtv_yuv_handle_vertical(struct ivtv *itv, struct yuv_frame_info *f) in ivtv_yuv_handle_vertical() argument
375 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_handle_vertical()
640 ivtv_yuv_filter(itv, -1, v_filter_1, -1); in ivtv_yuv_handle_vertical()
646 ivtv_yuv_filter(itv, -1, -1, v_filter_2); in ivtv_yuv_handle_vertical()
652 static u32 ivtv_yuv_window_setup(struct ivtv *itv, struct yuv_frame_info *f) in ivtv_yuv_window_setup() argument
654 struct yuv_frame_info *of = &itv->yuv_info.old_frame_info; in ivtv_yuv_window_setup()
731 if (itv->yuv_info.track_osd) { in ivtv_yuv_window_setup()
733 f->dst_x += itv->yuv_info.osd_x_offset; in ivtv_yuv_window_setup()
734 f->dst_y += itv->yuv_info.osd_y_offset; in ivtv_yuv_window_setup()
797 void ivtv_yuv_work_handler(struct ivtv *itv) in ivtv_yuv_work_handler() argument
799 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_work_handler()
822 if (!(yuv_update = ivtv_yuv_window_setup(itv, &f))) in ivtv_yuv_work_handler()
831 ivtv_yuv_handle_horizontal(itv, &f); in ivtv_yuv_work_handler()
834 ivtv_yuv_handle_vertical(itv, &f); in ivtv_yuv_work_handler()
839 static void ivtv_yuv_init(struct ivtv *itv) in ivtv_yuv_init() argument
841 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_init()
900 if (!itv->osd_info) { in ivtv_yuv_init()
923 yi->blanking_dmaptr = pci_map_single(itv->pdev, yi->blanking_ptr, 720*16, PCI_DMA_TODEVICE); in ivtv_yuv_init()
932 set_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags); in ivtv_yuv_init()
937 static void ivtv_yuv_next_free(struct ivtv *itv) in ivtv_yuv_next_free() argument
940 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_next_free()
943 ivtv_yuv_init(itv); in ivtv_yuv_next_free()
960 static void ivtv_yuv_setup_frame(struct ivtv *itv, struct ivtv_dma_frame *args) in ivtv_yuv_setup_frame() argument
962 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_setup_frame()
1053 void ivtv_yuv_frame_complete(struct ivtv *itv) in ivtv_yuv_frame_complete() argument
1055 atomic_set(&itv->yuv_info.next_fill_frame, in ivtv_yuv_frame_complete()
1056 (itv->yuv_info.draw_frame + 1) % IVTV_YUV_BUFFERS); in ivtv_yuv_frame_complete()
1059 static int ivtv_yuv_udma_frame(struct ivtv *itv, struct ivtv_dma_frame *args) in ivtv_yuv_udma_frame() argument
1065 mutex_lock(&itv->udma.lock); in ivtv_yuv_udma_frame()
1067 if ((rc = ivtv_yuv_prep_user_dma(itv, &itv->udma, args)) != 0) { in ivtv_yuv_udma_frame()
1068 mutex_unlock(&itv->udma.lock); in ivtv_yuv_udma_frame()
1072 ivtv_udma_prepare(itv); in ivtv_yuv_udma_frame()
1073 prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE); in ivtv_yuv_udma_frame()
1076 while (test_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags) || in ivtv_yuv_udma_frame()
1077 test_bit(IVTV_F_I_UDMA, &itv->i_flags)) { in ivtv_yuv_udma_frame()
1081 if (got_sig && test_and_clear_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags)) in ivtv_yuv_udma_frame()
1086 finish_wait(&itv->dma_waitq, &wait); in ivtv_yuv_udma_frame()
1089 ivtv_udma_unmap(itv); in ivtv_yuv_udma_frame()
1093 mutex_unlock(&itv->udma.lock); in ivtv_yuv_udma_frame()
1097 ivtv_yuv_frame_complete(itv); in ivtv_yuv_udma_frame()
1099 mutex_unlock(&itv->udma.lock); in ivtv_yuv_udma_frame()
1104 void ivtv_yuv_setup_stream_frame(struct ivtv *itv) in ivtv_yuv_setup_stream_frame() argument
1106 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_setup_stream_frame()
1109 ivtv_yuv_next_free(itv); in ivtv_yuv_setup_stream_frame()
1123 ivtv_yuv_setup_frame(itv, &dma_args); in ivtv_yuv_setup_stream_frame()
1125 if (!itv->dma_data_req_offset) in ivtv_yuv_setup_stream_frame()
1126 itv->dma_data_req_offset = yuv_offset[yi->draw_frame]; in ivtv_yuv_setup_stream_frame()
1130 int ivtv_yuv_udma_stream_frame(struct ivtv *itv, void __user *src) in ivtv_yuv_udma_stream_frame() argument
1132 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_udma_stream_frame()
1136 ivtv_yuv_setup_stream_frame(itv); in ivtv_yuv_udma_stream_frame()
1144 mutex_unlock(&itv->serialize_lock); in ivtv_yuv_udma_stream_frame()
1145 res = ivtv_yuv_udma_frame(itv, &dma_args); in ivtv_yuv_udma_stream_frame()
1146 mutex_lock(&itv->serialize_lock); in ivtv_yuv_udma_stream_frame()
1151 int ivtv_yuv_prep_frame(struct ivtv *itv, struct ivtv_dma_frame *args) in ivtv_yuv_prep_frame() argument
1156 ivtv_yuv_next_free(itv); in ivtv_yuv_prep_frame()
1157 ivtv_yuv_setup_frame(itv, args); in ivtv_yuv_prep_frame()
1161 mutex_unlock(&itv->serialize_lock); in ivtv_yuv_prep_frame()
1162 res = ivtv_yuv_udma_frame(itv, args); in ivtv_yuv_prep_frame()
1163 mutex_lock(&itv->serialize_lock); in ivtv_yuv_prep_frame()
1167 void ivtv_yuv_close(struct ivtv *itv) in ivtv_yuv_close() argument
1169 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_yuv_close()
1173 mutex_unlock(&itv->serialize_lock); in ivtv_yuv_close()
1174 ivtv_waitq(&itv->vsync_waitq); in ivtv_yuv_close()
1175 mutex_lock(&itv->serialize_lock); in ivtv_yuv_close()
1255 ivtv_yuv_filter(itv, h_filter, v_filter_1, v_filter_2); in ivtv_yuv_close()
1267 pci_unmap_single(itv->pdev, yi->blanking_dmaptr, 720*16, PCI_DMA_TODEVICE); in ivtv_yuv_close()
1277 clear_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags); in ivtv_yuv_close()