aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_edid.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2009-08-19 23:38:04 -0400
committerDave Airlie <airlied@redhat.com>2009-08-19 23:38:04 -0400
commit51c8b4071d84d46cc100baa5931ad06b2a823c95 (patch)
tree098cf9d41ce1c548d922708a770a9efe35e434df /drivers/gpu/drm/drm_edid.c
parenta987fcaa805fcb24ba885c2e29fd4fdb6816f08f (diff)
parent6c30c53fd5ae6a99a23ad78e90c428d2c8ffb07f (diff)
Merge Linus master to drm-next
linux-next conflict reported needed resolution. Conflicts: drivers/gpu/drm/drm_crtc.c drivers/gpu/drm/drm_edid.c drivers/gpu/drm/i915/intel_sdvo.c drivers/gpu/drm/radeon/radeon_ttm.c drivers/gpu/drm/ttm/ttm_bo.c
Diffstat (limited to 'drivers/gpu/drm/drm_edid.c')
-rw-r--r--drivers/gpu/drm/drm_edid.c74
1 files changed, 35 insertions, 39 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index bbcb2e22675b..a1cab5de2f4b 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -547,12 +547,41 @@ static int add_detailed_info(struct drm_connector *connector,
547 struct detailed_non_pixel *data = &timing->data.other_data; 547 struct detailed_non_pixel *data = &timing->data.other_data;
548 struct drm_display_mode *newmode; 548 struct drm_display_mode *newmode;
549 549
550 /* EDID up to and including 1.2 may put monitor info here */ 550 /* X server check is version 1.1 or higher */
551 if (edid->version == 1 && edid->revision < 3) 551 if (edid->version == 1 && edid->revision >= 1 &&
552 continue; 552 !timing->pixel_clock) {
553 553 /* Other timing or info */
554 /* Detailed mode timing */ 554 switch (data->type) {
555 if (timing->pixel_clock) { 555 case EDID_DETAIL_MONITOR_SERIAL:
556 break;
557 case EDID_DETAIL_MONITOR_STRING:
558 break;
559 case EDID_DETAIL_MONITOR_RANGE:
560 /* Get monitor range data */
561 break;
562 case EDID_DETAIL_MONITOR_NAME:
563 break;
564 case EDID_DETAIL_MONITOR_CPDATA:
565 break;
566 case EDID_DETAIL_STD_MODES:
567 /* Five modes per detailed section */
568 for (j = 0; j < 5; i++) {
569 struct std_timing *std;
570 struct drm_display_mode *newmode;
571
572 std = &data->data.timings[j];
573 newmode = drm_mode_std(dev, std,
574 timing_level);
575 if (newmode) {
576 drm_mode_probed_add(connector, newmode);
577 modes++;
578 }
579 }
580 break;
581 default:
582 break;
583 }
584 } else {
556 newmode = drm_mode_detailed(dev, edid, timing, quirks); 585 newmode = drm_mode_detailed(dev, edid, timing, quirks);
557 if (!newmode) 586 if (!newmode)
558 continue; 587 continue;
@@ -563,39 +592,6 @@ static int add_detailed_info(struct drm_connector *connector,
563 drm_mode_probed_add(connector, newmode); 592 drm_mode_probed_add(connector, newmode);
564 593
565 modes++; 594 modes++;
566 continue;
567 }
568
569 /* Other timing or info */
570 switch (data->type) {
571 case EDID_DETAIL_MONITOR_SERIAL:
572 break;
573 case EDID_DETAIL_MONITOR_STRING:
574 break;
575 case EDID_DETAIL_MONITOR_RANGE:
576 /* Get monitor range data */
577 break;
578 case EDID_DETAIL_MONITOR_NAME:
579 break;
580 case EDID_DETAIL_MONITOR_CPDATA:
581 break;
582 case EDID_DETAIL_STD_MODES:
583 /* Five modes per detailed section */
584 for (j = 0; j < 5; i++) {
585 struct std_timing *std;
586 struct drm_display_mode *newmode;
587
588 std = &data->data.timings[j];
589 newmode = drm_mode_std(dev, std,
590 timing_level);
591 if (newmode) {
592 drm_mode_probed_add(connector, newmode);
593 modes++;
594 }
595 }
596 break;
597 default:
598 break;
599 } 595 }
600 } 596 }
601 597