diff options
Diffstat (limited to 'drivers/gpu/drm/drm_edid.c')
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 289 |
1 files changed, 176 insertions, 113 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 8835dcddfac3..b924306b8477 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
@@ -605,347 +605,347 @@ static const struct drm_display_mode edid_cea_modes[] = { | |||
605 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656, | 605 | { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656, |
606 | 752, 800, 0, 480, 490, 492, 525, 0, | 606 | 752, 800, 0, 480, 490, 492, 525, 0, |
607 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 607 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
608 | .vrefresh = 60, }, | 608 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
609 | /* 2 - 720x480@60Hz */ | 609 | /* 2 - 720x480@60Hz */ |
610 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, | 610 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, |
611 | 798, 858, 0, 480, 489, 495, 525, 0, | 611 | 798, 858, 0, 480, 489, 495, 525, 0, |
612 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 612 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
613 | .vrefresh = 60, }, | 613 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
614 | /* 3 - 720x480@60Hz */ | 614 | /* 3 - 720x480@60Hz */ |
615 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, | 615 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736, |
616 | 798, 858, 0, 480, 489, 495, 525, 0, | 616 | 798, 858, 0, 480, 489, 495, 525, 0, |
617 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 617 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
618 | .vrefresh = 60, }, | 618 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
619 | /* 4 - 1280x720@60Hz */ | 619 | /* 4 - 1280x720@60Hz */ |
620 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, | 620 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, |
621 | 1430, 1650, 0, 720, 725, 730, 750, 0, | 621 | 1430, 1650, 0, 720, 725, 730, 750, 0, |
622 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 622 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
623 | .vrefresh = 60, }, | 623 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
624 | /* 5 - 1920x1080i@60Hz */ | 624 | /* 5 - 1920x1080i@60Hz */ |
625 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, | 625 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, |
626 | 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, | 626 | 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, |
627 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | | 627 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
628 | DRM_MODE_FLAG_INTERLACE), | 628 | DRM_MODE_FLAG_INTERLACE), |
629 | .vrefresh = 60, }, | 629 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
630 | /* 6 - 1440x480i@60Hz */ | 630 | /* 6 - 1440x480i@60Hz */ |
631 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, | 631 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
632 | 1602, 1716, 0, 480, 488, 494, 525, 0, | 632 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
633 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 633 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
634 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 634 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
635 | .vrefresh = 60, }, | 635 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
636 | /* 7 - 1440x480i@60Hz */ | 636 | /* 7 - 1440x480i@60Hz */ |
637 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, | 637 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
638 | 1602, 1716, 0, 480, 488, 494, 525, 0, | 638 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
639 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 639 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
640 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 640 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
641 | .vrefresh = 60, }, | 641 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
642 | /* 8 - 1440x240@60Hz */ | 642 | /* 8 - 1440x240@60Hz */ |
643 | { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, | 643 | { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
644 | 1602, 1716, 0, 240, 244, 247, 262, 0, | 644 | 1602, 1716, 0, 240, 244, 247, 262, 0, |
645 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 645 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
646 | DRM_MODE_FLAG_DBLCLK), | 646 | DRM_MODE_FLAG_DBLCLK), |
647 | .vrefresh = 60, }, | 647 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
648 | /* 9 - 1440x240@60Hz */ | 648 | /* 9 - 1440x240@60Hz */ |
649 | { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, | 649 | { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478, |
650 | 1602, 1716, 0, 240, 244, 247, 262, 0, | 650 | 1602, 1716, 0, 240, 244, 247, 262, 0, |
651 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 651 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
652 | DRM_MODE_FLAG_DBLCLK), | 652 | DRM_MODE_FLAG_DBLCLK), |
653 | .vrefresh = 60, }, | 653 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
654 | /* 10 - 2880x480i@60Hz */ | 654 | /* 10 - 2880x480i@60Hz */ |
655 | { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, | 655 | { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
656 | 3204, 3432, 0, 480, 488, 494, 525, 0, | 656 | 3204, 3432, 0, 480, 488, 494, 525, 0, |
657 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 657 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
658 | DRM_MODE_FLAG_INTERLACE), | 658 | DRM_MODE_FLAG_INTERLACE), |
659 | .vrefresh = 60, }, | 659 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
660 | /* 11 - 2880x480i@60Hz */ | 660 | /* 11 - 2880x480i@60Hz */ |
661 | { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, | 661 | { DRM_MODE("2880x480i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
662 | 3204, 3432, 0, 480, 488, 494, 525, 0, | 662 | 3204, 3432, 0, 480, 488, 494, 525, 0, |
663 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 663 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
664 | DRM_MODE_FLAG_INTERLACE), | 664 | DRM_MODE_FLAG_INTERLACE), |
665 | .vrefresh = 60, }, | 665 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
666 | /* 12 - 2880x240@60Hz */ | 666 | /* 12 - 2880x240@60Hz */ |
667 | { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, | 667 | { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
668 | 3204, 3432, 0, 240, 244, 247, 262, 0, | 668 | 3204, 3432, 0, 240, 244, 247, 262, 0, |
669 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 669 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
670 | .vrefresh = 60, }, | 670 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
671 | /* 13 - 2880x240@60Hz */ | 671 | /* 13 - 2880x240@60Hz */ |
672 | { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, | 672 | { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956, |
673 | 3204, 3432, 0, 240, 244, 247, 262, 0, | 673 | 3204, 3432, 0, 240, 244, 247, 262, 0, |
674 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 674 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
675 | .vrefresh = 60, }, | 675 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
676 | /* 14 - 1440x480@60Hz */ | 676 | /* 14 - 1440x480@60Hz */ |
677 | { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, | 677 | { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, |
678 | 1596, 1716, 0, 480, 489, 495, 525, 0, | 678 | 1596, 1716, 0, 480, 489, 495, 525, 0, |
679 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 679 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
680 | .vrefresh = 60, }, | 680 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
681 | /* 15 - 1440x480@60Hz */ | 681 | /* 15 - 1440x480@60Hz */ |
682 | { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, | 682 | { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472, |
683 | 1596, 1716, 0, 480, 489, 495, 525, 0, | 683 | 1596, 1716, 0, 480, 489, 495, 525, 0, |
684 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 684 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
685 | .vrefresh = 60, }, | 685 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
686 | /* 16 - 1920x1080@60Hz */ | 686 | /* 16 - 1920x1080@60Hz */ |
687 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, | 687 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, |
688 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, | 688 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, |
689 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 689 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
690 | .vrefresh = 60, }, | 690 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
691 | /* 17 - 720x576@50Hz */ | 691 | /* 17 - 720x576@50Hz */ |
692 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, | 692 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, |
693 | 796, 864, 0, 576, 581, 586, 625, 0, | 693 | 796, 864, 0, 576, 581, 586, 625, 0, |
694 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 694 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
695 | .vrefresh = 50, }, | 695 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
696 | /* 18 - 720x576@50Hz */ | 696 | /* 18 - 720x576@50Hz */ |
697 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, | 697 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732, |
698 | 796, 864, 0, 576, 581, 586, 625, 0, | 698 | 796, 864, 0, 576, 581, 586, 625, 0, |
699 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 699 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
700 | .vrefresh = 50, }, | 700 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
701 | /* 19 - 1280x720@50Hz */ | 701 | /* 19 - 1280x720@50Hz */ |
702 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, | 702 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720, |
703 | 1760, 1980, 0, 720, 725, 730, 750, 0, | 703 | 1760, 1980, 0, 720, 725, 730, 750, 0, |
704 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 704 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
705 | .vrefresh = 50, }, | 705 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
706 | /* 20 - 1920x1080i@50Hz */ | 706 | /* 20 - 1920x1080i@50Hz */ |
707 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, | 707 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, |
708 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, | 708 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, |
709 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | | 709 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
710 | DRM_MODE_FLAG_INTERLACE), | 710 | DRM_MODE_FLAG_INTERLACE), |
711 | .vrefresh = 50, }, | 711 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
712 | /* 21 - 1440x576i@50Hz */ | 712 | /* 21 - 1440x576i@50Hz */ |
713 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, | 713 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
714 | 1590, 1728, 0, 576, 580, 586, 625, 0, | 714 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
715 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 715 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
716 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 716 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
717 | .vrefresh = 50, }, | 717 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
718 | /* 22 - 1440x576i@50Hz */ | 718 | /* 22 - 1440x576i@50Hz */ |
719 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, | 719 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
720 | 1590, 1728, 0, 576, 580, 586, 625, 0, | 720 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
721 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 721 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
722 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 722 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
723 | .vrefresh = 50, }, | 723 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
724 | /* 23 - 1440x288@50Hz */ | 724 | /* 23 - 1440x288@50Hz */ |
725 | { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, | 725 | { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
726 | 1590, 1728, 0, 288, 290, 293, 312, 0, | 726 | 1590, 1728, 0, 288, 290, 293, 312, 0, |
727 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 727 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
728 | DRM_MODE_FLAG_DBLCLK), | 728 | DRM_MODE_FLAG_DBLCLK), |
729 | .vrefresh = 50, }, | 729 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
730 | /* 24 - 1440x288@50Hz */ | 730 | /* 24 - 1440x288@50Hz */ |
731 | { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, | 731 | { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464, |
732 | 1590, 1728, 0, 288, 290, 293, 312, 0, | 732 | 1590, 1728, 0, 288, 290, 293, 312, 0, |
733 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 733 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
734 | DRM_MODE_FLAG_DBLCLK), | 734 | DRM_MODE_FLAG_DBLCLK), |
735 | .vrefresh = 50, }, | 735 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
736 | /* 25 - 2880x576i@50Hz */ | 736 | /* 25 - 2880x576i@50Hz */ |
737 | { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, | 737 | { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
738 | 3180, 3456, 0, 576, 580, 586, 625, 0, | 738 | 3180, 3456, 0, 576, 580, 586, 625, 0, |
739 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 739 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
740 | DRM_MODE_FLAG_INTERLACE), | 740 | DRM_MODE_FLAG_INTERLACE), |
741 | .vrefresh = 50, }, | 741 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
742 | /* 26 - 2880x576i@50Hz */ | 742 | /* 26 - 2880x576i@50Hz */ |
743 | { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, | 743 | { DRM_MODE("2880x576i", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
744 | 3180, 3456, 0, 576, 580, 586, 625, 0, | 744 | 3180, 3456, 0, 576, 580, 586, 625, 0, |
745 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 745 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
746 | DRM_MODE_FLAG_INTERLACE), | 746 | DRM_MODE_FLAG_INTERLACE), |
747 | .vrefresh = 50, }, | 747 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
748 | /* 27 - 2880x288@50Hz */ | 748 | /* 27 - 2880x288@50Hz */ |
749 | { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, | 749 | { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
750 | 3180, 3456, 0, 288, 290, 293, 312, 0, | 750 | 3180, 3456, 0, 288, 290, 293, 312, 0, |
751 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 751 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
752 | .vrefresh = 50, }, | 752 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
753 | /* 28 - 2880x288@50Hz */ | 753 | /* 28 - 2880x288@50Hz */ |
754 | { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, | 754 | { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928, |
755 | 3180, 3456, 0, 288, 290, 293, 312, 0, | 755 | 3180, 3456, 0, 288, 290, 293, 312, 0, |
756 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 756 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
757 | .vrefresh = 50, }, | 757 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
758 | /* 29 - 1440x576@50Hz */ | 758 | /* 29 - 1440x576@50Hz */ |
759 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, | 759 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
760 | 1592, 1728, 0, 576, 581, 586, 625, 0, | 760 | 1592, 1728, 0, 576, 581, 586, 625, 0, |
761 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 761 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
762 | .vrefresh = 50, }, | 762 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
763 | /* 30 - 1440x576@50Hz */ | 763 | /* 30 - 1440x576@50Hz */ |
764 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, | 764 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
765 | 1592, 1728, 0, 576, 581, 586, 625, 0, | 765 | 1592, 1728, 0, 576, 581, 586, 625, 0, |
766 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 766 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
767 | .vrefresh = 50, }, | 767 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
768 | /* 31 - 1920x1080@50Hz */ | 768 | /* 31 - 1920x1080@50Hz */ |
769 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, | 769 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, |
770 | 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, | 770 | 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, |
771 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 771 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
772 | .vrefresh = 50, }, | 772 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
773 | /* 32 - 1920x1080@24Hz */ | 773 | /* 32 - 1920x1080@24Hz */ |
774 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, | 774 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558, |
775 | 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, | 775 | 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, |
776 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 776 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
777 | .vrefresh = 24, }, | 777 | .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
778 | /* 33 - 1920x1080@25Hz */ | 778 | /* 33 - 1920x1080@25Hz */ |
779 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, | 779 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448, |
780 | 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, | 780 | 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, |
781 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 781 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
782 | .vrefresh = 25, }, | 782 | .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
783 | /* 34 - 1920x1080@30Hz */ | 783 | /* 34 - 1920x1080@30Hz */ |
784 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, | 784 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008, |
785 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, | 785 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, |
786 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 786 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
787 | .vrefresh = 30, }, | 787 | .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
788 | /* 35 - 2880x480@60Hz */ | 788 | /* 35 - 2880x480@60Hz */ |
789 | { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, | 789 | { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, |
790 | 3192, 3432, 0, 480, 489, 495, 525, 0, | 790 | 3192, 3432, 0, 480, 489, 495, 525, 0, |
791 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 791 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
792 | .vrefresh = 60, }, | 792 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
793 | /* 36 - 2880x480@60Hz */ | 793 | /* 36 - 2880x480@60Hz */ |
794 | { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, | 794 | { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944, |
795 | 3192, 3432, 0, 480, 489, 495, 525, 0, | 795 | 3192, 3432, 0, 480, 489, 495, 525, 0, |
796 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 796 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
797 | .vrefresh = 60, }, | 797 | .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
798 | /* 37 - 2880x576@50Hz */ | 798 | /* 37 - 2880x576@50Hz */ |
799 | { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, | 799 | { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, |
800 | 3184, 3456, 0, 576, 581, 586, 625, 0, | 800 | 3184, 3456, 0, 576, 581, 586, 625, 0, |
801 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 801 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
802 | .vrefresh = 50, }, | 802 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
803 | /* 38 - 2880x576@50Hz */ | 803 | /* 38 - 2880x576@50Hz */ |
804 | { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, | 804 | { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928, |
805 | 3184, 3456, 0, 576, 581, 586, 625, 0, | 805 | 3184, 3456, 0, 576, 581, 586, 625, 0, |
806 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 806 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
807 | .vrefresh = 50, }, | 807 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
808 | /* 39 - 1920x1080i@50Hz */ | 808 | /* 39 - 1920x1080i@50Hz */ |
809 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 72000, 1920, 1952, | 809 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 72000, 1920, 1952, |
810 | 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, | 810 | 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, |
811 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC | | 811 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC | |
812 | DRM_MODE_FLAG_INTERLACE), | 812 | DRM_MODE_FLAG_INTERLACE), |
813 | .vrefresh = 50, }, | 813 | .vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
814 | /* 40 - 1920x1080i@100Hz */ | 814 | /* 40 - 1920x1080i@100Hz */ |
815 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, | 815 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448, |
816 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, | 816 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, |
817 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | | 817 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
818 | DRM_MODE_FLAG_INTERLACE), | 818 | DRM_MODE_FLAG_INTERLACE), |
819 | .vrefresh = 100, }, | 819 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
820 | /* 41 - 1280x720@100Hz */ | 820 | /* 41 - 1280x720@100Hz */ |
821 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, | 821 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720, |
822 | 1760, 1980, 0, 720, 725, 730, 750, 0, | 822 | 1760, 1980, 0, 720, 725, 730, 750, 0, |
823 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 823 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
824 | .vrefresh = 100, }, | 824 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
825 | /* 42 - 720x576@100Hz */ | 825 | /* 42 - 720x576@100Hz */ |
826 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, | 826 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, |
827 | 796, 864, 0, 576, 581, 586, 625, 0, | 827 | 796, 864, 0, 576, 581, 586, 625, 0, |
828 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 828 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
829 | .vrefresh = 100, }, | 829 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
830 | /* 43 - 720x576@100Hz */ | 830 | /* 43 - 720x576@100Hz */ |
831 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, | 831 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732, |
832 | 796, 864, 0, 576, 581, 586, 625, 0, | 832 | 796, 864, 0, 576, 581, 586, 625, 0, |
833 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 833 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
834 | .vrefresh = 100, }, | 834 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
835 | /* 44 - 1440x576i@100Hz */ | 835 | /* 44 - 1440x576i@100Hz */ |
836 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, | 836 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
837 | 1590, 1728, 0, 576, 580, 586, 625, 0, | 837 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
838 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 838 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
839 | DRM_MODE_FLAG_DBLCLK), | 839 | DRM_MODE_FLAG_DBLCLK), |
840 | .vrefresh = 100, }, | 840 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
841 | /* 45 - 1440x576i@100Hz */ | 841 | /* 45 - 1440x576i@100Hz */ |
842 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, | 842 | { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464, |
843 | 1590, 1728, 0, 576, 580, 586, 625, 0, | 843 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
844 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 844 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
845 | DRM_MODE_FLAG_DBLCLK), | 845 | DRM_MODE_FLAG_DBLCLK), |
846 | .vrefresh = 100, }, | 846 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
847 | /* 46 - 1920x1080i@120Hz */ | 847 | /* 46 - 1920x1080i@120Hz */ |
848 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, | 848 | { DRM_MODE("1920x1080i", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008, |
849 | 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, | 849 | 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, |
850 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | | 850 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC | |
851 | DRM_MODE_FLAG_INTERLACE), | 851 | DRM_MODE_FLAG_INTERLACE), |
852 | .vrefresh = 120, }, | 852 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
853 | /* 47 - 1280x720@120Hz */ | 853 | /* 47 - 1280x720@120Hz */ |
854 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, | 854 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390, |
855 | 1430, 1650, 0, 720, 725, 730, 750, 0, | 855 | 1430, 1650, 0, 720, 725, 730, 750, 0, |
856 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 856 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
857 | .vrefresh = 120, }, | 857 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
858 | /* 48 - 720x480@120Hz */ | 858 | /* 48 - 720x480@120Hz */ |
859 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, | 859 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, |
860 | 798, 858, 0, 480, 489, 495, 525, 0, | 860 | 798, 858, 0, 480, 489, 495, 525, 0, |
861 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 861 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
862 | .vrefresh = 120, }, | 862 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
863 | /* 49 - 720x480@120Hz */ | 863 | /* 49 - 720x480@120Hz */ |
864 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, | 864 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736, |
865 | 798, 858, 0, 480, 489, 495, 525, 0, | 865 | 798, 858, 0, 480, 489, 495, 525, 0, |
866 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 866 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
867 | .vrefresh = 120, }, | 867 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
868 | /* 50 - 1440x480i@120Hz */ | 868 | /* 50 - 1440x480i@120Hz */ |
869 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, | 869 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, |
870 | 1602, 1716, 0, 480, 488, 494, 525, 0, | 870 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
871 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 871 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
872 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 872 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
873 | .vrefresh = 120, }, | 873 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
874 | /* 51 - 1440x480i@120Hz */ | 874 | /* 51 - 1440x480i@120Hz */ |
875 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, | 875 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478, |
876 | 1602, 1716, 0, 480, 488, 494, 525, 0, | 876 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
877 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 877 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
878 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 878 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
879 | .vrefresh = 120, }, | 879 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
880 | /* 52 - 720x576@200Hz */ | 880 | /* 52 - 720x576@200Hz */ |
881 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, | 881 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, |
882 | 796, 864, 0, 576, 581, 586, 625, 0, | 882 | 796, 864, 0, 576, 581, 586, 625, 0, |
883 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 883 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
884 | .vrefresh = 200, }, | 884 | .vrefresh = 200, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
885 | /* 53 - 720x576@200Hz */ | 885 | /* 53 - 720x576@200Hz */ |
886 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, | 886 | { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732, |
887 | 796, 864, 0, 576, 581, 586, 625, 0, | 887 | 796, 864, 0, 576, 581, 586, 625, 0, |
888 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 888 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
889 | .vrefresh = 200, }, | 889 | .vrefresh = 200, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
890 | /* 54 - 1440x576i@200Hz */ | 890 | /* 54 - 1440x576i@200Hz */ |
891 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, | 891 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, |
892 | 1590, 1728, 0, 576, 580, 586, 625, 0, | 892 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
893 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 893 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
894 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 894 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
895 | .vrefresh = 200, }, | 895 | .vrefresh = 200, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
896 | /* 55 - 1440x576i@200Hz */ | 896 | /* 55 - 1440x576i@200Hz */ |
897 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, | 897 | { DRM_MODE("1440x576i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464, |
898 | 1590, 1728, 0, 576, 580, 586, 625, 0, | 898 | 1590, 1728, 0, 576, 580, 586, 625, 0, |
899 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 899 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
900 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 900 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
901 | .vrefresh = 200, }, | 901 | .vrefresh = 200, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
902 | /* 56 - 720x480@240Hz */ | 902 | /* 56 - 720x480@240Hz */ |
903 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, | 903 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, |
904 | 798, 858, 0, 480, 489, 495, 525, 0, | 904 | 798, 858, 0, 480, 489, 495, 525, 0, |
905 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 905 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
906 | .vrefresh = 240, }, | 906 | .vrefresh = 240, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
907 | /* 57 - 720x480@240Hz */ | 907 | /* 57 - 720x480@240Hz */ |
908 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, | 908 | { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736, |
909 | 798, 858, 0, 480, 489, 495, 525, 0, | 909 | 798, 858, 0, 480, 489, 495, 525, 0, |
910 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), | 910 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), |
911 | .vrefresh = 240, }, | 911 | .vrefresh = 240, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
912 | /* 58 - 1440x480i@240 */ | 912 | /* 58 - 1440x480i@240 */ |
913 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, | 913 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, |
914 | 1602, 1716, 0, 480, 488, 494, 525, 0, | 914 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
915 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 915 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
916 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 916 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
917 | .vrefresh = 240, }, | 917 | .vrefresh = 240, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, }, |
918 | /* 59 - 1440x480i@240 */ | 918 | /* 59 - 1440x480i@240 */ |
919 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, | 919 | { DRM_MODE("1440x480i", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478, |
920 | 1602, 1716, 0, 480, 488, 494, 525, 0, | 920 | 1602, 1716, 0, 480, 488, 494, 525, 0, |
921 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | | 921 | DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | |
922 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), | 922 | DRM_MODE_FLAG_INTERLACE | DRM_MODE_FLAG_DBLCLK), |
923 | .vrefresh = 240, }, | 923 | .vrefresh = 240, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
924 | /* 60 - 1280x720@24Hz */ | 924 | /* 60 - 1280x720@24Hz */ |
925 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, | 925 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040, |
926 | 3080, 3300, 0, 720, 725, 730, 750, 0, | 926 | 3080, 3300, 0, 720, 725, 730, 750, 0, |
927 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 927 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
928 | .vrefresh = 24, }, | 928 | .vrefresh = 24, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
929 | /* 61 - 1280x720@25Hz */ | 929 | /* 61 - 1280x720@25Hz */ |
930 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, | 930 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700, |
931 | 3740, 3960, 0, 720, 725, 730, 750, 0, | 931 | 3740, 3960, 0, 720, 725, 730, 750, 0, |
932 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 932 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
933 | .vrefresh = 25, }, | 933 | .vrefresh = 25, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
934 | /* 62 - 1280x720@30Hz */ | 934 | /* 62 - 1280x720@30Hz */ |
935 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, | 935 | { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040, |
936 | 3080, 3300, 0, 720, 725, 730, 750, 0, | 936 | 3080, 3300, 0, 720, 725, 730, 750, 0, |
937 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 937 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
938 | .vrefresh = 30, }, | 938 | .vrefresh = 30, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
939 | /* 63 - 1920x1080@120Hz */ | 939 | /* 63 - 1920x1080@120Hz */ |
940 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, | 940 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008, |
941 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, | 941 | 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, |
942 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 942 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
943 | .vrefresh = 120, }, | 943 | .vrefresh = 120, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
944 | /* 64 - 1920x1080@100Hz */ | 944 | /* 64 - 1920x1080@100Hz */ |
945 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, | 945 | { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448, |
946 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, | 946 | 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, |
947 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), | 947 | DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC), |
948 | .vrefresh = 100, }, | 948 | .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, }, |
949 | }; | 949 | }; |
950 | 950 | ||
951 | /* | 951 | /* |
@@ -2562,25 +2562,40 @@ add_alternate_cea_modes(struct drm_connector *connector, struct edid *edid) | |||
2562 | return modes; | 2562 | return modes; |
2563 | } | 2563 | } |
2564 | 2564 | ||
2565 | static int | 2565 | static struct drm_display_mode * |
2566 | do_cea_modes(struct drm_connector *connector, const u8 *db, u8 len) | 2566 | drm_display_mode_from_vic_index(struct drm_connector *connector, |
2567 | const u8 *video_db, u8 video_len, | ||
2568 | u8 video_index) | ||
2567 | { | 2569 | { |
2568 | struct drm_device *dev = connector->dev; | 2570 | struct drm_device *dev = connector->dev; |
2569 | const u8 *mode; | 2571 | struct drm_display_mode *newmode; |
2570 | u8 cea_mode; | 2572 | u8 cea_mode; |
2571 | int modes = 0; | ||
2572 | 2573 | ||
2573 | for (mode = db; mode < db + len; mode++) { | 2574 | if (video_db == NULL || video_index >= video_len) |
2574 | cea_mode = (*mode & 127) - 1; /* CEA modes are numbered 1..127 */ | 2575 | return NULL; |
2575 | if (cea_mode < ARRAY_SIZE(edid_cea_modes)) { | 2576 | |
2576 | struct drm_display_mode *newmode; | 2577 | /* CEA modes are numbered 1..127 */ |
2577 | newmode = drm_mode_duplicate(dev, | 2578 | cea_mode = (video_db[video_index] & 127) - 1; |
2578 | &edid_cea_modes[cea_mode]); | 2579 | if (cea_mode >= ARRAY_SIZE(edid_cea_modes)) |
2579 | if (newmode) { | 2580 | return NULL; |
2580 | newmode->vrefresh = 0; | 2581 | |
2581 | drm_mode_probed_add(connector, newmode); | 2582 | newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]); |
2582 | modes++; | 2583 | newmode->vrefresh = 0; |
2583 | } | 2584 | |
2585 | return newmode; | ||
2586 | } | ||
2587 | |||
2588 | static int | ||
2589 | do_cea_modes(struct drm_connector *connector, const u8 *db, u8 len) | ||
2590 | { | ||
2591 | int i, modes = 0; | ||
2592 | |||
2593 | for (i = 0; i < len; i++) { | ||
2594 | struct drm_display_mode *mode; | ||
2595 | mode = drm_display_mode_from_vic_index(connector, db, len, i); | ||
2596 | if (mode) { | ||
2597 | drm_mode_probed_add(connector, mode); | ||
2598 | modes++; | ||
2584 | } | 2599 | } |
2585 | } | 2600 | } |
2586 | 2601 | ||
@@ -2674,21 +2689,13 @@ static int add_hdmi_mode(struct drm_connector *connector, u8 vic) | |||
2674 | static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, | 2689 | static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, |
2675 | const u8 *video_db, u8 video_len, u8 video_index) | 2690 | const u8 *video_db, u8 video_len, u8 video_index) |
2676 | { | 2691 | { |
2677 | struct drm_device *dev = connector->dev; | ||
2678 | struct drm_display_mode *newmode; | 2692 | struct drm_display_mode *newmode; |
2679 | int modes = 0; | 2693 | int modes = 0; |
2680 | u8 cea_mode; | ||
2681 | |||
2682 | if (video_db == NULL || video_index >= video_len) | ||
2683 | return 0; | ||
2684 | |||
2685 | /* CEA modes are numbered 1..127 */ | ||
2686 | cea_mode = (video_db[video_index] & 127) - 1; | ||
2687 | if (cea_mode >= ARRAY_SIZE(edid_cea_modes)) | ||
2688 | return 0; | ||
2689 | 2694 | ||
2690 | if (structure & (1 << 0)) { | 2695 | if (structure & (1 << 0)) { |
2691 | newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]); | 2696 | newmode = drm_display_mode_from_vic_index(connector, video_db, |
2697 | video_len, | ||
2698 | video_index); | ||
2692 | if (newmode) { | 2699 | if (newmode) { |
2693 | newmode->flags |= DRM_MODE_FLAG_3D_FRAME_PACKING; | 2700 | newmode->flags |= DRM_MODE_FLAG_3D_FRAME_PACKING; |
2694 | drm_mode_probed_add(connector, newmode); | 2701 | drm_mode_probed_add(connector, newmode); |
@@ -2696,7 +2703,9 @@ static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, | |||
2696 | } | 2703 | } |
2697 | } | 2704 | } |
2698 | if (structure & (1 << 6)) { | 2705 | if (structure & (1 << 6)) { |
2699 | newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]); | 2706 | newmode = drm_display_mode_from_vic_index(connector, video_db, |
2707 | video_len, | ||
2708 | video_index); | ||
2700 | if (newmode) { | 2709 | if (newmode) { |
2701 | newmode->flags |= DRM_MODE_FLAG_3D_TOP_AND_BOTTOM; | 2710 | newmode->flags |= DRM_MODE_FLAG_3D_TOP_AND_BOTTOM; |
2702 | drm_mode_probed_add(connector, newmode); | 2711 | drm_mode_probed_add(connector, newmode); |
@@ -2704,7 +2713,9 @@ static int add_3d_struct_modes(struct drm_connector *connector, u16 structure, | |||
2704 | } | 2713 | } |
2705 | } | 2714 | } |
2706 | if (structure & (1 << 8)) { | 2715 | if (structure & (1 << 8)) { |
2707 | newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]); | 2716 | newmode = drm_display_mode_from_vic_index(connector, video_db, |
2717 | video_len, | ||
2718 | video_index); | ||
2708 | if (newmode) { | 2719 | if (newmode) { |
2709 | newmode->flags |= DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF; | 2720 | newmode->flags |= DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF; |
2710 | drm_mode_probed_add(connector, newmode); | 2721 | drm_mode_probed_add(connector, newmode); |
@@ -2728,7 +2739,7 @@ static int | |||
2728 | do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len, | 2739 | do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len, |
2729 | const u8 *video_db, u8 video_len) | 2740 | const u8 *video_db, u8 video_len) |
2730 | { | 2741 | { |
2731 | int modes = 0, offset = 0, i, multi_present = 0; | 2742 | int modes = 0, offset = 0, i, multi_present = 0, multi_len; |
2732 | u8 vic_len, hdmi_3d_len = 0; | 2743 | u8 vic_len, hdmi_3d_len = 0; |
2733 | u16 mask; | 2744 | u16 mask; |
2734 | u16 structure_all; | 2745 | u16 structure_all; |
@@ -2774,32 +2785,84 @@ do_hdmi_vsdb_modes(struct drm_connector *connector, const u8 *db, u8 len, | |||
2774 | } | 2785 | } |
2775 | offset += 1 + vic_len; | 2786 | offset += 1 + vic_len; |
2776 | 2787 | ||
2777 | if (!(multi_present == 1 || multi_present == 2)) | 2788 | if (multi_present == 1) |
2778 | goto out; | 2789 | multi_len = 2; |
2790 | else if (multi_present == 2) | ||
2791 | multi_len = 4; | ||
2792 | else | ||
2793 | multi_len = 0; | ||
2779 | 2794 | ||
2780 | if ((multi_present == 1 && len < (9 + offset)) || | 2795 | if (len < (8 + offset + hdmi_3d_len - 1)) |
2781 | (multi_present == 2 && len < (11 + offset))) | ||
2782 | goto out; | 2796 | goto out; |
2783 | 2797 | ||
2784 | if ((multi_present == 1 && hdmi_3d_len < 2) || | 2798 | if (hdmi_3d_len < multi_len) |
2785 | (multi_present == 2 && hdmi_3d_len < 4)) | ||
2786 | goto out; | 2799 | goto out; |
2787 | 2800 | ||
2788 | /* 3D_Structure_ALL */ | 2801 | if (multi_present == 1 || multi_present == 2) { |
2789 | structure_all = (db[8 + offset] << 8) | db[9 + offset]; | 2802 | /* 3D_Structure_ALL */ |
2803 | structure_all = (db[8 + offset] << 8) | db[9 + offset]; | ||
2790 | 2804 | ||
2791 | /* check if 3D_MASK is present */ | 2805 | /* check if 3D_MASK is present */ |
2792 | if (multi_present == 2) | 2806 | if (multi_present == 2) |
2793 | mask = (db[10 + offset] << 8) | db[11 + offset]; | 2807 | mask = (db[10 + offset] << 8) | db[11 + offset]; |
2794 | else | 2808 | else |
2795 | mask = 0xffff; | 2809 | mask = 0xffff; |
2796 | 2810 | ||
2797 | for (i = 0; i < 16; i++) { | 2811 | for (i = 0; i < 16; i++) { |
2798 | if (mask & (1 << i)) | 2812 | if (mask & (1 << i)) |
2799 | modes += add_3d_struct_modes(connector, | 2813 | modes += add_3d_struct_modes(connector, |
2800 | structure_all, | 2814 | structure_all, |
2801 | video_db, | 2815 | video_db, |
2802 | video_len, i); | 2816 | video_len, i); |
2817 | } | ||
2818 | } | ||
2819 | |||
2820 | offset += multi_len; | ||
2821 | |||
2822 | for (i = 0; i < (hdmi_3d_len - multi_len); i++) { | ||
2823 | int vic_index; | ||
2824 | struct drm_display_mode *newmode = NULL; | ||
2825 | unsigned int newflag = 0; | ||
2826 | bool detail_present; | ||
2827 | |||
2828 | detail_present = ((db[8 + offset + i] & 0x0f) > 7); | ||
2829 | |||
2830 | if (detail_present && (i + 1 == hdmi_3d_len - multi_len)) | ||
2831 | break; | ||
2832 | |||
2833 | /* 2D_VIC_order_X */ | ||
2834 | vic_index = db[8 + offset + i] >> 4; | ||
2835 | |||
2836 | /* 3D_Structure_X */ | ||
2837 | switch (db[8 + offset + i] & 0x0f) { | ||
2838 | case 0: | ||
2839 | newflag = DRM_MODE_FLAG_3D_FRAME_PACKING; | ||
2840 | break; | ||
2841 | case 6: | ||
2842 | newflag = DRM_MODE_FLAG_3D_TOP_AND_BOTTOM; | ||
2843 | break; | ||
2844 | case 8: | ||
2845 | /* 3D_Detail_X */ | ||
2846 | if ((db[9 + offset + i] >> 4) == 1) | ||
2847 | newflag = DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF; | ||
2848 | break; | ||
2849 | } | ||
2850 | |||
2851 | if (newflag != 0) { | ||
2852 | newmode = drm_display_mode_from_vic_index(connector, | ||
2853 | video_db, | ||
2854 | video_len, | ||
2855 | vic_index); | ||
2856 | |||
2857 | if (newmode) { | ||
2858 | newmode->flags |= newflag; | ||
2859 | drm_mode_probed_add(connector, newmode); | ||
2860 | modes++; | ||
2861 | } | ||
2862 | } | ||
2863 | |||
2864 | if (detail_present) | ||
2865 | i++; | ||
2803 | } | 2866 | } |
2804 | 2867 | ||
2805 | out: | 2868 | out: |