[media] exynos4-is: Set valid initial format at FIMC-LITE
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Tue, 18 Jun 2013 11:00:42 +0000 (08:00 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 28 Jun 2013 18:30:36 +0000 (15:30 -0300)
Ensure the image resolution and crop rectangle on the FIMC-LITE.n
subdevs and fimc-lite.n.capture video nodes is properly configured
upon the driver's initialization.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/exynos4-is/fimc-lite.c
drivers/media/platform/exynos4-is/fimc-lite.h

index 993bd79..4fa2e05 100644 (file)
@@ -1281,9 +1281,6 @@ static int fimc_lite_subdev_registered(struct v4l2_subdev *sd)
        int ret;
 
        memset(vfd, 0, sizeof(*vfd));
-
-       fimc->inp_frame.fmt = &fimc_lite_formats[0];
-       fimc->out_frame.fmt = &fimc_lite_formats[0];
        atomic_set(&fimc->out_path, FIMC_IO_DMA);
 
        snprintf(vfd->name, sizeof(vfd->name), "fimc-lite.%d.capture",
@@ -1399,6 +1396,23 @@ static const struct v4l2_ctrl_config fimc_lite_ctrl = {
        .step   = 1,
 };
 
+static void fimc_lite_set_default_config(struct fimc_lite *fimc)
+{
+       struct flite_frame *sink = &fimc->inp_frame;
+       struct flite_frame *source = &fimc->out_frame;
+
+       sink->fmt = &fimc_lite_formats[0];
+       sink->f_width = FLITE_DEFAULT_WIDTH;
+       sink->f_height = FLITE_DEFAULT_HEIGHT;
+
+       sink->rect.width = FLITE_DEFAULT_WIDTH;
+       sink->rect.height = FLITE_DEFAULT_HEIGHT;
+       sink->rect.left = 0;
+       sink->rect.top = 0;
+
+       *source = *sink;
+}
+
 static int fimc_lite_create_capture_subdev(struct fimc_lite *fimc)
 {
        struct v4l2_ctrl_handler *handler = &fimc->ctrl_handler;
@@ -1544,8 +1558,11 @@ static int fimc_lite_probe(struct platform_device *pdev)
                ret = PTR_ERR(fimc->alloc_ctx);
                goto err_pm;
        }
+
        pm_runtime_put(dev);
 
+       fimc_lite_set_default_config(fimc);
+
        dev_dbg(dev, "FIMC-LITE.%d registered successfully\n",
                fimc->index);
        return 0;
index c98f3da..7428b2d 100644 (file)
@@ -29,6 +29,8 @@
 #define FLITE_CLK_NAME         "flite"
 #define FIMC_LITE_MAX_DEVS     3
 #define FLITE_REQ_BUFS_MIN     2
+#define FLITE_DEFAULT_WIDTH    640
+#define FLITE_DEFAULT_HEIGHT   480
 
 /* Bit index definitions for struct fimc_lite::state */
 enum {