Lines Matching refs:vdeb

35 	void (*set_rgb_src)(struct vimc_deb_device *vdeb, unsigned int lin,
155 struct vimc_deb_device *vdeb = v4l2_get_subdevdata(sd);
165 mf->code = vdeb->src_code;
219 struct vimc_deb_device *vdeb = v4l2_get_subdevdata(sd);
224 vdeb->sink_fmt;
228 fmt->format.code = vdeb->src_code;
257 struct vimc_deb_device *vdeb = v4l2_get_subdevdata(sd);
263 if (vdeb->src_frame)
266 sink_fmt = &vdeb->sink_fmt;
267 src_code = &vdeb->src_code;
290 dev_dbg(vdeb->ved.dev, "%s: sink format update: "
292 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vdeb->sd.name,
316 static void vimc_deb_process_rgb_frame(struct vimc_deb_device *vdeb,
324 vpix = vimc_pix_map_by_code(vdeb->src_code);
325 index = VIMC_FRAME_INDEX(lin, col, vdeb->sink_fmt.width, 3);
329 vdeb->src_frame[index + i] = rgb[i];
332 vdeb->src_frame[index + i] = rgb[2 - i];
340 struct vimc_deb_device *vdeb = v4l2_get_subdevdata(sd);
346 if (vdeb->src_frame)
350 vpix = vimc_pix_map_by_code(vdeb->src_code);
351 frame_size = vdeb->sink_fmt.width * vdeb->sink_fmt.height *
355 vpix = vimc_pix_map_by_code(vdeb->sink_fmt.code);
356 vdeb->sink_bpp = vpix->bpp;
359 vdeb->sink_pix_map =
360 vimc_deb_pix_map_by_code(vdeb->sink_fmt.code);
366 vdeb->src_frame = vmalloc(frame_size);
367 if (!vdeb->src_frame)
371 if (!vdeb->src_frame)
374 vfree(vdeb->src_frame);
375 vdeb->src_frame = NULL;
409 static void vimc_deb_calc_rgb_sink(struct vimc_deb_device *vdeb,
426 seek = vdeb->mean_win_size / 2;
430 dev_dbg(vdeb->ved.dev,
432 vdeb->sd.name, lin, col, vdeb->sink_fmt.height, seek);
441 wlin < lin + seek + 1 && wlin < vdeb->sink_fmt.height;
451 wcol < col + seek + 1 && wcol < vdeb->sink_fmt.width;
457 color = vdeb->sink_pix_map->order[wlin % 2][wcol % 2];
460 vdeb->sink_fmt.width,
461 vdeb->sink_bpp);
463 dev_dbg(vdeb->ved.dev,
465 vdeb->sd.name, index, wlin, wcol, color);
469 vimc_deb_get_val(&frame[index], vdeb->sink_bpp);
474 dev_dbg(vdeb->ved.dev, "deb: %s: RGB CALC: val %d, n %d\n",
475 vdeb->sd.name, rgb[color], n_rgb[color]);
481 dev_dbg(vdeb->ved.dev,
483 vdeb->sd.name, lin, col, i, rgb[i], n_rgb[i]);
488 dev_dbg(vdeb->ved.dev,
490 vdeb->sd.name, lin, col, i, rgb[i]);
497 struct vimc_deb_device *vdeb = container_of(ved, struct vimc_deb_device,
503 if (!vdeb->src_frame)
506 for (i = 0; i < vdeb->sink_fmt.height; i++)
507 for (j = 0; j < vdeb->sink_fmt.width; j++) {
508 vimc_deb_calc_rgb_sink(vdeb, sink_frame, i, j, rgb);
509 vdeb->set_rgb_src(vdeb, i, j, rgb);
512 return vdeb->src_frame;
517 struct vimc_deb_device *vdeb =
522 vdeb->mean_win_size = ctrl->val;
536 struct vimc_deb_device *vdeb =
539 v4l2_ctrl_handler_free(&vdeb->hdl);
540 media_entity_cleanup(vdeb->ved.ent);
541 kfree(vdeb);
566 struct vimc_deb_device *vdeb;
569 /* Allocate the vdeb struct */
570 vdeb = kzalloc(sizeof(*vdeb), GFP_KERNEL);
571 if (!vdeb)
575 v4l2_ctrl_handler_init(&vdeb->hdl, 2);
576 v4l2_ctrl_new_custom(&vdeb->hdl, &vimc_deb_ctrl_class, NULL);
577 v4l2_ctrl_new_custom(&vdeb->hdl, &vimc_deb_ctrl_mean_win_size, NULL);
578 vdeb->sd.ctrl_handler = &vdeb->hdl;
579 if (vdeb->hdl.error) {
580 ret = vdeb->hdl.error;
585 vdeb->pads[0].flags = MEDIA_PAD_FL_SINK;
586 vdeb->pads[1].flags = MEDIA_PAD_FL_SOURCE;
588 ret = vimc_ent_sd_register(&vdeb->ved, &vdeb->sd, v4l2_dev,
591 vdeb->pads, &vimc_deb_ops);
595 vdeb->ved.process_frame = vimc_deb_process_frame;
596 vdeb->ved.dev = vimc->mdev.dev;
597 vdeb->mean_win_size = vimc_deb_ctrl_mean_win_size.def;
600 vdeb->sink_fmt = sink_fmt_default;
607 vdeb->src_code = MEDIA_BUS_FMT_RGB888_1X24;
608 vdeb->set_rgb_src = vimc_deb_process_rgb_frame;
610 return &vdeb->ved;
613 v4l2_ctrl_handler_free(&vdeb->hdl);
615 kfree(vdeb);