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; }