media: ov2640: set default window and format code at probe time
authorAkinobu Mita <akinobu.mita@gmail.com>
Sun, 9 Dec 2018 05:20:31 +0000 (00:20 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 16 Jan 2019 17:44:29 +0000 (12:44 -0500)
Set default window and format code at probe time instead of always checking
if they have not been set yet when VIDIOC_SUBDEV_G_FMT ioctl is called.

This change simplifies the next patch (make VIDIOC_SUBDEV_G_FMT ioctl work
with V4L2_SUBDEV_FORMAT_TRY).

Signed-off-by: Akinobu Mita <akinobu.mita@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/ov2640.c

index 5d2d673..1fd893b 100644 (file)
@@ -842,9 +842,6 @@ static int ov2640_set_params(struct i2c_client *client,
        u8 val;
        int ret;
 
-       if (!win)
-               return -EINVAL;
-
        switch (code) {
        case MEDIA_BUS_FMT_RGB565_2X8_BE:
                dev_dbg(&client->dev, "%s: Selected cfmt RGB565 BE", __func__);
@@ -929,10 +926,6 @@ static int ov2640_get_fmt(struct v4l2_subdev *sd,
        if (format->pad)
                return -EINVAL;
 
-       if (!priv->win) {
-               priv->win = ov2640_select_win(SVGA_WIDTH, SVGA_HEIGHT);
-               priv->cfmt_code = MEDIA_BUS_FMT_UYVY8_2X8;
-       }
 
        mf->width       = priv->win->width;
        mf->height      = priv->win->height;
@@ -1193,6 +1186,9 @@ static int ov2640_probe(struct i2c_client *client,
        if (ret)
                goto err_clk;
 
+       priv->win = ov2640_select_win(SVGA_WIDTH, SVGA_HEIGHT);
+       priv->cfmt_code = MEDIA_BUS_FMT_UYVY8_2X8;
+
        v4l2_i2c_subdev_init(&priv->subdev, client, &ov2640_subdev_ops);
        priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
                              V4L2_SUBDEV_FL_HAS_EVENTS;