Lines Matching refs:port
41 static void saa7164_vbi_configure(struct saa7164_port *port) in saa7164_vbi_configure() argument
43 struct saa7164_dev *dev = port->dev; in saa7164_vbi_configure()
46 port->vbi_params.width = port->width; in saa7164_vbi_configure()
47 port->vbi_params.height = port->height; in saa7164_vbi_configure()
48 port->vbi_params.is_50hz = in saa7164_vbi_configure()
49 (port->encodernorm.id & V4L2_STD_625_50) != 0; in saa7164_vbi_configure()
52 saa7164_api_initialize_dif(port); in saa7164_vbi_configure()
56 saa7164_api_configure_dif(port, port->encodernorm.id); in saa7164_vbi_configure()
61 saa7164_api_set_audio_std(port); in saa7164_vbi_configure()
66 static int saa7164_vbi_buffers_dealloc(struct saa7164_port *port) in saa7164_vbi_buffers_dealloc() argument
69 struct saa7164_dev *dev = port->dev; in saa7164_vbi_buffers_dealloc()
74 mutex_lock(&port->dmaqueue_lock); in saa7164_vbi_buffers_dealloc()
76 dprintk(DBGLVL_VBI, "%s(port=%d) dmaqueue\n", __func__, port->nr); in saa7164_vbi_buffers_dealloc()
77 list_for_each_safe(c, n, &port->dmaqueue.list) { in saa7164_vbi_buffers_dealloc()
83 dprintk(DBGLVL_VBI, "%s(port=%d) used\n", __func__, port->nr); in saa7164_vbi_buffers_dealloc()
84 list_for_each_safe(p, q, &port->list_buf_used.list) { in saa7164_vbi_buffers_dealloc()
90 dprintk(DBGLVL_VBI, "%s(port=%d) free\n", __func__, port->nr); in saa7164_vbi_buffers_dealloc()
91 list_for_each_safe(l, v, &port->list_buf_free.list) { in saa7164_vbi_buffers_dealloc()
97 mutex_unlock(&port->dmaqueue_lock); in saa7164_vbi_buffers_dealloc()
98 dprintk(DBGLVL_VBI, "%s(port=%d) done\n", __func__, port->nr); in saa7164_vbi_buffers_dealloc()
104 static int saa7164_vbi_buffers_alloc(struct saa7164_port *port) in saa7164_vbi_buffers_alloc() argument
106 struct saa7164_dev *dev = port->dev; in saa7164_vbi_buffers_alloc()
109 struct tmHWStreamParameters *params = &port->hw_streamingparams; in saa7164_vbi_buffers_alloc()
128 params->numpagetableentries = port->hwcfg.buffercount; in saa7164_vbi_buffers_alloc()
131 for (i = 0; i < port->hwcfg.buffercount; i++) { in saa7164_vbi_buffers_alloc()
132 buf = saa7164_buffer_alloc(port, in saa7164_vbi_buffers_alloc()
144 mutex_lock(&port->dmaqueue_lock); in saa7164_vbi_buffers_alloc()
145 list_add_tail(&buf->list, &port->dmaqueue.list); in saa7164_vbi_buffers_alloc()
146 mutex_unlock(&port->dmaqueue_lock); in saa7164_vbi_buffers_alloc()
165 mutex_lock(&port->dmaqueue_lock); in saa7164_vbi_buffers_alloc()
166 list_add_tail(&ubuf->list, &port->list_buf_free.list); in saa7164_vbi_buffers_alloc()
167 mutex_unlock(&port->dmaqueue_lock); in saa7164_vbi_buffers_alloc()
179 static int saa7164_vbi_initialize(struct saa7164_port *port) in saa7164_vbi_initialize() argument
181 saa7164_vbi_configure(port); in saa7164_vbi_initialize()
189 struct saa7164_port *port = fh->port; in vidioc_s_std() local
190 struct saa7164_dev *dev = port->dev; in vidioc_s_std()
202 port->encodernorm = saa7164_tvnorms[i]; in vidioc_s_std()
203 port->std = id; in vidioc_s_std()
208 saa7164_api_set_audio_std(port); in vidioc_s_std()
218 struct saa7164_port *port = fh->port; in vidioc_g_std() local
220 *id = port->std; in vidioc_g_std()
251 struct saa7164_port *port = fh->port; in vidioc_g_input() local
252 struct saa7164_dev *dev = port->dev; in vidioc_g_input()
254 if (saa7164_api_get_videomux(port) != SAA_OK) in vidioc_g_input()
257 *i = (port->mux_input - 1); in vidioc_g_input()
267 struct saa7164_port *port = fh->port; in vidioc_s_input() local
268 struct saa7164_dev *dev = port->dev; in vidioc_s_input()
275 port->mux_input = i + 1; in vidioc_s_input()
277 if (saa7164_api_set_videomux(port) != SAA_OK) in vidioc_s_input()
287 struct saa7164_port *port = fh->port; in vidioc_g_tuner() local
288 struct saa7164_dev *dev = port->dev; in vidioc_g_tuner()
313 struct saa7164_port *port = fh->port; in vidioc_g_frequency() local
316 f->frequency = port->freq; in vidioc_g_frequency()
325 struct saa7164_port *port = fh->port; in vidioc_s_frequency() local
326 struct saa7164_dev *dev = port->dev; in vidioc_s_frequency()
334 .std = port->encodernorm.id, in vidioc_s_frequency()
348 port->freq = f->frequency; in vidioc_s_frequency()
351 if (port->nr == SAA7164_PORT_VBI1) in vidioc_s_frequency()
354 if (port->nr == SAA7164_PORT_VBI2) in vidioc_s_frequency()
366 saa7164_vbi_initialize(port); in vidioc_s_frequency()
375 struct saa7164_port *port = fh->port; in vidioc_g_ctrl() local
376 struct saa7164_dev *dev = port->dev; in vidioc_g_ctrl()
383 ctl->value = port->ctl_brightness; in vidioc_g_ctrl()
386 ctl->value = port->ctl_contrast; in vidioc_g_ctrl()
389 ctl->value = port->ctl_saturation; in vidioc_g_ctrl()
392 ctl->value = port->ctl_hue; in vidioc_g_ctrl()
395 ctl->value = port->ctl_sharpness; in vidioc_g_ctrl()
398 ctl->value = port->ctl_volume; in vidioc_g_ctrl()
411 struct saa7164_port *port = fh->port; in vidioc_s_ctrl() local
412 struct saa7164_dev *dev = port->dev; in vidioc_s_ctrl()
421 port->ctl_brightness = ctl->value; in vidioc_s_ctrl()
422 saa7164_api_set_usercontrol(port, in vidioc_s_ctrl()
429 port->ctl_contrast = ctl->value; in vidioc_s_ctrl()
430 saa7164_api_set_usercontrol(port, PU_CONTRAST_CONTROL); in vidioc_s_ctrl()
436 port->ctl_saturation = ctl->value; in vidioc_s_ctrl()
437 saa7164_api_set_usercontrol(port, in vidioc_s_ctrl()
444 port->ctl_hue = ctl->value; in vidioc_s_ctrl()
445 saa7164_api_set_usercontrol(port, PU_HUE_CONTROL); in vidioc_s_ctrl()
451 port->ctl_sharpness = ctl->value; in vidioc_s_ctrl()
452 saa7164_api_set_usercontrol(port, PU_SHARPNESS_CONTROL); in vidioc_s_ctrl()
458 port->ctl_volume = ctl->value; in vidioc_s_ctrl()
459 saa7164_api_set_audio_volume(port, port->ctl_volume); in vidioc_s_ctrl()
470 static int saa7164_get_ctrl(struct saa7164_port *port, in saa7164_get_ctrl() argument
473 struct saa7164_vbi_params *params = &port->vbi_params; in saa7164_get_ctrl()
501 struct saa7164_port *port = fh->port; in vidioc_g_ext_ctrls() local
508 err = saa7164_get_ctrl(port, ctrl); in vidioc_g_ext_ctrls()
579 static int saa7164_set_ctrl(struct saa7164_port *port, in saa7164_set_ctrl() argument
582 struct saa7164_vbi_params *params = &port->vbi_params; in saa7164_set_ctrl()
591 ret = saa7164_api_audio_mute(port, params->ctl_mute); in saa7164_set_ctrl()
600 ret = saa7164_api_set_aspect_ratio(port); in saa7164_set_ctrl()
626 struct saa7164_port *port = fh->port; in vidioc_s_ext_ctrls() local
638 err = saa7164_set_ctrl(port, ctrl); in vidioc_s_ext_ctrls()
655 struct saa7164_port *port = fh->port; in vidioc_querycap() local
656 struct saa7164_dev *dev = port->dev; in vidioc_querycap()
691 struct saa7164_port *port = fh->port; in vidioc_g_fmt_vid_cap() local
692 struct saa7164_dev *dev = port->dev; in vidioc_g_fmt_vid_cap()
697 port->ts_packet_size * port->ts_packet_count; in vidioc_g_fmt_vid_cap()
699 f->fmt.pix.width = port->width; in vidioc_g_fmt_vid_cap()
700 f->fmt.pix.height = port->height; in vidioc_g_fmt_vid_cap()
703 port->width, port->height); in vidioc_g_fmt_vid_cap()
712 struct saa7164_port *port = fh->port; in vidioc_try_fmt_vid_cap() local
713 struct saa7164_dev *dev = port->dev; in vidioc_try_fmt_vid_cap()
718 port->ts_packet_size * port->ts_packet_count; in vidioc_try_fmt_vid_cap()
721 port->width, port->height); in vidioc_try_fmt_vid_cap()
729 struct saa7164_port *port = fh->port; in vidioc_s_fmt_vid_cap() local
730 struct saa7164_dev *dev = port->dev; in vidioc_s_fmt_vid_cap()
735 port->ts_packet_size * port->ts_packet_count; in vidioc_s_fmt_vid_cap()
786 struct saa7164_port *port = fh->port; in vidioc_queryctrl() local
804 return fill_queryctrl(&port->vbi_params, c); in vidioc_queryctrl()
813 static int saa7164_vbi_stop_port(struct saa7164_port *port) in saa7164_vbi_stop_port() argument
815 struct saa7164_dev *dev = port->dev; in saa7164_vbi_stop_port()
818 ret = saa7164_api_transition_port(port, SAA_DMASTATE_STOP); in saa7164_vbi_stop_port()
831 static int saa7164_vbi_acquire_port(struct saa7164_port *port) in saa7164_vbi_acquire_port() argument
833 struct saa7164_dev *dev = port->dev; in saa7164_vbi_acquire_port()
836 ret = saa7164_api_transition_port(port, SAA_DMASTATE_ACQUIRE); in saa7164_vbi_acquire_port()
849 static int saa7164_vbi_pause_port(struct saa7164_port *port) in saa7164_vbi_pause_port() argument
851 struct saa7164_dev *dev = port->dev; in saa7164_vbi_pause_port()
854 ret = saa7164_api_transition_port(port, SAA_DMASTATE_PAUSE); in saa7164_vbi_pause_port()
873 static int saa7164_vbi_stop_streaming(struct saa7164_port *port) in saa7164_vbi_stop_streaming() argument
875 struct saa7164_dev *dev = port->dev; in saa7164_vbi_stop_streaming()
881 dprintk(DBGLVL_VBI, "%s(port=%d)\n", __func__, port->nr); in saa7164_vbi_stop_streaming()
883 ret = saa7164_vbi_pause_port(port); in saa7164_vbi_stop_streaming()
884 ret = saa7164_vbi_acquire_port(port); in saa7164_vbi_stop_streaming()
885 ret = saa7164_vbi_stop_port(port); in saa7164_vbi_stop_streaming()
888 port->nr); in saa7164_vbi_stop_streaming()
891 mutex_lock(&port->dmaqueue_lock); in saa7164_vbi_stop_streaming()
894 list_for_each_safe(c, n, &port->dmaqueue.list) { in saa7164_vbi_stop_streaming()
900 list_for_each_safe(c, n, &port->list_buf_used.list) { in saa7164_vbi_stop_streaming()
903 list_move_tail(&ubuf->list, &port->list_buf_free.list); in saa7164_vbi_stop_streaming()
906 mutex_unlock(&port->dmaqueue_lock); in saa7164_vbi_stop_streaming()
909 saa7164_vbi_buffers_dealloc(port); in saa7164_vbi_stop_streaming()
911 dprintk(DBGLVL_VBI, "%s(port=%d) Released\n", __func__, port->nr); in saa7164_vbi_stop_streaming()
916 static int saa7164_vbi_start_streaming(struct saa7164_port *port) in saa7164_vbi_start_streaming() argument
918 struct saa7164_dev *dev = port->dev; in saa7164_vbi_start_streaming()
921 dprintk(DBGLVL_VBI, "%s(port=%d)\n", __func__, port->nr); in saa7164_vbi_start_streaming()
923 port->done_first_interrupt = 0; in saa7164_vbi_start_streaming()
929 saa7164_vbi_buffers_alloc(port); in saa7164_vbi_start_streaming()
933 saa7164_api_set_encoder(port); in saa7164_vbi_start_streaming()
934 saa7164_api_get_encoder(port); in saa7164_vbi_start_streaming()
938 saa7164_buffer_cfg_port(port); in saa7164_vbi_start_streaming()
941 if (saa7164_api_set_vbi_format(port) != SAA_OK) { in saa7164_vbi_start_streaming()
948 result = saa7164_api_transition_port(port, SAA_DMASTATE_ACQUIRE); in saa7164_vbi_start_streaming()
959 result = saa7164_api_transition_port(port, SAA_DMASTATE_PAUSE); in saa7164_vbi_start_streaming()
965 result = saa7164_vbi_stop_port(port); in saa7164_vbi_start_streaming()
977 result = saa7164_api_transition_port(port, SAA_DMASTATE_RUN); in saa7164_vbi_start_streaming()
983 result = saa7164_vbi_acquire_port(port); in saa7164_vbi_start_streaming()
984 result = saa7164_vbi_stop_port(port); in saa7164_vbi_start_streaming()
1018 struct saa7164_port *port; in fops_open() local
1021 port = (struct saa7164_port *)video_get_drvdata(video_devdata(file)); in fops_open()
1022 if (!port) in fops_open()
1025 dev = port->dev; in fops_open()
1035 fh->port = port; in fops_open()
1043 struct saa7164_port *port = fh->port; in fops_release() local
1044 struct saa7164_dev *dev = port->dev; in fops_release()
1050 if (atomic_dec_return(&port->v4l_reader_count) == 0) { in fops_release()
1052 saa7164_vbi_stop_streaming(port); in fops_release()
1063 saa7164_user_buffer *saa7164_vbi_next_buf(struct saa7164_port *port) in saa7164_vbi_next_buf() argument
1066 struct saa7164_dev *dev = port->dev; in saa7164_vbi_next_buf()
1069 mutex_lock(&port->dmaqueue_lock); in saa7164_vbi_next_buf()
1070 if (!list_empty(&port->list_buf_used.list)) { in saa7164_vbi_next_buf()
1071 ubuf = list_first_entry(&port->list_buf_used.list, in saa7164_vbi_next_buf()
1084 mutex_unlock(&port->dmaqueue_lock); in saa7164_vbi_next_buf()
1095 struct saa7164_port *port = fh->port; in fops_read() local
1097 struct saa7164_dev *dev = port->dev; in fops_read()
1102 port->last_read_msecs_diff = port->last_read_msecs; in fops_read()
1103 port->last_read_msecs = jiffies_to_msecs(jiffies); in fops_read()
1104 port->last_read_msecs_diff = port->last_read_msecs - in fops_read()
1105 port->last_read_msecs_diff; in fops_read()
1107 saa7164_histogram_update(&port->read_interval, in fops_read()
1108 port->last_read_msecs_diff); in fops_read()
1116 if (atomic_inc_return(&port->v4l_reader_count) == 1) { in fops_read()
1118 if (saa7164_vbi_initialize(port) < 0) { in fops_read()
1123 saa7164_vbi_start_streaming(port); in fops_read()
1130 if (wait_event_interruptible(port->wait_read, in fops_read()
1131 saa7164_vbi_next_buf(port))) { in fops_read()
1138 ubuf = saa7164_vbi_next_buf(port); in fops_read()
1176 mutex_lock(&port->dmaqueue_lock); in fops_read()
1177 list_move_tail(&ubuf->list, &port->list_buf_free.list); in fops_read()
1178 mutex_unlock(&port->dmaqueue_lock); in fops_read()
1182 if (wait_event_interruptible(port->wait_read, in fops_read()
1183 saa7164_vbi_next_buf(port))) { in fops_read()
1187 ubuf = saa7164_vbi_next_buf(port); in fops_read()
1202 struct saa7164_port *port = fh->port; in fops_poll() local
1205 port->last_poll_msecs_diff = port->last_poll_msecs; in fops_poll()
1206 port->last_poll_msecs = jiffies_to_msecs(jiffies); in fops_poll()
1207 port->last_poll_msecs_diff = port->last_poll_msecs - in fops_poll()
1208 port->last_poll_msecs_diff; in fops_poll()
1210 saa7164_histogram_update(&port->poll_interval, in fops_poll()
1211 port->last_poll_msecs_diff); in fops_poll()
1213 if (!video_is_registered(port->v4l_device)) in fops_poll()
1217 if (atomic_inc_return(&port->v4l_reader_count) == 1) { in fops_poll()
1218 if (saa7164_vbi_initialize(port) < 0) in fops_poll()
1220 saa7164_vbi_start_streaming(port); in fops_poll()
1227 if (wait_event_interruptible(port->wait_read, in fops_poll()
1228 saa7164_vbi_next_buf(port))) { in fops_poll()
1234 if (!list_empty(&port->list_buf_used.list)) in fops_poll()
1283 struct saa7164_port *port, in saa7164_vbi_alloc() argument
1289 struct saa7164_dev *dev = port->dev; in saa7164_vbi_alloc()
1306 int saa7164_vbi_register(struct saa7164_port *port) in saa7164_vbi_register() argument
1308 struct saa7164_dev *dev = port->dev; in saa7164_vbi_register()
1313 if (port->type != SAA7164_MPEG_VBI) in saa7164_vbi_register()
1317 if (port->hwcfg.BARLocation == 0) { in saa7164_vbi_register()
1328 port->v4l_device = saa7164_vbi_alloc(port, in saa7164_vbi_register()
1331 if (!port->v4l_device) { in saa7164_vbi_register()
1338 port->std = V4L2_STD_NTSC_M; in saa7164_vbi_register()
1339 video_set_drvdata(port->v4l_device, port); in saa7164_vbi_register()
1340 result = video_register_device(port->v4l_device, in saa7164_vbi_register()
1352 dev->name, port->v4l_device->num); in saa7164_vbi_register()
1361 void saa7164_vbi_unregister(struct saa7164_port *port) in saa7164_vbi_unregister() argument
1363 struct saa7164_dev *dev = port->dev; in saa7164_vbi_unregister()
1365 dprintk(DBGLVL_VBI, "%s(port=%d)\n", __func__, port->nr); in saa7164_vbi_unregister()
1367 if (port->type != SAA7164_MPEG_VBI) in saa7164_vbi_unregister()
1370 if (port->v4l_device) { in saa7164_vbi_unregister()
1371 if (port->v4l_device->minor != -1) in saa7164_vbi_unregister()
1372 video_unregister_device(port->v4l_device); in saa7164_vbi_unregister()
1374 video_device_release(port->v4l_device); in saa7164_vbi_unregister()
1376 port->v4l_device = NULL; in saa7164_vbi_unregister()