Lines Matching refs:itv

127 void ivtv_set_osd_alpha(struct ivtv *itv)  in ivtv_set_osd_alpha()  argument
129 ivtv_vapi(itv, CX2341X_OSD_SET_GLOBAL_ALPHA, 3, in ivtv_set_osd_alpha()
130 itv->osd_global_alpha_state, itv->osd_global_alpha, !itv->osd_local_alpha_state); in ivtv_set_osd_alpha()
131 ivtv_vapi(itv, CX2341X_OSD_SET_CHROMA_KEY, 2, itv->osd_chroma_key_state, itv->osd_chroma_key); in ivtv_set_osd_alpha()
134 int ivtv_set_speed(struct ivtv *itv, int speed) in ivtv_set_speed() argument
143 if (speed == itv->speed && !single_step) in ivtv_set_speed()
146 if (single_step && (speed < 0) == (itv->speed < 0)) { in ivtv_set_speed()
148 ivtv_vapi(itv, CX2341X_DEC_STEP_VIDEO, 1, 0); in ivtv_set_speed()
149 itv->speed = speed; in ivtv_set_speed()
160 data[3] = v4l2_ctrl_g_ctrl(itv->cxhdl.video_b_frames); in ivtv_set_speed()
161 data[4] = (speed == 1500 || speed == 500) ? itv->speed_mute_audio : 0; in ivtv_set_speed()
171 if (atomic_read(&itv->decoding) > 0) { in ivtv_set_speed()
175 ivtv_vapi(itv, CX2341X_DEC_PAUSE_PLAYBACK, 1, 0); in ivtv_set_speed()
178 mutex_unlock(&itv->serialize_lock); in ivtv_set_speed()
179 prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE); in ivtv_set_speed()
180 while (test_bit(IVTV_F_I_DMA, &itv->i_flags)) { in ivtv_set_speed()
187 finish_wait(&itv->dma_waitq, &wait); in ivtv_set_speed()
188 mutex_lock(&itv->serialize_lock); in ivtv_set_speed()
193 ivtv_api(itv, CX2341X_DEC_SET_PLAYBACK_SPEED, 7, data); in ivtv_set_speed()
199 ivtv_vapi(itv, CX2341X_DEC_STEP_VIDEO, 1, 0); in ivtv_set_speed()
201 itv->speed = speed; in ivtv_set_speed()
244 static int ivtv_video_command(struct ivtv *itv, struct ivtv_open_id *id, in ivtv_video_command() argument
247 struct ivtv_stream *s = &itv->streams[IVTV_DEC_STREAM_TYPE_MPG]; in ivtv_video_command()
249 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_video_command()
255 dc->start.speed = ivtv_validate_speed(itv->speed, dc->start.speed); in ivtv_video_command()
265 itv->speed_mute_audio = dc->flags & V4L2_DEC_CMD_START_MUTE_AUDIO; in ivtv_video_command()
266 if (ivtv_set_output_mode(itv, OUT_MPG) != OUT_MPG) in ivtv_video_command()
268 if (test_and_clear_bit(IVTV_F_I_DEC_PAUSED, &itv->i_flags)) { in ivtv_video_command()
270 itv->speed = 0; in ivtv_video_command()
280 if (atomic_read(&itv->decoding) == 0) in ivtv_video_command()
282 if (itv->output_mode != OUT_MPG) in ivtv_video_command()
285 itv->output_mode = OUT_NONE; in ivtv_video_command()
291 if (!atomic_read(&itv->decoding)) in ivtv_video_command()
293 if (itv->output_mode != OUT_MPG) in ivtv_video_command()
295 if (atomic_read(&itv->decoding) > 0) { in ivtv_video_command()
296 ivtv_vapi(itv, CX2341X_DEC_PAUSE_PLAYBACK, 1, in ivtv_video_command()
298 set_bit(IVTV_F_I_DEC_PAUSED, &itv->i_flags); in ivtv_video_command()
305 if (!atomic_read(&itv->decoding)) in ivtv_video_command()
307 if (itv->output_mode != OUT_MPG) in ivtv_video_command()
309 if (test_and_clear_bit(IVTV_F_I_DEC_PAUSED, &itv->i_flags)) { in ivtv_video_command()
310 int speed = itv->speed; in ivtv_video_command()
311 itv->speed = 0; in ivtv_video_command()
324 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_fmt_sliced_vbi_out() local
329 if (!(itv->v4l2_cap & V4L2_CAP_SLICED_VBI_OUTPUT)) in ivtv_g_fmt_sliced_vbi_out()
333 if (itv->is_60hz) { in ivtv_g_fmt_sliced_vbi_out()
347 struct ivtv *itv = id->itv; in ivtv_g_fmt_vid_cap() local
350 pixfmt->width = itv->cxhdl.width; in ivtv_g_fmt_vid_cap()
351 pixfmt->height = itv->cxhdl.height; in ivtv_g_fmt_vid_cap()
369 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_fmt_vbi_cap() local
374 vbifmt->samples_per_line = itv->vbi.raw_decoder_line_size - 4; in ivtv_g_fmt_vbi_cap()
376 vbifmt->start[0] = itv->vbi.start[0]; in ivtv_g_fmt_vbi_cap()
377 vbifmt->start[1] = itv->vbi.start[1]; in ivtv_g_fmt_vbi_cap()
378 vbifmt->count[0] = vbifmt->count[1] = itv->vbi.count; in ivtv_g_fmt_vbi_cap()
389 struct ivtv *itv = id->itv; in ivtv_g_fmt_sliced_vbi_cap() local
396 vbifmt->service_set = itv->is_50hz ? V4L2_SLICED_VBI_625 : in ivtv_g_fmt_sliced_vbi_cap()
398 ivtv_expand_service_set(vbifmt, itv->is_50hz); in ivtv_g_fmt_sliced_vbi_cap()
403 v4l2_subdev_call(itv->sd_video, vbi, g_sliced_fmt, vbifmt); in ivtv_g_fmt_sliced_vbi_cap()
411 struct ivtv *itv = id->itv; in ivtv_g_fmt_vid_out() local
414 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_g_fmt_vid_out()
416 pixfmt->width = itv->main_rect.width; in ivtv_g_fmt_vid_out()
417 pixfmt->height = itv->main_rect.height; in ivtv_g_fmt_vid_out()
421 switch (itv->yuv_info.lace_mode & IVTV_YUV_MODE_MASK) { in ivtv_g_fmt_vid_out()
423 pixfmt->field = (itv->yuv_info.lace_mode & IVTV_YUV_SYNC_MASK) ? in ivtv_g_fmt_vid_out()
435 pixfmt->width = itv->yuv_info.v4l2_src_w; in ivtv_g_fmt_vid_out()
436 pixfmt->height = itv->yuv_info.v4l2_src_h; in ivtv_g_fmt_vid_out()
450 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_fmt_vid_out_overlay() local
451 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_g_fmt_vid_out_overlay()
456 if (!itv->osd_video_pbase) in ivtv_g_fmt_vid_out_overlay()
458 winfmt->chromakey = itv->osd_chroma_key; in ivtv_g_fmt_vid_out_overlay()
459 winfmt->global_alpha = itv->osd_global_alpha; in ivtv_g_fmt_vid_out_overlay()
465 winfmt->w.width = itv->osd_rect.width; in ivtv_g_fmt_vid_out_overlay()
466 winfmt->w.height = itv->osd_rect.height; in ivtv_g_fmt_vid_out_overlay()
478 struct ivtv *itv = id->itv; in ivtv_try_fmt_vid_cap() local
490 h = min(h, itv->is_50hz ? 576 : 480); in ivtv_try_fmt_vid_cap()
507 struct ivtv *itv = id->itv; in ivtv_try_fmt_sliced_vbi_cap() local
518 ivtv_expand_service_set(vbifmt, itv->is_50hz); in ivtv_try_fmt_sliced_vbi_cap()
519 check_service_set(vbifmt, itv->is_50hz); in ivtv_try_fmt_sliced_vbi_cap()
560 struct ivtv *itv = fh2id(fh)->itv; in ivtv_try_fmt_vid_out_overlay() local
561 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_try_fmt_vid_out_overlay()
567 if (!itv->osd_video_pbase) in ivtv_try_fmt_vid_out_overlay()
583 struct ivtv *itv = id->itv; in ivtv_s_fmt_vid_cap() local
594 if (itv->cxhdl.width == w && itv->cxhdl.height == h) in ivtv_s_fmt_vid_cap()
597 if (atomic_read(&itv->capturing) > 0) in ivtv_s_fmt_vid_cap()
600 itv->cxhdl.width = w; in ivtv_s_fmt_vid_cap()
601 itv->cxhdl.height = h; in ivtv_s_fmt_vid_cap()
602 if (v4l2_ctrl_g_ctrl(itv->cxhdl.video_encoding) == V4L2_MPEG_VIDEO_ENCODING_MPEG_1) in ivtv_s_fmt_vid_cap()
607 v4l2_subdev_call(itv->sd_video, pad, set_fmt, NULL, &format); in ivtv_s_fmt_vid_cap()
613 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_fmt_vbi_cap() local
615 if (!ivtv_raw_vbi(itv) && atomic_read(&itv->capturing) > 0) in ivtv_s_fmt_vbi_cap()
617 itv->vbi.sliced_in->service_set = 0; in ivtv_s_fmt_vbi_cap()
618 itv->vbi.in.type = V4L2_BUF_TYPE_VBI_CAPTURE; in ivtv_s_fmt_vbi_cap()
619 v4l2_subdev_call(itv->sd_video, vbi, s_raw_fmt, &fmt->fmt.vbi); in ivtv_s_fmt_vbi_cap()
627 struct ivtv *itv = id->itv; in ivtv_s_fmt_sliced_vbi_cap() local
633 check_service_set(vbifmt, itv->is_50hz); in ivtv_s_fmt_sliced_vbi_cap()
634 if (ivtv_raw_vbi(itv) && atomic_read(&itv->capturing) > 0) in ivtv_s_fmt_sliced_vbi_cap()
636 itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE; in ivtv_s_fmt_sliced_vbi_cap()
637 v4l2_subdev_call(itv->sd_video, vbi, s_sliced_fmt, vbifmt); in ivtv_s_fmt_sliced_vbi_cap()
638 memcpy(itv->vbi.sliced_in, vbifmt, sizeof(*itv->vbi.sliced_in)); in ivtv_s_fmt_sliced_vbi_cap()
645 struct ivtv *itv = id->itv; in ivtv_s_fmt_vid_out() local
646 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_s_fmt_vid_out()
680 if (test_bit(IVTV_F_I_DEC_YUV, &itv->i_flags)) in ivtv_s_fmt_vid_out()
681 itv->dma_data_req_size = in ivtv_s_fmt_vid_out()
689 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_fmt_vid_out_overlay() local
693 itv->osd_chroma_key = fmt->fmt.win.chromakey; in ivtv_s_fmt_vid_out_overlay()
694 itv->osd_global_alpha = fmt->fmt.win.global_alpha; in ivtv_s_fmt_vid_out_overlay()
695 ivtv_set_osd_alpha(itv); in ivtv_s_fmt_vid_out_overlay()
701 static int ivtv_itvc(struct ivtv *itv, bool get, u64 reg, u64 *val) in ivtv_itvc() argument
708 reg_start = itv->reg_mem - IVTV_REG_OFFSET; in ivtv_itvc()
709 else if (itv->has_cx23415 && reg >= IVTV_DECODER_OFFSET && in ivtv_itvc()
711 reg_start = itv->dec_mem - IVTV_DECODER_OFFSET; in ivtv_itvc()
713 reg_start = itv->enc_mem; in ivtv_itvc()
726 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_register() local
729 return ivtv_itvc(itv, true, reg->reg, &reg->val); in ivtv_g_register()
734 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_register() local
737 return ivtv_itvc(itv, false, reg->reg, &val); in ivtv_s_register()
744 struct ivtv *itv = id->itv; in ivtv_querycap() local
745 struct ivtv_stream *s = &itv->streams[id->type]; in ivtv_querycap()
748 strlcpy(vcap->card, itv->card_name, sizeof(vcap->card)); in ivtv_querycap()
749 snprintf(vcap->bus_info, sizeof(vcap->bus_info), "PCI:%s", pci_name(itv->pdev)); in ivtv_querycap()
750 vcap->capabilities = itv->v4l2_cap | V4L2_CAP_DEVICE_CAPS; in ivtv_querycap()
753 !itv->osd_video_pbase) { in ivtv_querycap()
762 struct ivtv *itv = fh2id(fh)->itv; in ivtv_enumaudio() local
764 return ivtv_get_audio_input(itv, vin->index, vin); in ivtv_enumaudio()
769 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_audio() local
771 vin->index = itv->audio_input; in ivtv_g_audio()
772 return ivtv_get_audio_input(itv, vin->index, vin); in ivtv_g_audio()
777 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_audio() local
779 if (vout->index >= itv->nof_audio_inputs) in ivtv_s_audio()
782 itv->audio_input = vout->index; in ivtv_s_audio()
783 ivtv_audio_set_io(itv); in ivtv_s_audio()
790 struct ivtv *itv = fh2id(fh)->itv; in ivtv_enumaudout() local
793 return ivtv_get_audio_output(itv, vin->index, vin); in ivtv_enumaudout()
798 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_audout() local
801 return ivtv_get_audio_output(itv, vin->index, vin); in ivtv_g_audout()
806 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_audout() local
808 if (itv->card->video_outputs == NULL || vout->index != 0) in ivtv_s_audout()
815 struct ivtv *itv = fh2id(fh)->itv; in ivtv_enum_input() local
818 return ivtv_get_input(itv, vin->index, vin); in ivtv_enum_input()
823 struct ivtv *itv = fh2id(fh)->itv; in ivtv_enum_output() local
825 return ivtv_get_output(itv, vout->index, vout); in ivtv_enum_output()
831 struct ivtv *itv = id->itv; in ivtv_cropcap() local
834 cropcap->pixelaspect.numerator = itv->is_50hz ? 59 : 10; in ivtv_cropcap()
835 cropcap->pixelaspect.denominator = itv->is_50hz ? 54 : 11; in ivtv_cropcap()
837 cropcap->pixelaspect.numerator = itv->is_out_50hz ? 59 : 10; in ivtv_cropcap()
838 cropcap->pixelaspect.denominator = itv->is_out_50hz ? 54 : 11; in ivtv_cropcap()
849 struct ivtv *itv = id->itv; in ivtv_s_selection() local
850 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_s_selection()
855 !(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_s_selection()
863 !(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_s_selection()
866 r.height = itv->is_out_50hz ? 576 : 480; in ivtv_s_selection()
880 if (!ivtv_vapi(itv, CX2341X_OSD_SET_FRAMEBUFFER_WINDOW, 4, in ivtv_s_selection()
882 itv->main_rect = sel->r; in ivtv_s_selection()
892 struct ivtv *itv = id->itv; in ivtv_g_selection() local
893 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_g_selection()
903 sel->r.height = itv->is_50hz ? 576 : 480; in ivtv_g_selection()
911 !(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_g_selection()
919 sel->r = itv->main_rect; in ivtv_g_selection()
923 r.height = itv->is_out_50hz ? 576 : 480; in ivtv_g_selection()
946 struct ivtv *itv = fh2id(fh)->itv; in ivtv_enum_fmt_vid_cap() local
947 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_enum_fmt_vid_cap()
972 struct ivtv *itv = fh2id(fh)->itv; in ivtv_enum_fmt_vid_out() local
973 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_enum_fmt_vid_out()
988 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_input() local
990 *i = itv->active_input; in ivtv_g_input()
997 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_input() local
1001 if (inp >= itv->nof_inputs) in ivtv_s_input()
1004 if (inp == itv->active_input) { in ivtv_s_input()
1009 if (atomic_read(&itv->capturing) > 0) { in ivtv_s_input()
1014 itv->active_input, inp); in ivtv_s_input()
1016 itv->active_input = inp; in ivtv_s_input()
1019 itv->audio_input = itv->card->video_inputs[inp].audio_index; in ivtv_s_input()
1021 if (itv->card->video_inputs[inp].video_type == IVTV_CARD_INPUT_VID_TUNER) in ivtv_s_input()
1022 std = itv->tuner_std; in ivtv_s_input()
1026 itv->streams[i].vdev.tvnorms = std; in ivtv_s_input()
1030 ivtv_mute(itv); in ivtv_s_input()
1031 ivtv_video_set_io(itv); in ivtv_s_input()
1032 ivtv_audio_set_io(itv); in ivtv_s_input()
1033 ivtv_unmute(itv); in ivtv_s_input()
1040 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_output() local
1042 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_g_output()
1045 *i = itv->active_output; in ivtv_g_output()
1052 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_output() local
1054 if (outp >= itv->card->nof_outputs) in ivtv_s_output()
1057 if (outp == itv->active_output) { in ivtv_s_output()
1062 itv->active_output, outp); in ivtv_s_output()
1064 itv->active_output = outp; in ivtv_s_output()
1065 ivtv_call_hw(itv, IVTV_HW_SAA7127, video, s_routing, in ivtv_s_output()
1067 itv->card->video_outputs[outp].video_output, 0); in ivtv_s_output()
1074 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_frequency() local
1075 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_g_frequency()
1082 ivtv_call_all(itv, tuner, g_frequency, vf); in ivtv_g_frequency()
1088 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_frequency() local
1089 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_s_frequency()
1096 ivtv_mute(itv); in ivtv_s_frequency()
1098 ivtv_call_all(itv, tuner, s_frequency, vf); in ivtv_s_frequency()
1099 ivtv_unmute(itv); in ivtv_s_frequency()
1105 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_std() local
1107 *std = itv->std; in ivtv_g_std()
1111 void ivtv_s_std_enc(struct ivtv *itv, v4l2_std_id std) in ivtv_s_std_enc() argument
1113 itv->std = std; in ivtv_s_std_enc()
1114 itv->is_60hz = (std & V4L2_STD_525_60) ? 1 : 0; in ivtv_s_std_enc()
1115 itv->is_50hz = !itv->is_60hz; in ivtv_s_std_enc()
1116 cx2341x_handler_set_50hz(&itv->cxhdl, itv->is_50hz); in ivtv_s_std_enc()
1117 itv->cxhdl.width = 720; in ivtv_s_std_enc()
1118 itv->cxhdl.height = itv->is_50hz ? 576 : 480; in ivtv_s_std_enc()
1119 itv->vbi.count = itv->is_50hz ? 18 : 12; in ivtv_s_std_enc()
1120 itv->vbi.start[0] = itv->is_50hz ? 6 : 10; in ivtv_s_std_enc()
1121 itv->vbi.start[1] = itv->is_50hz ? 318 : 273; in ivtv_s_std_enc()
1123 if (itv->hw_flags & IVTV_HW_CX25840) in ivtv_s_std_enc()
1124 itv->vbi.sliced_decoder_line_size = itv->is_60hz ? 272 : 284; in ivtv_s_std_enc()
1127 ivtv_call_all(itv, video, s_std, itv->std); in ivtv_s_std_enc()
1130 void ivtv_s_std_dec(struct ivtv *itv, v4l2_std_id std) in ivtv_s_std_dec() argument
1132 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_s_std_dec()
1137 itv->std_out = std; in ivtv_s_std_dec()
1138 itv->is_out_60hz = (std & V4L2_STD_525_60) ? 1 : 0; in ivtv_s_std_dec()
1139 itv->is_out_50hz = !itv->is_out_60hz; in ivtv_s_std_dec()
1140 ivtv_call_all(itv, video, s_std_output, itv->std_out); in ivtv_s_std_dec()
1148 mutex_unlock(&itv->serialize_lock); in ivtv_s_std_dec()
1150 prepare_to_wait(&itv->vsync_waitq, &wait, in ivtv_s_std_dec()
1156 finish_wait(&itv->vsync_waitq, &wait); in ivtv_s_std_dec()
1157 mutex_lock(&itv->serialize_lock); in ivtv_s_std_dec()
1162 ivtv_vapi(itv, CX2341X_DEC_SET_STANDARD, 1, itv->is_out_50hz); in ivtv_s_std_dec()
1163 itv->main_rect.left = 0; in ivtv_s_std_dec()
1164 itv->main_rect.top = 0; in ivtv_s_std_dec()
1165 itv->main_rect.width = 720; in ivtv_s_std_dec()
1166 itv->main_rect.height = itv->is_out_50hz ? 576 : 480; in ivtv_s_std_dec()
1167 ivtv_vapi(itv, CX2341X_OSD_SET_FRAMEBUFFER_WINDOW, 4, in ivtv_s_std_dec()
1168 720, itv->main_rect.height, 0, 0); in ivtv_s_std_dec()
1169 yi->main_rect = itv->main_rect; in ivtv_s_std_dec()
1170 if (!itv->osd_info) { in ivtv_s_std_dec()
1172 yi->osd_full_h = itv->is_out_50hz ? 576 : 480; in ivtv_s_std_dec()
1178 struct ivtv *itv = fh2id(fh)->itv; in ivtv_s_std() local
1183 if (std == itv->std) in ivtv_s_std()
1186 if (test_bit(IVTV_F_I_RADIO_USER, &itv->i_flags) || in ivtv_s_std()
1187 atomic_read(&itv->capturing) > 0 || in ivtv_s_std()
1188 atomic_read(&itv->decoding) > 0) { in ivtv_s_std()
1195 (unsigned long long)itv->std); in ivtv_s_std()
1197 ivtv_s_std_enc(itv, std); in ivtv_s_std()
1198 if (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT) in ivtv_s_std()
1199 ivtv_s_std_dec(itv, std); in ivtv_s_std()
1207 struct ivtv *itv = id->itv; in ivtv_s_tuner() local
1212 ivtv_call_all(itv, tuner, s_tuner, vt); in ivtv_s_tuner()
1219 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_tuner() local
1224 ivtv_call_all(itv, tuner, g_tuner, vt); in ivtv_g_tuner()
1235 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_sliced_vbi_cap() local
1236 int set = itv->is_50hz ? V4L2_SLICED_VBI_625 : V4L2_SLICED_VBI_525; in ivtv_g_sliced_vbi_cap()
1242 if (valid_service_line(f, l, itv->is_50hz)) in ivtv_g_sliced_vbi_cap()
1247 if (!(itv->v4l2_cap & V4L2_CAP_SLICED_VBI_OUTPUT)) in ivtv_g_sliced_vbi_cap()
1249 if (itv->is_60hz) { in ivtv_g_sliced_vbi_cap()
1270 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_enc_index() local
1275 entries = (itv->pgm_info_write_idx + IVTV_MAX_PGM_INDEX - itv->pgm_info_read_idx) % in ivtv_g_enc_index()
1281 if (!atomic_read(&itv->capturing)) in ivtv_g_enc_index()
1284 *e = itv->pgm_info[(itv->pgm_info_read_idx + i) % IVTV_MAX_PGM_INDEX]; in ivtv_g_enc_index()
1290 itv->pgm_info_read_idx = (itv->pgm_info_read_idx + idx->entries) % IVTV_MAX_PGM_INDEX; in ivtv_g_enc_index()
1297 struct ivtv *itv = id->itv; in ivtv_encoder_cmd() local
1316 if (!atomic_read(&itv->capturing)) in ivtv_encoder_cmd()
1318 if (test_and_set_bit(IVTV_F_I_ENC_PAUSED, &itv->i_flags)) in ivtv_encoder_cmd()
1321 ivtv_mute(itv); in ivtv_encoder_cmd()
1322 ivtv_vapi(itv, CX2341X_ENC_PAUSE_ENCODER, 1, 0); in ivtv_encoder_cmd()
1329 if (!atomic_read(&itv->capturing)) in ivtv_encoder_cmd()
1332 if (!test_and_clear_bit(IVTV_F_I_ENC_PAUSED, &itv->i_flags)) in ivtv_encoder_cmd()
1335 ivtv_vapi(itv, CX2341X_ENC_PAUSE_ENCODER, 1, 1); in ivtv_encoder_cmd()
1336 ivtv_unmute(itv); in ivtv_encoder_cmd()
1348 struct ivtv *itv = fh2id(fh)->itv; in ivtv_try_encoder_cmd() local
1378 struct ivtv *itv = fh2id(fh)->itv; in ivtv_g_fbuf() local
1379 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_g_fbuf()
1381 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_g_fbuf()
1405 if (!itv->osd_video_pbase) in ivtv_g_fbuf()
1411 ivtv_vapi_result(itv, data, CX2341X_OSD_GET_STATE, 0); in ivtv_g_fbuf()
1416 fb->fmt.width = itv->osd_rect.width; in ivtv_g_fbuf()
1417 fb->fmt.height = itv->osd_rect.height; in ivtv_g_fbuf()
1428 fb->base = (void *)itv->osd_video_pbase; in ivtv_g_fbuf()
1431 if (itv->osd_chroma_key_state) in ivtv_g_fbuf()
1434 if (itv->osd_global_alpha_state) in ivtv_g_fbuf()
1452 if (itv->osd_local_alpha_state) { in ivtv_g_fbuf()
1466 struct ivtv *itv = id->itv; in ivtv_s_fbuf() local
1467 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_s_fbuf()
1468 struct yuv_playback_info *yi = &itv->yuv_info; in ivtv_s_fbuf()
1472 if (!itv->osd_video_pbase) in ivtv_s_fbuf()
1475 itv->osd_global_alpha_state = (fb->flags & V4L2_FBUF_FLAG_GLOBAL_ALPHA) != 0; in ivtv_s_fbuf()
1476 itv->osd_local_alpha_state = in ivtv_s_fbuf()
1478 itv->osd_chroma_key_state = (fb->flags & V4L2_FBUF_FLAG_CHROMAKEY) != 0; in ivtv_s_fbuf()
1479 ivtv_set_osd_alpha(itv); in ivtv_s_fbuf()
1487 struct ivtv *itv = id->itv; in ivtv_overlay() local
1488 struct ivtv_stream *s = &itv->streams[fh2id(fh)->type]; in ivtv_overlay()
1492 if (!itv->osd_video_pbase) in ivtv_overlay()
1495 ivtv_vapi(itv, CX2341X_OSD_SET_STATE, 1, on != 0); in ivtv_overlay()
1515 struct ivtv *itv = fh2id(fh)->itv; in ivtv_log_status() local
1518 int has_output = itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT; in ivtv_log_status()
1523 IVTV_INFO("Version: %s Card: %s\n", IVTV_VERSION, itv->card_name); in ivtv_log_status()
1524 if (itv->hw_flags & IVTV_HW_TVEEPROM) { in ivtv_log_status()
1527 ivtv_read_eeprom(itv, &tv); in ivtv_log_status()
1529 ivtv_call_all(itv, core, log_status); in ivtv_log_status()
1530 ivtv_get_input(itv, itv->active_input, &vidin); in ivtv_log_status()
1531 ivtv_get_audio_input(itv, itv->audio_input, &audin); in ivtv_log_status()
1534 itv->dualwatch_stereo_mode == V4L2_MPEG_AUDIO_MODE_DUAL ? in ivtv_log_status()
1539 int mode = itv->output_mode; in ivtv_log_status()
1572 ivtv_get_output(itv, itv->active_output, &vidout); in ivtv_log_status()
1573 ivtv_get_audio_output(itv, 0, &audout); in ivtv_log_status()
1578 ivtv_vapi_result(itv, data, CX2341X_OSD_GET_STATE, 0); in ivtv_log_status()
1586 test_bit(IVTV_F_I_RADIO_USER, &itv->i_flags) ? "Radio" : "TV"); in ivtv_log_status()
1587 v4l2_ctrl_handler_log_status(&itv->cxhdl.hdl, itv->v4l2_dev.name); in ivtv_log_status()
1588 IVTV_INFO("Status flags: 0x%08lx\n", itv->i_flags); in ivtv_log_status()
1590 struct ivtv_stream *s = &itv->streams[i]; in ivtv_log_status()
1600 (long long)itv->mpg_data_received, in ivtv_log_status()
1601 (long long)itv->vbi_data_inserted); in ivtv_log_status()
1608 struct ivtv *itv = id->itv; in ivtv_decoder_cmd() local
1611 return ivtv_video_command(itv, id, dec, false); in ivtv_decoder_cmd()
1617 struct ivtv *itv = id->itv; in ivtv_try_decoder_cmd() local
1620 return ivtv_video_command(itv, id, dec, true); in ivtv_try_decoder_cmd()
1626 struct ivtv *itv = id->itv; in ivtv_decoder_ioctls() local
1628 struct ivtv_stream *s = &itv->streams[id->type]; in ivtv_decoder_ioctls()
1636 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_decoder_ioctls()
1640 if (itv->output_mode == OUT_UDMA_YUV && args->y_source == NULL) in ivtv_decoder_ioctls()
1645 if (ivtv_set_output_mode(itv, OUT_UDMA_YUV) != OUT_UDMA_YUV) { in ivtv_decoder_ioctls()
1653 return ivtv_yuv_prep_frame(itv, args); in ivtv_decoder_ioctls()
1658 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_decoder_ioctls()
1660 return ivtv_passthrough_mode(itv, *(int *)arg != 0); in ivtv_decoder_ioctls()
1671 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_decoder_ioctls()
1673 return ivtv_g_pts_frame(itv, pts, &frame); in ivtv_decoder_ioctls()
1685 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_decoder_ioctls()
1687 return ivtv_g_pts_frame(itv, &pts, frame); in ivtv_decoder_ioctls()
1696 return ivtv_video_command(itv, id, &dc, 0); in ivtv_decoder_ioctls()
1706 return ivtv_video_command(itv, id, &dc, 0); in ivtv_decoder_ioctls()
1715 return ivtv_video_command(itv, id, &dc, 0); in ivtv_decoder_ioctls()
1724 return ivtv_video_command(itv, id, &dc, 0); in ivtv_decoder_ioctls()
1738 return ivtv_video_command(itv, id, dc, try); in ivtv_decoder_ioctls()
1746 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_decoder_ioctls()
1749 set_bit(IVTV_F_I_EV_VSYNC_ENABLED, &itv->i_flags); in ivtv_decoder_ioctls()
1752 if (test_and_clear_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags)) in ivtv_decoder_ioctls()
1754 else if (test_and_clear_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags)) { in ivtv_decoder_ioctls()
1756 ev->u.vsync_field = test_bit(IVTV_F_I_EV_VSYNC_FIELD, &itv->i_flags) ? in ivtv_decoder_ioctls()
1758 if (itv->output_mode == OUT_UDMA_YUV && in ivtv_decoder_ioctls()
1759 (itv->yuv_info.lace_mode & IVTV_YUV_MODE_MASK) == in ivtv_decoder_ioctls()
1771 mutex_unlock(&itv->serialize_lock); in ivtv_decoder_ioctls()
1772 prepare_to_wait(&itv->event_waitq, &wait, TASK_INTERRUPTIBLE); in ivtv_decoder_ioctls()
1773 if (!test_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags) && in ivtv_decoder_ioctls()
1774 !test_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags)) in ivtv_decoder_ioctls()
1776 finish_wait(&itv->event_waitq, &wait); in ivtv_decoder_ioctls()
1777 mutex_lock(&itv->serialize_lock); in ivtv_decoder_ioctls()
1789 if (!(itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) in ivtv_decoder_ioctls()
1791 return ivtv_passthrough_mode(itv, iarg == VIDEO_SOURCE_DEMUX); in ivtv_decoder_ioctls()
1795 itv->speed_mute_audio = iarg; in ivtv_decoder_ioctls()
1802 return v4l2_ctrl_s_ctrl(itv->ctrl_audio_playback, iarg + 1); in ivtv_decoder_ioctls()
1808 return v4l2_ctrl_s_ctrl(itv->ctrl_audio_multilingual_playback, iarg + 1); in ivtv_decoder_ioctls()
1819 struct ivtv *itv = fh2id(fh)->itv; in ivtv_default() local
1841 if ((val == 0 && itv->options.newi2c) || (val & 0x01)) in ivtv_default()
1842 ivtv_reset_ir_gpio(itv); in ivtv_default()
1844 v4l2_subdev_call(itv->sd_video, core, reset, 0); in ivtv_default()