summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2014-08-12 21:55:36 +0900
committerInki Dae <inki.dae@samsung.com>2014-08-12 21:55:36 +0900
commitf7ff2bd80c7d2534a1dbf1b62312c49499fa2638 (patch)
tree577d441f4474f92dabfc28010a79679e8c950f4f
parent0397e615639aa6d70d7e196b944ddf58f0603c83 (diff)
downloadlinux-3.10-f7ff2bd80c7d2534a1dbf1b62312c49499fa2638.tar.gz
linux-3.10-f7ff2bd80c7d2534a1dbf1b62312c49499fa2638.tar.bz2
linux-3.10-f7ff2bd80c7d2534a1dbf1b62312c49499fa2638.zip
drm/exynos: fimd: add exynos3250 SoC support
Change-Id: I18cd6a16b9ef66797ceb9b72bb37f626ae1d3856 Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fimd.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index 2d0d94132c9..c3d8786cd94 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -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);