modes: pass type to userspace for preferred showing
authorDave Airlie <airlied@linux.ie>
Thu, 15 Nov 2007 05:52:04 +0000 (16:52 +1100)
committerDave Airlie <airlied@linux.ie>
Thu, 15 Nov 2007 05:52:04 +0000 (16:52 +1100)
linux-core/drm_crtc.c
linux-core/drm_crtc.h
shared-core/drm.h

index cad7cd8..5b00c11 100644 (file)
@@ -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) {
index 9dd00b3..0ddefc8 100644 (file)
@@ -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)
 
index e10ceb1..59cbfaf 100644 (file)
@@ -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];
 };