Lines Matching defs:vsca
162 struct vimc_sca_device *vsca = v4l2_get_subdevdata(sd);
170 format->format = vsca->sink_fmt;
171 crop_rect = &vsca->crop_rect;
207 struct vimc_sca_device *vsca = v4l2_get_subdevdata(sd);
213 if (vsca->src_frame)
216 sink_fmt = &vsca->sink_fmt;
217 crop_rect = &vsca->crop_rect;
235 dev_dbg(vsca->ved.dev, "%s: sink format update: "
237 "new:%dx%d (0x%x, %d, %d, %d, %d)\n", vsca->sd.name,
260 struct vimc_sca_device *vsca = v4l2_get_subdevdata(sd);
268 sink_fmt = &vsca->sink_fmt;
269 crop_rect = &vsca->crop_rect;
293 struct vimc_sca_device *vsca = v4l2_get_subdevdata(sd);
302 if (vsca->src_frame)
305 crop_rect = &vsca->crop_rect;
306 sink_fmt = &vsca->sink_fmt;
337 struct vimc_sca_device *vsca = v4l2_get_subdevdata(sd);
343 if (vsca->src_frame)
347 vpix = vimc_pix_map_by_code(vsca->sink_fmt.code);
348 vsca->bpp = vpix->bpp;
351 vsca->src_line_size = vsca->crop_rect.width *
352 sca_mult * vsca->bpp;
355 frame_size = vsca->src_line_size * vsca->crop_rect.height *
361 vsca->src_frame = vmalloc(frame_size);
362 if (!vsca->src_frame)
366 if (!vsca->src_frame)
369 vfree(vsca->src_frame);
370 vsca->src_frame = NULL;
396 static void vimc_sca_scale_pix(const struct vimc_sca_device *const vsca,
400 const struct v4l2_rect crop_rect = vsca->crop_rect;
406 vsca->sink_fmt.width,
407 vsca->bpp);
410 dev_dbg(vsca->ved.dev,
412 vsca->sd.name, lin, col, index);
420 crop_rect.width * sca_mult, vsca->bpp);
422 dev_dbg(vsca->ved.dev, "sca: %s: scale_pix src pos %dx%d, index %d\n",
423 vsca->sd.name, lin * sca_mult, col * sca_mult, index);
430 for (j = 0; j < sca_mult * vsca->bpp; j += vsca->bpp) {
431 dev_dbg(vsca->ved.dev,
433 vsca->sd.name, index + j);
436 vimc_sca_fill_pix(&vsca->src_frame[index + j],
437 pixel, vsca->bpp);
441 index += vsca->src_line_size;
445 static void vimc_sca_fill_src_frame(const struct vimc_sca_device *const vsca,
448 const struct v4l2_rect r = vsca->crop_rect;
455 vimc_sca_scale_pix(vsca, i, j, sink_frame);
461 struct vimc_sca_device *vsca = container_of(ved, struct vimc_sca_device,
465 if (!vsca->src_frame)
468 vimc_sca_fill_src_frame(vsca, sink_frame);
470 return vsca->src_frame;
475 struct vimc_sca_device *vsca =
478 media_entity_cleanup(vsca->ved.ent);
479 kfree(vsca);
486 struct vimc_sca_device *vsca;
489 /* Allocate the vsca struct */
490 vsca = kzalloc(sizeof(*vsca), GFP_KERNEL);
491 if (!vsca)
495 vsca->pads[0].flags = MEDIA_PAD_FL_SINK;
496 vsca->pads[1].flags = MEDIA_PAD_FL_SOURCE;
498 ret = vimc_ent_sd_register(&vsca->ved, &vsca->sd, v4l2_dev,
501 vsca->pads, &vimc_sca_ops);
503 kfree(vsca);
507 vsca->ved.process_frame = vimc_sca_process_frame;
508 vsca->ved.dev = vimc->mdev.dev;
511 vsca->sink_fmt = sink_fmt_default;
514 vsca->crop_rect = crop_rect_default;
516 return &vsca->ved;