From patchwork Mon Feb 21 01:27:19 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Skeggs X-Patchwork-Id: 576511 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1L3Jhbn015690 for ; Mon, 21 Feb 2011 03:20:13 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1E09A9E8DC for ; Sun, 20 Feb 2011 19:19:43 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-qw0-f49.google.com (mail-qw0-f49.google.com [209.85.216.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 869479E7BB for ; Sun, 20 Feb 2011 19:19:35 -0800 (PST) Received: by qwj9 with SMTP id 9so4487378qwj.36 for ; Sun, 20 Feb 2011 19:19:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=tMpf2nAUjY0pDeGSvcFLWTAgX7sp0weUFYZDuZs1KpM=; b=Ni3ixr3hXzubFyFt+Gv3MQ8Hd8IZeQchD+pmv2f/exWu1hmNwuS9WRDibyAVANWu0s AvqUyQ1FeiNgfNPGiAgcprdkgcjPNCQiqDfOLv2KX0lzHsxTQNkPpnLUukq6DdDog2Pt ilNEVZclm5e8eSi33RY3O6JLZeETRrYNOqW3M= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=wNRyKZM8DRlO1uuKUbI+WmJdUd2q+77kD3zdEtJZk2HrH3hs1CUmqredpiKT6iOsGb NQFfpScNc9WLaNHdnpTw69yVhuIoYkory8lDnqx35baPWnBkV+maZZdtqldLYWo3p65e LG75mdClcA8w+FrhlE/aOxXDgQ5or8b1Om43o= Received: by 10.224.37.5 with SMTP id v5mr654939qad.148.1298258374820; Sun, 20 Feb 2011 19:19:34 -0800 (PST) Received: from nisroch.bne.redhat.com ([66.187.239.10]) by mx.google.com with ESMTPS id s10sm3491024qco.11.2011.02.20.19.19.31 (version=SSLv3 cipher=OTHER); Sun, 20 Feb 2011 19:19:34 -0800 (PST) From: Ben Skeggs To: dri-devel@lists.freedesktop.org Subject: [PATCH] Implement drmGetCap() to query device/driver capabilities Date: Mon, 21 Feb 2011 11:27:19 +1000 Message-Id: <1298251639-21282-1-git-send-email-skeggsb@gmail.com> X-Mailer: git-send-email 1.7.4 In-Reply-To: <1298251055-18731-1-git-send-email-skeggsb@gmail.com> References: <1298251055-18731-1-git-send-email-skeggsb@gmail.com> Cc: Ben Skeggs X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Mon, 21 Feb 2011 03:20:13 +0000 (UTC) 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);