The value for AVID stop is relative to the width of the active video area, not the maximum register value. Zero means equal and a negative value means we're cropping on the right side. Signed-off-by: Robin van der Gracht <robin@xxxxxxxxxxx> --- drivers/media/i2c/tvp5150.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/tvp5150.c b/drivers/media/i2c/tvp5150.c index f47cb9a023fb..6bc65ab5e8ab 100644 --- a/drivers/media/i2c/tvp5150.c +++ b/drivers/media/i2c/tvp5150.c @@ -1231,10 +1231,10 @@ __tvp5150_set_selection(struct v4l2_subdev *sd, struct v4l2_rect rect) regmap_write(decoder->regmap, TVP5150_ACT_VD_CROP_ST_LSB, rect.left | (1 << TVP5150_CROP_SHIFT)); regmap_write(decoder->regmap, TVP5150_ACT_VD_CROP_STP_MSB, - (rect.left + rect.width - TVP5150_MAX_CROP_LEFT) >> + (rect.left + rect.width - TVP5150_H_MAX) >> TVP5150_CROP_SHIFT); regmap_write(decoder->regmap, TVP5150_ACT_VD_CROP_STP_LSB, - rect.left + rect.width - TVP5150_MAX_CROP_LEFT); + rect.left + rect.width - TVP5150_H_MAX); } static int tvp5150_set_selection(struct v4l2_subdev *sd, -- 2.20.1