agpgart.h revision 64b33619a30ff18c1535ee779572ecffcc4711d2
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * AGPGART module version 0.99 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999 Jeff Hartmann 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999 Precision Insight, Inc. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999 Xi Graphics, Inc. 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Permission is hereby granted, free of charge, to any person obtaining a 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * copy of this software and associated documentation files (the "Software"), 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * to deal in the Software without restriction, including without limitation 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the rights to use, copy, modify, merge, publish, distribute, sublicense, 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * and/or sell copies of the Software, and to permit persons to whom the 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software is furnished to do so, subject to the following conditions: 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The above copyright notice and this permission notice shall be included 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * in all copies or substantial portions of the Software. 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _AGP_H 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _AGP_H 1 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_BASE 'A' 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_INFO _IOR (AGPIOC_BASE, 0, struct agp_info*) 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_ACQUIRE _IO (AGPIOC_BASE, 1) 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_RELEASE _IO (AGPIOC_BASE, 2) 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_SETUP _IOW (AGPIOC_BASE, 3, struct agp_setup*) 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_RESERVE _IOW (AGPIOC_BASE, 4, struct agp_region*) 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_PROTECT _IOW (AGPIOC_BASE, 5, struct agp_region*) 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, struct agp_allocate*) 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int) 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_BIND _IOW (AGPIOC_BASE, 8, struct agp_bind*) 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPIOC_UNBIND _IOW (AGPIOC_BASE, 9, struct agp_unbind*) 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGP_DEVICE "/dev/agpgart" 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef TRUE 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TRUE 1 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef FALSE 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FALSE 0 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __KERNEL__ 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/types.h> 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_version { 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 major; 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u16 minor; 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_info { 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_version version; /* version of the driver */ 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 bridge_id; /* bridge vendor/device */ 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 agp_mode; /* mode info of bridge */ 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long aper_base;/* base of aperture */ 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t aper_size; /* size of aperture */ 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_total; /* max pages (swap + system) */ 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_system; /* max pages (system) */ 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_used; /* current pages used */ 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_info; 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_setup { 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 agp_mode; /* mode info of bridge */ 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_setup; 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The "prot" down below needs still a "sleep" flag somehow ... 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_segment { 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds off_t pg_start; /* starting page to populate */ 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_count; /* number of pages */ 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int prot; /* prot flags for mmap */ 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_segment; 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_region { 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pid_t pid; /* pid of process */ 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t seg_count; /* number of segments */ 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct _agp_segment *seg_list; 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_region; 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_allocate { 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int key; /* tag of allocation */ 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_count; /* number of pages */ 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 type; /* 0 == normal, other devspec */ 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 physical; /* device specific (some devices 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * need a phys address of the 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * actual page behind the gatt 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * table) */ 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_allocate; 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_bind { 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int key; /* tag of allocation */ 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds off_t pg_start; /* starting page to populate */ 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_bind; 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _agp_unbind { 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int key; /* tag of allocation */ 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 priority; /* priority for paging out */ 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} agp_unbind; 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else /* __KERNEL__ */ 112168678233ca45af3f74fef60c4265fa5dd217e29Andrew Morton#include <linux/mutex.h> 11372b9760b65cbe0d24e668c34c8fefb2ba417f14bDavid Woodhouse#include <linux/agp_backend.h> 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGPGART_MINOR 175 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_info { 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_version version; /* version of the driver */ 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 bridge_id; /* bridge vendor/device */ 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 agp_mode; /* mode info of bridge */ 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long aper_base;/* base of aperture */ 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t aper_size; /* size of aperture */ 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_total; /* max pages (swap + system) */ 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_system; /* max pages (system) */ 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_used; /* current pages used */ 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_setup { 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 agp_mode; /* mode info of bridge */ 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The "prot" down below needs still a "sleep" flag somehow ... 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_segment { 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds off_t pg_start; /* starting page to populate */ 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_count; /* number of pages */ 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int prot; /* prot flags for mmap */ 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_segment_priv { 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds off_t pg_start; 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_count; 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pgprot_t prot; 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_region { 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pid_t pid; /* pid of process */ 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t seg_count; /* number of segments */ 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_segment *seg_list; 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_allocate { 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int key; /* tag of allocation */ 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t pg_count; /* number of pages */ 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 type; /* 0 == normal, other devspec */ 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 physical; /* device specific (some devices 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * need a phys address of the 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * actual page behind the gatt 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * table) */ 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_bind { 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int key; /* tag of allocation */ 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds off_t pg_start; /* starting page to populate */ 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_unbind { 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int key; /* tag of allocation */ 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u32 priority; /* priority for paging out */ 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_client { 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_client *next; 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_client *prev; 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pid_t pid; 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int num_segments; 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_segment_priv **segments; 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_controller { 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_controller *next; 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_controller *prev; 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pid_t pid; 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int num_clients; 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_memory *pool; 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_client *clients; 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGP_FF_ALLOW_CLIENT 0 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGP_FF_ALLOW_CONTROLLER 1 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGP_FF_IS_CLIENT 2 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGP_FF_IS_CONTROLLER 3 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AGP_FF_IS_VALID 4 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_file_private { 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_file_private *next; 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_file_private *prev; 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds pid_t my_pid; 20064b33619a30ff18c1535ee779572ecffcc4711d2Al Viro unsigned long access_flags; /* long req'd for set_bit --RR */ 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct agp_front_data { 204168678233ca45af3f74fef60c4265fa5dd217e29Andrew Morton struct mutex agp_mutex; 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_controller *current_controller; 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_controller *controllers; 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct agp_file_private *file_priv_list; 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 used_by_controller; 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds u8 backend_acquired; 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL__ */ 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _AGP_H */ 215