Re: [PATCH] media: i2c: imx258: correct mode to GBGB/RGRG

From: Krzysztof Kozlowski
Date: Wed Oct 28 2020 - 21:00:24 EST


On Wed, 28 Oct 2020 at 10:43, Yeh, Andy <andy.yeh@xxxxxxxxx> wrote:
>
> But the sensor settings for the original submission is to output GRBG Bayer RAW.
>
> Regards, Andy

No, not to my knowledge. There are no settings for color output
because it is fixed to GBGB/RGRG. I was looking a lot into this driver
(I have few other problems with it, already few other patches posted)
and I could not find a setting for this in datasheet. If you know the
setting for the other color - can you point me to it?

Best regards,
Krzysztof

> >-----Original Message-----
> >From: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> >Sent: Wednesday, October 28, 2020 5:20 PM
> >To: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>; Mauro Carvalho Chehab
> ><mchehab@xxxxxxxxxx>; Tomasz Figa <tfiga@xxxxxxxxxxxx>; Jason Chen
> ><jasonx.z.chen@xxxxxxxxx>; Yeh, Andy <andy.yeh@xxxxxxxxx>; Alan Chiang
> ><alanx.chiang@xxxxxxxxx>; linux-media@xxxxxxxxxxxxxxx; linux-
> >kernel@xxxxxxxxxxxxxxx
> >Cc: Krzysztof Kozlowski <krzk@xxxxxxxxxx>; stable@xxxxxxxxxxxxxxx
> >Subject: [PATCH] media: i2c: imx258: correct mode to GBGB/RGRG
> >
> >The IMX258 sensor outputs pixels in GBGB/RGRG mode. This is described
> >explicitly in datasheet and was actually mentioned in a comment inside the
> >driver. Using other - wrong mode - leads to pinkish pictures.
> >
> >Fixes: e4802cb00bfe ("media: imx258: Add imx258 camera sensor driver")
> >Cc: <stable@xxxxxxxxxxxxxxx>
> >Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> >---
> > drivers/media/i2c/imx258.c | 10 +++++-----
> > 1 file changed, 5 insertions(+), 5 deletions(-)
> >
> >diff --git a/drivers/media/i2c/imx258.c b/drivers/media/i2c/imx258.c index
> >ef069333a969..bf75d4e597af 100644
> >--- a/drivers/media/i2c/imx258.c
> >+++ b/drivers/media/i2c/imx258.c
> >@@ -715,7 +715,7 @@ static int imx258_open(struct v4l2_subdev *sd, struct
> >v4l2_subdev_fh *fh)
> > /* Initialize try_fmt */
> > try_fmt->width = supported_modes[0].width;
> > try_fmt->height = supported_modes[0].height;
> >- try_fmt->code = MEDIA_BUS_FMT_SGRBG10_1X10;
> >+ try_fmt->code = MEDIA_BUS_FMT_SGBRG10_1X10;
> > try_fmt->field = V4L2_FIELD_NONE;
> >
> > return 0;
> >@@ -827,7 +827,7 @@ static int imx258_enum_mbus_code(struct
> >v4l2_subdev *sd,
> > if (code->index > 0)
> > return -EINVAL;
> >
> >- code->code = MEDIA_BUS_FMT_SGRBG10_1X10;
> >+ code->code = MEDIA_BUS_FMT_SGBRG10_1X10;
> >
> > return 0;
> > }
> >@@ -839,7 +839,7 @@ static int imx258_enum_frame_size(struct
> >v4l2_subdev *sd,
> > if (fse->index >= ARRAY_SIZE(supported_modes))
> > return -EINVAL;
> >
> >- if (fse->code != MEDIA_BUS_FMT_SGRBG10_1X10)
> >+ if (fse->code != MEDIA_BUS_FMT_SGBRG10_1X10)
> > return -EINVAL;
> >
> > fse->min_width = supported_modes[fse->index].width;
> >@@ -855,7 +855,7 @@ static void imx258_update_pad_format(const struct
> >imx258_mode *mode, {
> > fmt->format.width = mode->width;
> > fmt->format.height = mode->height;
> >- fmt->format.code = MEDIA_BUS_FMT_SGRBG10_1X10;
> >+ fmt->format.code = MEDIA_BUS_FMT_SGBRG10_1X10;
> > fmt->format.field = V4L2_FIELD_NONE;
> > }
> >
> >@@ -902,7 +902,7 @@ static int imx258_set_pad_format(struct v4l2_subdev
> >*sd,
> > mutex_lock(&imx258->mutex);
> >
> > /* Only one raw bayer(GBRG) order is supported */
> >- fmt->format.code = MEDIA_BUS_FMT_SGRBG10_1X10;
> >+ fmt->format.code = MEDIA_BUS_FMT_SGBRG10_1X10;
> >
> > mode = v4l2_find_nearest_size(supported_modes,
> > ARRAY_SIZE(supported_modes), width, height,
> >--
> >2.25.1
>