Lines Matching refs:port
59 static void saa7164_encoder_configure(struct saa7164_port *port) in saa7164_encoder_configure() argument
61 struct saa7164_dev *dev = port->dev; in saa7164_encoder_configure()
64 port->encoder_params.width = port->width; in saa7164_encoder_configure()
65 port->encoder_params.height = port->height; in saa7164_encoder_configure()
66 port->encoder_params.is_50hz = in saa7164_encoder_configure()
67 (port->encodernorm.id & V4L2_STD_625_50) != 0; in saa7164_encoder_configure()
70 saa7164_api_initialize_dif(port); in saa7164_encoder_configure()
73 saa7164_api_configure_dif(port, port->encodernorm.id); in saa7164_encoder_configure()
76 saa7164_api_set_audio_std(port); in saa7164_encoder_configure()
79 static int saa7164_encoder_buffers_dealloc(struct saa7164_port *port) in saa7164_encoder_buffers_dealloc() argument
82 struct saa7164_dev *dev = port->dev; in saa7164_encoder_buffers_dealloc()
87 mutex_lock(&port->dmaqueue_lock); in saa7164_encoder_buffers_dealloc()
89 dprintk(DBGLVL_ENC, "%s(port=%d) dmaqueue\n", __func__, port->nr); in saa7164_encoder_buffers_dealloc()
90 list_for_each_safe(c, n, &port->dmaqueue.list) { in saa7164_encoder_buffers_dealloc()
96 dprintk(DBGLVL_ENC, "%s(port=%d) used\n", __func__, port->nr); in saa7164_encoder_buffers_dealloc()
97 list_for_each_safe(p, q, &port->list_buf_used.list) { in saa7164_encoder_buffers_dealloc()
103 dprintk(DBGLVL_ENC, "%s(port=%d) free\n", __func__, port->nr); in saa7164_encoder_buffers_dealloc()
104 list_for_each_safe(l, v, &port->list_buf_free.list) { in saa7164_encoder_buffers_dealloc()
110 mutex_unlock(&port->dmaqueue_lock); in saa7164_encoder_buffers_dealloc()
111 dprintk(DBGLVL_ENC, "%s(port=%d) done\n", __func__, port->nr); in saa7164_encoder_buffers_dealloc()
117 static int saa7164_encoder_buffers_alloc(struct saa7164_port *port) in saa7164_encoder_buffers_alloc() argument
119 struct saa7164_dev *dev = port->dev; in saa7164_encoder_buffers_alloc()
122 struct tmHWStreamParameters *params = &port->hw_streamingparams; in saa7164_encoder_buffers_alloc()
128 if (port->encoder_params.stream_type == in saa7164_encoder_buffers_alloc()
139 if (port->encoder_params.stream_type == in saa7164_encoder_buffers_alloc()
157 params->numpagetableentries = port->hwcfg.buffercount; in saa7164_encoder_buffers_alloc()
160 for (i = 0; i < port->hwcfg.buffercount; i++) { in saa7164_encoder_buffers_alloc()
161 buf = saa7164_buffer_alloc(port, in saa7164_encoder_buffers_alloc()
173 mutex_lock(&port->dmaqueue_lock); in saa7164_encoder_buffers_alloc()
174 list_add_tail(&buf->list, &port->dmaqueue.list); in saa7164_encoder_buffers_alloc()
175 mutex_unlock(&port->dmaqueue_lock); in saa7164_encoder_buffers_alloc()
194 mutex_lock(&port->dmaqueue_lock); in saa7164_encoder_buffers_alloc()
195 list_add_tail(&ubuf->list, &port->list_buf_free.list); in saa7164_encoder_buffers_alloc()
196 mutex_unlock(&port->dmaqueue_lock); in saa7164_encoder_buffers_alloc()
207 static int saa7164_encoder_initialize(struct saa7164_port *port) in saa7164_encoder_initialize() argument
209 saa7164_encoder_configure(port); in saa7164_encoder_initialize()
217 struct saa7164_port *port = fh->port; in vidioc_s_std() local
218 struct saa7164_dev *dev = port->dev; in vidioc_s_std()
230 port->encodernorm = saa7164_tvnorms[i]; in vidioc_s_std()
231 port->std = id; in vidioc_s_std()
236 saa7164_api_set_audio_std(port); in vidioc_s_std()
246 struct saa7164_port *port = fh->port; in vidioc_g_std() local
248 *id = port->std; in vidioc_g_std()
279 struct saa7164_port *port = fh->port; in vidioc_g_input() local
280 struct saa7164_dev *dev = port->dev; in vidioc_g_input()
282 if (saa7164_api_get_videomux(port) != SAA_OK) in vidioc_g_input()
285 *i = (port->mux_input - 1); in vidioc_g_input()
295 struct saa7164_port *port = fh->port; in vidioc_s_input() local
296 struct saa7164_dev *dev = port->dev; in vidioc_s_input()
303 port->mux_input = i + 1; in vidioc_s_input()
305 if (saa7164_api_set_videomux(port) != SAA_OK) in vidioc_s_input()
315 struct saa7164_port *port = fh->port; in vidioc_g_tuner() local
316 struct saa7164_dev *dev = port->dev; in vidioc_g_tuner()
341 struct saa7164_port *port = fh->port; in vidioc_g_frequency() local
344 f->frequency = port->freq; in vidioc_g_frequency()
353 struct saa7164_port *port = fh->port; in vidioc_s_frequency() local
354 struct saa7164_dev *dev = port->dev; in vidioc_s_frequency()
362 .std = port->encodernorm.id, in vidioc_s_frequency()
376 port->freq = f->frequency; in vidioc_s_frequency()
379 if (port->nr == SAA7164_PORT_ENC1) in vidioc_s_frequency()
382 if (port->nr == SAA7164_PORT_ENC2) in vidioc_s_frequency()
394 saa7164_encoder_initialize(port); in vidioc_s_frequency()
403 struct saa7164_port *port = fh->port; in vidioc_g_ctrl() local
404 struct saa7164_dev *dev = port->dev; in vidioc_g_ctrl()
411 ctl->value = port->ctl_brightness; in vidioc_g_ctrl()
414 ctl->value = port->ctl_contrast; in vidioc_g_ctrl()
417 ctl->value = port->ctl_saturation; in vidioc_g_ctrl()
420 ctl->value = port->ctl_hue; in vidioc_g_ctrl()
423 ctl->value = port->ctl_sharpness; in vidioc_g_ctrl()
426 ctl->value = port->ctl_volume; in vidioc_g_ctrl()
439 struct saa7164_port *port = fh->port; in vidioc_s_ctrl() local
440 struct saa7164_dev *dev = port->dev; in vidioc_s_ctrl()
449 port->ctl_brightness = ctl->value; in vidioc_s_ctrl()
450 saa7164_api_set_usercontrol(port, in vidioc_s_ctrl()
457 port->ctl_contrast = ctl->value; in vidioc_s_ctrl()
458 saa7164_api_set_usercontrol(port, PU_CONTRAST_CONTROL); in vidioc_s_ctrl()
464 port->ctl_saturation = ctl->value; in vidioc_s_ctrl()
465 saa7164_api_set_usercontrol(port, in vidioc_s_ctrl()
472 port->ctl_hue = ctl->value; in vidioc_s_ctrl()
473 saa7164_api_set_usercontrol(port, PU_HUE_CONTROL); in vidioc_s_ctrl()
479 port->ctl_sharpness = ctl->value; in vidioc_s_ctrl()
480 saa7164_api_set_usercontrol(port, PU_SHARPNESS_CONTROL); in vidioc_s_ctrl()
486 port->ctl_volume = ctl->value; in vidioc_s_ctrl()
487 saa7164_api_set_audio_volume(port, port->ctl_volume); in vidioc_s_ctrl()
498 static int saa7164_get_ctrl(struct saa7164_port *port, in saa7164_get_ctrl() argument
501 struct saa7164_encoder_params *params = &port->encoder_params; in saa7164_get_ctrl()
538 struct saa7164_port *port = fh->port; in vidioc_g_ext_ctrls() local
545 err = saa7164_get_ctrl(port, ctrl); in vidioc_g_ext_ctrls()
631 static int saa7164_set_ctrl(struct saa7164_port *port, in saa7164_set_ctrl() argument
634 struct saa7164_encoder_params *params = &port->encoder_params; in saa7164_set_ctrl()
646 ret = saa7164_api_audio_mute(port, params->ctl_mute); in saa7164_set_ctrl()
655 ret = saa7164_api_set_aspect_ratio(port); in saa7164_set_ctrl()
687 struct saa7164_port *port = fh->port; in vidioc_s_ext_ctrls() local
699 err = saa7164_set_ctrl(port, ctrl); in vidioc_s_ext_ctrls()
716 struct saa7164_port *port = fh->port; in vidioc_querycap() local
717 struct saa7164_dev *dev = port->dev; in vidioc_querycap()
752 struct saa7164_port *port = fh->port; in vidioc_g_fmt_vid_cap() local
753 struct saa7164_dev *dev = port->dev; in vidioc_g_fmt_vid_cap()
758 port->ts_packet_size * port->ts_packet_count; in vidioc_g_fmt_vid_cap()
760 f->fmt.pix.width = port->width; in vidioc_g_fmt_vid_cap()
761 f->fmt.pix.height = port->height; in vidioc_g_fmt_vid_cap()
764 port->width, port->height); in vidioc_g_fmt_vid_cap()
773 struct saa7164_port *port = fh->port; in vidioc_try_fmt_vid_cap() local
774 struct saa7164_dev *dev = port->dev; in vidioc_try_fmt_vid_cap()
779 port->ts_packet_size * port->ts_packet_count; in vidioc_try_fmt_vid_cap()
782 port->width, port->height); in vidioc_try_fmt_vid_cap()
790 struct saa7164_port *port = fh->port; in vidioc_s_fmt_vid_cap() local
791 struct saa7164_dev *dev = port->dev; in vidioc_s_fmt_vid_cap()
796 port->ts_packet_size * port->ts_packet_count; in vidioc_s_fmt_vid_cap()
860 struct saa7164_port *port = fh->port; in vidioc_queryctrl() local
878 return fill_queryctrl(&port->encoder_params, c); in vidioc_queryctrl()
887 static int saa7164_encoder_stop_port(struct saa7164_port *port) in saa7164_encoder_stop_port() argument
889 struct saa7164_dev *dev = port->dev; in saa7164_encoder_stop_port()
892 ret = saa7164_api_transition_port(port, SAA_DMASTATE_STOP); in saa7164_encoder_stop_port()
905 static int saa7164_encoder_acquire_port(struct saa7164_port *port) in saa7164_encoder_acquire_port() argument
907 struct saa7164_dev *dev = port->dev; in saa7164_encoder_acquire_port()
910 ret = saa7164_api_transition_port(port, SAA_DMASTATE_ACQUIRE); in saa7164_encoder_acquire_port()
923 static int saa7164_encoder_pause_port(struct saa7164_port *port) in saa7164_encoder_pause_port() argument
925 struct saa7164_dev *dev = port->dev; in saa7164_encoder_pause_port()
928 ret = saa7164_api_transition_port(port, SAA_DMASTATE_PAUSE); in saa7164_encoder_pause_port()
947 static int saa7164_encoder_stop_streaming(struct saa7164_port *port) in saa7164_encoder_stop_streaming() argument
949 struct saa7164_dev *dev = port->dev; in saa7164_encoder_stop_streaming()
955 dprintk(DBGLVL_ENC, "%s(port=%d)\n", __func__, port->nr); in saa7164_encoder_stop_streaming()
957 ret = saa7164_encoder_pause_port(port); in saa7164_encoder_stop_streaming()
958 ret = saa7164_encoder_acquire_port(port); in saa7164_encoder_stop_streaming()
959 ret = saa7164_encoder_stop_port(port); in saa7164_encoder_stop_streaming()
962 port->nr); in saa7164_encoder_stop_streaming()
965 mutex_lock(&port->dmaqueue_lock); in saa7164_encoder_stop_streaming()
968 list_for_each_safe(c, n, &port->dmaqueue.list) { in saa7164_encoder_stop_streaming()
974 list_for_each_safe(c, n, &port->list_buf_used.list) { in saa7164_encoder_stop_streaming()
977 list_move_tail(&ubuf->list, &port->list_buf_free.list); in saa7164_encoder_stop_streaming()
980 mutex_unlock(&port->dmaqueue_lock); in saa7164_encoder_stop_streaming()
983 saa7164_encoder_buffers_dealloc(port); in saa7164_encoder_stop_streaming()
985 dprintk(DBGLVL_ENC, "%s(port=%d) Released\n", __func__, port->nr); in saa7164_encoder_stop_streaming()
990 static int saa7164_encoder_start_streaming(struct saa7164_port *port) in saa7164_encoder_start_streaming() argument
992 struct saa7164_dev *dev = port->dev; in saa7164_encoder_start_streaming()
995 dprintk(DBGLVL_ENC, "%s(port=%d)\n", __func__, port->nr); in saa7164_encoder_start_streaming()
997 port->done_first_interrupt = 0; in saa7164_encoder_start_streaming()
1003 saa7164_encoder_buffers_alloc(port); in saa7164_encoder_start_streaming()
1006 saa7164_api_set_encoder(port); in saa7164_encoder_start_streaming()
1007 saa7164_api_get_encoder(port); in saa7164_encoder_start_streaming()
1010 saa7164_buffer_cfg_port(port); in saa7164_encoder_start_streaming()
1013 result = saa7164_api_transition_port(port, SAA_DMASTATE_ACQUIRE); in saa7164_encoder_start_streaming()
1019 result = saa7164_api_transition_port(port, SAA_DMASTATE_STOP); in saa7164_encoder_start_streaming()
1030 result = saa7164_api_transition_port(port, SAA_DMASTATE_PAUSE); in saa7164_encoder_start_streaming()
1036 result = saa7164_api_transition_port(port, SAA_DMASTATE_STOP); in saa7164_encoder_start_streaming()
1048 result = saa7164_api_transition_port(port, SAA_DMASTATE_RUN); in saa7164_encoder_start_streaming()
1054 result = saa7164_api_transition_port(port, SAA_DMASTATE_STOP); in saa7164_encoder_start_streaming()
1071 struct saa7164_port *port; in fops_open() local
1074 port = (struct saa7164_port *)video_get_drvdata(video_devdata(file)); in fops_open()
1075 if (!port) in fops_open()
1078 dev = port->dev; in fops_open()
1088 fh->port = port; in fops_open()
1096 struct saa7164_port *port = fh->port; in fops_release() local
1097 struct saa7164_dev *dev = port->dev; in fops_release()
1103 if (atomic_dec_return(&port->v4l_reader_count) == 0) { in fops_release()
1105 saa7164_encoder_stop_streaming(port); in fops_release()
1116 saa7164_user_buffer *saa7164_enc_next_buf(struct saa7164_port *port) in saa7164_enc_next_buf() argument
1119 struct saa7164_dev *dev = port->dev; in saa7164_enc_next_buf()
1122 mutex_lock(&port->dmaqueue_lock); in saa7164_enc_next_buf()
1123 if (!list_empty(&port->list_buf_used.list)) { in saa7164_enc_next_buf()
1124 ubuf = list_first_entry(&port->list_buf_used.list, in saa7164_enc_next_buf()
1138 mutex_unlock(&port->dmaqueue_lock); in saa7164_enc_next_buf()
1149 struct saa7164_port *port = fh->port; in fops_read() local
1151 struct saa7164_dev *dev = port->dev; in fops_read()
1156 port->last_read_msecs_diff = port->last_read_msecs; in fops_read()
1157 port->last_read_msecs = jiffies_to_msecs(jiffies); in fops_read()
1158 port->last_read_msecs_diff = port->last_read_msecs - in fops_read()
1159 port->last_read_msecs_diff; in fops_read()
1161 saa7164_histogram_update(&port->read_interval, in fops_read()
1162 port->last_read_msecs_diff); in fops_read()
1170 if (atomic_inc_return(&port->v4l_reader_count) == 1) { in fops_read()
1172 if (saa7164_encoder_initialize(port) < 0) { in fops_read()
1177 saa7164_encoder_start_streaming(port); in fops_read()
1184 if (wait_event_interruptible(port->wait_read, in fops_read()
1185 saa7164_enc_next_buf(port))) { in fops_read()
1192 ubuf = saa7164_enc_next_buf(port); in fops_read()
1230 mutex_lock(&port->dmaqueue_lock); in fops_read()
1231 list_move_tail(&ubuf->list, &port->list_buf_free.list); in fops_read()
1232 mutex_unlock(&port->dmaqueue_lock); in fops_read()
1236 if (wait_event_interruptible(port->wait_read, in fops_read()
1237 saa7164_enc_next_buf(port))) { in fops_read()
1241 ubuf = saa7164_enc_next_buf(port); in fops_read()
1255 struct saa7164_port *port = fh->port; in fops_poll() local
1258 port->last_poll_msecs_diff = port->last_poll_msecs; in fops_poll()
1259 port->last_poll_msecs = jiffies_to_msecs(jiffies); in fops_poll()
1260 port->last_poll_msecs_diff = port->last_poll_msecs - in fops_poll()
1261 port->last_poll_msecs_diff; in fops_poll()
1263 saa7164_histogram_update(&port->poll_interval, in fops_poll()
1264 port->last_poll_msecs_diff); in fops_poll()
1266 if (!video_is_registered(port->v4l_device)) in fops_poll()
1270 if (atomic_inc_return(&port->v4l_reader_count) == 1) { in fops_poll()
1271 if (saa7164_encoder_initialize(port) < 0) in fops_poll()
1273 saa7164_encoder_start_streaming(port); in fops_poll()
1280 if (wait_event_interruptible(port->wait_read, in fops_poll()
1281 saa7164_enc_next_buf(port))) { in fops_poll()
1287 if (!list_empty(&port->list_buf_used.list)) in fops_poll()
1334 struct saa7164_port *port, in saa7164_encoder_alloc() argument
1340 struct saa7164_dev *dev = port->dev; in saa7164_encoder_alloc()
1357 int saa7164_encoder_register(struct saa7164_port *port) in saa7164_encoder_register() argument
1359 struct saa7164_dev *dev = port->dev; in saa7164_encoder_register()
1364 if (port->type != SAA7164_MPEG_ENCODER) in saa7164_encoder_register()
1368 if (port->hwcfg.BARLocation == 0) { in saa7164_encoder_register()
1378 port->encodernorm = saa7164_tvnorms[0]; in saa7164_encoder_register()
1379 port->width = 720; in saa7164_encoder_register()
1380 port->mux_input = 1; /* Composite */ in saa7164_encoder_register()
1381 port->video_format = EU_VIDEO_FORMAT_MPEG_2; in saa7164_encoder_register()
1382 port->audio_format = 0; in saa7164_encoder_register()
1383 port->video_resolution = 0; in saa7164_encoder_register()
1384 port->ctl_brightness = 127; in saa7164_encoder_register()
1385 port->ctl_contrast = 66; in saa7164_encoder_register()
1386 port->ctl_hue = 128; in saa7164_encoder_register()
1387 port->ctl_saturation = 62; in saa7164_encoder_register()
1388 port->ctl_sharpness = 8; in saa7164_encoder_register()
1389 port->encoder_params.bitrate = ENCODER_DEF_BITRATE; in saa7164_encoder_register()
1390 port->encoder_params.bitrate_peak = ENCODER_DEF_BITRATE; in saa7164_encoder_register()
1391 port->encoder_params.bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR; in saa7164_encoder_register()
1392 port->encoder_params.stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_PS; in saa7164_encoder_register()
1393 port->encoder_params.ctl_mute = 0; in saa7164_encoder_register()
1394 port->encoder_params.ctl_aspect = V4L2_MPEG_VIDEO_ASPECT_4x3; in saa7164_encoder_register()
1395 port->encoder_params.refdist = 1; in saa7164_encoder_register()
1396 port->encoder_params.gop_size = SAA7164_ENCODER_DEFAULT_GOP_SIZE; in saa7164_encoder_register()
1397 port->std = V4L2_STD_NTSC_M; in saa7164_encoder_register()
1399 if (port->encodernorm.id & V4L2_STD_525_60) in saa7164_encoder_register()
1400 port->height = 480; in saa7164_encoder_register()
1402 port->height = 576; in saa7164_encoder_register()
1405 port->v4l_device = saa7164_encoder_alloc(port, in saa7164_encoder_register()
1408 if (!port->v4l_device) { in saa7164_encoder_register()
1415 video_set_drvdata(port->v4l_device, port); in saa7164_encoder_register()
1416 result = video_register_device(port->v4l_device, in saa7164_encoder_register()
1428 dev->name, port->v4l_device->num); in saa7164_encoder_register()
1431 saa7164_api_set_videomux(port); in saa7164_encoder_register()
1432 saa7164_api_set_usercontrol(port, PU_BRIGHTNESS_CONTROL); in saa7164_encoder_register()
1433 saa7164_api_set_usercontrol(port, PU_CONTRAST_CONTROL); in saa7164_encoder_register()
1434 saa7164_api_set_usercontrol(port, PU_HUE_CONTROL); in saa7164_encoder_register()
1435 saa7164_api_set_usercontrol(port, PU_SATURATION_CONTROL); in saa7164_encoder_register()
1436 saa7164_api_set_usercontrol(port, PU_SHARPNESS_CONTROL); in saa7164_encoder_register()
1437 saa7164_api_audio_mute(port, 0); in saa7164_encoder_register()
1438 saa7164_api_set_audio_volume(port, 20); in saa7164_encoder_register()
1439 saa7164_api_set_aspect_ratio(port); in saa7164_encoder_register()
1442 saa7164_api_set_audio_detection(port, 0); in saa7164_encoder_register()
1444 saa7164_api_set_encoder(port); in saa7164_encoder_register()
1445 saa7164_api_get_encoder(port); in saa7164_encoder_register()
1452 void saa7164_encoder_unregister(struct saa7164_port *port) in saa7164_encoder_unregister() argument
1454 struct saa7164_dev *dev = port->dev; in saa7164_encoder_unregister()
1456 dprintk(DBGLVL_ENC, "%s(port=%d)\n", __func__, port->nr); in saa7164_encoder_unregister()
1458 if (port->type != SAA7164_MPEG_ENCODER) in saa7164_encoder_unregister()
1461 if (port->v4l_device) { in saa7164_encoder_unregister()
1462 if (port->v4l_device->minor != -1) in saa7164_encoder_unregister()
1463 video_unregister_device(port->v4l_device); in saa7164_encoder_unregister()
1465 video_device_release(port->v4l_device); in saa7164_encoder_unregister()
1467 port->v4l_device = NULL; in saa7164_encoder_unregister()
1470 dprintk(DBGLVL_ENC, "%s(port=%d) done\n", __func__, port->nr); in saa7164_encoder_unregister()