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).

Cc: Sakari Ailus <sakari.ai...@linux.intel.com>
Cc: Mauro Carvalho Chehab <mche...@kernel.org>
Signed-off-by: Akinobu Mita <akinobu.m...@gmail.com>
---
 drivers/media/i2c/ov2640.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c
index d8e91bc..a07e6f2 100644
--- a/drivers/media/i2c/ov2640.c
+++ b/drivers/media/i2c/ov2640.c
@@ -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;
-- 
2.7.4

Reply via email to