From 2520d3fd99636e493060d51b1c3287a5faac22bf Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 15 Nov 2007 16:52:04 +1100 Subject: modes: pass type to userspace for preferred showing --- linux-core/drm_crtc.c | 4 ++++ linux-core/drm_crtc.h | 8 -------- shared-core/drm.h | 10 +++++++++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/linux-core/drm_crtc.c b/linux-core/drm_crtc.c index cad7cd83..5b00c115 100644 --- a/linux-core/drm_crtc.c +++ b/linux-core/drm_crtc.c @@ -1076,6 +1076,7 @@ void drm_crtc_convert_to_umode(struct drm_mode_modeinfo *out, struct drm_display out->vscan = in->vscan; out->vrefresh = in->vrefresh; out->flags = in->flags; + out->type = in->type; strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN); out->name[DRM_DISPLAY_MODE_LEN-1] = 0; } @@ -1106,6 +1107,7 @@ void drm_crtc_convert_umode(struct drm_display_mode *out, struct drm_mode_modein out->vscan = in->vscan; out->vrefresh = in->vrefresh; out->flags = in->flags; + out->type = in->type; strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN); out->name[DRM_DISPLAY_MODE_LEN-1] = 0; } @@ -1345,6 +1347,8 @@ int drm_mode_getoutput(struct drm_device *dev, else out_resp->crtc = 0; + out_resp->crtcs = output->possible_crtcs; + out_resp->clones = output->possible_clones; if ((out_resp->count_modes >= mode_count) && mode_count) { copied = 0; list_for_each_entry(mode, &output->modes, head) { diff --git a/linux-core/drm_crtc.h b/linux-core/drm_crtc.h index 9dd00b3d..0ddefc86 100644 --- a/linux-core/drm_crtc.h +++ b/linux-core/drm_crtc.h @@ -64,14 +64,6 @@ enum drm_mode_status { MODE_ERROR = -1 /* error condition */ }; -#define DRM_MODE_TYPE_BUILTIN (1<<0) -#define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN) -#define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN) -#define DRM_MODE_TYPE_PREFERRED (1<<3) -#define DRM_MODE_TYPE_DEFAULT (1<<4) -#define DRM_MODE_TYPE_USERDEF (1<<5) -#define DRM_MODE_TYPE_DRIVER (1<<6) - #define DRM_MODE_TYPE_CLOCK_CRTC_C (DRM_MODE_TYPE_CLOCK_C | \ DRM_MODE_TYPE_CRTC_C) diff --git a/shared-core/drm.h b/shared-core/drm.h index e10ceb14..59cbfaf2 100644 --- a/shared-core/drm.h +++ b/shared-core/drm.h @@ -898,6 +898,14 @@ struct drm_mm_init_arg { #define DRM_OUTPUT_NAME_LEN 32 #define DRM_DISPLAY_MODE_LEN 32 +#define DRM_MODE_TYPE_BUILTIN (1<<0) +#define DRM_MODE_TYPE_CLOCK_C ((1<<1) | DRM_MODE_TYPE_BUILTIN) +#define DRM_MODE_TYPE_CRTC_C ((1<<2) | DRM_MODE_TYPE_BUILTIN) +#define DRM_MODE_TYPE_PREFERRED (1<<3) +#define DRM_MODE_TYPE_DEFAULT (1<<4) +#define DRM_MODE_TYPE_USERDEF (1<<5) +#define DRM_MODE_TYPE_DRIVER (1<<6) + struct drm_mode_modeinfo { unsigned int id; @@ -909,7 +917,7 @@ struct drm_mode_modeinfo { unsigned int vrefresh; /* vertical refresh * 1000 */ unsigned int flags; - + unsigned int type; char name[DRM_DISPLAY_MODE_LEN]; }; -- cgit v1.2.3