Lines Matching defs:vsensor

98 static void vimc_sensor_tpg_s_format(struct vimc_sensor_device *vsensor,
103 tpg_reset_source(&vsensor->tpg, format->width, format->height,
105 tpg_s_bytesperline(&vsensor->tpg, 0, format->width * vpix->bpp);
106 tpg_s_buf_height(&vsensor->tpg, format->height);
107 tpg_s_fourcc(&vsensor->tpg, vpix->pixelformat);
109 tpg_s_field(&vsensor->tpg, format->field, false);
110 tpg_s_colorspace(&vsensor->tpg, format->colorspace);
111 tpg_s_ycbcr_enc(&vsensor->tpg, format->ycbcr_enc);
112 tpg_s_quantization(&vsensor->tpg, format->quantization);
113 tpg_s_xfer_func(&vsensor->tpg, format->xfer_func);
141 struct vimc_sensor_device *vsensor = v4l2_get_subdevdata(sd);
145 if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE && vsensor->frame)
153 dev_dbg(vsensor->ved.dev, "%s: format update: "
155 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsensor->sd.name,
180 struct vimc_sensor_device *vsensor =
188 tpg_fill_plane_buffer(&vsensor->tpg, 0, 0, vsensor->frame);
189 tpg_calc_text_basep(&vsensor->tpg, basep, 0, vsensor->frame);
190 switch (vsensor->hw.osd_value) {
192 const char *order = tpg_g_color_order(&vsensor->tpg);
194 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height,
198 vsensor->tpg.brightness,
199 vsensor->tpg.contrast,
200 vsensor->tpg.saturation,
201 vsensor->tpg.hue);
202 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str);
204 vsensor->hw.size.width, vsensor->hw.size.height);
205 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str);
211 ms = div_u64(ktime_get_ns() - vsensor->hw.start_stream_ts, 1000000);
217 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str);
225 return vsensor->frame;
230 struct vimc_sensor_device *vsensor =
243 vimc_sensor_tpg_s_format(vsensor, format);
249 vsensor->hw.size.width = format->width;
250 vsensor->hw.size.height = format->height;
258 vsensor->frame = vmalloc(frame_size);
259 if (!vsensor->frame)
262 vsensor->hw.start_stream_ts = ktime_get_ns();
265 vfree(vsensor->frame);
266 vsensor->frame = NULL;
294 struct vimc_sensor_device *vsensor =
299 tpg_s_pattern(&vsensor->tpg, ctrl->val);
302 tpg_s_hflip(&vsensor->tpg, ctrl->val);
305 tpg_s_vflip(&vsensor->tpg, ctrl->val);
308 tpg_s_brightness(&vsensor->tpg, ctrl->val);
311 tpg_s_contrast(&vsensor->tpg, ctrl->val);
314 tpg_s_hue(&vsensor->tpg, ctrl->val);
317 tpg_s_saturation(&vsensor->tpg, ctrl->val);
320 vsensor->hw.osd_value = ctrl->val;
334 struct vimc_sensor_device *vsensor =
337 v4l2_ctrl_handler_free(&vsensor->hdl);
338 tpg_free(&vsensor->tpg);
339 v4l2_subdev_cleanup(&vsensor->sd);
340 media_entity_cleanup(vsensor->ved.ent);
341 kfree(vsensor);
381 struct vimc_sensor_device *vsensor;
384 /* Allocate the vsensor struct */
385 vsensor = kzalloc_obj(*vsensor);
386 if (!vsensor)
389 v4l2_ctrl_handler_init(&vsensor->hdl, 4);
391 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_class, NULL);
392 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_test_pattern, NULL);
393 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_osd_mode, NULL);
394 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
396 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops,
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 vsensor->sd.ctrl_handler = &vsensor->hdl;
407 if (vsensor->hdl.error) {
408 ret = vsensor->hdl.error;
413 tpg_init(&vsensor->tpg, fmt_default.width, fmt_default.height);
414 ret = tpg_alloc(&vsensor->tpg, VIMC_FRAME_MAX_WIDTH);
419 vsensor->pad.flags = MEDIA_PAD_FL_SOURCE;
420 ret = vimc_ent_sd_register(&vsensor->ved, &vsensor->sd, v4l2_dev,
422 MEDIA_ENT_F_CAM_SENSOR, 1, &vsensor->pad,
427 vsensor->ved.process_frame = vimc_sensor_process_frame;
428 vsensor->ved.dev = vimc->mdev.dev;
430 return &vsensor->ved;
433 tpg_free(&vsensor->tpg);
435 v4l2_ctrl_handler_free(&vsensor->hdl);
437 kfree(vsensor);