media: ov6650: Fix default format not applied on device probe
authorJanusz Krzysztofik <jmkrzyszt@gmail.com>
Tue, 3 Sep 2019 20:11:42 +0000 (17:11 -0300)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 1 Oct 2019 20:30:29 +0000 (17:30 -0300)
It is not clear what pixel format is actually configured in hardware on
reset.  MEDIA_BUS_FMT_YUYV8_2X8, assumed on device probe since the
driver was intiially submitted, is for sure not the one.

Fix it by explicitly applying a known, driver default frame format just
after initial device reset.

Fixes: 2f6e2404799a ("[media] SoC Camera: add driver for OV6650 sensor")
Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/i2c/ov6650.c

index b62a238..4fd8ac8 100644 (file)
@@ -873,6 +873,11 @@ static int ov6650_video_probe(struct v4l2_subdev *sd)
        ret = ov6650_reset(client);
        if (!ret)
                ret = ov6650_prog_dflt(client);
+       if (!ret) {
+               struct v4l2_mbus_framefmt mf = ov6650_def_fmt;
+
+               ret = ov6650_s_fmt(sd, &mf);
+       }
        if (!ret)
                ret = v4l2_ctrl_handler_setup(&priv->hdl);
 
@@ -1027,8 +1032,6 @@ static int ov6650_probe(struct i2c_client *client,
        priv->rect.top    = DEF_VSTRT << 1;
        priv->rect.width  = W_CIF;
        priv->rect.height = H_CIF;
-       priv->half_scale  = false;
-       priv->code        = MEDIA_BUS_FMT_YUYV8_2X8;
 
        priv->subdev.internal_ops = &ov6650_internal_ops;