[libcamera-devel] [PATCH 4/4] media: i2c: imx219: Selection compliance fixes

Jacopo Mondi jacopo at jmondi.org
Thu Nov 26 08:28:57 CET 2020


Hi Hans,

On Fri, Nov 06, 2020 at 01:33:06PM +0100, Jacopo Mondi wrote:
> Hi Hans,
>
> On Wed, Aug 05, 2020 at 12:57:21PM +0200, Jacopo Mondi wrote:
> > From: Hans Verkuil <hverkuil at xs4all.nl>
> >
> > To comply with the intended usage of the V4L2 selection target when
> > used to retrieve a sensor image properties, adjust the rectangles
> > returned by the imx219 driver.
> >
> > The top/left crop coordinates of the TGT_CROP rectangle were set to
> > (0, 0) instead of (8, 8) which is the offset from the larger physical
> > pixel array rectangle. This was also a mismatch with the default values
> > crop rectangle value, so this is corrected. Found with v4l2-compliance.
> >
> > While at it, add V4L2_SEL_TGT_CROP_BOUNDS support: CROP_DEFAULT and
> > CROP_BOUNDS have the same size as the non-active pixels are not readable
> > using the selection API. Found with v4l2-compliance.
> >
> > Fixes: e6d4ef7d58aa7 ("media: i2c: imx219: Implement get_selection")
> > Signed-off-by: Hans Verkuil <hverkuil-cisco at xs4all.nl>
> > [reword commit message, use macros for pixel offsets]
> > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
>
> Has this fallen to the cracks ? It was part of a larger series
> (abandoned for now) but I think this patch has merits and can be broke
> out.
>
> If that's the case I'll fix ov5647 which I have in the pipe which
> suffer from the same issue as this one and update the libcamera side
> that uses this information.

Gentle ping

>
> Thanks
>   j
>
> > ---
> >  drivers/media/i2c/imx219.c | 17 +++++++++--------
> >  1 file changed, 9 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
> > index 60b23d113fc56..ff48a95b448b1 100644
> > --- a/drivers/media/i2c/imx219.c
> > +++ b/drivers/media/i2c/imx219.c
> > @@ -473,8 +473,8 @@ static const struct imx219_mode supported_modes[] = {
> >  		.width = 3280,
> >  		.height = 2464,
> >  		.crop = {
> > -			.left = 0,
> > -			.top = 0,
> > +			.left = IMX219_PIXEL_ARRAY_LEFT,
> > +			.top = IMX219_PIXEL_ARRAY_TOP,
> >  			.width = 3280,
> >  			.height = 2464
> >  		},
> > @@ -489,8 +489,8 @@ static const struct imx219_mode supported_modes[] = {
> >  		.width = 1920,
> >  		.height = 1080,
> >  		.crop = {
> > -			.left = 680,
> > -			.top = 692,
> > +			.left = 688,
> > +			.top = 700,
> >  			.width = 1920,
> >  			.height = 1080
> >  		},
> > @@ -505,8 +505,8 @@ static const struct imx219_mode supported_modes[] = {
> >  		.width = 1640,
> >  		.height = 1232,
> >  		.crop = {
> > -			.left = 0,
> > -			.top = 0,
> > +			.left = IMX219_PIXEL_ARRAY_LEFT,
> > +			.top = IMX219_PIXEL_ARRAY_TOP,
> >  			.width = 3280,
> >  			.height = 2464
> >  		},
> > @@ -521,8 +521,8 @@ static const struct imx219_mode supported_modes[] = {
> >  		.width = 640,
> >  		.height = 480,
> >  		.crop = {
> > -			.left = 1000,
> > -			.top = 752,
> > +			.left = 1008,
> > +			.top = 760,
> >  			.width = 1280,
> >  			.height = 960
> >  		},
> > @@ -1045,6 +1045,7 @@ static int imx219_get_selection(struct v4l2_subdev *sd,
> >  		return 0;
> >
> >  	case V4L2_SEL_TGT_CROP_DEFAULT:
> > +	case V4L2_SEL_TGT_CROP_BOUNDS:
> >  		sel->r.top = IMX219_PIXEL_ARRAY_TOP;
> >  		sel->r.left = IMX219_PIXEL_ARRAY_LEFT;
> >  		sel->r.width = IMX219_PIXEL_ARRAY_WIDTH;
> > --
> > 2.27.0
> >
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list