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()
919 struct mxr_layer *layer = vb2_get_drv_priv(vb->vb2_queue); in buf_queue() local
920 struct mxr_device *mdev = layer->mdev; in buf_queue()
923 spin_lock_irqsave(&layer->enq_slock, flags); in buf_queue()
924 list_add_tail(&buffer->list, &layer->enq_list); in buf_queue()
925 spin_unlock_irqrestore(&layer->enq_slock, flags); in buf_queue()
932 struct mxr_layer *layer = vb2_get_drv_priv(vq); in start_streaming() local
933 struct mxr_device *mdev = layer->mdev; in start_streaming()
941 mxr_layer_update_output(layer); in start_streaming()
942 layer->ops.format_set(layer); in start_streaming()
944 spin_lock_irqsave(&layer->enq_slock, flags); in start_streaming()
945 layer->state = MXR_LAYER_STREAMING; in start_streaming()
946 spin_unlock_irqrestore(&layer->enq_slock, flags); in start_streaming()
948 layer->ops.stream_set(layer, MXR_ENABLE); in start_streaming()
956 struct mxr_layer *layer = (struct mxr_layer *) arg; in mxr_watchdog() local
957 struct mxr_device *mdev = layer->mdev; in mxr_watchdog()
960 mxr_err(mdev, "watchdog fired for layer %s\n", layer->vfd.name); in mxr_watchdog()
962 spin_lock_irqsave(&layer->enq_slock, flags); in mxr_watchdog()
964 if (layer->update_buf == layer->shadow_buf) in mxr_watchdog()
965 layer->update_buf = NULL; in mxr_watchdog()
966 if (layer->update_buf) { in mxr_watchdog()
967 vb2_buffer_done(&layer->update_buf->vb.vb2_buf, in mxr_watchdog()
969 layer->update_buf = NULL; in mxr_watchdog()
971 if (layer->shadow_buf) { in mxr_watchdog()
972 vb2_buffer_done(&layer->shadow_buf->vb.vb2_buf, in mxr_watchdog()
974 layer->shadow_buf = NULL; in mxr_watchdog()
976 spin_unlock_irqrestore(&layer->enq_slock, flags); in mxr_watchdog()
981 struct mxr_layer *layer = vb2_get_drv_priv(vq); in stop_streaming() local
982 struct mxr_device *mdev = layer->mdev; in stop_streaming()
989 spin_lock_irqsave(&layer->enq_slock, flags); in stop_streaming()
992 layer->state = MXR_LAYER_STREAMING_FINISH; in stop_streaming()
995 list_for_each_entry_safe(buf, buf_tmp, &layer->enq_list, list) { in stop_streaming()
1000 spin_unlock_irqrestore(&layer->enq_slock, flags); in stop_streaming()
1004 (unsigned long)layer); in stop_streaming()
1015 spin_lock_irqsave(&layer->enq_slock, flags); in stop_streaming()
1016 layer->state = MXR_LAYER_IDLE; in stop_streaming()
1017 spin_unlock_irqrestore(&layer->enq_slock, flags); in stop_streaming()
1020 layer->ops.stream_set(layer, MXR_DISABLE); in stop_streaming()
1037 int mxr_base_layer_register(struct mxr_layer *layer) in mxr_base_layer_register() argument
1039 struct mxr_device *mdev = layer->mdev; in mxr_base_layer_register()
1042 ret = video_register_device(&layer->vfd, VFL_TYPE_GRABBER, -1); in mxr_base_layer_register()
1047 layer->vfd.name, layer->vfd.num); in mxr_base_layer_register()
1051 void mxr_base_layer_unregister(struct mxr_layer *layer) in mxr_base_layer_unregister() argument
1053 video_unregister_device(&layer->vfd); in mxr_base_layer_unregister()
1056 void mxr_layer_release(struct mxr_layer *layer) in mxr_layer_release() argument
1058 if (layer->ops.release) in mxr_layer_release()
1059 layer->ops.release(layer); in mxr_layer_release()
1062 void mxr_base_layer_release(struct mxr_layer *layer) in mxr_base_layer_release() argument
1064 kfree(layer); in mxr_base_layer_release()
1075 struct mxr_layer *layer; in mxr_base_layer_create() local
1077 layer = kzalloc(sizeof(*layer), GFP_KERNEL); in mxr_base_layer_create()
1078 if (layer == NULL) { in mxr_base_layer_create()
1083 layer->mdev = mdev; in mxr_base_layer_create()
1084 layer->idx = idx; in mxr_base_layer_create()
1085 layer->ops = *ops; in mxr_base_layer_create()
1087 spin_lock_init(&layer->enq_slock); in mxr_base_layer_create()
1088 INIT_LIST_HEAD(&layer->enq_list); in mxr_base_layer_create()
1089 mutex_init(&layer->mutex); in mxr_base_layer_create()
1091 layer->vfd = (struct video_device) { in mxr_base_layer_create()
1098 strlcpy(layer->vfd.name, name, sizeof(layer->vfd.name)); in mxr_base_layer_create()
1100 video_set_drvdata(&layer->vfd, layer); in mxr_base_layer_create()
1101 layer->vfd.lock = &layer->mutex; in mxr_base_layer_create()
1102 layer->vfd.v4l2_dev = &mdev->v4l2_dev; in mxr_base_layer_create()
1104 layer->vb_queue = (struct vb2_queue) { in mxr_base_layer_create()
1107 .drv_priv = layer, in mxr_base_layer_create()
1112 .lock = &layer->mutex, in mxr_base_layer_create()
1115 return layer; in mxr_base_layer_create()
1122 struct mxr_layer *layer, unsigned long fourcc) in find_format_by_fourcc() argument
1126 for (i = 0; i < layer->fmt_array_size; ++i) in find_format_by_fourcc()
1127 if (layer->fmt_array[i]->fourcc == fourcc) in find_format_by_fourcc()
1128 return layer->fmt_array[i]; in find_format_by_fourcc()
1133 struct mxr_layer *layer, unsigned long index) in find_format_by_index() argument
1135 if (index >= layer->fmt_array_size) in find_format_by_index()
1137 return layer->fmt_array[index]; in find_format_by_index()