summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2007-11-15 16:52:04 +1100
committerDave Airlie <airlied@linux.ie>2007-11-15 16:52:04 +1100
commit2520d3fd99636e493060d51b1c3287a5faac22bf (patch)
tree5e4fd8fbd641b75b5bbd11b9ce82d17ebc0728f7
parent7136f55faaf3afefe522ec978a4cbc906dace861 (diff)
modes: pass type to userspace for preferred showing
-rw-r--r--linux-core/drm_crtc.c4
-rw-r--r--linux-core/drm_crtc.h8
-rw-r--r--shared-core/drm.h10
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];
};