aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2010-03-29 17:43:31 -0400
committerDave Airlie <airlied@redhat.com>2010-04-05 20:40:25 -0400
commit171fdd892979081e8a9b1a67ce86c7008b7abbdf (patch)
treee71000e0f7e03c3a50fceb42450fdbedd0ab36bb
parent7a37435008b0ffea2442eb1134ddd4adeea81e19 (diff)
drm/modes: Fix interlaced mode names
Height in frame size, not field size, and trailed with an 'i'. Matches the X server behaviour. Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/drm_edid.c4
-rw-r--r--drivers/gpu/drm/drm_modes.c21
2 files changed, 14 insertions, 11 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3924a7bf271a..0f8c06311cf6 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1013,10 +1013,10 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
1013 if (mode->vsync_end > mode->vtotal) 1013 if (mode->vsync_end > mode->vtotal)
1014 mode->vtotal = mode->vsync_end + 1; 1014 mode->vtotal = mode->vsync_end + 1;
1015 1015
1016 drm_mode_set_name(mode);
1017
1018 drm_mode_do_interlace_quirk(mode, pt); 1016 drm_mode_do_interlace_quirk(mode, pt);
1019 1017
1018 drm_mode_set_name(mode);
1019
1020 if (quirks & EDID_QUIRK_DETAILED_SYNC_PP) { 1020 if (quirks & EDID_QUIRK_DETAILED_SYNC_PP) {
1021 pt->misc |= DRM_EDID_PT_HSYNC_POSITIVE | DRM_EDID_PT_VSYNC_POSITIVE; 1021 pt->misc |= DRM_EDID_PT_HSYNC_POSITIVE | DRM_EDID_PT_VSYNC_POSITIVE;
1022 } 1022 }
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index d460b6c472d4..8840066a5775 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -258,8 +258,10 @@ struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, int hdisplay,
258 drm_mode->clock -= drm_mode->clock % CVT_CLOCK_STEP; 258 drm_mode->clock -= drm_mode->clock % CVT_CLOCK_STEP;
259 /* 18/16. Find actual vertical frame frequency */ 259 /* 18/16. Find actual vertical frame frequency */
260 /* ignore - just set the mode flag for interlaced */ 260 /* ignore - just set the mode flag for interlaced */
261 if (interlaced) 261 if (interlaced) {
262 drm_mode->vtotal *= 2; 262 drm_mode->vtotal *= 2;
263 drm_mode->flags |= DRM_MODE_FLAG_INTERLACE;
264 }
263 /* Fill the mode line name */ 265 /* Fill the mode line name */
264 drm_mode_set_name(drm_mode); 266 drm_mode_set_name(drm_mode);
265 if (reduced) 267 if (reduced)
@@ -268,10 +270,8 @@ struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, int hdisplay,
268 else 270 else
269 drm_mode->flags |= (DRM_MODE_FLAG_PVSYNC | 271 drm_mode->flags |= (DRM_MODE_FLAG_PVSYNC |
270 DRM_MODE_FLAG_NHSYNC); 272 DRM_MODE_FLAG_NHSYNC);
271 if (interlaced)
272 drm_mode->flags |= DRM_MODE_FLAG_INTERLACE;
273 273
274 return drm_mode; 274 return drm_mode;
275} 275}
276EXPORT_SYMBOL(drm_cvt_mode); 276EXPORT_SYMBOL(drm_cvt_mode);
277 277
@@ -446,14 +446,14 @@ drm_gtf_mode_complex(struct drm_device *dev, int hdisplay, int vdisplay,
446 446
447 drm_mode->clock = pixel_freq; 447 drm_mode->clock = pixel_freq;
448 448
449 drm_mode_set_name(drm_mode);
450 drm_mode->flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC;
451
452 if (interlaced) { 449 if (interlaced) {
453 drm_mode->vtotal *= 2; 450 drm_mode->vtotal *= 2;
454 drm_mode->flags |= DRM_MODE_FLAG_INTERLACE; 451 drm_mode->flags |= DRM_MODE_FLAG_INTERLACE;
455 } 452 }
456 453
454 drm_mode_set_name(drm_mode);
455 drm_mode->flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC;
456
457 return drm_mode; 457 return drm_mode;
458} 458}
459EXPORT_SYMBOL(drm_gtf_mode_complex); 459EXPORT_SYMBOL(drm_gtf_mode_complex);
@@ -509,8 +509,11 @@ EXPORT_SYMBOL(drm_gtf_mode);
509 */ 509 */
510void drm_mode_set_name(struct drm_display_mode *mode) 510void drm_mode_set_name(struct drm_display_mode *mode)
511{ 511{
512 snprintf(mode->name, DRM_DISPLAY_MODE_LEN, "%dx%d", mode->hdisplay, 512 bool interlaced = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
513 mode->vdisplay); 513
514 snprintf(mode->name, DRM_DISPLAY_MODE_LEN, "%dx%d%s",
515 mode->hdisplay, mode->vdisplay,
516 interlaced ? "i" : "");
514} 517}
515EXPORT_SYMBOL(drm_mode_set_name); 518EXPORT_SYMBOL(drm_mode_set_name);
516 519