diff mbox

Implement drmGetCap() to query device/driver capabilities

Message ID 1298251639-21282-1-git-send-email-skeggsb@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ben Skeggs Feb. 21, 2011, 1:27 a.m. UTC
None
diff mbox

Patch

diff --git a/include/drm/drm.h b/include/drm/drm.h
index 2ba7136..fd06c2a 100644
--- a/include/drm/drm.h
+++ b/include/drm/drm.h
@@ -612,6 +612,12 @@  struct drm_gem_open {
 	__u64 size;
 };
 
+/** DRM_IOCTL_GET_CAP ioctl argument type */
+struct drm_get_cap {
+	__u64 capability;
+	__u64 value;
+};
+
 #include "drm_mode.h"
 
 #define DRM_IOCTL_BASE			'd'
@@ -632,6 +638,7 @@  struct drm_gem_open {
 #define DRM_IOCTL_GEM_CLOSE		DRM_IOW (0x09, struct drm_gem_close)
 #define DRM_IOCTL_GEM_FLINK		DRM_IOWR(0x0a, struct drm_gem_flink)
 #define DRM_IOCTL_GEM_OPEN		DRM_IOWR(0x0b, struct drm_gem_open)
+#define DRM_IOCTL_GET_CAP		DRM_IOWR(0x0c, struct drm_get_cap)
 
 #define DRM_IOCTL_SET_UNIQUE		DRM_IOW( 0x10, struct drm_unique)
 #define DRM_IOCTL_AUTH_MAGIC		DRM_IOW( 0x11, struct drm_auth)
diff --git a/xf86drm.c b/xf86drm.c
index 799fcdd..5b060c9 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -810,6 +810,15 @@  drmVersionPtr drmGetLibVersion(int fd)
     return (drmVersionPtr)version;
 }
 
+uint64_t drmGetCap(int fd, uint64_t capability)
+{
+	struct drm_get_cap cap = { capability, 0 };
+
+	if (drmIoctl(fd, DRM_IOCTL_GET_CAP, &cap))
+		return 0;
+
+	return cap.value;
+}
 
 /**
  * Free the bus ID information.
diff --git a/xf86drm.h b/xf86drm.h
index 9b89f56..1c87b7f 100644
--- a/xf86drm.h
+++ b/xf86drm.h
@@ -542,6 +542,7 @@  extern int drmOpenControl(int minor);
 extern int           drmClose(int fd);
 extern drmVersionPtr drmGetVersion(int fd);
 extern drmVersionPtr drmGetLibVersion(int fd);
+extern uint64_t      drmGetCap(int fd, uint64_t capability);
 extern void          drmFreeVersion(drmVersionPtr);
 extern int           drmGetMagic(int fd, drm_magic_t * magic);
 extern char          *drmGetBusid(int fd);