Hi Laurent, and thanks for the review! On 2024-02-23 at 13:33 +02, Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> wrote: > Hi Mikhail, > > Thank you for the patch. > > On Mon, Dec 18, 2023 at 08:40:36PM +0300, Mikhail Rudenko wrote: >> Pixel array dimensions and default crop size do not belong to the >> ov4689_mode structure, since they are mode independent. Make them >> defines instead. >> >> Signed-off-by: Mikhail Rudenko <mike.rudenko@xxxxxxxxx> >> --- >> drivers/media/i2c/ov4689.c | 29 +++++++++++++---------------- >> 1 file changed, 13 insertions(+), 16 deletions(-) >> >> diff --git a/drivers/media/i2c/ov4689.c b/drivers/media/i2c/ov4689.c >> index b43fb1d7b15f..475508559e3e 100644 >> --- a/drivers/media/i2c/ov4689.c >> +++ b/drivers/media/i2c/ov4689.c >> @@ -70,6 +70,11 @@ >> #define OV4689_LANES 4 >> #define OV4689_XVCLK_FREQ 24000000 >> >> +#define OV4689_PIXEL_ARRAY_WIDTH 2720 >> +#define OV4689_PIXEL_ARRAY_HEIGHT 1536 >> +#define OV4689_DUMMY_ROWS 8 >> +#define OV4689_DUMMY_COLUMNS 16 > > Adding a comment here to indicate that there are dummy columns in each > side would be useful: > > #define OV4689_DUMMY_ROWS 8 /* 8 dummy rows on each side */ > #define OV4689_DUMMY_COLUMNS 16 /* 16 dummy columns on each side */ Will add the comments in v3. > > Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > >> + >> static const char *const ov4689_supply_names[] = { >> "avdd", /* Analog power */ >> "dovdd", /* Digital I/O power */ >> @@ -90,10 +95,6 @@ struct ov4689_mode { >> u32 vts_def; >> u32 exp_def; >> u32 pixel_rate; >> - u32 sensor_width; >> - u32 sensor_height; >> - u32 crop_top; >> - u32 crop_left; >> const struct cci_reg_sequence *reg_list; >> unsigned int num_regs; >> }; >> @@ -254,10 +255,6 @@ static const struct ov4689_mode supported_modes[] = { >> .id = OV4689_MODE_2688_1520, >> .width = 2688, >> .height = 1520, >> - .sensor_width = 2720, >> - .sensor_height = 1536, >> - .crop_top = 8, >> - .crop_left = 16, >> .exp_def = 1536, >> .hts_def = 10296, >> .hts_min = 3432, >> @@ -385,8 +382,6 @@ static int ov4689_get_selection(struct v4l2_subdev *sd, >> struct v4l2_subdev_state *state, >> struct v4l2_subdev_selection *sel) >> { >> - const struct ov4689_mode *mode = to_ov4689(sd)->cur_mode; >> - >> if (sel->which != V4L2_SUBDEV_FORMAT_ACTIVE) >> return -EINVAL; >> >> @@ -394,15 +389,17 @@ static int ov4689_get_selection(struct v4l2_subdev *sd, >> case V4L2_SEL_TGT_CROP_BOUNDS: >> sel->r.top = 0; >> sel->r.left = 0; >> - sel->r.width = mode->sensor_width; >> - sel->r.height = mode->sensor_height; >> + sel->r.width = OV4689_PIXEL_ARRAY_WIDTH; >> + sel->r.height = OV4689_PIXEL_ARRAY_HEIGHT; >> return 0; >> case V4L2_SEL_TGT_CROP: >> case V4L2_SEL_TGT_CROP_DEFAULT: >> - sel->r.top = mode->crop_top; >> - sel->r.left = mode->crop_left; >> - sel->r.width = mode->width; >> - sel->r.height = mode->height; >> + sel->r.top = OV4689_DUMMY_ROWS; >> + sel->r.left = OV4689_DUMMY_COLUMNS; >> + sel->r.width = >> + OV4689_PIXEL_ARRAY_WIDTH - 2 * OV4689_DUMMY_COLUMNS; >> + sel->r.height = >> + OV4689_PIXEL_ARRAY_WIDTH - 2 * OV4689_DUMMY_ROWS; >> return 0; >> } >> -- Best regards, Mikhail Rudenko