summaryrefslogtreecommitdiff
path: root/linux-core/drm_crtc.h
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@hobbes.virtuousgeek.org>2007-04-20 17:59:30 -0700
committerJesse Barnes <jbarnes@hobbes.virtuousgeek.org>2007-04-20 17:59:30 -0700
commiteb892fb09dc2e5206f2461e8b258495c7cef904a (patch)
treecc5c4c1332ec328f02c44edea123c74708085167 /linux-core/drm_crtc.h
parenta21ff375c697fc7560c16d0f88335a6db2c9c37a (diff)
Add a monitor information structure separate from the EDID data for tracking
monitor limits, etc.
Diffstat (limited to 'linux-core/drm_crtc.h')
-rw-r--r--linux-core/drm_crtc.h55
1 files changed, 54 insertions, 1 deletions
diff --git a/linux-core/drm_crtc.h b/linux-core/drm_crtc.h
index e5a89b17..e3e97ad8 100644
--- a/linux-core/drm_crtc.h
+++ b/linux-core/drm_crtc.h
@@ -168,6 +168,59 @@ enum subpixel_order {
SubPixelNone,
};
+/*
+ * Describes a given display (e.g. CRT or flat panel) and its limitations.
+ */
+struct drm_display_info {
+ char name[DRM_DISPLAY_INFO_LEN];
+ /* Input info */
+ bool serration_vsync;
+ bool sync_on_green;
+ bool composite_sync;
+ bool separate_syncs;
+ bool blank_to_black;
+ unsigned char video_level;
+ bool digital;
+ /* Physical size */
+ unsigned int width_mm;
+ unsigned int height_mm;
+
+ /* Display parameters */
+ unsigned char gamma; /* FIXME: storage format */
+ bool gtf_supported;
+ bool standard_color;
+ enum {
+ monochrome,
+ rgb,
+ other,
+ unknown,
+ } display_type;
+ bool active_off_supported;
+ bool suspend_supported;
+ bool standby_supported;
+
+ /* Color info FIXME: storage format */
+ unsigned short redx, redy;
+ unsigned short greenx, greeny;
+ unsigned short bluex, bluey;
+ unsigned short whitex, whitey;
+
+ /* Clock limits FIXME: storage format */
+ unsigned int min_vfreq, max_vfreq;
+ unsigned int min_hfreq, max_hfreq;
+ unsigned int pixel_clock;
+
+ /* White point indices FIXME: storage format */
+ unsigned int wpx1, wpy1;
+ unsigned int wpgamma1;
+ unsigned int wpx2, wpy2;
+ unsigned int wpgamma2;
+
+ /* Preferred mode (if any) */
+ struct drm_display_mode *preferred_mode;
+ struct edid *raw_edid; /* if any */
+};
+
struct drm_framebuffer {
struct drm_device *dev;
struct list_head head;
@@ -376,7 +429,7 @@ struct drm_output {
/* xf86MonPtr MonInfo; */
enum subpixel_order subpixel_order;
int mm_width, mm_height;
- struct edid *monitor_info;
+ struct drm_display_info *monitor_info; /* if any */
char name[DRM_OUTPUT_LEN];
const struct drm_output_funcs *funcs;
void *driver_private;