patch-2.3.31 linux/include/linux/agp_backend.h

Next file: linux/include/linux/agpgart.h
Previous file: linux/include/linux/802_11.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.30/linux/include/linux/agp_backend.h linux/include/linux/agp_backend.h
@@ -0,0 +1,224 @@
+/*
+ * AGPGART module version 0.99
+ * Copyright (C) 1999 Jeff Hartmann
+ * Copyright (C) 1999 Precision Insight
+ * Copyright (C) 1999 Xi Graphics
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, 
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifndef _AGP_BACKEND_H
+#define _AGP_BACKEND_H 1
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#define AGPGART_VERSION_MAJOR 0
+#define AGPGART_VERSION_MINOR 99
+
+enum chipset_type {
+	NOT_SUPPORTED,
+	INTEL_GENERIC,
+	INTEL_LX,
+	INTEL_BX,
+	INTEL_GX,
+	INTEL_I810,
+	VIA_GENERIC,
+	VIA_VP3,
+	VIA_MVP3,
+	VIA_APOLLO_PRO,
+	SIS_GENERIC,
+	AMD_GENERIC,
+	AMD_IRONGATE,
+	ALI_M1541,
+	ALI_GENERIC
+};
+
+typedef struct _agp_version {
+	u16 major;
+	u16 minor;
+} agp_version;
+
+typedef struct _agp_kern_info {
+	agp_version version;
+	struct pci_dev *device;
+	enum chipset_type chipset;
+	unsigned long mode;
+	off_t aper_base;
+	size_t aper_size;
+	int max_memory;		/* In pages */
+	int current_memory;
+} agp_kern_info;
+
+/* 
+ * The agp_memory structure has information
+ * about the block of agp memory allocated.
+ * A caller may manipulate the next and prev
+ * pointers to link each allocated item into
+ * a list.  These pointers are ignored by the 
+ * backend.  Everything else should never be
+ * written to, but the caller may read any of
+ * the items to detrimine the status of this
+ * block of agp memory.
+ * 
+ */
+
+typedef struct _agp_memory {
+	int key;
+	struct _agp_memory *next;
+	struct _agp_memory *prev;
+	size_t page_count;
+	int num_scratch_pages;
+	unsigned long *memory;
+	off_t pg_start;
+	u32 type;
+	u8 is_bound;
+	u8 is_flushed;
+} agp_memory;
+
+#define AGP_NORMAL_MEMORY 0
+
+extern void agp_free_memory(agp_memory *);
+
+/*
+ * void agp_free_memory(agp_memory *curr) :
+ * 
+ * This function frees memory associated with
+ * an agp_memory pointer.  It is the only function
+ * that can be called when the backend is not owned
+ * by the caller.  (So it can free memory on client
+ * death.)
+ * 
+ * It takes an agp_memory pointer as an argument.
+ * 
+ */
+
+extern agp_memory *agp_allocate_memory(size_t, u32);
+
+/*
+ * agp_memory *agp_allocate_memory(size_t page_count, u32 type) :
+ * 
+ * This function allocates a group of pages of
+ * a certain type.
+ * 
+ * It takes a size_t argument of the number of pages, and
+ * an u32 argument of the type of memory to be allocated.  
+ * Every agp bridge device will allow you to allocate 
+ * AGP_NORMAL_MEMORY which maps to physical ram.  Any other
+ * type is device dependant.
+ * 
+ * It returns NULL whenever memory is unavailable.
+ * 
+ */
+
+extern void agp_copy_info(agp_kern_info *);
+
+/*
+ * void agp_copy_info(agp_kern_info *info) :
+ * 
+ * This function copies information about the
+ * agp bridge device and the state of the agp
+ * backend into an agp_kern_info pointer.
+ * 
+ * It takes an agp_kern_info pointer as an
+ * argument.  The caller should insure that
+ * this pointer is valid.
+ * 
+ */
+
+extern int agp_bind_memory(agp_memory *, off_t);
+
+/*
+ * int agp_bind_memory(agp_memory *curr, off_t pg_start) :
+ * 
+ * This function binds an agp_memory structure
+ * into the graphics aperture translation table.
+ * 
+ * It takes an agp_memory pointer and an offset into
+ * the graphics aperture translation table as arguments
+ * 
+ * It returns -EINVAL if the pointer == NULL.
+ * It returns -EBUSY if the area of the table
+ * requested is already in use.
+ * 
+ */
+
+extern int agp_unbind_memory(agp_memory *);
+
+/* 
+ * int agp_unbind_memory(agp_memory *curr) :
+ * 
+ * This function removes an agp_memory structure
+ * from the graphics aperture translation table.
+ * 
+ * It takes an agp_memory pointer as an argument.
+ * 
+ * It returns -EINVAL if this piece of agp_memory
+ * is not currently bound to the graphics aperture
+ * translation table or if the agp_memory 
+ * pointer == NULL
+ * 
+ */
+
+extern void agp_enable(u32);
+
+/* 
+ * void agp_enable(u32 mode) :
+ * 
+ * This function initializes the agp point-to-point
+ * connection.
+ * 
+ * It takes an agp mode register as an argument
+ * 
+ */
+
+extern int agp_backend_acquire(void);
+
+/*
+ * int agp_backend_acquire(void) :
+ * 
+ * This Function attempts to acquire the agp
+ * backend.
+ * 
+ * returns -EBUSY if agp is in use,
+ * returns 0 if the caller owns the agp backend
+ */
+
+extern void agp_backend_release(void);
+
+/*
+ * void agp_backend_release(void) :
+ * 
+ * This Function releases the lock on the agp
+ * backend.
+ * 
+ * The caller must insure that the graphics
+ * aperture translation table is read for use
+ * by another entity.  (Ensure that all memory
+ * it bound is unbound.)
+ * 
+ */
+
+#endif				/* _AGP_BACKEND_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)