|
@@ -907,9 +907,6 @@ static int tvp5150_set_selection(struct v4l2_subdev *sd,
|
|
|
|
|
|
/* tvp5150 has some special limits */
|
|
|
rect.left = clamp(rect.left, 0, TVP5150_MAX_CROP_LEFT);
|
|
|
- rect.width = clamp_t(unsigned int, rect.width,
|
|
|
- TVP5150_H_MAX - TVP5150_MAX_CROP_LEFT - rect.left,
|
|
|
- TVP5150_H_MAX - rect.left);
|
|
|
rect.top = clamp(rect.top, 0, TVP5150_MAX_CROP_TOP);
|
|
|
|
|
|
/* Calculate height based on current standard */
|
|
@@ -923,9 +920,16 @@ static int tvp5150_set_selection(struct v4l2_subdev *sd,
|
|
|
else
|
|
|
hmax = TVP5150_V_MAX_OTHERS;
|
|
|
|
|
|
- rect.height = clamp_t(unsigned int, rect.height,
|
|
|
+ /*
|
|
|
+ * alignments:
|
|
|
+ * - width = 2 due to UYVY colorspace
|
|
|
+ * - height, image = no special alignment
|
|
|
+ */
|
|
|
+ v4l_bound_align_image(&rect.width,
|
|
|
+ TVP5150_H_MAX - TVP5150_MAX_CROP_LEFT - rect.left,
|
|
|
+ TVP5150_H_MAX - rect.left, 1, &rect.height,
|
|
|
hmax - TVP5150_MAX_CROP_TOP - rect.top,
|
|
|
- hmax - rect.top);
|
|
|
+ hmax - rect.top, 0, 0);
|
|
|
|
|
|
tvp5150_write(sd, TVP5150_VERT_BLANKING_START, rect.top);
|
|
|
tvp5150_write(sd, TVP5150_VERT_BLANKING_STOP,
|