aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_fimd.c
diff options
context:
space:
mode:
authorJoonyoung Shim <jy0922.shim@samsung.com>2012-12-14 01:48:24 -0500
committerInki Dae <inki.dae@samsung.com>2012-12-14 01:54:39 -0500
commitca555e5ab701d00bd91a541778f5aa432d18d478 (patch)
treea9ee52365f68d88ce84a4f8c4a490430a82f0eef /drivers/gpu/drm/exynos/exynos_drm_fimd.c
parentf56aad3a697a0189c76100236190e26c1f8e446b (diff)
drm/exynos: support extended screen coordinate of fimd
The fimd of exynos5 SoC supports extended screen coordinate. Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_fimd.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fimd.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index ae0153badaf9..1e4ea96bbe3e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -243,7 +243,9 @@ static void fimd_commit(struct device *dev)
243 243
244 /* setup horizontal and vertical display size. */ 244 /* setup horizontal and vertical display size. */
245 val = VIDTCON2_LINEVAL(timing->yres - 1) | 245 val = VIDTCON2_LINEVAL(timing->yres - 1) |
246 VIDTCON2_HOZVAL(timing->xres - 1); 246 VIDTCON2_HOZVAL(timing->xres - 1) |
247 VIDTCON2_LINEVAL_E(timing->yres - 1) |
248 VIDTCON2_HOZVAL_E(timing->xres - 1);
247 writel(val, ctx->regs + driver_data->timing_base + VIDTCON2); 249 writel(val, ctx->regs + driver_data->timing_base + VIDTCON2);
248 250
249 /* setup clock source, clock divider, enable dma. */ 251 /* setup clock source, clock divider, enable dma. */
@@ -518,12 +520,16 @@ static void fimd_win_commit(struct device *dev, int zpos)
518 520
519 /* buffer size */ 521 /* buffer size */
520 val = VIDW_BUF_SIZE_OFFSET(win_data->buf_offsize) | 522 val = VIDW_BUF_SIZE_OFFSET(win_data->buf_offsize) |
521 VIDW_BUF_SIZE_PAGEWIDTH(win_data->line_size); 523 VIDW_BUF_SIZE_PAGEWIDTH(win_data->line_size) |
524 VIDW_BUF_SIZE_OFFSET_E(win_data->buf_offsize) |
525 VIDW_BUF_SIZE_PAGEWIDTH_E(win_data->line_size);
522 writel(val, ctx->regs + VIDWx_BUF_SIZE(win, 0)); 526 writel(val, ctx->regs + VIDWx_BUF_SIZE(win, 0));
523 527
524 /* OSD position */ 528 /* OSD position */
525 val = VIDOSDxA_TOPLEFT_X(win_data->offset_x) | 529 val = VIDOSDxA_TOPLEFT_X(win_data->offset_x) |
526 VIDOSDxA_TOPLEFT_Y(win_data->offset_y); 530 VIDOSDxA_TOPLEFT_Y(win_data->offset_y) |
531 VIDOSDxA_TOPLEFT_X_E(win_data->offset_x) |
532 VIDOSDxA_TOPLEFT_Y_E(win_data->offset_y);
527 writel(val, ctx->regs + VIDOSD_A(win)); 533 writel(val, ctx->regs + VIDOSD_A(win));
528 534
529 last_x = win_data->offset_x + win_data->ovl_width; 535 last_x = win_data->offset_x + win_data->ovl_width;
@@ -533,7 +539,9 @@ static void fimd_win_commit(struct device *dev, int zpos)
533 if (last_y) 539 if (last_y)
534 last_y--; 540 last_y--;
535 541
536 val = VIDOSDxB_BOTRIGHT_X(last_x) | VIDOSDxB_BOTRIGHT_Y(last_y); 542 val = VIDOSDxB_BOTRIGHT_X(last_x) | VIDOSDxB_BOTRIGHT_Y(last_y) |
543 VIDOSDxB_BOTRIGHT_X_E(last_x) | VIDOSDxB_BOTRIGHT_Y_E(last_y);
544
537 writel(val, ctx->regs + VIDOSD_B(win)); 545 writel(val, ctx->regs + VIDOSD_B(win));
538 546
539 DRM_DEBUG_KMS("osd pos: tx = %d, ty = %d, bx = %d, by = %d\n", 547 DRM_DEBUG_KMS("osd pos: tx = %d, ty = %d, bx = %d, by = %d\n",