diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2012-03-08 19:45:21 -0500 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2012-03-14 22:39:00 -0400 |
commit | f7d86075fa6c082f7dc4d289a69162b13d2db924 (patch) | |
tree | a68f7eb304fe47fae54cc6d51715dc1970d1bbba /drivers | |
parent | 0d8ce3ae37e9bcfacbbc750cabf892fa00bb720e (diff) |
drm/exynos: Fix fb_videomode <-> drm_mode_modeinfo conversion
The fb_videomode structure stores the front porch and back porch in the
right_margin and left_margin fields respectively. right_margin should
thus be computed with hsync_start - hdisplay, and left_margin with
htotal - hsync_end. The same holds for the vertical direction.
Active Front Sync Back
Region Porch Porch
<-------------------><----------------><-------------><---------------->
//////////////////|
////////////////// |
////////////////// |.................. ..................
_______________
<------ xres -------><- right_margin -><- hsync_len -><- left_margin -->
<---- hdisplay ----->
<------------ hsync_start ------------>
<--------------------- hsync_end -------------------->
<--------------------------------- htotal ----------------------------->
Fix the fb_videomode <-> drm_mode_modeinfo conversion functions
accordingly.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_connector.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c b/drivers/gpu/drm/exynos/exynos_drm_connector.c index 618bd4d87d28..99d5527b2ca6 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c | |||
@@ -54,14 +54,14 @@ convert_to_display_mode(struct drm_display_mode *mode, | |||
54 | mode->vrefresh = timing->refresh; | 54 | mode->vrefresh = timing->refresh; |
55 | 55 | ||
56 | mode->hdisplay = timing->xres; | 56 | mode->hdisplay = timing->xres; |
57 | mode->hsync_start = mode->hdisplay + timing->left_margin; | 57 | mode->hsync_start = mode->hdisplay + timing->right_margin; |
58 | mode->hsync_end = mode->hsync_start + timing->hsync_len; | 58 | mode->hsync_end = mode->hsync_start + timing->hsync_len; |
59 | mode->htotal = mode->hsync_end + timing->right_margin; | 59 | mode->htotal = mode->hsync_end + timing->left_margin; |
60 | 60 | ||
61 | mode->vdisplay = timing->yres; | 61 | mode->vdisplay = timing->yres; |
62 | mode->vsync_start = mode->vdisplay + timing->upper_margin; | 62 | mode->vsync_start = mode->vdisplay + timing->lower_margin; |
63 | mode->vsync_end = mode->vsync_start + timing->vsync_len; | 63 | mode->vsync_end = mode->vsync_start + timing->vsync_len; |
64 | mode->vtotal = mode->vsync_end + timing->lower_margin; | 64 | mode->vtotal = mode->vsync_end + timing->upper_margin; |
65 | mode->width_mm = panel->width_mm; | 65 | mode->width_mm = panel->width_mm; |
66 | mode->height_mm = panel->height_mm; | 66 | mode->height_mm = panel->height_mm; |
67 | 67 | ||
@@ -85,14 +85,14 @@ convert_to_video_timing(struct fb_videomode *timing, | |||
85 | timing->refresh = drm_mode_vrefresh(mode); | 85 | timing->refresh = drm_mode_vrefresh(mode); |
86 | 86 | ||
87 | timing->xres = mode->hdisplay; | 87 | timing->xres = mode->hdisplay; |
88 | timing->left_margin = mode->hsync_start - mode->hdisplay; | 88 | timing->right_margin = mode->hsync_start - mode->hdisplay; |
89 | timing->hsync_len = mode->hsync_end - mode->hsync_start; | 89 | timing->hsync_len = mode->hsync_end - mode->hsync_start; |
90 | timing->right_margin = mode->htotal - mode->hsync_end; | 90 | timing->left_margin = mode->htotal - mode->hsync_end; |
91 | 91 | ||
92 | timing->yres = mode->vdisplay; | 92 | timing->yres = mode->vdisplay; |
93 | timing->upper_margin = mode->vsync_start - mode->vdisplay; | 93 | timing->lower_margin = mode->vsync_start - mode->vdisplay; |
94 | timing->vsync_len = mode->vsync_end - mode->vsync_start; | 94 | timing->vsync_len = mode->vsync_end - mode->vsync_start; |
95 | timing->lower_margin = mode->vtotal - mode->vsync_end; | 95 | timing->upper_margin = mode->vtotal - mode->vsync_end; |
96 | 96 | ||
97 | if (mode->flags & DRM_MODE_FLAG_INTERLACE) | 97 | if (mode->flags & DRM_MODE_FLAG_INTERLACE) |
98 | timing->vmode = FB_VMODE_INTERLACED; | 98 | timing->vmode = FB_VMODE_INTERLACED; |