Ejemplo n.º 1
0
static int gsc_capture_subdev_set_crop(struct v4l2_subdev *sd,
				       struct v4l2_subdev_fh *fh,
				       struct v4l2_subdev_crop *crop)
{
	struct gsc_dev *gsc = v4l2_get_subdevdata(sd);
	struct gsc_ctx *ctx = gsc->cap.ctx;
	struct gsc_frame *frame = gsc_capture_get_frame(ctx, crop->pad);

	gsc_cap_try_crop(gsc, &crop->rect, crop->pad);

	if (crop->which == V4L2_SUBDEV_FORMAT_ACTIVE)
		frame->crop = crop->rect;

	return 0;
}
static int gsc_capture_subdev_set_crop(struct v4l2_subdev *sd,
				       struct v4l2_subdev_fh *fh,
				       struct v4l2_subdev_crop *crop)
{
	struct gsc_dev *gsc = v4l2_get_subdevdata(sd);
	struct gsc_ctx *ctx = gsc->cap.ctx;
	struct gsc_frame *frame = gsc_capture_get_frame(ctx, crop->pad);

	if ((crop->pad == GSC_PAD_SINK) && (crop->rect.width % 8)) {
		gsc_err("%d is not aligned 8", crop->rect.width);
		return -EINVAL;
	}
	gsc_cap_try_crop(gsc, &crop->rect, crop->pad);

	if (crop->which == V4L2_SUBDEV_FORMAT_ACTIVE)
		frame->crop = crop->rect;

	return 0;
}