From patchwork Tue Jun 5 18:06:30 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Clark X-Patchwork-Id: 9118 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 3EBFB23E1B for ; Tue, 5 Jun 2012 18:06:59 +0000 (UTC) Received: from mail-yw0-f52.google.com (mail-yw0-f52.google.com [209.85.213.52]) by fiordland.canonical.com (Postfix) with ESMTP id E65B0A18357 for ; Tue, 5 Jun 2012 18:06:58 +0000 (UTC) Received: by yhpp61 with SMTP id p61so4648785yhp.11 for ; Tue, 05 Jun 2012 11:06:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf :dkim-signature:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:x-gm-message-state; bh=lN1z7PYLQ4rf02UyowfSsYmPO86mD7gCC9KXVlg4ayg=; b=Lv62Q5a476gqhg5rEFg0Sp3QYSAhylvob+SRdn7ebxOiYGzQA2KRMSynDp/xtsvZpM hX4DspFE6kSjincxi9HipuxnEDuJXOzYPWHT4NThJAJlfmOH6eiBkIM7iE+lVpni7PqD jjMrQI+Ch/ILNn/sMPCnVjZNTJn7egf9rQ73WfE6pEjfHvRcvkWhEb/rjtctv2/cagsc 34AQ0ScVpqOPyK+9MP1CRYo4fA0g6XYtLdHCk/a70dtEY3kyqtXZEHN3MJbOdKOjUmL/ 6vPeKBCWpjC+oVAO8ggANJ0QpmOsk6krQXV2CxghGdLoZw7llWR63o+KyWux8OBpzCKM ebeg== Received: by 10.50.160.198 with SMTP id xm6mr3927009igb.0.1338919618168; Tue, 05 Jun 2012 11:06:58 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.231.24.148 with SMTP id v20csp39696ibb; Tue, 5 Jun 2012 11:06:57 -0700 (PDT) Received: by 10.100.244.19 with SMTP id r19mr85664anh.48.1338919617352; Tue, 05 Jun 2012 11:06:57 -0700 (PDT) Received: from mail-gh0-f178.google.com (mail-gh0-f178.google.com [209.85.160.178]) by mx.google.com with ESMTPS id l12si900166anm.53.2012.06.05.11.06.57 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 05 Jun 2012 11:06:57 -0700 (PDT) Received-SPF: pass (google.com: domain of robdclark@gmail.com designates 209.85.160.178 as permitted sender) client-ip=209.85.160.178; Authentication-Results: mx.google.com; spf=pass (google.com: domain of robdclark@gmail.com designates 209.85.160.178 as permitted sender) smtp.mail=robdclark@gmail.com; dkim=pass header.i=@gmail.com Received: by mail-gh0-f178.google.com with SMTP id f1so5116173ghb.37 for ; Tue, 05 Jun 2012 11:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=lN1z7PYLQ4rf02UyowfSsYmPO86mD7gCC9KXVlg4ayg=; b=gdbgV72EB8U2DaYUKhMXgtJHOeGDZy7Aorx8kP9mdSFkWZonE9VSRkdkRS/86j6zxo 2k9FX7GVTw0cRK7p+hXdyLJwpeRKKhY//+3bhZed06NgXID65wKRRT9t2KQvmeMTX5Rp I7QR18j/syCM87VQf/YHavbU9H8H+p1yJYswidYOEXOWfzIxNCuUdvyLcY64kNG+QnR1 TpaAn8mDXIhBxSIj5cku6NhZjR+wKMPCE2ff67F1jbw3VKcxwUTqx0syvqauQnFatJ87 Dru6YO/rd+ISMHHNQyyVooVY57k6YyrMi0OJUreAEZhjnMq3x1fUSPMhgA8kjVJdRh6f cZzQ== Received: by 10.60.25.164 with SMTP id d4mr17585412oeg.26.1338919616961; Tue, 05 Jun 2012 11:06:56 -0700 (PDT) Received: from localhost (ppp-70-253-38-6.dsl.rcsntx.swbell.net. [70.253.38.6]) by mx.google.com with ESMTPS id lo6sm1789267obb.0.2012.06.05.11.06.55 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 05 Jun 2012 11:06:55 -0700 (PDT) Sender: Rob Clark From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: patches@linaro.org, Paulo Zanoni , Rob Clark Subject: [PATCH libdrm 4/8] Add support for bitmask properties Date: Tue, 5 Jun 2012 13:06:30 -0500 Message-Id: <1338919594-25392-5-git-send-email-rob.clark@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1338919594-25392-1-git-send-email-rob.clark@linaro.org> References: <1338919594-25392-1-git-send-email-rob.clark@linaro.org> X-Gm-Message-State: ALoCoQlHtgL7Tb72ZJqc8NDwfh7XLwXxZR71If41ok7sJSg/VOF612TP7IIzRKjmKcrDv/BCHB4B 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 Reviewed-by: Paulo Zanoni --- 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) {