Lines Matching refs:s
50 struct cobalt_stream *s = q->drv_priv; in cobalt_queue_setup() local
51 unsigned size = s->stride * s->height; in cobalt_queue_setup()
66 struct cobalt_stream *s = vb->vb2_queue->drv_priv; in cobalt_buf_init() local
67 struct cobalt *cobalt = s->cobalt; in cobalt_buf_init()
73 struct sg_dma_desc_info *desc = &s->dma_desc_info[vb->index]; in cobalt_buf_init()
78 size = s->stride * s->height; in cobalt_buf_init()
88 s->is_audio ? audio_bytes : bytes); in cobalt_buf_init()
93 !s->is_output, sg_desc->nents, size, in cobalt_buf_init()
94 s->width * s->bpp, s->stride, desc); in cobalt_buf_init()
102 struct cobalt_stream *s = vb->vb2_queue->drv_priv; in cobalt_buf_cleanup() local
103 struct sg_dma_desc_info *desc = &s->dma_desc_info[vb->index]; in cobalt_buf_cleanup()
111 struct cobalt_stream *s = vb->vb2_queue->drv_priv; in cobalt_buf_prepare() local
113 vb2_set_plane_payload(vb, 0, s->stride * s->height); in cobalt_buf_prepare()
118 static void chain_all_buffers(struct cobalt_stream *s) in chain_all_buffers() argument
125 list_for_each(p, &s->bufs) { in chain_all_buffers()
127 desc[i] = &s->dma_desc_info[cb->vb.vb2_buf.index]; in chain_all_buffers()
138 struct cobalt_stream *s = q->drv_priv; in cobalt_buf_queue() local
140 struct sg_dma_desc_info *desc = &s->dma_desc_info[vb->index]; in cobalt_buf_queue()
147 spin_lock_irqsave(&s->irqlock, flags); in cobalt_buf_queue()
148 list_add_tail(&cb->list, &s->bufs); in cobalt_buf_queue()
149 chain_all_buffers(s); in cobalt_buf_queue()
150 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_buf_queue()
153 static void cobalt_enable_output(struct cobalt_stream *s) in cobalt_enable_output() argument
155 struct cobalt *cobalt = s->cobalt; in cobalt_enable_output()
156 struct v4l2_bt_timings *bt = &s->timings.bt; in cobalt_enable_output()
159 unsigned fmt = s->pixfmt != V4L2_PIX_FMT_BGR32 ? in cobalt_enable_output()
173 sd_fmt.format.colorspace = s->colorspace; in cobalt_enable_output()
174 sd_fmt.format.xfer_func = s->xfer_func; in cobalt_enable_output()
175 sd_fmt.format.ycbcr_enc = s->ycbcr_enc; in cobalt_enable_output()
176 sd_fmt.format.quantization = s->quantization; in cobalt_enable_output()
181 switch (s->pixfmt) { in cobalt_enable_output()
189 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt); in cobalt_enable_output()
211 static void cobalt_enable_input(struct cobalt_stream *s) in cobalt_enable_input() argument
213 struct cobalt *cobalt = s->cobalt; in cobalt_enable_input()
214 int ch = (int)s->video_channel; in cobalt_enable_input()
217 .pad = s->pad_source, in cobalt_enable_input()
222 .pad = s->pad_source, in cobalt_enable_input()
228 s->video_channel, in cobalt_enable_input()
229 s->input == 0 ? "hdmi" : "generator", in cobalt_enable_input()
235 switch (s->pixfmt) { in cobalt_enable_input()
240 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, in cobalt_enable_input()
247 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, in cobalt_enable_input()
255 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, in cobalt_enable_input()
261 static void cobalt_dma_start_streaming(struct cobalt_stream *s) in cobalt_dma_start_streaming() argument
263 struct cobalt *cobalt = s->cobalt; in cobalt_dma_start_streaming()
264 int rx = s->video_channel; in cobalt_dma_start_streaming()
270 spin_lock_irqsave(&s->irqlock, flags); in cobalt_dma_start_streaming()
271 if (!s->is_output) { in cobalt_dma_start_streaming()
286 cb = list_first_entry(&s->bufs, struct cobalt_buffer, list); in cobalt_dma_start_streaming()
287 omni_sg_dma_start(s, &s->dma_desc_info[cb->vb.vb2_buf.index]); in cobalt_dma_start_streaming()
288 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_dma_start_streaming()
293 struct cobalt_stream *s = q->drv_priv; in cobalt_start_streaming() local
294 struct cobalt *cobalt = s->cobalt; in cobalt_start_streaming()
298 int rx = s->video_channel; in cobalt_start_streaming()
301 struct v4l2_bt_timings *bt = &s->timings.bt; in cobalt_start_streaming()
305 if (s->is_audio) in cobalt_start_streaming()
307 if (s->is_output) { in cobalt_start_streaming()
308 s->unstable_frame = false; in cobalt_start_streaming()
309 cobalt_enable_output(s); in cobalt_start_streaming()
313 cobalt_enable_input(s); in cobalt_start_streaming()
347 s->unstable_frame = true; in cobalt_start_streaming()
348 s->enable_freewheel = false; in cobalt_start_streaming()
349 s->enable_cvi = false; in cobalt_start_streaming()
350 s->skip_first_frames = 0; in cobalt_start_streaming()
353 s->sequence = 0; in cobalt_start_streaming()
354 cobalt_dma_start_streaming(s); in cobalt_start_streaming()
358 static void cobalt_dma_stop_streaming(struct cobalt_stream *s) in cobalt_dma_stop_streaming() argument
360 struct cobalt *cobalt = s->cobalt; in cobalt_dma_stop_streaming()
366 int rx = s->video_channel; in cobalt_dma_stop_streaming()
370 if (!s->is_output) { in cobalt_dma_stop_streaming()
372 } else if (!s->is_audio) { in cobalt_dma_stop_streaming()
381 spin_lock_irqsave(&s->irqlock, flags); in cobalt_dma_stop_streaming()
382 list_for_each(p, &s->bufs) { in cobalt_dma_stop_streaming()
384 desc = &s->dma_desc_info[cb->vb.vb2_buf.index]; in cobalt_dma_stop_streaming()
388 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_dma_stop_streaming()
391 if (!wait_event_timeout(s->q.done_wq, is_dma_done(s), in cobalt_dma_stop_streaming()
393 omni_sg_dma_abort_channel(s); in cobalt_dma_stop_streaming()
397 1 << s->dma_channel); in cobalt_dma_stop_streaming()
402 struct cobalt_stream *s = q->drv_priv; in cobalt_stop_streaming() local
403 struct cobalt *cobalt = s->cobalt; in cobalt_stop_streaming()
404 int rx = s->video_channel; in cobalt_stop_streaming()
412 cobalt_dma_stop_streaming(s); in cobalt_stop_streaming()
415 spin_lock_irqsave(&s->irqlock, flags); in cobalt_stop_streaming()
416 list_for_each_safe(p, safe, &s->bufs) { in cobalt_stop_streaming()
421 spin_unlock_irqrestore(&s->irqlock, flags); in cobalt_stop_streaming()
423 if (s->is_audio || s->is_output) in cobalt_stop_streaming()
471 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_register() local
472 struct cobalt *cobalt = s->cobalt; in cobalt_g_register()
480 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_register() local
481 struct cobalt *cobalt = s->cobalt; in cobalt_s_register()
491 struct cobalt_stream *s = video_drvdata(file); in cobalt_querycap() local
492 struct cobalt *cobalt = s->cobalt; in cobalt_querycap()
499 if (s->is_output) in cobalt_querycap()
510 static void cobalt_video_input_status_show(struct cobalt_stream *s) in cobalt_video_input_status_show() argument
517 int rx = s->video_channel; in cobalt_video_input_status_show()
518 struct cobalt *cobalt = s->cobalt; in cobalt_video_input_status_show()
590 struct cobalt_stream *s = video_drvdata(file); in cobalt_log_status() local
591 struct cobalt *cobalt = s->cobalt; in cobalt_log_status()
601 s->dma_channel, s->video_channel); in cobalt_log_status()
605 v4l2_subdev_call(s->sd, core, log_status); in cobalt_log_status()
606 if (!s->is_output) { in cobalt_log_status()
607 cobalt_video_input_status_show(s); in cobalt_log_status()
625 struct cobalt_stream *s = video_drvdata(file); in cobalt_enum_dv_timings() local
627 if (s->input == 1) { in cobalt_enum_dv_timings()
635 return v4l2_subdev_call(s->sd, in cobalt_enum_dv_timings()
642 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_dv_timings() local
645 if (s->input == 1) { in cobalt_s_dv_timings()
650 if (v4l2_match_dv_timings(timings, &s->timings, 0, true)) in cobalt_s_dv_timings()
653 if (vb2_is_busy(&s->q)) in cobalt_s_dv_timings()
656 err = v4l2_subdev_call(s->sd, in cobalt_s_dv_timings()
659 s->timings = *timings; in cobalt_s_dv_timings()
660 s->width = timings->bt.width; in cobalt_s_dv_timings()
661 s->height = timings->bt.height; in cobalt_s_dv_timings()
662 s->stride = timings->bt.width * s->bpp; in cobalt_s_dv_timings()
670 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_dv_timings() local
672 if (s->input == 1) { in cobalt_g_dv_timings()
676 return v4l2_subdev_call(s->sd, in cobalt_g_dv_timings()
683 struct cobalt_stream *s = video_drvdata(file); in cobalt_query_dv_timings() local
685 if (s->input == 1) { in cobalt_query_dv_timings()
689 return v4l2_subdev_call(s->sd, in cobalt_query_dv_timings()
696 struct cobalt_stream *s = video_drvdata(file); in cobalt_dv_timings_cap() local
699 return v4l2_subdev_call(s->sd, in cobalt_dv_timings_cap()
729 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_fmt_vid_cap() local
733 pix->width = s->width; in cobalt_g_fmt_vid_cap()
734 pix->height = s->height; in cobalt_g_fmt_vid_cap()
735 pix->bytesperline = s->stride; in cobalt_g_fmt_vid_cap()
738 if (s->input == 1) { in cobalt_g_fmt_vid_cap()
741 sd_fmt.pad = s->pad_source; in cobalt_g_fmt_vid_cap()
743 v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); in cobalt_g_fmt_vid_cap()
747 pix->pixelformat = s->pixfmt; in cobalt_g_fmt_vid_cap()
756 struct cobalt_stream *s = video_drvdata(file); in cobalt_try_fmt_vid_cap() local
777 if (s->input == 1) { in cobalt_try_fmt_vid_cap()
783 sd_fmt.pad = s->pad_source; in cobalt_try_fmt_vid_cap()
785 v4l2_subdev_call(s->sd, pad, get_fmt, NULL, &sd_fmt); in cobalt_try_fmt_vid_cap()
816 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_fmt_vid_cap() local
819 if (vb2_is_busy(&s->q)) in cobalt_s_fmt_vid_cap()
825 s->width = pix->width; in cobalt_s_fmt_vid_cap()
826 s->height = pix->height; in cobalt_s_fmt_vid_cap()
827 s->stride = pix->bytesperline; in cobalt_s_fmt_vid_cap()
830 s->bpp = COBALT_BYTES_PER_PIXEL_YUYV; in cobalt_s_fmt_vid_cap()
833 s->bpp = COBALT_BYTES_PER_PIXEL_RGB24; in cobalt_s_fmt_vid_cap()
836 s->bpp = COBALT_BYTES_PER_PIXEL_RGB32; in cobalt_s_fmt_vid_cap()
841 s->pixfmt = pix->pixelformat; in cobalt_s_fmt_vid_cap()
842 cobalt_enable_input(s); in cobalt_s_fmt_vid_cap()
891 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_fmt_vid_out() local
894 pix->width = s->width; in cobalt_g_fmt_vid_out()
895 pix->height = s->height; in cobalt_g_fmt_vid_out()
896 pix->bytesperline = s->stride; in cobalt_g_fmt_vid_out()
898 pix->pixelformat = s->pixfmt; in cobalt_g_fmt_vid_out()
899 pix->colorspace = s->colorspace; in cobalt_g_fmt_vid_out()
900 pix->xfer_func = s->xfer_func; in cobalt_g_fmt_vid_out()
901 pix->ycbcr_enc = s->ycbcr_enc; in cobalt_g_fmt_vid_out()
902 pix->quantization = s->quantization; in cobalt_g_fmt_vid_out()
930 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_fmt_vid_out() local
938 if (vb2_is_busy(&s->q) && (pix->pixelformat != s->pixfmt || in cobalt_s_fmt_vid_out()
939 pix->width != s->width || pix->height != s->height || in cobalt_s_fmt_vid_out()
940 pix->bytesperline != s->stride)) in cobalt_s_fmt_vid_out()
945 s->bpp = COBALT_BYTES_PER_PIXEL_YUYV; in cobalt_s_fmt_vid_out()
949 s->bpp = COBALT_BYTES_PER_PIXEL_RGB32; in cobalt_s_fmt_vid_out()
955 s->width = pix->width; in cobalt_s_fmt_vid_out()
956 s->height = pix->height; in cobalt_s_fmt_vid_out()
957 s->stride = pix->bytesperline; in cobalt_s_fmt_vid_out()
958 s->pixfmt = pix->pixelformat; in cobalt_s_fmt_vid_out()
959 s->colorspace = pix->colorspace; in cobalt_s_fmt_vid_out()
960 s->xfer_func = pix->xfer_func; in cobalt_s_fmt_vid_out()
961 s->ycbcr_enc = pix->ycbcr_enc; in cobalt_s_fmt_vid_out()
962 s->quantization = pix->quantization; in cobalt_s_fmt_vid_out()
965 v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt); in cobalt_s_fmt_vid_out()
972 struct cobalt_stream *s = video_drvdata(file); in cobalt_enum_input() local
978 "HDMI-%d", s->video_channel); in cobalt_enum_input()
981 "Generator-%d", s->video_channel); in cobalt_enum_input()
986 return v4l2_subdev_call(s->sd, in cobalt_enum_input()
992 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_input() local
994 *i = s->input; in cobalt_g_input()
1000 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_input() local
1004 if (vb2_is_busy(&s->q)) in cobalt_s_input()
1006 s->input = i; in cobalt_s_input()
1008 cobalt_enable_input(s); in cobalt_s_input()
1010 if (s->input == 1) /* Test Pattern Generator */ in cobalt_s_input()
1013 return v4l2_subdev_call(s->sd, video, s_routing, in cobalt_s_input()
1041 struct cobalt_stream *s = video_drvdata(file); in cobalt_g_edid() local
1045 if (edid->pad >= (s->is_output ? 1 : 2)) in cobalt_g_edid()
1048 ret = v4l2_subdev_call(s->sd, pad, get_edid, edid); in cobalt_g_edid()
1055 struct cobalt_stream *s = video_drvdata(file); in cobalt_s_edid() local
1062 ret = v4l2_subdev_call(s->sd, pad, set_edid, edid); in cobalt_s_edid()
1168 struct cobalt_stream *s = cobalt->streams + node; in cobalt_node_register() local
1169 struct video_device *vdev = &s->vdev; in cobalt_node_register()
1170 struct vb2_queue *q = &s->q; in cobalt_node_register()
1173 mutex_init(&s->lock); in cobalt_node_register()
1174 spin_lock_init(&s->irqlock); in cobalt_node_register()
1178 s->width = 1920; in cobalt_node_register()
1180 s->height = s->is_audio ? 4 : 1080; in cobalt_node_register()
1182 if (s->is_audio) { in cobalt_node_register()
1183 s->bpp = 1; in cobalt_node_register()
1184 s->pixfmt = V4L2_PIX_FMT_GREY; in cobalt_node_register()
1185 } else if (s->is_output) { in cobalt_node_register()
1186 s->bpp = COBALT_BYTES_PER_PIXEL_RGB32; in cobalt_node_register()
1187 s->pixfmt = V4L2_PIX_FMT_BGR32; in cobalt_node_register()
1189 s->bpp = COBALT_BYTES_PER_PIXEL_YUYV; in cobalt_node_register()
1190 s->pixfmt = V4L2_PIX_FMT_YUYV; in cobalt_node_register()
1192 s->colorspace = V4L2_COLORSPACE_SRGB; in cobalt_node_register()
1193 s->stride = s->width * s->bpp; in cobalt_node_register()
1195 if (!s->is_audio) { in cobalt_node_register()
1196 if (s->is_dummy) in cobalt_node_register()
1199 if (s->is_dummy) in cobalt_node_register()
1202 vdev->fops = s->is_output ? &cobalt_out_fops : in cobalt_node_register()
1205 vdev->vfl_dir = s->is_output ? VFL_DIR_TX : VFL_DIR_RX; in cobalt_node_register()
1206 vdev->lock = &s->lock; in cobalt_node_register()
1207 if (s->sd) in cobalt_node_register()
1208 vdev->ctrl_handler = s->sd->ctrl_handler; in cobalt_node_register()
1209 s->timings = dv1080p60; in cobalt_node_register()
1210 v4l2_subdev_call(s->sd, video, s_dv_timings, &s->timings); in cobalt_node_register()
1211 if (!s->is_output && s->sd) in cobalt_node_register()
1212 cobalt_enable_input(s); in cobalt_node_register()
1213 vdev->ioctl_ops = s->is_dummy ? &cobalt_ioctl_empty_ops : in cobalt_node_register()
1217 INIT_LIST_HEAD(&s->bufs); in cobalt_node_register()
1218 q->type = s->is_output ? V4L2_BUF_TYPE_VIDEO_OUTPUT : in cobalt_node_register()
1221 q->io_modes |= s->is_output ? VB2_WRITE : VB2_READ; in cobalt_node_register()
1222 q->drv_priv = s; in cobalt_node_register()
1228 q->lock = &s->lock; in cobalt_node_register()
1232 video_set_drvdata(vdev, s); in cobalt_node_register()
1234 if (!s->is_audio && ret == 0) in cobalt_node_register()
1236 else if (!s->is_dummy) in cobalt_node_register()
1237 ret = cobalt_alsa_init(s); in cobalt_node_register()
1240 if (!s->is_audio) in cobalt_node_register()
1270 struct cobalt_stream *s = cobalt->streams + node; in cobalt_nodes_unregister() local
1271 struct video_device *vdev = &s->vdev; in cobalt_nodes_unregister()
1273 if (!s->is_audio) in cobalt_nodes_unregister()
1275 else if (!s->is_dummy) in cobalt_nodes_unregister()
1276 cobalt_alsa_exit(s); in cobalt_nodes_unregister()