drm/exynos: fimd: add exynos3250 SoC support
authorInki Dae <inki.dae@samsung.com>
Tue, 12 Aug 2014 12:55:36 +0000 (21:55 +0900)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 03:00:30 +0000 (12:00 +0900)
Change-Id: I18cd6a16b9ef66797ceb9b72bb37f626ae1d3856
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_fimd.c

index 2d0d941..c3d8786 100644 (file)
@@ -102,6 +102,14 @@ static struct fimd_driver_data s3c64xx_fimd_driver_data = {
        .has_limited_fmt = 1,
 };
 
+static struct fimd_driver_data exynos3_fimd_driver_data = {
+       .timing_base = 0x20000,
+       .lcdblk_off = 0x210,
+       .lcdblk_bypass_shift = 1,
+       .has_shadowcon = 1,
+       .has_vidoutcon = 1,
+};
+
 static struct fimd_driver_data exynos4_fimd_driver_data = {
        .timing_base = 0x0,
        .lcdblk_off = 0x210,
@@ -166,6 +174,8 @@ struct fimd_context {
 static const struct of_device_id fimd_driver_dt_match[] = {
        { .compatible = "samsung,s3c6400-fimd",
          .data = &s3c64xx_fimd_driver_data },
+       { .compatible = "samsung,exynos3250-fimd",
+         .data = &exynos3_fimd_driver_data },
        { .compatible = "samsung,exynos4210-fimd",
          .data = &exynos4_fimd_driver_data },
        { .compatible = "samsung,exynos5250-fimd",
@@ -332,9 +342,6 @@ static void fimd_commit(struct exynos_drm_manager *mgr)
                /* disable auto frame rate */
                writel(0, timing_base + I80IFCONFBx(0));
 
-               if (ctx->vidout_con)
-                       writel(ctx->vidout_con, timing_base + VIDOUT_CON);
-
                /* set video type selection to I80 interface */
                if (ctx->sysreg && regmap_update_bits(ctx->sysreg,
                                        driver_data->lcdblk_off,
@@ -376,6 +383,9 @@ static void fimd_commit(struct exynos_drm_manager *mgr)
                writel(val, ctx->regs + driver_data->timing_base + VIDTCON1);
        }
 
+       if (ctx->driver_data->has_vidoutcon)
+               writel(ctx->vidout_con, timing_base + VIDOUT_CON);
+
        /* set bypass selection */
        if (ctx->sysreg && regmap_update_bits(ctx->sysreg,
                                driver_data->lcdblk_off,
@@ -1136,11 +1146,6 @@ static int fimd_probe(struct platform_device *pdev)
                return ret;
        }
 
-       ctx->sysreg = syscon_regmap_lookup_by_phandle(dev->of_node,
-                       "lcdblk-cfg");
-       if (IS_ERR(ctx->sysreg))
-               return PTR_ERR(ctx->sysreg);
-
        init_waitqueue_head(&ctx->wait_vsync_queue);
        atomic_set(&ctx->wait_vsync_event, 0);