diff options
Diffstat (limited to 'drivers/gpu/drm/drm_modes.c')
-rw-r--r-- | drivers/gpu/drm/drm_modes.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index ab6e70eadc58..49404ce1666e 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c | |||
@@ -566,7 +566,9 @@ EXPORT_SYMBOL(drm_mode_height); | |||
566 | * FIXME: why is this needed? shouldn't vrefresh be set already? | 566 | * FIXME: why is this needed? shouldn't vrefresh be set already? |
567 | * | 567 | * |
568 | * RETURNS: | 568 | * RETURNS: |
569 | * Vertical refresh rate of @mode x 1000. For precision reasons. | 569 | * Vertical refresh rate. It will be the result of actual value plus 0.5. |
570 | * If it is 70.288, it will return 70Hz. | ||
571 | * If it is 59.6, it will return 60Hz. | ||
570 | */ | 572 | */ |
571 | int drm_mode_vrefresh(struct drm_display_mode *mode) | 573 | int drm_mode_vrefresh(struct drm_display_mode *mode) |
572 | { | 574 | { |
@@ -576,14 +578,13 @@ int drm_mode_vrefresh(struct drm_display_mode *mode) | |||
576 | if (mode->vrefresh > 0) | 578 | if (mode->vrefresh > 0) |
577 | refresh = mode->vrefresh; | 579 | refresh = mode->vrefresh; |
578 | else if (mode->htotal > 0 && mode->vtotal > 0) { | 580 | else if (mode->htotal > 0 && mode->vtotal > 0) { |
581 | int vtotal; | ||
582 | vtotal = mode->vtotal; | ||
579 | /* work out vrefresh the value will be x1000 */ | 583 | /* work out vrefresh the value will be x1000 */ |
580 | calc_val = (mode->clock * 1000); | 584 | calc_val = (mode->clock * 1000); |
581 | |||
582 | calc_val /= mode->htotal; | 585 | calc_val /= mode->htotal; |
583 | calc_val *= 1000; | 586 | refresh = (calc_val + vtotal / 2) / vtotal; |
584 | calc_val /= mode->vtotal; | ||
585 | 587 | ||
586 | refresh = calc_val; | ||
587 | if (mode->flags & DRM_MODE_FLAG_INTERLACE) | 588 | if (mode->flags & DRM_MODE_FLAG_INTERLACE) |
588 | refresh *= 2; | 589 | refresh *= 2; |
589 | if (mode->flags & DRM_MODE_FLAG_DBLSCAN) | 590 | if (mode->flags & DRM_MODE_FLAG_DBLSCAN) |