Lines Matching refs:vcam

164 static void vcamera_fill_fmt(struct virtual_camera *vcam,  in vcamera_fill_fmt()  argument
167 fmt->code = vcam->fmt_code; in vcamera_fill_fmt()
168 fmt->width = vcam->cur_mode->width; in vcamera_fill_fmt()
169 fmt->height = vcam->cur_mode->height; in vcamera_fill_fmt()
173 static void vcamera_get_default_fmt(struct virtual_camera *vcam) in vcamera_get_default_fmt() argument
175 struct device *dev = &vcam->client->dev; in vcamera_get_default_fmt()
176 struct v4l2_mbus_framefmt *def_fmt = &vcam->def_fmt; in vcamera_get_default_fmt()
179 vcam->cur_mode = vcamera_get_best_mode(def_fmt); in vcamera_get_default_fmt()
180 if (vcam->cur_mode->width != def_fmt->width || in vcamera_get_default_fmt()
181 vcam->cur_mode->height != def_fmt->height) in vcamera_get_default_fmt()
184 vcam->cur_mode->width, vcam->cur_mode->height); in vcamera_get_default_fmt()
191 vcam->fmt_code = MEDIA_BUS_FMT_SBGGR8_1X8; in vcamera_get_default_fmt()
193 def_fmt->code, vcam->fmt_code); in vcamera_get_default_fmt()
195 vcam->fmt_code = def_fmt->code; in vcamera_get_default_fmt()
199 if (!vcam->link_frequency) in vcamera_get_default_fmt()
200 vcam->link_frequency = 500000000; in vcamera_get_default_fmt()
202 vcamera_fill_fmt(vcam, def_fmt); in vcamera_get_default_fmt()
209 struct virtual_camera *vcam = to_virtual_camera(sd); in vcamera_get_fmt() local
217 mutex_lock(&vcam->mutex); in vcamera_get_fmt()
219 mutex_unlock(&vcam->mutex); in vcamera_get_fmt()
226 mutex_lock(&vcam->mutex); in vcamera_get_fmt()
227 vcamera_fill_fmt(vcam, mbus_fmt); in vcamera_get_fmt()
228 mutex_unlock(&vcam->mutex); in vcamera_get_fmt()
237 struct virtual_camera *vcam = to_virtual_camera(sd); in vcamera_set_fmt() local
241 vcam->cur_mode = vcamera_get_best_mode(mf); in vcamera_set_fmt()
250 vcam->fmt_code = supported_formats[index].code; in vcamera_set_fmt()
252 mutex_lock(&vcam->mutex); in vcamera_set_fmt()
259 mutex_unlock(&vcam->mutex); in vcamera_set_fmt()
263 if (vcam->streaming) { in vcamera_set_fmt()
264 mutex_unlock(&vcam->mutex); in vcamera_set_fmt()
268 vcamera_fill_fmt(vcam, mf); in vcamera_set_fmt()
271 mutex_unlock(&vcam->mutex); in vcamera_set_fmt()
312 static inline void vcamera_set_vts(struct virtual_camera *vcam, s32 val) in vcamera_set_vts() argument
319 struct virtual_camera *vcam = to_virtual_camera(sd); in vcamera_s_stream() local
321 mutex_lock(&vcam->mutex); in vcamera_s_stream()
324 if (on == vcam->streaming) in vcamera_s_stream()
328 vcam->streaming = on; in vcamera_s_stream()
331 mutex_unlock(&vcam->mutex); in vcamera_s_stream()
338 struct virtual_camera *vcam = to_virtual_camera(sd); in vcamera_open() local
341 mutex_lock(&vcam->mutex); in vcamera_open()
345 vcamera_fill_fmt(vcam, try_fmt); in vcamera_open()
347 mutex_unlock(&vcam->mutex); in vcamera_open()
355 struct virtual_camera *vcam = container_of(ctrl->handler, in vcamera_s_ctrl() local
358 struct i2c_client *client = vcam->client; in vcamera_s_ctrl()
363 vcamera_set_vts(vcam, ctrl->val); in vcamera_s_ctrl()
366 vcam->link_frequency = link_freq_menu_items[ctrl->val]; in vcamera_s_ctrl()
368 ctrl->val, vcam->link_frequency); in vcamera_s_ctrl()
410 static int vcamera_initialize_controls(struct virtual_camera *vcam) in vcamera_initialize_controls() argument
417 handler = &vcam->ctrl_handler; in vcamera_initialize_controls()
418 mode = vcam->cur_mode; in vcamera_initialize_controls()
423 handler->lock = &vcam->mutex; in vcamera_initialize_controls()
425 vcam->link_freq = v4l2_ctrl_new_int_menu(handler, &vcamera_ctrl_ops, in vcamera_initialize_controls()
431 vcam->hblank = v4l2_ctrl_new_std(handler, NULL, V4L2_CID_HBLANK, in vcamera_initialize_controls()
433 if (vcam->hblank) in vcamera_initialize_controls()
434 vcam->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; in vcamera_initialize_controls()
436 vcam->vblank = v4l2_ctrl_new_std(handler, &vcamera_ctrl_ops, in vcamera_initialize_controls()
446 vcam->subdev.ctrl_handler = handler; in vcamera_initialize_controls()
449 if (link_freq_menu_items[i] > vcam->link_frequency && i >= 1) { in vcamera_initialize_controls()
450 v4l2_ctrl_s_ctrl(vcam->link_freq, i - 1); in vcamera_initialize_controls()
456 dev_warn(&vcam->client->dev, in vcamera_initialize_controls()
458 vcam->link_frequency, link_freq_menu_items[i - 1]); in vcamera_initialize_controls()
459 v4l2_ctrl_s_ctrl(vcam->link_freq, i - 1); in vcamera_initialize_controls()
465 static int vcamera_check_sensor_id(struct virtual_camera *vcam, in vcamera_check_sensor_id() argument
473 struct virtual_camera *vcam) in vcamera_get_pdata() argument
484 vcam->def_fmt.width = val; in vcamera_get_pdata()
487 vcam->def_fmt.height = val; in vcamera_get_pdata()
490 vcam->def_fmt.code = val; in vcamera_get_pdata()
506 vcam->link_frequency = bus_cfg->link_frequencies[0]; in vcamera_get_pdata()
518 struct virtual_camera *vcam; in vcamera_probe() local
521 vcam = devm_kzalloc(dev, sizeof(*vcam), GFP_KERNEL); in vcamera_probe()
522 if (!vcam) in vcamera_probe()
525 vcam->client = client; in vcamera_probe()
526 vcamera_get_pdata(client, vcam); in vcamera_probe()
527 vcamera_get_default_fmt(vcam); in vcamera_probe()
529 mutex_init(&vcam->mutex); in vcamera_probe()
530 v4l2_i2c_subdev_init(&vcam->subdev, client, &vcamera_subdev_ops); in vcamera_probe()
531 ret = vcamera_initialize_controls(vcam); in vcamera_probe()
535 ret = vcamera_check_sensor_id(vcam, client); in vcamera_probe()
540 vcam->subdev.internal_ops = &vcamera_internal_ops; in vcamera_probe()
543 vcam->pad.flags = MEDIA_PAD_FL_SOURCE; in vcamera_probe()
544 vcam->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in vcamera_probe()
545 vcam->subdev.entity.type = MEDIA_ENT_T_V4L2_SUBDEV_SENSOR; in vcamera_probe()
546 ret = media_entity_init(&vcam->subdev.entity, 1, &vcam->pad, 0); in vcamera_probe()
551 ret = v4l2_async_register_subdev(&vcam->subdev); in vcamera_probe()
563 media_entity_cleanup(&vcam->subdev.entity); in vcamera_probe()
566 v4l2_ctrl_handler_free(&vcam->ctrl_handler); in vcamera_probe()
568 mutex_destroy(&vcam->mutex); in vcamera_probe()
575 struct virtual_camera *vcam = i2c_get_clientdata(client); in vcamera_remove() local
577 v4l2_async_unregister_subdev(&vcam->subdev); in vcamera_remove()
578 media_entity_cleanup(&vcam->subdev.entity); in vcamera_remove()
579 v4l2_ctrl_handler_free(&vcam->ctrl_handler); in vcamera_remove()
580 mutex_destroy(&vcam->mutex); in vcamera_remove()