Lines Matching defs:vsensor

99 	struct vimc_sensor_device *vsensor =
104 vsensor->mbus_format;
109 static void vimc_sensor_tpg_s_format(struct vimc_sensor_device *vsensor)
112 vimc_pix_map_by_code(vsensor->mbus_format.code);
114 tpg_reset_source(&vsensor->tpg, vsensor->mbus_format.width,
115 vsensor->mbus_format.height, vsensor->mbus_format.field);
116 tpg_s_bytesperline(&vsensor->tpg, 0, vsensor->mbus_format.width * vpix->bpp);
117 tpg_s_buf_height(&vsensor->tpg, vsensor->mbus_format.height);
118 tpg_s_fourcc(&vsensor->tpg, vpix->pixelformat);
120 tpg_s_field(&vsensor->tpg, vsensor->mbus_format.field, false);
121 tpg_s_colorspace(&vsensor->tpg, vsensor->mbus_format.colorspace);
122 tpg_s_ycbcr_enc(&vsensor->tpg, vsensor->mbus_format.ycbcr_enc);
123 tpg_s_quantization(&vsensor->tpg, vsensor->mbus_format.quantization);
124 tpg_s_xfer_func(&vsensor->tpg, vsensor->mbus_format.xfer_func);
152 struct vimc_sensor_device *vsensor = v4l2_get_subdevdata(sd);
157 if (vsensor->frame)
160 mf = &vsensor->mbus_format;
168 dev_dbg(vsensor->ved.dev, "%s: format update: "
170 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsensor->sd.name,
196 struct vimc_sensor_device *vsensor =
204 tpg_fill_plane_buffer(&vsensor->tpg, 0, 0, vsensor->frame);
205 tpg_calc_text_basep(&vsensor->tpg, basep, 0, vsensor->frame);
206 switch (vsensor->osd_value) {
208 const char *order = tpg_g_color_order(&vsensor->tpg);
210 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height,
214 vsensor->tpg.brightness,
215 vsensor->tpg.contrast,
216 vsensor->tpg.saturation,
217 vsensor->tpg.hue);
218 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str);
220 vsensor->mbus_format.width,
221 vsensor->mbus_format.height);
222 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str);
228 ms = div_u64(ktime_get_ns() - vsensor->start_stream_ts, 1000000);
234 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str);
242 return vsensor->frame;
247 struct vimc_sensor_device *vsensor =
254 vsensor->start_stream_ts = ktime_get_ns();
257 vpix = vimc_pix_map_by_code(vsensor->mbus_format.code);
258 frame_size = vsensor->mbus_format.width * vpix->bpp *
259 vsensor->mbus_format.height;
265 vsensor->frame = vmalloc(frame_size);
266 if (!vsensor->frame)
270 vimc_sensor_tpg_s_format(vsensor);
274 vfree(vsensor->frame);
275 vsensor->frame = NULL;
299 struct vimc_sensor_device *vsensor =
304 tpg_s_pattern(&vsensor->tpg, ctrl->val);
307 tpg_s_hflip(&vsensor->tpg, ctrl->val);
310 tpg_s_vflip(&vsensor->tpg, ctrl->val);
313 tpg_s_brightness(&vsensor->tpg, ctrl->val);
316 tpg_s_contrast(&vsensor->tpg, ctrl->val);
319 tpg_s_hue(&vsensor->tpg, ctrl->val);
322 tpg_s_saturation(&vsensor->tpg, ctrl->val);
325 vsensor->osd_value = ctrl->val;
339 struct vimc_sensor_device *vsensor =
342 v4l2_ctrl_handler_free(&vsensor->hdl);
343 tpg_free(&vsensor->tpg);
344 media_entity_cleanup(vsensor->ved.ent);
345 kfree(vsensor);
385 struct vimc_sensor_device *vsensor;
388 /* Allocate the vsensor struct */
389 vsensor = kzalloc(sizeof(*vsensor), GFP_KERNEL);
390 if (!vsensor)
393 v4l2_ctrl_handler_init(&vsensor->hdl, 4);
395 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_class, NULL);
396 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_test_pattern, NULL);
397 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_osd_mode, NULL);
398 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
400 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
402 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
404 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
406 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
408 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
410 vsensor->sd.ctrl_handler = &vsensor->hdl;
411 if (vsensor->hdl.error) {
412 ret = vsensor->hdl.error;
417 tpg_init(&vsensor->tpg, vsensor->mbus_format.width,
418 vsensor->mbus_format.height);
419 ret = tpg_alloc(&vsensor->tpg, VIMC_FRAME_MAX_WIDTH);
424 vsensor->pad.flags = MEDIA_PAD_FL_SOURCE;
425 ret = vimc_ent_sd_register(&vsensor->ved, &vsensor->sd, v4l2_dev,
427 MEDIA_ENT_F_CAM_SENSOR, 1, &vsensor->pad,
432 vsensor->ved.process_frame = vimc_sensor_process_frame;
433 vsensor->ved.dev = vimc->mdev.dev;
436 vsensor->mbus_format = fmt_default;
438 return &vsensor->ved;
441 tpg_free(&vsensor->tpg);
443 v4l2_ctrl_handler_free(&vsensor->hdl);
445 kfree(vsensor);