Lines Matching defs:layer

158 	struct mxr_layer *layer = video_drvdata(file);
160 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
163 strlcpy(cap->card, layer->vfd.name, sizeof cap->card);
164 sprintf(cap->bus_info, "%d", layer->idx);
190 static void mxr_layer_default_geo(struct mxr_layer *layer)
192 struct mxr_device *mdev = layer->mdev;
195 memset(&layer->geo, 0, sizeof layer->geo);
199 layer->geo.dst.full_width = mbus_fmt.width;
200 layer->geo.dst.full_height = mbus_fmt.height;
201 layer->geo.dst.width = layer->geo.dst.full_width;
202 layer->geo.dst.height = layer->geo.dst.full_height;
203 layer->geo.dst.field = mbus_fmt.field;
205 layer->geo.src.full_width = mbus_fmt.width;
206 layer->geo.src.full_height = mbus_fmt.height;
207 layer->geo.src.width = layer->geo.src.full_width;
208 layer->geo.src.height = layer->geo.src.full_height;
210 mxr_geometry_dump(mdev, &layer->geo);
211 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
212 mxr_geometry_dump(mdev, &layer->geo);
215 static void mxr_layer_update_output(struct mxr_layer *layer)
217 struct mxr_device *mdev = layer->mdev;
222 if (layer->geo.dst.full_width == mbus_fmt.width &&
223 layer->geo.dst.full_height == mbus_fmt.width)
226 layer->geo.dst.full_width = mbus_fmt.width;
227 layer->geo.dst.full_height = mbus_fmt.height;
228 layer->geo.dst.field = mbus_fmt.field;
229 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SINK, 0);
231 mxr_geometry_dump(mdev, &layer->geo);
235 struct mxr_layer *layer, unsigned long fourcc);
237 struct mxr_layer *layer, unsigned long index);
242 struct mxr_layer *layer = video_drvdata(file);
243 struct mxr_device *mdev = layer->mdev;
247 fmt = find_format_by_index(layer, f->index);
298 struct mxr_layer *layer = video_drvdata(file);
301 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
303 pix->width = layer->geo.src.full_width;
304 pix->height = layer->geo.src.full_height;
306 pix->pixelformat = layer->fmt->fourcc;
307 pix->colorspace = layer->fmt->colorspace;
308 mxr_mplane_fill(pix->plane_fmt, layer->fmt, pix->width, pix->height);
316 struct mxr_layer *layer = video_drvdata(file);
319 struct mxr_device *mdev = layer->mdev;
320 struct mxr_geometry *geo = &layer->geo;
325 fmt = find_format_by_fourcc(layer, pix->pixelformat);
331 layer->fmt = fmt;
335 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
336 mxr_geometry_dump(mdev, &layer->geo);
343 layer->ops.fix_geometry(layer, MXR_GEOMETRY_CROP, MXR_NO_OFFSET);
344 mxr_geometry_dump(mdev, &layer->geo);
348 layer->ops.fix_geometry(layer, MXR_GEOMETRY_SOURCE, 0);
349 mxr_geometry_dump(mdev, &layer->geo);
360 struct mxr_layer *layer = video_drvdata(file);
361 struct mxr_geometry *geo = &layer->geo;
363 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
421 struct mxr_layer *layer = video_drvdata(file);
422 struct mxr_geometry *geo = &layer->geo;
430 mxr_dbg(layer->mdev, "%s: rect: %dx%d@%d,%d\n", __func__,
475 layer->ops.fix_geometry(layer, stage, s->flags);
483 mxr_geometry_dump(layer->mdev, &layer->geo);
506 struct mxr_layer *layer = video_drvdata(file);
507 struct mxr_device *mdev = layer->mdev;
521 struct mxr_layer *layer = video_drvdata(file);
522 struct mxr_device *mdev = layer->mdev;
540 mxr_layer_update_output(layer);
549 struct mxr_layer *layer = video_drvdata(file);
550 struct mxr_device *mdev = layer->mdev;
563 struct mxr_layer *layer = video_drvdata(file);
564 struct mxr_device *mdev = layer->mdev;
582 mxr_layer_update_output(layer);
589 struct mxr_layer *layer = video_drvdata(file);
590 struct mxr_device *mdev = layer->mdev;
603 struct mxr_layer *layer = video_drvdata(file);
604 struct mxr_device *mdev = layer->mdev;
630 struct mxr_layer *layer = video_drvdata(file);
631 struct mxr_device *mdev = layer->mdev;
648 mxr_layer_update_output(layer);
657 struct mxr_layer *layer = video_drvdata(file);
658 struct mxr_device *mdev = layer->mdev;
670 struct mxr_layer *layer = video_drvdata(file);
672 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
673 return vb2_reqbufs(&layer->vb_queue, p);
678 struct mxr_layer *layer = video_drvdata(file);
680 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
681 return vb2_querybuf(&layer->vb_queue, p);
686 struct mxr_layer *layer = video_drvdata(file);
688 mxr_dbg(layer->mdev, "%s:%d(%d)\n", __func__, __LINE__, p->index);
689 return vb2_qbuf(&layer->vb_queue, p);
694 struct mxr_layer *layer = video_drvdata(file);
696 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
697 return vb2_dqbuf(&layer->vb_queue, p, file->f_flags & O_NONBLOCK);
702 struct mxr_layer *layer = video_drvdata(file);
704 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
705 return vb2_streamon(&layer->vb_queue, i);
710 struct mxr_layer *layer = video_drvdata(file);
712 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
713 return vb2_streamoff(&layer->vb_queue, i);
748 struct mxr_layer *layer = video_drvdata(file);
749 struct mxr_device *mdev = layer->mdev;
762 /* leaving if layer is already initialized */
773 ret = vb2_queue_init(&layer->vb_queue);
779 layer->fmt = layer->fmt_array[0];
781 mxr_layer_default_geo(layer);
797 struct mxr_layer *layer = video_drvdata(file);
799 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
801 return vb2_poll(&layer->vb_queue, file, wait);
806 struct mxr_layer *layer = video_drvdata(file);
808 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
810 return vb2_mmap(&layer->vb_queue, vma);
815 struct mxr_layer *layer = video_drvdata(file);
817 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__);
819 vb2_queue_release(&layer->vb_queue);
820 mxr_power_put(layer->mdev);
839 struct mxr_layer *layer = vb2_get_drv_priv(vq);
840 const struct mxr_format *fmt = layer->fmt;
842 struct mxr_device *mdev = layer->mdev;
850 mxr_mplane_fill(planes, fmt, layer->geo.src.full_width,
851 layer->geo.src.full_height);
855 alloc_ctxs[i] = layer->mdev->alloc_ctx;
869 struct mxr_layer *layer = vb2_get_drv_priv(vb->vb2_queue);
870 struct mxr_device *mdev = layer->mdev;
873 spin_lock_irqsave(&layer->enq_slock, flags);
874 list_add_tail(&buffer->list, &layer->enq_list);
875 spin_unlock_irqrestore(&layer->enq_slock, flags);
882 struct mxr_layer *layer = vb2_get_drv_priv(vq);
884 mxr_dbg(layer->mdev, "%s\n", __func__);
885 mutex_lock(&layer->mutex);
890 struct mxr_layer *layer = vb2_get_drv_priv(vq);
892 mxr_dbg(layer->mdev, "%s\n", __func__);
893 mutex_unlock(&layer->mutex);
898 struct mxr_layer *layer = vb2_get_drv_priv(vq);
899 struct mxr_device *mdev = layer->mdev;
912 mxr_layer_update_output(layer);
913 layer->ops.format_set(layer);
914 /* enabling layer in hardware */
915 spin_lock_irqsave(&layer->enq_slock, flags);
916 layer->state = MXR_LAYER_STREAMING;
917 spin_unlock_irqrestore(&layer->enq_slock, flags);
919 layer->ops.stream_set(layer, MXR_ENABLE);
927 struct mxr_layer *layer = (struct mxr_layer *) arg;
928 struct mxr_device *mdev = layer->mdev;
931 mxr_err(mdev, "watchdog fired for layer %s\n", layer->vfd.name);
933 spin_lock_irqsave(&layer->enq_slock, flags);
935 if (layer->update_buf == layer->shadow_buf)
936 layer->update_buf = NULL;
937 if (layer->update_buf) {
938 vb2_buffer_done(&layer->update_buf->vb, VB2_BUF_STATE_ERROR);
939 layer->update_buf = NULL;
941 if (layer->shadow_buf) {
942 vb2_buffer_done(&layer->shadow_buf->vb, VB2_BUF_STATE_ERROR);
943 layer->shadow_buf = NULL;
945 spin_unlock_irqrestore(&layer->enq_slock, flags);
950 struct mxr_layer *layer = vb2_get_drv_priv(vq);
951 struct mxr_device *mdev = layer->mdev;
958 spin_lock_irqsave(&layer->enq_slock, flags);
961 layer->state = MXR_LAYER_STREAMING_FINISH;
964 list_for_each_entry_safe(buf, buf_tmp, &layer->enq_list, list) {
969 spin_unlock_irqrestore(&layer->enq_slock, flags);
973 (unsigned long)layer);
984 spin_lock_irqsave(&layer->enq_slock, flags);
985 layer->state = MXR_LAYER_IDLE;
986 spin_unlock_irqrestore(&layer->enq_slock, flags);
988 /* disabling layer in hardware */
989 layer->ops.stream_set(layer, MXR_DISABLE);
1007 int mxr_base_layer_register(struct mxr_layer *layer)
1009 struct mxr_device *mdev = layer->mdev;
1012 ret = video_register_device(&layer->vfd, VFL_TYPE_GRABBER, -1);
1016 mxr_info(mdev, "registered layer %s as /dev/video%d\n",
1017 layer->vfd.name, layer->vfd.num);
1021 void mxr_base_layer_unregister(struct mxr_layer *layer)
1023 video_unregister_device(&layer->vfd);
1026 void mxr_layer_release(struct mxr_layer *layer)
1028 if (layer->ops.release)
1029 layer->ops.release(layer);
1032 void mxr_base_layer_release(struct mxr_layer *layer)
1034 kfree(layer);
1045 struct mxr_layer *layer;
1047 layer = kzalloc(sizeof *layer, GFP_KERNEL);
1048 if (layer == NULL) {
1049 mxr_err(mdev, "not enough memory for layer.\n");
1053 layer->mdev = mdev;
1054 layer->idx = idx;
1055 layer->ops = *ops;
1057 spin_lock_init(&layer->enq_slock);
1058 INIT_LIST_HEAD(&layer->enq_list);
1059 mutex_init(&layer->mutex);
1061 layer->vfd = (struct video_device) {
1067 strlcpy(layer->vfd.name, name, sizeof(layer->vfd.name));
1069 set_bit(V4L2_FL_USE_FH_PRIO, &layer->vfd.flags);
1071 video_set_drvdata(&layer->vfd, layer);
1072 layer->vfd.lock = &layer->mutex;
1073 layer->vfd.v4l2_dev = &mdev->v4l2_dev;
1075 layer->vb_queue = (struct vb2_queue) {
1078 .drv_priv = layer,
1084 return layer;
1091 struct mxr_layer *layer, unsigned long fourcc)
1095 for (i = 0; i < layer->fmt_array_size; ++i)
1096 if (layer->fmt_array[i]->fourcc == fourcc)
1097 return layer->fmt_array[i];
1102 struct mxr_layer *layer, unsigned long index)
1104 if (index >= layer->fmt_array_size)
1106 return layer->fmt_array[index];