diff options
Diffstat (limited to 'drivers/gpu/drm/drm_modes.c')
| -rw-r--r-- | drivers/gpu/drm/drm_modes.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 51f677215f1d..6d81a02463a3 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c | |||
| @@ -553,6 +553,32 @@ int drm_mode_height(struct drm_display_mode *mode) | |||
| 553 | } | 553 | } |
| 554 | EXPORT_SYMBOL(drm_mode_height); | 554 | EXPORT_SYMBOL(drm_mode_height); |
| 555 | 555 | ||
| 556 | /** drm_mode_hsync - get the hsync of a mode | ||
| 557 | * @mode: mode | ||
| 558 | * | ||
| 559 | * LOCKING: | ||
| 560 | * None. | ||
| 561 | * | ||
| 562 | * Return @modes's hsync rate in kHz, rounded to the nearest int. | ||
| 563 | */ | ||
| 564 | int drm_mode_hsync(struct drm_display_mode *mode) | ||
| 565 | { | ||
| 566 | unsigned int calc_val; | ||
| 567 | |||
| 568 | if (mode->hsync) | ||
| 569 | return mode->hsync; | ||
| 570 | |||
| 571 | if (mode->htotal < 0) | ||
| 572 | return 0; | ||
| 573 | |||
| 574 | calc_val = (mode->clock * 1000) / mode->htotal; /* hsync in Hz */ | ||
| 575 | calc_val += 500; /* round to 1000Hz */ | ||
| 576 | calc_val /= 1000; /* truncate to kHz */ | ||
| 577 | |||
| 578 | return calc_val; | ||
| 579 | } | ||
| 580 | EXPORT_SYMBOL(drm_mode_hsync); | ||
| 581 | |||
| 556 | /** | 582 | /** |
| 557 | * drm_mode_vrefresh - get the vrefresh of a mode | 583 | * drm_mode_vrefresh - get the vrefresh of a mode |
| 558 | * @mode: mode | 584 | * @mode: mode |
| @@ -560,7 +586,7 @@ EXPORT_SYMBOL(drm_mode_height); | |||
| 560 | * LOCKING: | 586 | * LOCKING: |
| 561 | * None. | 587 | * None. |
| 562 | * | 588 | * |
| 563 | * Return @mode's vrefresh rate or calculate it if necessary. | 589 | * Return @mode's vrefresh rate in Hz or calculate it if necessary. |
| 564 | * | 590 | * |
| 565 | * FIXME: why is this needed? shouldn't vrefresh be set already? | 591 | * FIXME: why is this needed? shouldn't vrefresh be set already? |
| 566 | * | 592 | * |
