Hi Eugen, Thank you for the patch. On Thu, Nov 21, 2019 at 07:55:24AM +0000, Eugen.Hristev@xxxxxxxxxxxxx wrote: > From: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx> > > This driver supports both the mt9v032 (color) and the mt9v022 (mono) sensors. > Depending on which sensor is used, the format from the sensor is different. > The format.code inside the dev struct holds this information. > The enum mbus and enum frame sizes need to take into account both type of > sensors, not just the color one. > To solve this, use the format.code in these functions instead of the > hardcoded bayer color format (which is only used for mt9v032). > > Suggested-by: Wenyou Yang <wenyou.yang@xxxxxxxxxxxxx> > Signed-off-by: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/media/i2c/mt9v032.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/mt9v032.c b/drivers/media/i2c/mt9v032.c > index 4b9b98c..5bd3ae82 100644 > --- a/drivers/media/i2c/mt9v032.c > +++ b/drivers/media/i2c/mt9v032.c > @@ -428,10 +428,12 @@ static int mt9v032_enum_mbus_code(struct v4l2_subdev *subdev, > struct v4l2_subdev_pad_config *cfg, > struct v4l2_subdev_mbus_code_enum *code) > { > + struct mt9v032 *mt9v032 = to_mt9v032(subdev); > + > if (code->index > 0) > return -EINVAL; > > - code->code = MEDIA_BUS_FMT_SGRBG10_1X10; > + code->code = mt9v032->format.code; > return 0; > } > > @@ -439,7 +441,11 @@ static int mt9v032_enum_frame_size(struct v4l2_subdev *subdev, > struct v4l2_subdev_pad_config *cfg, > struct v4l2_subdev_frame_size_enum *fse) > { > - if (fse->index >= 3 || fse->code != MEDIA_BUS_FMT_SGRBG10_1X10) > + struct mt9v032 *mt9v032 = to_mt9v032(subdev); > + > + if (fse->index >= 3) > + return -EINVAL; > + if (mt9v032->format.code != fse->code) > return -EINVAL; > > fse->min_width = MT9V032_WINDOW_WIDTH_DEF / (1 << fse->index); -- Regards, Laurent Pinchart