Lines Matching defs:itv

25 static int ivtv_yuv_prep_user_dma(struct ivtv *itv, struct ivtv_user_dma *dma,
30 struct yuv_playback_info *yi = &itv->yuv_info;
115 dma->SG_length = dma_map_sg(&itv->pdev->dev, dma->SGlist,
132 ivtv_udma_sync_for_device(itv);
137 int ivtv_yuv_filter_check(struct ivtv *itv)
151 static void ivtv_yuv_filter(struct ivtv *itv, int h_filter, int v_filter_1, int v_filter_2)
211 static void ivtv_yuv_handle_horizontal(struct ivtv *itv, struct yuv_frame_info *f)
213 struct yuv_playback_info *yi = &itv->yuv_info;
368 ivtv_yuv_filter(itv, h_filter, -1, -1);
373 static void ivtv_yuv_handle_vertical(struct ivtv *itv, struct yuv_frame_info *f)
375 struct yuv_playback_info *yi = &itv->yuv_info;
640 ivtv_yuv_filter(itv, -1, v_filter_1, -1);
646 ivtv_yuv_filter(itv, -1, -1, v_filter_2);
652 static u32 ivtv_yuv_window_setup(struct ivtv *itv, struct yuv_frame_info *f)
654 struct yuv_frame_info *of = &itv->yuv_info.old_frame_info;
731 if (itv->yuv_info.track_osd) {
733 f->dst_x += itv->yuv_info.osd_x_offset;
734 f->dst_y += itv->yuv_info.osd_y_offset;
797 void ivtv_yuv_work_handler(struct ivtv *itv)
799 struct yuv_playback_info *yi = &itv->yuv_info;
822 if (!(yuv_update = ivtv_yuv_window_setup(itv, &f)))
831 ivtv_yuv_handle_horizontal(itv, &f);
834 ivtv_yuv_handle_vertical(itv, &f);
839 static void ivtv_yuv_init(struct ivtv *itv)
841 struct yuv_playback_info *yi = &itv->yuv_info;
900 if (!itv->osd_info) {
923 yi->blanking_dmaptr = dma_map_single(&itv->pdev->dev,
934 set_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags);
939 static void ivtv_yuv_next_free(struct ivtv *itv)
942 struct yuv_playback_info *yi = &itv->yuv_info;
945 ivtv_yuv_init(itv);
962 static void ivtv_yuv_setup_frame(struct ivtv *itv, struct ivtv_dma_frame *args)
964 struct yuv_playback_info *yi = &itv->yuv_info;
1055 void ivtv_yuv_frame_complete(struct ivtv *itv)
1057 atomic_set(&itv->yuv_info.next_fill_frame,
1058 (itv->yuv_info.draw_frame + 1) % IVTV_YUV_BUFFERS);
1061 static int ivtv_yuv_udma_frame(struct ivtv *itv, struct ivtv_dma_frame *args)
1067 mutex_lock(&itv->udma.lock);
1069 if ((rc = ivtv_yuv_prep_user_dma(itv, &itv->udma, args)) != 0) {
1070 mutex_unlock(&itv->udma.lock);
1074 ivtv_udma_prepare(itv);
1075 prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
1078 while (test_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags) ||
1079 test_bit(IVTV_F_I_UDMA, &itv->i_flags)) {
1083 if (got_sig && test_and_clear_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags))
1088 finish_wait(&itv->dma_waitq, &wait);
1091 ivtv_udma_unmap(itv);
1095 mutex_unlock(&itv->udma.lock);
1099 ivtv_yuv_frame_complete(itv);
1101 mutex_unlock(&itv->udma.lock);
1106 void ivtv_yuv_setup_stream_frame(struct ivtv *itv)
1108 struct yuv_playback_info *yi = &itv->yuv_info;
1111 ivtv_yuv_next_free(itv);
1125 ivtv_yuv_setup_frame(itv, &dma_args);
1127 if (!itv->dma_data_req_offset)
1128 itv->dma_data_req_offset = yuv_offset[yi->draw_frame];
1132 int ivtv_yuv_udma_stream_frame(struct ivtv *itv, void __user *src)
1134 struct yuv_playback_info *yi = &itv->yuv_info;
1138 ivtv_yuv_setup_stream_frame(itv);
1146 mutex_unlock(&itv->serialize_lock);
1147 res = ivtv_yuv_udma_frame(itv, &dma_args);
1148 mutex_lock(&itv->serialize_lock);
1153 int ivtv_yuv_prep_frame(struct ivtv *itv, struct ivtv_dma_frame *args)
1158 ivtv_yuv_next_free(itv);
1159 ivtv_yuv_setup_frame(itv, args);
1163 mutex_unlock(&itv->serialize_lock);
1164 res = ivtv_yuv_udma_frame(itv, args);
1165 mutex_lock(&itv->serialize_lock);
1169 void ivtv_yuv_close(struct ivtv *itv)
1171 struct yuv_playback_info *yi = &itv->yuv_info;
1175 mutex_unlock(&itv->serialize_lock);
1176 ivtv_waitq(&itv->vsync_waitq);
1177 mutex_lock(&itv->serialize_lock);
1257 ivtv_yuv_filter(itv, h_filter, v_filter_1, v_filter_2);
1269 dma_unmap_single(&itv->pdev->dev, yi->blanking_dmaptr,
1280 clear_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags);