Lines Matching refs:vsensor
99 struct vimc_sensor_device *vsensor = in vimc_sensor_get_fmt() local
104 vsensor->mbus_format; in vimc_sensor_get_fmt()
109 static void vimc_sensor_tpg_s_format(struct vimc_sensor_device *vsensor) in vimc_sensor_tpg_s_format() argument
112 vimc_pix_map_by_code(vsensor->mbus_format.code); in vimc_sensor_tpg_s_format()
114 tpg_reset_source(&vsensor->tpg, vsensor->mbus_format.width, in vimc_sensor_tpg_s_format()
115 vsensor->mbus_format.height, vsensor->mbus_format.field); in vimc_sensor_tpg_s_format()
116 tpg_s_bytesperline(&vsensor->tpg, 0, vsensor->mbus_format.width * vpix->bpp); in vimc_sensor_tpg_s_format()
117 tpg_s_buf_height(&vsensor->tpg, vsensor->mbus_format.height); in vimc_sensor_tpg_s_format()
118 tpg_s_fourcc(&vsensor->tpg, vpix->pixelformat); in vimc_sensor_tpg_s_format()
120 tpg_s_field(&vsensor->tpg, vsensor->mbus_format.field, false); in vimc_sensor_tpg_s_format()
121 tpg_s_colorspace(&vsensor->tpg, vsensor->mbus_format.colorspace); in vimc_sensor_tpg_s_format()
122 tpg_s_ycbcr_enc(&vsensor->tpg, vsensor->mbus_format.ycbcr_enc); in vimc_sensor_tpg_s_format()
123 tpg_s_quantization(&vsensor->tpg, vsensor->mbus_format.quantization); in vimc_sensor_tpg_s_format()
124 tpg_s_xfer_func(&vsensor->tpg, vsensor->mbus_format.xfer_func); in vimc_sensor_tpg_s_format()
152 struct vimc_sensor_device *vsensor = v4l2_get_subdevdata(sd); in vimc_sensor_set_fmt() local
157 if (vsensor->frame) in vimc_sensor_set_fmt()
160 mf = &vsensor->mbus_format; in vimc_sensor_set_fmt()
168 dev_dbg(vsensor->ved.dev, "%s: format update: " in vimc_sensor_set_fmt()
170 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsensor->sd.name, in vimc_sensor_set_fmt()
195 struct vimc_sensor_device *vsensor = in vimc_sensor_process_frame() local
203 tpg_fill_plane_buffer(&vsensor->tpg, 0, 0, vsensor->frame); in vimc_sensor_process_frame()
204 tpg_calc_text_basep(&vsensor->tpg, basep, 0, vsensor->frame); in vimc_sensor_process_frame()
205 switch (vsensor->osd_value) { in vimc_sensor_process_frame()
207 const char *order = tpg_g_color_order(&vsensor->tpg); in vimc_sensor_process_frame()
209 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, in vimc_sensor_process_frame()
213 vsensor->tpg.brightness, in vimc_sensor_process_frame()
214 vsensor->tpg.contrast, in vimc_sensor_process_frame()
215 vsensor->tpg.saturation, in vimc_sensor_process_frame()
216 vsensor->tpg.hue); in vimc_sensor_process_frame()
217 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str); in vimc_sensor_process_frame()
219 vsensor->mbus_format.width, in vimc_sensor_process_frame()
220 vsensor->mbus_format.height); in vimc_sensor_process_frame()
221 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str); in vimc_sensor_process_frame()
227 ms = div_u64(ktime_get_ns() - vsensor->start_stream_ts, 1000000); in vimc_sensor_process_frame()
233 tpg_gen_text(&vsensor->tpg, basep, line++ * line_height, 16, str); in vimc_sensor_process_frame()
241 return vsensor->frame; in vimc_sensor_process_frame()
246 struct vimc_sensor_device *vsensor = in vimc_sensor_s_stream() local
253 vsensor->start_stream_ts = ktime_get_ns(); in vimc_sensor_s_stream()
256 vpix = vimc_pix_map_by_code(vsensor->mbus_format.code); in vimc_sensor_s_stream()
257 frame_size = vsensor->mbus_format.width * vpix->bpp * in vimc_sensor_s_stream()
258 vsensor->mbus_format.height; in vimc_sensor_s_stream()
264 vsensor->frame = vmalloc(frame_size); in vimc_sensor_s_stream()
265 if (!vsensor->frame) in vimc_sensor_s_stream()
269 vimc_sensor_tpg_s_format(vsensor); in vimc_sensor_s_stream()
273 vfree(vsensor->frame); in vimc_sensor_s_stream()
274 vsensor->frame = NULL; in vimc_sensor_s_stream()
302 struct vimc_sensor_device *vsensor = in vimc_sensor_s_ctrl() local
307 tpg_s_pattern(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
310 tpg_s_hflip(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
313 tpg_s_vflip(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
316 tpg_s_brightness(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
319 tpg_s_contrast(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
322 tpg_s_hue(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
325 tpg_s_saturation(&vsensor->tpg, ctrl->val); in vimc_sensor_s_ctrl()
328 vsensor->osd_value = ctrl->val; in vimc_sensor_s_ctrl()
342 struct vimc_sensor_device *vsensor = in vimc_sensor_release() local
345 v4l2_ctrl_handler_free(&vsensor->hdl); in vimc_sensor_release()
346 tpg_free(&vsensor->tpg); in vimc_sensor_release()
347 media_entity_cleanup(vsensor->ved.ent); in vimc_sensor_release()
348 kfree(vsensor); in vimc_sensor_release()
388 struct vimc_sensor_device *vsensor; in vimc_sensor_add() local
392 vsensor = kzalloc(sizeof(*vsensor), GFP_KERNEL); in vimc_sensor_add()
393 if (!vsensor) in vimc_sensor_add()
396 v4l2_ctrl_handler_init(&vsensor->hdl, 4); in vimc_sensor_add()
398 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_class, NULL); in vimc_sensor_add()
399 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_test_pattern, NULL); in vimc_sensor_add()
400 v4l2_ctrl_new_custom(&vsensor->hdl, &vimc_sensor_ctrl_osd_mode, NULL); in vimc_sensor_add()
401 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops, in vimc_sensor_add()
403 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops, in vimc_sensor_add()
405 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops, in vimc_sensor_add()
407 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops, in vimc_sensor_add()
409 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops, in vimc_sensor_add()
411 v4l2_ctrl_new_std(&vsensor->hdl, &vimc_sensor_ctrl_ops, in vimc_sensor_add()
413 vsensor->sd.ctrl_handler = &vsensor->hdl; in vimc_sensor_add()
414 if (vsensor->hdl.error) { in vimc_sensor_add()
415 ret = vsensor->hdl.error; in vimc_sensor_add()
420 tpg_init(&vsensor->tpg, vsensor->mbus_format.width, in vimc_sensor_add()
421 vsensor->mbus_format.height); in vimc_sensor_add()
422 ret = tpg_alloc(&vsensor->tpg, VIMC_FRAME_MAX_WIDTH); in vimc_sensor_add()
427 vsensor->pad.flags = MEDIA_PAD_FL_SOURCE; in vimc_sensor_add()
428 ret = vimc_ent_sd_register(&vsensor->ved, &vsensor->sd, v4l2_dev, in vimc_sensor_add()
430 MEDIA_ENT_F_CAM_SENSOR, 1, &vsensor->pad, in vimc_sensor_add()
435 vsensor->sd.internal_ops = &vimc_sensor_internal_ops; in vimc_sensor_add()
437 vsensor->ved.process_frame = vimc_sensor_process_frame; in vimc_sensor_add()
438 vsensor->ved.dev = vimc->mdev.dev; in vimc_sensor_add()
441 vsensor->mbus_format = fmt_default; in vimc_sensor_add()
443 return &vsensor->ved; in vimc_sensor_add()
446 tpg_free(&vsensor->tpg); in vimc_sensor_add()
448 v4l2_ctrl_handler_free(&vsensor->hdl); in vimc_sensor_add()
450 kfree(vsensor); in vimc_sensor_add()