Rev 3480 | Rev 4075 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3480 | Rev 3746 | ||
---|---|---|---|
Line 502... | Line 502... | ||
502 | return drm_gtf_mode_complex(dev, hdisplay, vdisplay, vrefresh, lace, |
502 | return drm_gtf_mode_complex(dev, hdisplay, vdisplay, vrefresh, lace, |
503 | margins, 600, 40 * 2, 128, 20 * 2); |
503 | margins, 600, 40 * 2, 128, 20 * 2); |
504 | } |
504 | } |
505 | EXPORT_SYMBOL(drm_gtf_mode); |
505 | EXPORT_SYMBOL(drm_gtf_mode); |
Line 506... | Line 506... | ||
506 | 506 | ||
507 | #if IS_ENABLED(CONFIG_VIDEOMODE) |
507 | #ifdef CONFIG_VIDEOMODE_HELPERS |
508 | int drm_display_mode_from_videomode(const struct videomode *vm, |
508 | int drm_display_mode_from_videomode(const struct videomode *vm, |
509 | struct drm_display_mode *dmode) |
509 | struct drm_display_mode *dmode) |
510 | { |
510 | { |
511 | dmode->hdisplay = vm->hactive; |
511 | dmode->hdisplay = vm->hactive; |
Line 519... | Line 519... | ||
519 | dmode->vtotal = dmode->vsync_end + vm->vback_porch; |
519 | dmode->vtotal = dmode->vsync_end + vm->vback_porch; |
Line 520... | Line 520... | ||
520 | 520 | ||
Line 521... | Line 521... | ||
521 | dmode->clock = vm->pixelclock / 1000; |
521 | dmode->clock = vm->pixelclock / 1000; |
522 | 522 | ||
523 | dmode->flags = 0; |
523 | dmode->flags = 0; |
524 | if (vm->dmt_flags & VESA_DMT_HSYNC_HIGH) |
524 | if (vm->flags & DISPLAY_FLAGS_HSYNC_HIGH) |
525 | dmode->flags |= DRM_MODE_FLAG_PHSYNC; |
525 | dmode->flags |= DRM_MODE_FLAG_PHSYNC; |
526 | else if (vm->dmt_flags & VESA_DMT_HSYNC_LOW) |
526 | else if (vm->flags & DISPLAY_FLAGS_HSYNC_LOW) |
527 | dmode->flags |= DRM_MODE_FLAG_NHSYNC; |
527 | dmode->flags |= DRM_MODE_FLAG_NHSYNC; |
528 | if (vm->dmt_flags & VESA_DMT_VSYNC_HIGH) |
528 | if (vm->flags & DISPLAY_FLAGS_VSYNC_HIGH) |
529 | dmode->flags |= DRM_MODE_FLAG_PVSYNC; |
529 | dmode->flags |= DRM_MODE_FLAG_PVSYNC; |
530 | else if (vm->dmt_flags & VESA_DMT_VSYNC_LOW) |
530 | else if (vm->flags & DISPLAY_FLAGS_VSYNC_LOW) |
531 | dmode->flags |= DRM_MODE_FLAG_NVSYNC; |
531 | dmode->flags |= DRM_MODE_FLAG_NVSYNC; |
532 | if (vm->data_flags & DISPLAY_FLAGS_INTERLACED) |
532 | if (vm->flags & DISPLAY_FLAGS_INTERLACED) |
533 | dmode->flags |= DRM_MODE_FLAG_INTERLACE; |
533 | dmode->flags |= DRM_MODE_FLAG_INTERLACE; |
534 | if (vm->data_flags & DISPLAY_FLAGS_DOUBLESCAN) |
534 | if (vm->flags & DISPLAY_FLAGS_DOUBLESCAN) |
Line 535... | Line 535... | ||
535 | dmode->flags |= DRM_MODE_FLAG_DBLSCAN; |
535 | dmode->flags |= DRM_MODE_FLAG_DBLSCAN; |
536 | drm_mode_set_name(dmode); |
536 | drm_mode_set_name(dmode); |
537 | 537 | ||
538 | return 0; |
- | |
Line 539... | Line 538... | ||
539 | } |
538 | return 0; |
540 | EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); |
539 | } |
541 | #endif |
540 | EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); |
542 | 541 | ||
543 | #if IS_ENABLED(CONFIG_OF_VIDEOMODE) |
542 | #ifdef CONFIG_OF |
544 | /** |
543 | /** |
Line 568... | Line 567... | ||
568 | drm_mode_debug_printmodeline(dmode); |
567 | drm_mode_debug_printmodeline(dmode); |
Line 569... | Line 568... | ||
569 | 568 | ||
570 | return 0; |
569 | return 0; |
571 | } |
570 | } |
572 | EXPORT_SYMBOL_GPL(of_get_drm_display_mode); |
571 | EXPORT_SYMBOL_GPL(of_get_drm_display_mode); |
- | 572 | #endif /* CONFIG_OF */ |
|
Line 573... | Line 573... | ||
573 | #endif |
573 | #endif /* CONFIG_VIDEOMODE_HELPERS */ |
574 | 574 | ||
575 | /** |
575 | /** |
576 | * drm_mode_set_name - set the name on a mode |
576 | * drm_mode_set_name - set the name on a mode |
Line 844... | Line 844... | ||
844 | if (KHZ2PICOS(mode1->clock) != KHZ2PICOS(mode2->clock)) |
844 | if (KHZ2PICOS(mode1->clock) != KHZ2PICOS(mode2->clock)) |
845 | return false; |
845 | return false; |
846 | } else if (mode1->clock != mode2->clock) |
846 | } else if (mode1->clock != mode2->clock) |
847 | return false; |
847 | return false; |
Line -... | Line 848... | ||
- | 848 | ||
- | 849 | return drm_mode_equal_no_clocks(mode1, mode2); |
|
- | 850 | } |
|
- | 851 | EXPORT_SYMBOL(drm_mode_equal); |
|
- | 852 | ||
- | 853 | /** |
|
- | 854 | * drm_mode_equal_no_clocks - test modes for equality |
|
- | 855 | * @mode1: first mode |
|
- | 856 | * @mode2: second mode |
|
- | 857 | * |
|
- | 858 | * LOCKING: |
|
- | 859 | * None. |
|
- | 860 | * |
|
- | 861 | * Check to see if @mode1 and @mode2 are equivalent, but |
|
- | 862 | * don't check the pixel clocks. |
|
- | 863 | * |
|
- | 864 | * RETURNS: |
|
- | 865 | * True if the modes are equal, false otherwise. |
|
- | 866 | */ |
|
- | 867 | bool drm_mode_equal_no_clocks(const struct drm_display_mode *mode1, const struct drm_display_mode *mode2) |
|
848 | 868 | { |
|
849 | if (mode1->hdisplay == mode2->hdisplay && |
869 | if (mode1->hdisplay == mode2->hdisplay && |
850 | mode1->hsync_start == mode2->hsync_start && |
870 | mode1->hsync_start == mode2->hsync_start && |
851 | mode1->hsync_end == mode2->hsync_end && |
871 | mode1->hsync_end == mode2->hsync_end && |
852 | mode1->htotal == mode2->htotal && |
872 | mode1->htotal == mode2->htotal && |
Line 859... | Line 879... | ||
859 | mode1->flags == mode2->flags) |
879 | mode1->flags == mode2->flags) |
860 | return true; |
880 | return true; |
Line 861... | Line 881... | ||
861 | 881 | ||
862 | return false; |
882 | return false; |
863 | } |
883 | } |
Line 864... | Line 884... | ||
864 | EXPORT_SYMBOL(drm_mode_equal); |
884 | EXPORT_SYMBOL(drm_mode_equal_no_clocks); |
865 | 885 | ||
866 | /** |
886 | /** |
867 | * drm_mode_validate_size - make sure modes adhere to size constraints |
887 | * drm_mode_validate_size - make sure modes adhere to size constraints |