[PATCH libdrm 1/3] Add support for bitmask properties

2012-05-16 Thread Rob Clark
From: Rob Clark 

A bitmask property is similar to an enum.  The enum value is a bit
position (0-63), and valid property values consist of a mask of
zero or more of (1 << enum_val[n]).

Signed-off-by: Rob Clark 
---
 include/drm/drm_mode.h |1 +
 xf86drmMode.c  |4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h
index f303d94..62ba997 100644
--- a/include/drm/drm_mode.h
+++ b/include/drm/drm_mode.h
@@ -226,6 +226,7 @@ struct drm_mode_get_connector {
 #define DRM_MODE_PROP_IMMUTABLE(1<<2)
 #define DRM_MODE_PROP_ENUM (1<<3) /* enumerated type with text strings */
 #define DRM_MODE_PROP_BLOB (1<<4)
+#define DRM_MODE_PROP_BITMASK  (1<<5) /* bitmask of enumerated types */

 struct drm_mode_property_enum {
__u64 value;
diff --git a/xf86drmMode.c b/xf86drmMode.c
index a60c7cb..04fdf1f 100644
--- a/xf86drmMode.c
+++ b/xf86drmMode.c
@@ -575,7 +575,7 @@ drmModePropertyPtr drmModeGetProperty(int fd, uint32_t 
property_id)
if (prop.count_values)
prop.values_ptr = VOID2U64(drmMalloc(prop.count_values * 
sizeof(uint64_t)));

-   if (prop.count_enum_blobs && (prop.flags & DRM_MODE_PROP_ENUM))
+   if (prop.count_enum_blobs && (prop.flags & (DRM_MODE_PROP_ENUM | 
DRM_MODE_PROP_BITMASK)))
prop.enum_blob_ptr = VOID2U64(drmMalloc(prop.count_enum_blobs * 
sizeof(struct drm_mode_property_enum)));

if (prop.count_enum_blobs && (prop.flags & DRM_MODE_PROP_BLOB)) {
@@ -597,7 +597,7 @@ drmModePropertyPtr drmModeGetProperty(int fd, uint32_t 
property_id)
r->flags = prop.flags;
if (prop.count_values)
r->values = drmAllocCpy(U642VOID(prop.values_ptr), 
prop.count_values, sizeof(uint64_t));
-   if (prop.flags & DRM_MODE_PROP_ENUM) {
+   if (prop.flags & (DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BITMASK)) {
r->count_enums = prop.count_enum_blobs;
r->enums = drmAllocCpy(U642VOID(prop.enum_blob_ptr), 
prop.count_enum_blobs, sizeof(struct drm_mode_property_enum));
} else if (prop.flags & DRM_MODE_PROP_BLOB) {
-- 
1.7.9.5



[PATCH libdrm 1/3] Add support for bitmask properties

2012-05-16 Thread Rob Clark
From: Rob Clark r...@ti.com

A bitmask property is similar to an enum.  The enum value is a bit
position (0-63), and valid property values consist of a mask of
zero or more of (1  enum_val[n]).

Signed-off-by: Rob Clark r...@ti.com
---
 include/drm/drm_mode.h |1 +
 xf86drmMode.c  |4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h
index f303d94..62ba997 100644
--- a/include/drm/drm_mode.h
+++ b/include/drm/drm_mode.h
@@ -226,6 +226,7 @@ struct drm_mode_get_connector {
 #define DRM_MODE_PROP_IMMUTABLE(12)
 #define DRM_MODE_PROP_ENUM (13) /* enumerated type with text strings */
 #define DRM_MODE_PROP_BLOB (14)
+#define DRM_MODE_PROP_BITMASK  (15) /* bitmask of enumerated types */
 
 struct drm_mode_property_enum {
__u64 value;
diff --git a/xf86drmMode.c b/xf86drmMode.c
index a60c7cb..04fdf1f 100644
--- a/xf86drmMode.c
+++ b/xf86drmMode.c
@@ -575,7 +575,7 @@ drmModePropertyPtr drmModeGetProperty(int fd, uint32_t 
property_id)
if (prop.count_values)
prop.values_ptr = VOID2U64(drmMalloc(prop.count_values * 
sizeof(uint64_t)));
 
-   if (prop.count_enum_blobs  (prop.flags  DRM_MODE_PROP_ENUM))
+   if (prop.count_enum_blobs  (prop.flags  (DRM_MODE_PROP_ENUM | 
DRM_MODE_PROP_BITMASK)))
prop.enum_blob_ptr = VOID2U64(drmMalloc(prop.count_enum_blobs * 
sizeof(struct drm_mode_property_enum)));
 
if (prop.count_enum_blobs  (prop.flags  DRM_MODE_PROP_BLOB)) {
@@ -597,7 +597,7 @@ drmModePropertyPtr drmModeGetProperty(int fd, uint32_t 
property_id)
r-flags = prop.flags;
if (prop.count_values)
r-values = drmAllocCpy(U642VOID(prop.values_ptr), 
prop.count_values, sizeof(uint64_t));
-   if (prop.flags  DRM_MODE_PROP_ENUM) {
+   if (prop.flags  (DRM_MODE_PROP_ENUM | DRM_MODE_PROP_BITMASK)) {
r-count_enums = prop.count_enum_blobs;
r-enums = drmAllocCpy(U642VOID(prop.enum_blob_ptr), 
prop.count_enum_blobs, sizeof(struct drm_mode_property_enum));
} else if (prop.flags  DRM_MODE_PROP_BLOB) {
-- 
1.7.9.5

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel