summaryrefslogtreecommitdiffstats
path: root/sys/pci/agppriv.h
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2000-06-09 16:04:30 +0000
committerdfr <dfr@FreeBSD.org>2000-06-09 16:04:30 +0000
commitab33dfac0143d5afabdb2d640b8d7d47c43609f4 (patch)
tree7d9995e89a1113f6d052f26ef4daa5686f8efb76 /sys/pci/agppriv.h
parentfe0cef0780df985c05e3db3351ed16ef482b7c6a (diff)
downloadFreeBSD-src-ab33dfac0143d5afabdb2d640b8d7d47c43609f4.zip
FreeBSD-src-ab33dfac0143d5afabdb2d640b8d7d47c43609f4.tar.gz
A driver for programming the AGP hardware. This is only very lightly
tested on Intel BX chipsets only. The other agp minidrivers are totally untested. The programming api is a subset of the Linux api and is only intended to be enough for the X server to use. There is also an in-kernel api for the use of other kernel modules such as the 3D DRI.
Diffstat (limited to 'sys/pci/agppriv.h')
-rw-r--r--sys/pci/agppriv.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/sys/pci/agppriv.h b/sys/pci/agppriv.h
new file mode 100644
index 0000000..427e68b
--- /dev/null
+++ b/sys/pci/agppriv.h
@@ -0,0 +1,103 @@
+/*-
+ * Copyright (c) 2000 Doug Rabson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _PCI_AGPPRIV_H_
+#define _PCI_AGPPRIV_H_
+
+/*
+ * This file *must not* be included by code outside the agp driver itself.
+ */
+
+#include <sys/agpio.h>
+#include <pci/agpvar.h>
+
+#define AGP_DEBUGxx
+
+#ifdef AGP_DEBUG
+#define AGP_DPF(x...) do { \
+ printf("agp: "); \
+ printf(##x); \
+} while (0)
+#else
+#define AGP_DPF(x...) do {} while (0)
+#endif
+
+#include "agp_if.h"
+
+/*
+ * Data structure to describe an AGP memory allocation.
+ */
+TAILQ_HEAD(agp_memory_list, agp_memory);
+struct agp_memory {
+ TAILQ_ENTRY(agp_memory) am_link; /* wiring for the tailq */
+ int am_id; /* unique id for block */
+ vm_size_t am_size; /* number of bytes allocated */
+ struct vm_object *am_obj; /* VM object owning pages */
+ vm_offset_t am_physical; /* bogus hack for i810 */
+ vm_offset_t am_offset; /* page offset if bound */
+ int am_is_bound; /* non-zero if bound */
+};
+
+/*
+ * All chipset drivers must have this at the start of their softc.
+ */
+struct agp_softc {
+ struct resource *as_aperture; /* location of aperture */
+ u_int32_t as_maxmem; /* allocation upper bound */
+ u_int32_t as_allocated; /* amount allocated */
+ enum agp_acquire_state as_state;
+ struct agp_memory_list as_memory; /* list of allocated memory */
+ int as_nextid; /* next memory block id */
+ int as_isopen; /* user device is open */
+ dev_t as_devnode; /* from make_dev */
+ struct lock as_lock; /* lock for access to GATT */
+};
+
+struct agp_gatt {
+ u_int32_t ag_entries;
+ u_int32_t *ag_virtual;
+ vm_offset_t ag_physical;
+};
+
+u_int8_t agp_find_caps(device_t dev);
+struct agp_gatt *agp_alloc_gatt(device_t dev);
+void agp_free_gatt(struct agp_gatt *gatt);
+int agp_generic_attach(device_t dev);
+int agp_generic_detach(device_t dev);
+int agp_generic_enable(device_t dev, u_int32_t mode);
+struct agp_memory *agp_generic_alloc_memory(device_t dev, int type,
+ vm_size_t size);
+int agp_generic_free_memory(device_t dev,
+ struct agp_memory *mem);
+int agp_generic_bind_memory(device_t dev,
+ struct agp_memory *mem,
+ vm_offset_t offset);
+int agp_generic_unbind_memory(device_t dev,
+ struct agp_memory *mem);
+
+#endif /* !_PCI_AGPPRIV_H_ */
OpenPOWER on IntegriCloud