Lines Matching refs:mdev

36 	struct mxr_device *mdev, char *module_name)  in find_and_register_subdev()  argument
45 mxr_warn(mdev, "module %s is missing\n", module_name); in find_and_register_subdev()
52 mxr_warn(mdev, "module %s provides no subdev!\n", module_name); in find_and_register_subdev()
56 ret = v4l2_device_register_subdev(&mdev->v4l2_dev, sd); in find_and_register_subdev()
58 mxr_warn(mdev, "failed to register subdev %s\n", sd->name); in find_and_register_subdev()
66 int mxr_acquire_video(struct mxr_device *mdev, in mxr_acquire_video() argument
69 struct device *dev = mdev->dev; in mxr_acquire_video()
70 struct v4l2_device *v4l2_dev = &mdev->v4l2_dev; in mxr_acquire_video()
75 strlcpy(v4l2_dev->name, dev_name(mdev->dev), sizeof(v4l2_dev->name)); in mxr_acquire_video()
79 mxr_err(mdev, "could not register v4l2 device.\n"); in mxr_acquire_video()
83 mdev->alloc_ctx = vb2_dma_contig_init_ctx(mdev->dev); in mxr_acquire_video()
84 if (IS_ERR(mdev->alloc_ctx)) { in mxr_acquire_video()
85 mxr_err(mdev, "could not acquire vb2 allocator\n"); in mxr_acquire_video()
86 ret = PTR_ERR(mdev->alloc_ctx); in mxr_acquire_video()
91 mdev->output_cnt = 0; in mxr_acquire_video()
96 sd = find_and_register_subdev(mdev, conf->module_name); in mxr_acquire_video()
102 mxr_err(mdev, "no memory for '%s'\n", in mxr_acquire_video()
111 mdev->output[mdev->output_cnt++] = out; in mxr_acquire_video()
112 mxr_info(mdev, "added output '%s' from module '%s'\n", in mxr_acquire_video()
115 if (mdev->output_cnt >= MXR_MAX_OUTPUTS) in mxr_acquire_video()
119 if (mdev->output_cnt == 0) { in mxr_acquire_video()
120 mxr_err(mdev, "failed to register any output\n"); in mxr_acquire_video()
130 for (i = 0; i < mdev->output_cnt; ++i) in mxr_acquire_video()
131 kfree(mdev->output[i]); in mxr_acquire_video()
132 memset(mdev->output, 0, sizeof(mdev->output)); in mxr_acquire_video()
136 vb2_dma_contig_cleanup_ctx(mdev->alloc_ctx); in mxr_acquire_video()
146 void mxr_release_video(struct mxr_device *mdev) in mxr_release_video() argument
151 for (i = 0; i < mdev->output_cnt; ++i) in mxr_release_video()
152 kfree(mdev->output[i]); in mxr_release_video()
154 vb2_dma_contig_cleanup_ctx(mdev->alloc_ctx); in mxr_release_video()
155 v4l2_device_unregister(&mdev->v4l2_dev); in mxr_release_video()
163 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_querycap()
174 static void mxr_geometry_dump(struct mxr_device *mdev, struct mxr_geometry *geo) in mxr_geometry_dump() argument
176 mxr_dbg(mdev, "src.full_size = (%u, %u)\n", in mxr_geometry_dump()
178 mxr_dbg(mdev, "src.size = (%u, %u)\n", in mxr_geometry_dump()
180 mxr_dbg(mdev, "src.offset = (%u, %u)\n", in mxr_geometry_dump()
182 mxr_dbg(mdev, "dst.full_size = (%u, %u)\n", in mxr_geometry_dump()
184 mxr_dbg(mdev, "dst.size = (%u, %u)\n", in mxr_geometry_dump()
186 mxr_dbg(mdev, "dst.offset = (%u, %u)\n", in mxr_geometry_dump()
188 mxr_dbg(mdev, "ratio = (%u, %u)\n", in mxr_geometry_dump()
194 struct mxr_device *mdev = layer->mdev; in mxr_layer_default_geo() local
199 mxr_get_mbus_fmt(mdev, &mbus_fmt); in mxr_layer_default_geo()
212 mxr_geometry_dump(mdev, &layer->geo); in mxr_layer_default_geo()
214 mxr_geometry_dump(mdev, &layer->geo); in mxr_layer_default_geo()
219 struct mxr_device *mdev = layer->mdev; in mxr_layer_update_output() local
222 mxr_get_mbus_fmt(mdev, &mbus_fmt); in mxr_layer_update_output()
233 mxr_geometry_dump(mdev, &layer->geo); in mxr_layer_update_output()
245 struct mxr_device *mdev = layer->mdev; in mxr_enum_fmt() local
248 mxr_dbg(mdev, "%s\n", __func__); in mxr_enum_fmt()
303 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_g_fmt()
321 struct mxr_device *mdev = layer->mdev; in mxr_s_fmt() local
324 mxr_dbg(mdev, "%s:%d\n", __func__, __LINE__); in mxr_s_fmt()
329 mxr_warn(mdev, "not recognized fourcc: %08x\n", in mxr_s_fmt()
338 mxr_geometry_dump(mdev, &layer->geo); in mxr_s_fmt()
346 mxr_geometry_dump(mdev, &layer->geo); in mxr_s_fmt()
351 mxr_geometry_dump(mdev, &layer->geo); in mxr_s_fmt()
365 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_g_selection()
432 mxr_dbg(layer->mdev, "%s: rect: %dx%d@%d,%d\n", __func__, in mxr_s_selection()
485 mxr_geometry_dump(layer->mdev, &layer->geo); in mxr_s_selection()
509 struct mxr_device *mdev = layer->mdev; in mxr_enum_dv_timings() local
515 mutex_lock(&mdev->mutex); in mxr_enum_dv_timings()
516 ret = v4l2_subdev_call(to_outsd(mdev), pad, enum_dv_timings, timings); in mxr_enum_dv_timings()
517 mutex_unlock(&mdev->mutex); in mxr_enum_dv_timings()
526 struct mxr_device *mdev = layer->mdev; in mxr_s_dv_timings() local
530 mutex_lock(&mdev->mutex); in mxr_s_dv_timings()
535 if (mdev->n_output > 0) { in mxr_s_dv_timings()
536 mutex_unlock(&mdev->mutex); in mxr_s_dv_timings()
540 ret = v4l2_subdev_call(to_outsd(mdev), video, s_dv_timings, timings); in mxr_s_dv_timings()
542 mutex_unlock(&mdev->mutex); in mxr_s_dv_timings()
554 struct mxr_device *mdev = layer->mdev; in mxr_g_dv_timings() local
558 mutex_lock(&mdev->mutex); in mxr_g_dv_timings()
559 ret = v4l2_subdev_call(to_outsd(mdev), video, g_dv_timings, timings); in mxr_g_dv_timings()
560 mutex_unlock(&mdev->mutex); in mxr_g_dv_timings()
569 struct mxr_device *mdev = layer->mdev; in mxr_dv_timings_cap() local
575 mutex_lock(&mdev->mutex); in mxr_dv_timings_cap()
576 ret = v4l2_subdev_call(to_outsd(mdev), pad, dv_timings_cap, cap); in mxr_dv_timings_cap()
577 mutex_unlock(&mdev->mutex); in mxr_dv_timings_cap()
585 struct mxr_device *mdev = layer->mdev; in mxr_s_std() local
589 mutex_lock(&mdev->mutex); in mxr_s_std()
594 if (mdev->n_output > 0) { in mxr_s_std()
595 mutex_unlock(&mdev->mutex); in mxr_s_std()
599 ret = v4l2_subdev_call(to_outsd(mdev), video, s_std_output, norm); in mxr_s_std()
601 mutex_unlock(&mdev->mutex); in mxr_s_std()
611 struct mxr_device *mdev = layer->mdev; in mxr_g_std() local
615 mutex_lock(&mdev->mutex); in mxr_g_std()
616 ret = v4l2_subdev_call(to_outsd(mdev), video, g_std_output, norm); in mxr_g_std()
617 mutex_unlock(&mdev->mutex); in mxr_g_std()
625 struct mxr_device *mdev = layer->mdev; in mxr_enum_output() local
629 if (a->index >= mdev->output_cnt) in mxr_enum_output()
631 out = mdev->output[a->index]; in mxr_enum_output()
652 struct mxr_device *mdev = layer->mdev; in mxr_s_output() local
654 if (i >= mdev->output_cnt || mdev->output[i] == NULL) in mxr_s_output()
657 mutex_lock(&mdev->mutex); in mxr_s_output()
658 if (mdev->n_output > 0) { in mxr_s_output()
659 mutex_unlock(&mdev->mutex); in mxr_s_output()
662 mdev->current_output = i; in mxr_s_output()
664 v4l2_subdev_call(to_outsd(mdev), video, g_tvnorms_output, in mxr_s_output()
666 mutex_unlock(&mdev->mutex); in mxr_s_output()
671 mxr_dbg(mdev, "tvnorms = %08llx\n", vfd->tvnorms); in mxr_s_output()
679 struct mxr_device *mdev = layer->mdev; in mxr_g_output() local
681 mutex_lock(&mdev->mutex); in mxr_g_output()
682 *p = mdev->current_output; in mxr_g_output()
683 mutex_unlock(&mdev->mutex); in mxr_g_output()
693 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_reqbufs()
701 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_querybuf()
709 mxr_dbg(layer->mdev, "%s:%d(%d)\n", __func__, __LINE__, p->index); in mxr_qbuf()
717 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_dqbuf()
726 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_expbuf()
734 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_streamon()
742 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_streamoff()
781 struct mxr_device *mdev = layer->mdev; in mxr_video_open() local
784 mxr_dbg(mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_open()
792 mxr_err(mdev, "v4l2_fh_open failed\n"); in mxr_video_open()
801 ret = mxr_power_get(mdev); in mxr_video_open()
803 mxr_err(mdev, "power on failed\n"); in mxr_video_open()
809 mxr_err(mdev, "failed to initialize vb2 queue\n"); in mxr_video_open()
821 mxr_power_put(mdev); in mxr_video_open()
838 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_poll()
851 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_mmap()
864 mxr_dbg(layer->mdev, "%s:%d\n", __func__, __LINE__); in mxr_video_release()
868 mxr_power_put(layer->mdev); in mxr_video_release()
891 struct mxr_device *mdev = layer->mdev; in queue_setup() local
894 mxr_dbg(mdev, "%s\n", __func__); in queue_setup()
898 mxr_dbg(mdev, "fmt = %s\n", fmt->name); in queue_setup()
904 alloc_ctxs[i] = layer->mdev->alloc_ctx; in queue_setup()
906 mxr_dbg(mdev, "size[%d] = %08x\n", i, sizes[i]); in queue_setup()
920 struct mxr_device *mdev = layer->mdev; in buf_queue() local
927 mxr_dbg(mdev, "queuing buffer\n"); in buf_queue()
933 struct mxr_device *mdev = layer->mdev; in start_streaming() local
936 mxr_dbg(mdev, "%s\n", __func__); in start_streaming()
939 mxr_output_get(mdev); in start_streaming()
949 mxr_streamer_get(mdev); in start_streaming()
957 struct mxr_device *mdev = layer->mdev; in mxr_watchdog() local
960 mxr_err(mdev, "watchdog fired for layer %s\n", layer->vfd.name); in mxr_watchdog()
982 struct mxr_device *mdev = layer->mdev; in stop_streaming() local
987 mxr_dbg(mdev, "%s\n", __func__); in stop_streaming()
1022 mxr_streamer_put(mdev); in stop_streaming()
1024 mxr_output_put(mdev); in stop_streaming()
1039 struct mxr_device *mdev = layer->mdev; in mxr_base_layer_register() local
1044 mxr_err(mdev, "failed to register video device\n"); in mxr_base_layer_register()
1046 mxr_info(mdev, "registered layer %s as /dev/video%d\n", in mxr_base_layer_register()
1072 struct mxr_layer *mxr_base_layer_create(struct mxr_device *mdev, in mxr_base_layer_create() argument
1079 mxr_err(mdev, "not enough memory for layer.\n"); in mxr_base_layer_create()
1083 layer->mdev = mdev; in mxr_base_layer_create()
1102 layer->vfd.v4l2_dev = &mdev->v4l2_dev; in mxr_base_layer_create()