summaryrefslogtreecommitdiff
path: root/linux-core/drm_edid.c
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@nietzche.virtuousgeek.org>2008-04-10 11:23:55 -0700
committerJesse Barnes <jbarnes@nietzche.virtuousgeek.org>2008-04-10 11:23:55 -0700
commit0a6e301e6de3421f116d1b5d8205ca4f442091e2 (patch)
tree860f00829639bd933fc9ff676fb894f846903ffb /linux-core/drm_edid.c
parent386ea38b8e3af9bc9166d4ab63c4beb7e0e2267b (diff)
Keep display info in struct display_info
Some fields had snuck into the drm_output structure. Put them back and fill in more stuff from the EDID block.
Diffstat (limited to 'linux-core/drm_edid.c')
-rw-r--r--linux-core/drm_edid.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/linux-core/drm_edid.c b/linux-core/drm_edid.c
index 9762567b..e033abdf 100644
--- a/linux-core/drm_edid.c
+++ b/linux-core/drm_edid.c
@@ -291,7 +291,11 @@ static int add_detailed_info(struct drm_output *output, struct edid *edid)
if (i == 0 && edid->preferred_timing)
newmode->type |= DRM_MODE_TYPE_PREFERRED;
drm_mode_probed_add(output, newmode);
-
+
+ /* Use first one for output's preferred mode */
+ if (!output->display_info.preferred_mode)
+ output->display_info.preferred_mode =
+ newmode;
modes++;
}
continue;
@@ -460,6 +464,9 @@ struct edid *drm_get_edid(struct drm_output *output,
kfree(edid);
return NULL;
}
+
+ output->display_info.raw_edid = (char *)edid;
+
return edid;
}
EXPORT_SYMBOL(drm_get_edid);
@@ -488,6 +495,25 @@ int drm_add_edid_modes(struct drm_output *output, struct edid *edid)
num_modes += add_established_modes(output, edid);
num_modes += add_standard_modes(output, edid);
num_modes += add_detailed_info(output, edid);
+
+ output->display_info.serration_vsync = edid->serration_vsync;
+ output->display_info.sync_on_green = edid->sync_on_green;
+ output->display_info.composite_sync = edid->composite_sync;
+ output->display_info.separate_syncs = edid->separate_syncs;
+ output->display_info.blank_to_black = edid->blank_to_black;
+ output->display_info.video_level = edid->video_level;
+ output->display_info.digital = edid->digital;
+ output->display_info.width_mm = edid->width_cm * 10;
+ output->display_info.height_mm = edid->height_cm * 10;
+ output->display_info.gamma = edid->gamma;
+ output->display_info.gtf_supported = edid->default_gtf;
+ output->display_info.standard_color = edid->standard_color;
+ output->display_info.display_type = edid->display_type;
+ output->display_info.active_off_supported = edid->pm_active_off;
+ output->display_info.suspend_supported = edid->pm_suspend;
+ output->display_info.standby_supported = edid->pm_standby;
+ output->display_info.gamma = edid->gamma;
+
return num_modes;
}
EXPORT_SYMBOL(drm_add_edid_modes);