aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2017-07-09 22:53:24 +0000
committerMark Johnston <markj@FreeBSD.org>2017-07-09 22:53:24 +0000
commit8ee96d1452c6b93767920a59035d4cb66a6a6b68 (patch)
treeff7a21eb59c1df72a955fcbb385c5c1bad6c8376 /sys
parent3685b3988dbeabf29d535a374b0ec59f09c0d123 (diff)
downloadsrc-8ee96d1452c6b93767920a59035d4cb66a6a6b68.tar.gz
src-8ee96d1452c6b93767920a59035d4cb66a6a6b68.zip
Add a helper function to agp(4) which installs a single GTT entry.
Submitted by: dumbbell MFC after: 1 week
Notes
Notes: svn path=/head/; revision=320851
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/agp/agp_i810.c17
-rw-r--r--sys/dev/agp/agp_i810.h1
-rw-r--r--sys/modules/agp/Makefile1
3 files changed, 19 insertions, 0 deletions
diff --git a/sys/dev/agp/agp_i810.c b/sys/dev/agp/agp_i810.c
index 7a0b2ff51519..63315308aaeb 100644
--- a/sys/dev/agp/agp_i810.c
+++ b/sys/dev/agp/agp_i810.c
@@ -2242,6 +2242,16 @@ agp_intel_gtt_map_memory(device_t dev, vm_page_t *pages, u_int num_entries,
return (0);
}
+static void
+agp_intel_gtt_install_pte(device_t dev, u_int index, vm_paddr_t addr,
+ u_int flags)
+{
+ struct agp_i810_softc *sc;
+
+ sc = device_get_softc(dev);
+ sc->match->driver->install_gtt_pte(dev, index, addr, flags);
+}
+
void
agp_intel_gtt_insert_sg_entries(device_t dev, struct sglist *sg_list,
u_int first_entry, u_int flags)
@@ -2320,6 +2330,13 @@ intel_gtt_insert_sg_entries(struct sglist *sg_list, u_int first_entry,
agp_intel_gtt_insert_sg_entries(intel_agp, sg_list, first_entry, flags);
}
+void
+intel_gtt_install_pte(u_int index, vm_paddr_t addr, u_int flags)
+{
+
+ agp_intel_gtt_install_pte(intel_agp, index, addr, flags);
+}
+
device_t
intel_gtt_get_bridge_device(void)
{
diff --git a/sys/dev/agp/agp_i810.h b/sys/dev/agp/agp_i810.h
index 2cb71eb65027..1df5e78a162c 100644
--- a/sys/dev/agp/agp_i810.h
+++ b/sys/dev/agp/agp_i810.h
@@ -87,6 +87,7 @@ struct intel_gtt *intel_gtt_get(void);
int intel_gtt_chipset_flush(void);
void intel_gtt_unmap_memory(struct sglist *sg_list);
void intel_gtt_clear_range(u_int first_entry, u_int num_entries);
+void intel_gtt_install_pte(u_int index, vm_paddr_t addr, u_int flags);
int intel_gtt_map_memory(vm_page_t *pages, u_int num_entries,
struct sglist **sg_list);
void intel_gtt_insert_sg_entries(struct sglist *sg_list, u_int pg_start,
diff --git a/sys/modules/agp/Makefile b/sys/modules/agp/Makefile
index 383788f9d6b4..a96dfc9fa7c4 100644
--- a/sys/modules/agp/Makefile
+++ b/sys/modules/agp/Makefile
@@ -35,6 +35,7 @@ EXPORT_SYMS= agp_find_device \
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
EXPORT_SYMS+= intel_gtt_clear_range \
intel_gtt_insert_pages \
+ intel_gtt_install_pte \
intel_gtt_get \
intel_gtt_chipset_flush \
intel_gtt_unmap_memory \