static int rvin_try_format(struct rvin_dev *vin, u32 which,
                           struct v4l2_pix_format *pix,
-                          struct v4l2_rect *src_rect,
-                          struct v4l2_rect *compose)
+                          struct v4l2_rect *src_rect)
 {
        struct v4l2_subdev *sd = vin_to_source(vin);
        struct v4l2_subdev_pad_config *pad_cfg;
        pix->height = height;
 
        rvin_format_align(vin, pix);
-
-       if (compose) {
-               compose->top = 0;
-               compose->left = 0;
-               compose->width = pix->width;
-               compose->height = pix->height;
-       }
 done:
        v4l2_subdev_free_pad_config(pad_cfg);
 
 {
        struct rvin_dev *vin = video_drvdata(file);
 
-       return rvin_try_format(vin, V4L2_SUBDEV_FORMAT_TRY, &f->fmt.pix, NULL,
-                              NULL);
+       return rvin_try_format(vin, V4L2_SUBDEV_FORMAT_TRY, &f->fmt.pix, NULL);
 }
 
 static int rvin_s_fmt_vid_cap(struct file *file, void *priv,
                              struct v4l2_format *f)
 {
        struct rvin_dev *vin = video_drvdata(file);
-       struct v4l2_rect src_rect, compose;
+       struct v4l2_rect fmt_rect, src_rect;
        int ret;
 
        if (vb2_is_busy(&vin->queue))
                return -EBUSY;
 
        ret = rvin_try_format(vin, V4L2_SUBDEV_FORMAT_ACTIVE, &f->fmt.pix,
-                             &src_rect, &compose);
+                             &src_rect);
        if (ret)
                return ret;
 
        vin->format = f->fmt.pix;
+
+       fmt_rect.top = 0;
+       fmt_rect.left = 0;
+       fmt_rect.width = vin->format.width;
+       fmt_rect.height = vin->format.height;
+
        v4l2_rect_map_inside(&vin->crop, &src_rect);
-       v4l2_rect_map_inside(&vin->compose, &compose);
+       v4l2_rect_map_inside(&vin->compose, &fmt_rect);
        vin->src_rect = src_rect;
 
        return 0;