Lines Matching refs:layer

161 	struct mxr_layer *layer = video_drvdata(file);  in mxr_querycap()  local
163 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_querycap()
166 strlcpy(cap->card, layer->vfd.name, sizeof(cap->card)); in mxr_querycap()
167 sprintf(cap->bus_info, "%d", layer->idx); in mxr_querycap()
192 static void mxr_layer_default_geo(struct mxr_layer *layer) in mxr_layer_default_geo() argument
194 struct mxr_device *mdev = layer->mdev; in mxr_layer_default_geo()
197 memset(&layer->geo, 0, sizeof(layer->geo)); in mxr_layer_default_geo()
201 layer->geo.dst.full_width = mbus_fmt.width; in mxr_layer_default_geo()
202 layer->geo.dst.full_height = mbus_fmt.height; in mxr_layer_default_geo()
203 layer->geo.dst.width = layer->geo.dst.full_width; in mxr_layer_default_geo()
204 layer->geo.dst.height = layer->geo.dst.full_height; in mxr_layer_default_geo()
205 layer->geo.dst.field = mbus_fmt.field; in mxr_layer_default_geo()
207 layer->geo.src.full_width = mbus_fmt.width; in mxr_layer_default_geo()
208 layer->geo.src.full_height = mbus_fmt.height; in mxr_layer_default_geo()
209 layer->geo.src.width = layer->geo.src.full_width; in mxr_layer_default_geo()
210 layer->geo.src.height = layer->geo.src.full_height; in mxr_layer_default_geo()
212 mxr_geometry_dump(mdev, &layer->geo); in mxr_layer_default_geo()
213 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0); in mxr_layer_default_geo()
214 mxr_geometry_dump(mdev, &layer->geo); in mxr_layer_default_geo()
217 static void mxr_layer_update_output(struct mxr_layer *layer) in mxr_layer_update_output() argument
219 struct mxr_device *mdev = layer->mdev; in mxr_layer_update_output()
224 if (layer->geo.dst.full_width == mbus_fmt.width && in mxr_layer_update_output()
225 layer->geo.dst.full_height == mbus_fmt.width) in mxr_layer_update_output()
228 layer->geo.dst.full_width = mbus_fmt.width; in mxr_layer_update_output()
229 layer->geo.dst.full_height = mbus_fmt.height; in mxr_layer_update_output()
230 layer->geo.dst.field = mbus_fmt.field; in mxr_layer_update_output()
231 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0); in mxr_layer_update_output()
233 mxr_geometry_dump(mdev, &layer->geo); in mxr_layer_update_output()
237 struct mxr_layer *layer, unsigned long fourcc);
239 struct mxr_layer *layer, unsigned long index);
244 struct mxr_layer *layer = video_drvdata(file); in mxr_enum_fmt() local
245 struct mxr_device *mdev = layer->mdev; in mxr_enum_fmt()
249 fmt = find_format_by_index(layer, f->index); in mxr_enum_fmt()
300 struct mxr_layer *layer = video_drvdata(file); in mxr_g_fmt() local
303 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_g_fmt()
305 pix->width = layer->geo.src.full_width; in mxr_g_fmt()
306 pix->height = layer->geo.src.full_height; in mxr_g_fmt()
308 pix->pixelformat = layer->fmt->fourcc; in mxr_g_fmt()
309 pix->colorspace = layer->fmt->colorspace; in mxr_g_fmt()
310 mxr_mplane_fill(pix->plane_fmt, layer->fmt, pix->width, pix->height); in mxr_g_fmt()
318 struct mxr_layer *layer = video_drvdata(file); in mxr_s_fmt() local
321 struct mxr_device *mdev = layer->mdev; in mxr_s_fmt()
322 struct mxr_geometry *geo = &layer->geo; in mxr_s_fmt()
327 fmt = find_format_by_fourcc(layer, pix->pixelformat); in mxr_s_fmt()
333 layer->fmt = fmt; in mxr_s_fmt()
337 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0); in mxr_s_fmt()
338 mxr_geometry_dump(mdev, &layer->geo); in mxr_s_fmt()
345 layer->ops.fix_geometry(layer, MXR_GEOMETRY_CROP, MXR_NO_OFFSET); in mxr_s_fmt()
346 mxr_geometry_dump(mdev, &layer->geo); in mxr_s_fmt()
350 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0); in mxr_s_fmt()
351 mxr_geometry_dump(mdev, &layer->geo); in mxr_s_fmt()
362 struct mxr_layer *layer = video_drvdata(file); in mxr_g_selection() local
363 struct mxr_geometry *geo = &layer->geo; in mxr_g_selection()
365 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_g_selection()
423 struct mxr_layer *layer = video_drvdata(file); in mxr_s_selection() local
424 struct mxr_geometry *geo = &layer->geo; in mxr_s_selection()
432 mxr_dbg(layer->mdev, "%s: rect: %dx%d@%d,%d\n", __func__, in mxr_s_selection()
477 layer->ops.fix_geometry(layer, stage, s->flags); in mxr_s_selection()
485 mxr_geometry_dump(layer->mdev, &layer->geo); in mxr_s_selection()
508 struct mxr_layer *layer = video_drvdata(file); in mxr_enum_dv_timings() local
509 struct mxr_device *mdev = layer->mdev; in mxr_enum_dv_timings()
525 struct mxr_layer *layer = video_drvdata(file); in mxr_s_dv_timings() local
526 struct mxr_device *mdev = layer->mdev; in mxr_s_dv_timings()
544 mxr_layer_update_output(layer); in mxr_s_dv_timings()
553 struct mxr_layer *layer = video_drvdata(file); in mxr_g_dv_timings() local
554 struct mxr_device *mdev = layer->mdev; in mxr_g_dv_timings()
568 struct mxr_layer *layer = video_drvdata(file); in mxr_dv_timings_cap() local
569 struct mxr_device *mdev = layer->mdev; in mxr_dv_timings_cap()
584 struct mxr_layer *layer = video_drvdata(file); in mxr_s_std() local
585 struct mxr_device *mdev = layer->mdev; in mxr_s_std()
603 mxr_layer_update_output(layer); in mxr_s_std()
610 struct mxr_layer *layer = video_drvdata(file); in mxr_g_std() local
611 struct mxr_device *mdev = layer->mdev; in mxr_g_std()
624 struct mxr_layer *layer = video_drvdata(file); in mxr_enum_output() local
625 struct mxr_device *mdev = layer->mdev; in mxr_enum_output()
651 struct mxr_layer *layer = video_drvdata(file); in mxr_s_output() local
652 struct mxr_device *mdev = layer->mdev; in mxr_s_output()
669 mxr_layer_update_output(layer); in mxr_s_output()
678 struct mxr_layer *layer = video_drvdata(file); in mxr_g_output() local
679 struct mxr_device *mdev = layer->mdev; in mxr_g_output()
691 struct mxr_layer *layer = video_drvdata(file); in mxr_reqbufs() local
693 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_reqbufs()
694 return vb2_reqbufs(&layer->vb_queue, p); in mxr_reqbufs()
699 struct mxr_layer *layer = video_drvdata(file); in mxr_querybuf() local
701 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_querybuf()
702 return vb2_querybuf(&layer->vb_queue, p); in mxr_querybuf()
707 struct mxr_layer *layer = video_drvdata(file); in mxr_qbuf() local
709 mxr_dbg(layer->mdev, "%s:%d(%d)\n", __func__, __LINE__, p->index); in mxr_qbuf()
710 return vb2_qbuf(&layer->vb_queue, p); in mxr_qbuf()
715 struct mxr_layer *layer = video_drvdata(file); in mxr_dqbuf() local
717 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_dqbuf()
718 return vb2_dqbuf(&layer->vb_queue, p, file->f_flags & O_NONBLOCK); in mxr_dqbuf()
724 struct mxr_layer *layer = video_drvdata(file); in mxr_expbuf() local
726 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_expbuf()
727 return vb2_expbuf(&layer->vb_queue, eb); in mxr_expbuf()
732 struct mxr_layer *layer = video_drvdata(file); in mxr_streamon() local
734 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_streamon()
735 return vb2_streamon(&layer->vb_queue, i); in mxr_streamon()
740 struct mxr_layer *layer = video_drvdata(file); in mxr_streamoff() local
742 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_streamoff()
743 return vb2_streamoff(&layer->vb_queue, i); in mxr_streamoff()
780 struct mxr_layer *layer = video_drvdata(file); in mxr_video_open() local
781 struct mxr_device *mdev = layer->mdev; in mxr_video_open()
785 if (mutex_lock_interruptible(&layer->mutex)) in mxr_video_open()
807 ret = vb2_queue_init(&layer->vb_queue); in mxr_video_open()
813 layer->fmt = layer->fmt_array[0]; in mxr_video_open()
815 mxr_layer_default_geo(layer); in mxr_video_open()
816 mutex_unlock(&layer->mutex); in mxr_video_open()
827 mutex_unlock(&layer->mutex); in mxr_video_open()
835 struct mxr_layer *layer = video_drvdata(file); in mxr_video_poll() local
838 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_poll()
840 mutex_lock(&layer->mutex); in mxr_video_poll()
841 res = vb2_poll(&layer->vb_queue, file, wait); in mxr_video_poll()
842 mutex_unlock(&layer->mutex); in mxr_video_poll()
848 struct mxr_layer *layer = video_drvdata(file); in mxr_video_mmap() local
851 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_mmap()
853 if (mutex_lock_interruptible(&layer->mutex)) in mxr_video_mmap()
855 ret = vb2_mmap(&layer->vb_queue, vma); in mxr_video_mmap()
856 mutex_unlock(&layer->mutex); in mxr_video_mmap()
862 struct mxr_layer *layer = video_drvdata(file); in mxr_video_release() local
864 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_release()
865 mutex_lock(&layer->mutex); in mxr_video_release()
867 vb2_queue_release(&layer->vb_queue); in mxr_video_release()
868 mxr_power_put(layer->mdev); in mxr_video_release()
871 mutex_unlock(&layer->mutex); in mxr_video_release()
888 struct mxr_layer *layer = vb2_get_drv_priv(vq); in queue_setup() local
889 const struct mxr_format *fmt = layer->fmt; in queue_setup()
891 struct mxr_device *mdev = layer->mdev; in queue_setup()
899 mxr_mplane_fill(planes, fmt, layer->geo.src.full_width, in queue_setup()
900 layer->geo.src.full_height); in queue_setup()
904 alloc_ctxs[i] = layer->mdev->alloc_ctx; in queue_setup()
918 struct mxr_layer *layer = vb2_get_drv_priv(vb->vb2_queue); in buf_queue() local
919 struct mxr_device *mdev = layer->mdev; in buf_queue()
922 spin_lock_irqsave(&layer->enq_slock, flags); in buf_queue()
923 list_add_tail(&buffer->list, &layer->enq_list); in buf_queue()
924 spin_unlock_irqrestore(&layer->enq_slock, flags); in buf_queue()
931 struct mxr_layer *layer = vb2_get_drv_priv(vq); in start_streaming() local
932 struct mxr_device *mdev = layer->mdev; in start_streaming()
940 mxr_layer_update_output(layer); in start_streaming()
941 layer->ops.format_set(layer); in start_streaming()
943 spin_lock_irqsave(&layer->enq_slock, flags); in start_streaming()
944 layer->state = MXR_LAYER_STREAMING; in start_streaming()
945 spin_unlock_irqrestore(&layer->enq_slock, flags); in start_streaming()
947 layer->ops.stream_set(layer, MXR_ENABLE); in start_streaming()
955 struct mxr_layer *layer = (struct mxr_layer *) arg; in mxr_watchdog() local
956 struct mxr_device *mdev = layer->mdev; in mxr_watchdog()
959 mxr_err(mdev, "watchdog fired for layer %s\n", layer->vfd.name); in mxr_watchdog()
961 spin_lock_irqsave(&layer->enq_slock, flags); in mxr_watchdog()
963 if (layer->update_buf == layer->shadow_buf) in mxr_watchdog()
964 layer->update_buf = NULL; in mxr_watchdog()
965 if (layer->update_buf) { in mxr_watchdog()
966 vb2_buffer_done(&layer->update_buf->vb, VB2_BUF_STATE_ERROR); in mxr_watchdog()
967 layer->update_buf = NULL; in mxr_watchdog()
969 if (layer->shadow_buf) { in mxr_watchdog()
970 vb2_buffer_done(&layer->shadow_buf->vb, VB2_BUF_STATE_ERROR); in mxr_watchdog()
971 layer->shadow_buf = NULL; in mxr_watchdog()
973 spin_unlock_irqrestore(&layer->enq_slock, flags); in mxr_watchdog()
978 struct mxr_layer *layer = vb2_get_drv_priv(vq); in stop_streaming() local
979 struct mxr_device *mdev = layer->mdev; in stop_streaming()
986 spin_lock_irqsave(&layer->enq_slock, flags); in stop_streaming()
989 layer->state = MXR_LAYER_STREAMING_FINISH; in stop_streaming()
992 list_for_each_entry_safe(buf, buf_tmp, &layer->enq_list, list) { in stop_streaming()
997 spin_unlock_irqrestore(&layer->enq_slock, flags); in stop_streaming()
1001 (unsigned long)layer); in stop_streaming()
1012 spin_lock_irqsave(&layer->enq_slock, flags); in stop_streaming()
1013 layer->state = MXR_LAYER_IDLE; in stop_streaming()
1014 spin_unlock_irqrestore(&layer->enq_slock, flags); in stop_streaming()
1017 layer->ops.stream_set(layer, MXR_DISABLE); in stop_streaming()
1034 int mxr_base_layer_register(struct mxr_layer *layer) in mxr_base_layer_register() argument
1036 struct mxr_device *mdev = layer->mdev; in mxr_base_layer_register()
1039 ret = video_register_device(&layer->vfd, VFL_TYPE_GRABBER, -1); in mxr_base_layer_register()
1044 layer->vfd.name, layer->vfd.num); in mxr_base_layer_register()
1048 void mxr_base_layer_unregister(struct mxr_layer *layer) in mxr_base_layer_unregister() argument
1050 video_unregister_device(&layer->vfd); in mxr_base_layer_unregister()
1053 void mxr_layer_release(struct mxr_layer *layer) in mxr_layer_release() argument
1055 if (layer->ops.release) in mxr_layer_release()
1056 layer->ops.release(layer); in mxr_layer_release()
1059 void mxr_base_layer_release(struct mxr_layer *layer) in mxr_base_layer_release() argument
1061 kfree(layer); in mxr_base_layer_release()
1072 struct mxr_layer *layer; in mxr_base_layer_create() local
1074 layer = kzalloc(sizeof(*layer), GFP_KERNEL); in mxr_base_layer_create()
1075 if (layer == NULL) { in mxr_base_layer_create()
1080 layer->mdev = mdev; in mxr_base_layer_create()
1081 layer->idx = idx; in mxr_base_layer_create()
1082 layer->ops = *ops; in mxr_base_layer_create()
1084 spin_lock_init(&layer->enq_slock); in mxr_base_layer_create()
1085 INIT_LIST_HEAD(&layer->enq_list); in mxr_base_layer_create()
1086 mutex_init(&layer->mutex); in mxr_base_layer_create()
1088 layer->vfd = (struct video_device) { in mxr_base_layer_create()
1095 strlcpy(layer->vfd.name, name, sizeof(layer->vfd.name)); in mxr_base_layer_create()
1097 video_set_drvdata(&layer->vfd, layer); in mxr_base_layer_create()
1098 layer->vfd.lock = &layer->mutex; in mxr_base_layer_create()
1099 layer->vfd.v4l2_dev = &mdev->v4l2_dev; in mxr_base_layer_create()
1101 layer->vb_queue = (struct vb2_queue) { in mxr_base_layer_create()
1104 .drv_priv = layer, in mxr_base_layer_create()
1109 .lock = &layer->mutex, in mxr_base_layer_create()
1112 return layer; in mxr_base_layer_create()
1119 struct mxr_layer *layer, unsigned long fourcc) in find_format_by_fourcc() argument
1123 for (i = 0; i < layer->fmt_array_size; ++i) in find_format_by_fourcc()
1124 if (layer->fmt_array[i]->fourcc == fourcc) in find_format_by_fourcc()
1125 return layer->fmt_array[i]; in find_format_by_fourcc()
1130 struct mxr_layer *layer, unsigned long index) in find_format_by_index() argument
1132 if (index >= layer->fmt_array_size) in find_format_by_index()
1134 return layer->fmt_array[index]; in find_format_by_index()