Lines Matching refs:s

51 	struct cobalt_stream *s = q->drv_priv;  in cobalt_queue_setup()  local
52 unsigned size = s->stride * s->height; in cobalt_queue_setup()
65 alloc_ctxs[0] = s->cobalt->alloc_ctx; in cobalt_queue_setup()
71 struct cobalt_stream *s = vb->vb2_queue->drv_priv; in cobalt_buf_init() local
72 struct cobalt *cobalt = s->cobalt; in cobalt_buf_init()
78 struct sg_dma_desc_info *desc = &s->dma_desc_info[vb->index]; in cobalt_buf_init()
83 size = s->stride * s->height; in cobalt_buf_init()
93 s->is_audio ? audio_bytes : bytes); in cobalt_buf_init()
98 !s->is_output, sg_desc->nents, size, in cobalt_buf_init()
99 s->width * s->bpp, s->stride, desc); in cobalt_buf_init()
107 struct cobalt_stream *s = vb->vb2_queue->drv_priv; in cobalt_buf_cleanup() local
108 struct sg_dma_desc_info *desc = &s->dma_desc_info[vb->index]; in cobalt_buf_cleanup()
116 struct cobalt_stream *s = vb->vb2_queue->drv_priv; in cobalt_buf_prepare() local
118 vb2_set_plane_payload(vb, 0, s->stride * s->height); in cobalt_buf_prepare()
123 static void chain_all_buffers(struct cobalt_stream *s) in chain_all_buffers() argument
130 list_for_each(p, &s->bufs) { in chain_all_buffers()
132 desc[i] = &s->dma_desc_info[cb->vb.vb2_buf.index]; in chain_all_buffers()
143 struct cobalt_stream *s = q->drv_priv; in cobalt_buf_queue() local
145 struct sg_dma_desc_info *desc = &s->dma_desc_info[vb->index]; in cobalt_buf_queue()
152 spin_lock_irqsave(&s->irqlock, flags); in cobalt_buf_queue()
153 list_add_tail(&cb->list, &s->bufs); in cobalt_buf_queue()
154 chain_all_buffers(s); in cobalt_buf_queue()
155 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_buf_queue()
158 static void cobalt_enable_output(struct cobalt_stream *s) in cobalt_enable_output() argument
160 struct cobalt *cobalt = s->cobalt; in cobalt_enable_output()
161 struct v4l2_bt_timings *bt = &s->timings.bt; in cobalt_enable_output()
164 unsigned fmt = s->pixfmt != V4L2_PIX_FMT_BGR32 ? in cobalt_enable_output()
175 sd_fmt.format.colorspace = s->colorspace; in cobalt_enable_output()
176 sd_fmt.format.xfer_func = s->xfer_func; in cobalt_enable_output()
177 sd_fmt.format.ycbcr_enc = s->ycbcr_enc; in cobalt_enable_output()
178 sd_fmt.format.quantization = s->quantization; in cobalt_enable_output()
183 switch (s->pixfmt) { in cobalt_enable_output()
191 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt); in cobalt_enable_output()
213 static void cobalt_enable_input(struct cobalt_stream *s) in cobalt_enable_input() argument
215 struct cobalt *cobalt = s->cobalt; in cobalt_enable_input()
216 int ch = (int)s->video_channel; in cobalt_enable_input()
219 .pad = s->pad_source, in cobalt_enable_input()
224 .pad = s->pad_source, in cobalt_enable_input()
230 s->video_channel, in cobalt_enable_input()
231 s->input == 0 ? "hdmi" : "generator", in cobalt_enable_input()
237 switch (s->pixfmt) { in cobalt_enable_input()
242 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, in cobalt_enable_input()
249 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, in cobalt_enable_input()
257 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, in cobalt_enable_input()
263 static void cobalt_dma_start_streaming(struct cobalt_stream *s) in cobalt_dma_start_streaming() argument
265 struct cobalt *cobalt = s->cobalt; in cobalt_dma_start_streaming()
266 int rx = s->video_channel; in cobalt_dma_start_streaming()
272 spin_lock_irqsave(&s->irqlock, flags); in cobalt_dma_start_streaming()
273 if (!s->is_output) { in cobalt_dma_start_streaming()
288 cb = list_first_entry(&s->bufs, struct cobalt_buffer, list); in cobalt_dma_start_streaming()
289 omni_sg_dma_start(s, &s->dma_desc_info[cb->vb.vb2_buf.index]); in cobalt_dma_start_streaming()
290 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_dma_start_streaming()
295 struct cobalt_stream *s = q->drv_priv; in cobalt_start_streaming() local
296 struct cobalt *cobalt = s->cobalt; in cobalt_start_streaming()
300 int rx = s->video_channel; in cobalt_start_streaming()
303 struct v4l2_bt_timings *bt = &s->timings.bt; in cobalt_start_streaming()
307 if (s->is_audio) in cobalt_start_streaming()
309 if (s->is_output) { in cobalt_start_streaming()
310 s->unstable_frame = false; in cobalt_start_streaming()
311 cobalt_enable_output(s); in cobalt_start_streaming()
315 cobalt_enable_input(s); in cobalt_start_streaming()
349 s->unstable_frame = true; in cobalt_start_streaming()
350 s->enable_freewheel = false; in cobalt_start_streaming()
351 s->enable_cvi = false; in cobalt_start_streaming()
352 s->skip_first_frames = 0; in cobalt_start_streaming()
355 s->sequence = 0; in cobalt_start_streaming()
356 cobalt_dma_start_streaming(s); in cobalt_start_streaming()
360 static void cobalt_dma_stop_streaming(struct cobalt_stream *s) in cobalt_dma_stop_streaming() argument
362 struct cobalt *cobalt = s->cobalt; in cobalt_dma_stop_streaming()
368 int rx = s->video_channel; in cobalt_dma_stop_streaming()
372 if (!s->is_output) { in cobalt_dma_stop_streaming()
374 } else if (!s->is_audio) { in cobalt_dma_stop_streaming()
383 spin_lock_irqsave(&s->irqlock, flags); in cobalt_dma_stop_streaming()
384 list_for_each(p, &s->bufs) { in cobalt_dma_stop_streaming()
386 desc = &s->dma_desc_info[cb->vb.vb2_buf.index]; in cobalt_dma_stop_streaming()
390 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_dma_stop_streaming()
393 if (!wait_event_timeout(s->q.done_wq, is_dma_done(s), in cobalt_dma_stop_streaming()
395 omni_sg_dma_abort_channel(s); in cobalt_dma_stop_streaming()
399 1 << s->dma_channel); in cobalt_dma_stop_streaming()
404 struct cobalt_stream *s = q->drv_priv; in cobalt_stop_streaming() local
405 struct cobalt *cobalt = s->cobalt; in cobalt_stop_streaming()
406 int rx = s->video_channel; in cobalt_stop_streaming()
414 cobalt_dma_stop_streaming(s); in cobalt_stop_streaming()
417 spin_lock_irqsave(&s->irqlock, flags); in cobalt_stop_streaming()
418 list_for_each_safe(p, safe, &s->bufs) { in cobalt_stop_streaming()
423 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_stop_streaming()
425 if (s->is_audio || s->is_output) in cobalt_stop_streaming()
473 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_register() local
474 struct cobalt *cobalt = s->cobalt; in cobalt_g_register()
482 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_register() local
483 struct cobalt *cobalt = s->cobalt; in cobalt_s_register()
493 struct cobalt_stream *s = video_drvdata(file); in cobalt_querycap() local
494 struct cobalt *cobalt = s->cobalt; in cobalt_querycap()
501 if (s->is_output) in cobalt_querycap()
512 static void cobalt_video_input_status_show(struct cobalt_stream *s) in cobalt_video_input_status_show() argument
519 int rx = s->video_channel; in cobalt_video_input_status_show()
520 struct cobalt *cobalt = s->cobalt; in cobalt_video_input_status_show()
592 struct cobalt_stream *s = video_drvdata(file); in cobalt_log_status() local
593 struct cobalt *cobalt = s->cobalt; in cobalt_log_status()
603 s->dma_channel, s->video_channel); in cobalt_log_status()
607 v4l2_subdev_call(s->sd, core, log_status); in cobalt_log_status()
608 if (!s->is_output) { in cobalt_log_status()
609 cobalt_video_input_status_show(s); in cobalt_log_status()
627 struct cobalt_stream *s = video_drvdata(file); in cobalt_enum_dv_timings() local
629 if (s->input == 1) { in cobalt_enum_dv_timings()
637 return v4l2_subdev_call(s->sd, in cobalt_enum_dv_timings()
644 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_dv_timings() local
647 if (s->input == 1) { in cobalt_s_dv_timings()
652 if (v4l2_match_dv_timings(timings, &s->timings, 0)) in cobalt_s_dv_timings()
655 if (vb2_is_busy(&s->q)) in cobalt_s_dv_timings()
658 err = v4l2_subdev_call(s->sd, in cobalt_s_dv_timings()
661 s->timings = *timings; in cobalt_s_dv_timings()
662 s->width = timings->bt.width; in cobalt_s_dv_timings()
663 s->height = timings->bt.height; in cobalt_s_dv_timings()
664 s->stride = timings->bt.width * s->bpp; in cobalt_s_dv_timings()
672 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_dv_timings() local
674 if (s->input == 1) { in cobalt_g_dv_timings()
678 return v4l2_subdev_call(s->sd, in cobalt_g_dv_timings()
685 struct cobalt_stream *s = video_drvdata(file); in cobalt_query_dv_timings() local
687 if (s->input == 1) { in cobalt_query_dv_timings()
691 return v4l2_subdev_call(s->sd, in cobalt_query_dv_timings()
698 struct cobalt_stream *s = video_drvdata(file); in cobalt_dv_timings_cap() local
701 return v4l2_subdev_call(s->sd, in cobalt_dv_timings_cap()
731 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_fmt_vid_cap() local
735 pix->width = s->width; in cobalt_g_fmt_vid_cap()
736 pix->height = s->height; in cobalt_g_fmt_vid_cap()
737 pix->bytesperline = s->stride; in cobalt_g_fmt_vid_cap()
740 if (s->input == 1) { in cobalt_g_fmt_vid_cap()
743 sd_fmt.pad = s->pad_source; in cobalt_g_fmt_vid_cap()
745 v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); in cobalt_g_fmt_vid_cap()
749 pix->pixelformat = s->pixfmt; in cobalt_g_fmt_vid_cap()
758 struct cobalt_stream *s = video_drvdata(file); in cobalt_try_fmt_vid_cap() local
779 if (s->input == 1) { in cobalt_try_fmt_vid_cap()
785 sd_fmt.pad = s->pad_source; in cobalt_try_fmt_vid_cap()
787 v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); in cobalt_try_fmt_vid_cap()
818 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_fmt_vid_cap() local
821 if (vb2_is_busy(&s->q)) in cobalt_s_fmt_vid_cap()
827 s->width = pix->width; in cobalt_s_fmt_vid_cap()
828 s->height = pix->height; in cobalt_s_fmt_vid_cap()
829 s->stride = pix->bytesperline; in cobalt_s_fmt_vid_cap()
832 s->bpp = COBALT_BYTES_PER_PIXEL_YUYV; in cobalt_s_fmt_vid_cap()
835 s->bpp = COBALT_BYTES_PER_PIXEL_RGB24; in cobalt_s_fmt_vid_cap()
838 s->bpp = COBALT_BYTES_PER_PIXEL_RGB32; in cobalt_s_fmt_vid_cap()
843 s->pixfmt = pix->pixelformat; in cobalt_s_fmt_vid_cap()
844 cobalt_enable_input(s); in cobalt_s_fmt_vid_cap()
893 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_fmt_vid_out() local
896 pix->width = s->width; in cobalt_g_fmt_vid_out()
897 pix->height = s->height; in cobalt_g_fmt_vid_out()
898 pix->bytesperline = s->stride; in cobalt_g_fmt_vid_out()
900 pix->pixelformat = s->pixfmt; in cobalt_g_fmt_vid_out()
901 pix->colorspace = s->colorspace; in cobalt_g_fmt_vid_out()
902 pix->xfer_func = s->xfer_func; in cobalt_g_fmt_vid_out()
903 pix->ycbcr_enc = s->ycbcr_enc; in cobalt_g_fmt_vid_out()
904 pix->quantization = s->quantization; in cobalt_g_fmt_vid_out()
932 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_fmt_vid_out() local
940 if (vb2_is_busy(&s->q) && (pix->pixelformat != s->pixfmt || in cobalt_s_fmt_vid_out()
941 pix->width != s->width || pix->height != s->height || in cobalt_s_fmt_vid_out()
942 pix->bytesperline != s->stride)) in cobalt_s_fmt_vid_out()
947 s->bpp = COBALT_BYTES_PER_PIXEL_YUYV; in cobalt_s_fmt_vid_out()
951 s->bpp = COBALT_BYTES_PER_PIXEL_RGB32; in cobalt_s_fmt_vid_out()
957 s->width = pix->width; in cobalt_s_fmt_vid_out()
958 s->height = pix->height; in cobalt_s_fmt_vid_out()
959 s->stride = pix->bytesperline; in cobalt_s_fmt_vid_out()
960 s->pixfmt = pix->pixelformat; in cobalt_s_fmt_vid_out()
961 s->colorspace = pix->colorspace; in cobalt_s_fmt_vid_out()
962 s->xfer_func = pix->xfer_func; in cobalt_s_fmt_vid_out()
963 s->ycbcr_enc = pix->ycbcr_enc; in cobalt_s_fmt_vid_out()
964 s->quantization = pix->quantization; in cobalt_s_fmt_vid_out()
967 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt); in cobalt_s_fmt_vid_out()
974 struct cobalt_stream *s = video_drvdata(file); in cobalt_enum_input() local
980 "HDMI-%d", s->video_channel); in cobalt_enum_input()
983 "Generator-%d", s->video_channel); in cobalt_enum_input()
988 return v4l2_subdev_call(s->sd, in cobalt_enum_input()
994 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_input() local
996 *i = s->input; in cobalt_g_input()
1002 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_input() local
1006 if (vb2_is_busy(&s->q)) in cobalt_s_input()
1008 s->input = i; in cobalt_s_input()
1010 cobalt_enable_input(s); in cobalt_s_input()
1012 if (s->input == 1) /* Test Pattern Generator */ in cobalt_s_input()
1015 return v4l2_subdev_call(s->sd, video, s_routing, in cobalt_s_input()
1043 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_edid() local
1047 if (edid->pad >= (s->is_output ? 1 : 2)) in cobalt_g_edid()
1050 ret = v4l2_subdev_call(s->sd, pad, get_edid, edid); in cobalt_g_edid()
1057 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_edid() local
1064 ret = v4l2_subdev_call(s->sd, pad, set_edid, edid); in cobalt_s_edid()
1170 struct cobalt_stream *s = cobalt->streams + node; in cobalt_node_register() local
1171 struct video_device *vdev = &s->vdev; in cobalt_node_register()
1172 struct vb2_queue *q = &s->q; in cobalt_node_register()
1175 mutex_init(&s->lock); in cobalt_node_register()
1176 spin_lock_init(&s->irqlock); in cobalt_node_register()
1180 s->width = 1920; in cobalt_node_register()
1182 s->height = s->is_audio ? 4 : 1080; in cobalt_node_register()
1184 if (s->is_audio) { in cobalt_node_register()
1185 s->bpp = 1; in cobalt_node_register()
1186 s->pixfmt = V4L2_PIX_FMT_GREY; in cobalt_node_register()
1187 } else if (s->is_output) { in cobalt_node_register()
1188 s->bpp = COBALT_BYTES_PER_PIXEL_RGB32; in cobalt_node_register()
1189 s->pixfmt = V4L2_PIX_FMT_BGR32; in cobalt_node_register()
1191 s->bpp = COBALT_BYTES_PER_PIXEL_YUYV; in cobalt_node_register()
1192 s->pixfmt = V4L2_PIX_FMT_YUYV; in cobalt_node_register()
1194 s->colorspace = V4L2_COLORSPACE_SRGB; in cobalt_node_register()
1195 s->stride = s->width * s->bpp; in cobalt_node_register()
1197 if (!s->is_audio) { in cobalt_node_register()
1198 if (s->is_dummy) in cobalt_node_register()
1201 if (s->is_dummy) in cobalt_node_register()
1204 vdev->fops = s->is_output ? &cobalt_out_fops : in cobalt_node_register()
1207 vdev->vfl_dir = s->is_output ? VFL_DIR_TX : VFL_DIR_RX; in cobalt_node_register()
1208 vdev->lock = &s->lock; in cobalt_node_register()
1209 if (s->sd) in cobalt_node_register()
1210 vdev->ctrl_handler = s->sd->ctrl_handler; in cobalt_node_register()
1211 s->timings = dv1080p60; in cobalt_node_register()
1212 v4l2_subdev_call(s->sd, video, s_dv_timings, &s->timings); in cobalt_node_register()
1213 if (!s->is_output && s->sd) in cobalt_node_register()
1214 cobalt_enable_input(s); in cobalt_node_register()
1215 vdev->ioctl_ops = s->is_dummy ? &cobalt_ioctl_empty_ops : in cobalt_node_register()
1219 INIT_LIST_HEAD(&s->bufs); in cobalt_node_register()
1220 q->type = s->is_output ? V4L2_BUF_TYPE_VIDEO_OUTPUT : in cobalt_node_register()
1223 q->io_modes |= s->is_output ? VB2_WRITE : VB2_READ; in cobalt_node_register()
1224 q->drv_priv = s; in cobalt_node_register()
1230 q->lock = &s->lock; in cobalt_node_register()
1233 video_set_drvdata(vdev, s); in cobalt_node_register()
1235 if (!s->is_audio && ret == 0) in cobalt_node_register()
1237 else if (!s->is_dummy) in cobalt_node_register()
1238 ret = cobalt_alsa_init(s); in cobalt_node_register()
1241 if (!s->is_audio) in cobalt_node_register()
1271 struct cobalt_stream *s = cobalt->streams + node; in cobalt_nodes_unregister() local
1272 struct video_device *vdev = &s->vdev; in cobalt_nodes_unregister()
1274 if (!s->is_audio) in cobalt_nodes_unregister()
1276 else if (!s->is_dummy) in cobalt_nodes_unregister()
1277 cobalt_alsa_exit(s); in cobalt_nodes_unregister()