46#define KTR_AGP_I810 KTR_DEV
53#include <sys/malloc.h>
54#include <sys/kernel.h>
56#include <sys/module.h>
61#include <sys/rwlock.h>
66#include <dev/pci/pcivar.h>
67#include <dev/pci/pcireg.h>
68#include <dev/pci/pci_private.h>
71#include <vm/vm_extern.h>
72#include <vm/vm_kern.h>
73#include <vm/vm_param.h>
74#include <vm/vm_object.h>
75#include <vm/vm_page.h>
76#include <vm/vm_pageout.h>
79#include <machine/bus.h>
80#include <machine/resource.h>
81#include <machine/md_var.h>
248 .busdma_addr_mask_sz = 32,
271 .busdma_addr_mask_sz = 32,
294 .busdma_addr_mask_sz = 32,
317 .busdma_addr_mask_sz = 32,
340 .busdma_addr_mask_sz = 32,
363 .busdma_addr_mask_sz = 32,
386 .busdma_addr_mask_sz = 36,
409 .busdma_addr_mask_sz = 36,
432 .busdma_addr_mask_sz = 36,
455 .busdma_addr_mask_sz = 36,
487 .name =
"Intel 82810 (i810 GMCH) SVGA controller",
492 .name =
"Intel 82810-DC100 (i810-DC100 GMCH) SVGA controller",
497 .name =
"Intel 82810E (i810E GMCH) SVGA controller",
502 .name =
"Intel 82815 (i815 GMCH) SVGA controller",
507 .name =
"Intel 82830M (830M GMCH) SVGA controller",
512 .name =
"Intel 82845M (845M GMCH) SVGA controller",
517 .name =
"Intel 82852/855GM SVGA controller",
522 .name =
"Intel 82865G (865G GMCH) SVGA controller",
527 .name =
"Intel 82915G (915G GMCH) SVGA controller",
532 .name =
"Intel E7221 SVGA controller",
537 .name =
"Intel 82915GM (915GM GMCH) SVGA controller",
542 .name =
"Intel 82945G (945G GMCH) SVGA controller",
547 .name =
"Intel 82945GM (945GM GMCH) SVGA controller",
552 .name =
"Intel 945GME SVGA controller",
557 .name =
"Intel 946GZ SVGA controller",
562 .name =
"Intel G965 SVGA controller",
567 .name =
"Intel Q965 SVGA controller",
572 .name =
"Intel G965 SVGA controller",
577 .name =
"Intel Q35 SVGA controller",
582 .name =
"Intel G33 SVGA controller",
587 .name =
"Intel Q33 SVGA controller",
592 .name =
"Intel Pineview SVGA controller",
597 .name =
"Intel Pineview (M) SVGA controller",
602 .name =
"Intel GM965 SVGA controller",
607 .name =
"Intel GME965 SVGA controller",
612 .name =
"Intel GM45 SVGA controller",
617 .name =
"Intel Eaglelake SVGA controller",
622 .name =
"Intel Q45 SVGA controller",
627 .name =
"Intel G45 SVGA controller",
632 .name =
"Intel G41 SVGA controller",
637 .name =
"Intel Ironlake (D) SVGA controller",
642 .name =
"Intel Ironlake (M) SVGA controller",
655 if (pci_get_class(dev) != PCIC_DISPLAY
656 || (pci_get_subclass(dev) != PCIS_DISPLAY_VGA &&
657 pci_get_subclass(dev) != PCIS_DISPLAY_OTHER))
660 devid = pci_get_devid(dev);
678 return (pci_find_dbsf(0, 0, 0, 0));
685 if (device_find_child(parent,
"agp", -1) == NULL &&
687 device_add_child(parent,
"agp", -1);
730 "Intel 82855GME (855GME GMCH) SVGA controller");
734 "Intel 82855GM (855GM GMCH) SVGA controller");
738 "Intel 82852GME (852GME GMCH) SVGA controller");
742 "Intel 82852GM (852GM GMCH) SVGA controller");
746 "Intel 8285xM (85xGM GMCH) SVGA controller");
755 device_set_desc(dev, match->
name);
765 if (resource_disabled(
"agp", device_get_unit(dev)))
774 printf(
"I810: can't find bridge device\n");
784 printf(
"i810: disabled, not probing\n");
789 return (BUS_PROBE_DEFAULT);
797 device_printf(dev,
"AGP_I810_PGTBL_CTL: %08x\n",
799 device_printf(dev,
"AGP_I810_MISCC: 0x%04x\n",
808 device_printf(dev,
"AGP_I810_PGTBL_CTL: %08x\n",
810 device_printf(dev,
"AGP_I830_GCC1: 0x%02x\n",
819 device_printf(dev,
"AGP_I810_PGTBL_CTL: %08x\n",
821 device_printf(dev,
"AGP_I855_GCC1: 0x%02x\n",
830 device_printf(dev,
"AGP_I810_PGTBL_CTL: %08x\n",
832 device_printf(dev,
"AGP_I855_GCC1: 0x%02x\n",
834 device_printf(dev,
"AGP_I915_MSAC: 0x%02x\n",
843 device_printf(dev,
"AGP_I965_PGTBL_CTL2: %08x\n",
845 device_printf(dev,
"AGP_I855_GCC1: 0x%02x\n",
847 device_printf(dev,
"AGP_I965_MSAC: 0x%02x\n",
856 sc = device_get_softc(dev);
868 sc = device_get_softc(dev);
873 sc->
stolen = (512 - 132) * 1024 / 4096;
877 sc->
stolen = (1024 - 132) * 1024 / 4096;
881 sc->
stolen = (8192 - 132) * 1024 / 4096;
887 "unknown memory configuration, disabling (GCC1 %x)\n",
898 unsigned int gcc1,
stolen, gtt_size;
900 sc = device_get_softc(dev);
933 gtt_size = 1024 + 512;
936 device_printf(dev,
"Bad PGTBL size\n");
950 device_printf(dev,
"Bad PGTBL size\n");
959 device_printf(dev,
"Bad chiptype\n");
1023 "unknown memory configuration, disabling (GCC1 %x)\n",
1042 sc = device_get_softc(dev);
1059 sc = device_get_softc(dev);
1075 sc = device_get_softc(dev);
1076 ap = AGP_GET_APERTURE(dev);
1086 sc = device_get_softc(dev);
1095 uint32_t pgetbl_ctl;
1098 sc = device_get_softc(dev);
1122 device_printf(dev,
"Unknown page table size\n");
1132 uint32_t pgetbl_ctl, pgetbl_ctl2;
1134 sc = device_get_softc(dev);
1138 pgetbl_ctl2 &= ~AGP_I810_PGTBL_ENABLED;
1143 pgetbl_ctl &= ~AGP_I810_PGTBL_SIZE_MASK;
1154 sc = device_get_softc(dev);
1170 device_printf(dev,
"Unknown page table size\n");
1182 sc = device_get_softc(dev);
1192 sc->
gatt->
ag_virtual = (
void *)kmem_alloc_contig(64 * 1024, M_NOWAIT |
1193 M_ZERO, 0, ~0, PAGE_SIZE, 0, VM_MEMATTR_WRITE_COMBINING);
1196 device_printf(dev,
"contiguous allocation failed\n");
1228 sc = device_get_softc(dev);
1238 sc = device_get_softc(dev);
1239 pmap_change_attr((vm_offset_t)rman_get_virtual(sc->
sc_res[0]) +
1240 gtt_offset, rman_get_size(sc->
sc_res[0]) - gtt_offset,
1241 VM_MEMATTR_WRITE_COMBINING);
1266 sc = device_get_softc(dev);
1268 if (sc->
bdev == NULL)
1279 if (ptoa((vm_paddr_t)Maxmem) >
1281 device_printf(dev,
"agp_i810 does not support physical "
1282 "memory above %ju.\n", (uintmax_t)(1ULL <<
1293 sc->
gatt = malloc(
sizeof(
struct agp_gatt), M_AGP, M_WAITOK);
1303 free(sc->
gatt, M_AGP);
1309 device_printf(dev,
"aperture size is %dM",
1312 printf(
", detected %dk stolen memory\n", sc->
stolen * 4);
1317 device_printf(dev,
"Mappable GTT entries: %d\n",
1319 device_printf(dev,
"Total GTT entries: %d\n",
1330 sc = device_get_softc(dev);
1339 unsigned int pgtblctl;
1341 sc = device_get_softc(dev);
1352 sc = device_get_softc(dev);
1363 free(sc->
gatt, M_AGP);
1374 sc = device_get_softc(dev);
1382 return (bus_generic_resume(dev));
1400 sc = device_get_softc(dev);
1405 device_printf(dev,
"bad aperture size %d\n",
aperture);
1410 miscc &= ~AGP_I810_MISCC_WINSIZE;
1426 sc = device_get_softc(dev);
1428 if (
aperture != 64 * 1024 * 1024 &&
1430 device_printf(dev,
"bad aperture size %d\n",
aperture);
1434 gcc1 &= ~AGP_I830_GCC1_GMASIZE;
1456 sc = device_get_softc(dev);
1491 sc = device_get_softc(dev);
1517 pte |= (
physical & 0x0000000f00000000ull) >> 28;
1526 sc = device_get_softc(dev);
1527 bus_write_4(sc->
sc_res[1], index * 4, pte);
1540 pte |= (
physical & 0x0000000f00000000ull) >> 28;
1549 sc = device_get_softc(dev);
1550 bus_write_4(sc->
sc_res[0], index * 4 + (512 * 1024), pte);
1563 pte |= (
physical & 0x0000000f00000000ull) >> 28;
1572 sc = device_get_softc(dev);
1573 bus_write_4(sc->
sc_res[0], index * 4 + (2 * 1024 * 1024), pte);
1584 device_printf(dev,
"failed: offset is 0x%08jx, "
1585 "shift is %d, entries is %d\n", (intmax_t)
offset,
1589 index =
offset >> AGP_PAGE_SHIFT;
1591 device_printf(dev,
"trying to bind into stolen memory\n");
1604 sc = device_get_softc(dev);
1607 index =
offset >> AGP_PAGE_SHIFT;
1609 device_printf(dev,
"trying to unbind from stolen memory\n");
1622 sc = device_get_softc(dev);
1633 sc = device_get_softc(dev);
1634 pte = bus_read_4(sc->
sc_res[1], index * 4);
1644 sc = device_get_softc(dev);
1645 pte = bus_read_4(sc->
sc_res[0], index * 4 + (512 * 1024));
1655 sc = device_get_softc(dev);
1656 pte = bus_read_4(sc->
sc_res[0], index * 4 + (2 * 1024 * 1024));
1667 sc = device_get_softc(dev);
1669 res = pte & ~PAGE_MASK;
1680 sc = device_get_softc(dev);
1682 res = (pte & ~PAGE_MASK) | ((pte & 0xf0) << 28);
1708 sc = device_get_softc(dev);
1710 if ((
size & (AGP_PAGE_SIZE - 1)) != 0 ||
1722 }
else if (
type == 2) {
1730 if (
size != AGP_PAGE_SIZE) {
1736 0, 0, ~0, PAGE_SIZE, 0);
1742 mem = malloc(
sizeof *
mem, M_AGP, M_WAITOK);
1747 mem->
am_obj = vm_object_allocate(OBJT_DEFAULT,
1748 atop(round_page(
size)));
1753 if (
size == AGP_PAGE_SIZE) {
1759 m = vm_page_grab(
mem->
am_obj, 0, VM_ALLOC_NOBUSY |
1760 VM_ALLOC_WIRED | VM_ALLOC_ZERO);
1789 sc = device_get_softc(dev);
1798 vm_page_unwire(m, PQ_INACTIVE);
1821 if ((
offset & (AGP_PAGE_SIZE - 1)) != 0 ||
1823 device_printf(dev,
"binding memory at bad offset %#x\n",
1828 sc = device_get_softc(dev);
1836 for (i = 0; i <
mem->
am_size; i += AGP_PAGE_SIZE) {
1854 for (i = 0; i <
mem->
am_size; i += AGP_PAGE_SIZE)
1855 bus_write_4(sc->
sc_res[0],
1867 sc = device_get_softc(dev);
1876 for (i = 0; i <
mem->
am_size; i += AGP_PAGE_SIZE) {
1890 for (i = 0; i <
mem->
am_size; i += AGP_PAGE_SIZE) {
1903 DEVMETHOD(device_suspend, bus_generic_suspend),
1939 sc = device_get_softc(dev);
1940 for (i = 0; i < num_entries; i++)
1942 VM_PAGE_TO_PHYS(bogus_page), 0);
1948 vm_page_t *pages, u_int flags)
1953 sc = device_get_softc(dev);
1954 for (i = 0; i < num_entries; i++) {
1955 MPASS(pages[i]->valid == VM_PAGE_BITS_ALL);
1956 MPASS(pages[i]->ref_count > 0);
1958 VM_PAGE_TO_PHYS(pages[i]), flags);
1969 sc = device_get_softc(dev);
2010 sc = device_get_softc(dev);
2011 pmap_invalidate_cache();
2014 for (i = 0; i < 20000 ; i++) {
2016 if ((hic & (1U << 31)) == 0)
2028 sc = device_get_softc(dev);
2029 vga = device_get_parent(dev);
2035 device_printf(dev,
"Failed to allocate flush page at 0x%jx\n",
2041 device_printf(dev,
"Allocated flush page phys 0x%jx virt %p\n",
2054 sc = device_get_softc(dev);
2055 vga = device_get_parent(dev);
2058 BUS_DEACTIVATE_RESOURCE(device_get_parent(vga), dev, SYS_RES_MEMORY,
2060 BUS_RELEASE_RESOURCE(device_get_parent(vga), dev, SYS_RES_MEMORY,
2071 sc = device_get_softc(dev);
2073 if ((temp & 1) != 0) {
2077 "Found already configured flush page at 0x%jx\n",
2086 temp + PAGE_SIZE - 1);
2106 sc = device_get_softc(dev);
2122 uint32_t temp_hi, temp_lo;
2125 sc = device_get_softc(dev);
2130 if ((temp_lo & 1) != 0) {
2131 temp = ((uint64_t)temp_hi << 32) | (temp_lo & ~1);
2134 "Found already configured flush page at 0x%jx\n",
2143 temp + PAGE_SIZE - 1);
2153 (temp >> 32) & UINT32_MAX, 4);
2155 (temp & UINT32_MAX) | 1, 4);
2166 sc = device_get_softc(dev);
2182 sc = device_get_softc(dev);
2191 sc = device_get_softc(dev);
2203 struct sglist **sg_list)
2215 if (*sg_list != NULL)
2218 sc = device_get_softc(dev);
2220 sg = sglist_alloc(num_entries, M_WAITOK );
2221 for (i = 0; i < num_entries; i++) {
2222 sg->sg_segs[i].ss_paddr = VM_PAGE_TO_PHYS(pages[i]);
2223 sg->sg_segs[i].ss_len = PAGE_SIZE;
2227 error = bus_dma_tag_create(bus_get_dma_tag(dev),
2229 1ULL << sc->
match->busdma_addr_mask_sz ,
2233 BUS_SPACE_UNRESTRICTED ,
2253 sc = device_get_softc(dev);
2259 u_int first_entry, u_int flags)
2266 sc = device_get_softc(dev);
2267 for (i = j = 0; j < sg_list->sg_nseg; j++) {
2268 spaddr = sg_list->sg_segs[i].ss_paddr;
2269 slen = sg_list->sg_segs[i].ss_len;
2270 for (; slen > 0; i++) {
2273 spaddr += AGP_PAGE_SIZE;
2274 slen -= AGP_PAGE_SIZE;
2320 struct sglist **sg_list)
static int agp_chipset_flush(device_t dev)
void agp_set_aperture_resource(device_t dev, int rid)
int agp_generic_set_aperture(device_t dev, u_int32_t aperture)
int agp_bind_memory(device_t dev, void *handle, vm_offset_t offset)
void agp_free_memory(device_t dev, void *handle)
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)
int agp_unbind_memory(device_t dev, void *handle)
int agp_generic_detach(device_t dev)
int agp_generic_attach(device_t dev)
u_int32_t agp_generic_get_aperture(device_t dev)
void agp_free_res(device_t dev)
void agp_free_cdev(device_t dev)
void * agp_alloc_memory(device_t dev, int type, vm_size_t bytes)
int agp_enable(device_t dev, u_int32_t mode)
static int agp_i915_chipset_flush_setup(device_t dev)
static int agp_i830_get_stolen_size(device_t dev)
static void agp_i965_chipset_flush_teardown(device_t dev)
static void agp_i810_flush_tlb(device_t dev)
static struct @1 intel_private
static int agp_i965_get_gtt_total_entries(device_t dev)
void intel_gtt_unmap_memory(struct sglist *sg_list)
static int agp_gen5_get_gtt_total_entries(device_t dev)
static int agp_i915_get_stolen_size(device_t dev)
static void agp_g4x_install_gtt_pte(device_t dev, u_int index, vm_offset_t physical, int flags)
static const struct agp_i810_driver agp_i810_i865_driver
void agp_intel_gtt_clear_range(device_t dev, u_int first_entry, u_int num_entries)
int intel_gtt_map_memory(vm_page_t *pages, u_int num_entries, struct sglist **sg_list)
static device_t agp_i810_find_bridge(device_t dev)
static int agp_i810_get_gtt_mappable_entries(device_t dev)
static void agp_i965_install_gtt_pte(device_t dev, u_int index, vm_offset_t physical, int flags)
static const struct agp_i810_driver agp_i810_i830_driver
static const struct agp_i810_driver agp_i810_g33_driver
static int agp_i810_get_gtt_total_entries(device_t dev)
static void agp_i830_deinstall_gatt(device_t dev)
static struct agp_memory * agp_i810_alloc_memory(device_t dev, int type, vm_size_t size)
int intel_gtt_chipset_flush(void)
static int agp_i915_chipset_flush_alloc_page(device_t dev, uint64_t start, uint64_t end)
static void agp_gen5_adjust_pgtbl_size(device_t dev, uint32_t sz)
static int agp_i810_enable(device_t dev, u_int32_t mode)
static int agp_i810_unbind_page(device_t dev, vm_offset_t offset)
static void agp_82852_set_desc(device_t dev, const struct agp_i810_match *match)
static const struct agp_i810_driver agp_i810_i810_driver
static int agp_i810_check_active(device_t bridge_dev)
static int agp_g4x_install_gatt(device_t dev)
static int agp_i830_install_gatt(device_t dev)
static u_int32_t agp_i915_read_gtt_pte(device_t dev, u_int index)
static void agp_i830_chipset_flush(device_t dev)
static void agp_i810_write_gtt(device_t dev, u_int index, uint32_t pte)
struct intel_gtt * intel_gtt_get(void)
int agp_intel_gtt_chipset_flush(device_t dev)
static u_int32_t agp_g4x_read_gtt_pte(device_t dev, u_int index)
static int agp_i965_chipset_flush_setup(device_t dev)
static int agp_i810_resume(device_t dev)
static void agp_i915_chipset_flush_free_page(device_t dev)
static void agp_i810_deinstall_gatt(device_t dev)
vm_paddr_t intel_gtt_read_pte_paddr(u_int entry)
void agp_intel_gtt_unmap_memory(device_t dev, struct sglist *sg_list)
static int agp_i810_bind_page(device_t dev, vm_offset_t offset, vm_offset_t physical)
static void agp_i915_dump_regs(device_t dev)
static void agp_g4x_write_gtt(device_t dev, u_int index, uint32_t pte)
static void agp_i965_write_gtt(device_t dev, u_int index, uint32_t pte)
void agp_intel_gtt_insert_sg_entries(device_t dev, struct sglist *sg_list, u_int first_entry, u_int flags)
static u_int32_t agp_i965_read_gtt_pte(device_t dev, u_int index)
static const struct agp_i810_match agp_i810_matches[]
DRIVER_MODULE(agp_i810, vgapci, agp_i810_driver, agp_devclass, 0, 0)
static void agp_i810_set_desc(device_t dev, const struct agp_i810_match *match)
static void agp_i810_chipset_flush(device_t dev)
static int agp_i915_check_active(device_t bridge_dev)
static void agp_intel_gtt_install_pte(device_t dev, u_int index, vm_paddr_t addr, u_int flags)
static void agp_i915_install_gtt_pte(device_t dev, u_int index, vm_offset_t physical, int flags)
static device_t intel_agp
static device_method_t agp_i810_methods[]
device_t intel_gtt_get_bridge_device(void)
void agp_intel_gtt_insert_pages(device_t dev, u_int first_entry, u_int num_entries, vm_page_t *pages, u_int flags)
void intel_gtt_insert_sg_entries(struct sglist *sg_list, u_int first_entry, u_int flags)
static int agp_i830_check_active(device_t bridge_dev)
static int agp_i810_set_aperture(device_t dev, u_int32_t aperture)
int agp_intel_gtt_map_memory(device_t dev, vm_page_t *pages, u_int num_entries, struct sglist **sg_list)
static const struct agp_i810_driver agp_i810_igd_driver
static void agp_i830_install_gatt_init(struct agp_i810_softc *sc)
static void agp_i810_chipset_flush_teardown(device_t dev)
static void agp_i830_dump_regs(device_t dev)
static u_int32_t agp_i810_read_gtt_pte(device_t dev, u_int index)
static void agp_i810_dump_regs(device_t dev)
void intel_gtt_write(u_int entry, uint32_t val)
static const struct agp_i810_driver agp_i810_i855_driver
u_int32_t intel_gtt_read_pte(u_int entry)
static vm_paddr_t agp_i915_read_gtt_pte_paddr(device_t dev, u_int index)
static int agp_gen4_install_gatt(device_t dev, const vm_size_t gtt_offset)
static int agp_i830_get_gtt_mappable_entries(device_t dev)
MODULE_DEPEND(agp_i810, agp, 1, 1, 1)
static int agp_i810_unbind_memory(device_t dev, struct agp_memory *mem)
static vm_paddr_t agp_i810_read_gtt_pte_paddr(device_t dev, u_int index)
static int agp_i810_free_memory(device_t dev, struct agp_memory *mem)
static int agp_i810_attach(device_t dev)
static void agp_i830_install_gtt_pte(device_t dev, u_int index, vm_offset_t physical, int flags)
void intel_gtt_install_pte(u_int index, vm_paddr_t addr, u_int flags)
void intel_gtt_insert_pages(u_int first_entry, u_int num_entries, vm_page_t *pages, u_int flags)
static int agp_i915_set_aperture(device_t dev, u_int32_t aperture)
static devclass_t agp_devclass
static int agp_i810_detach(device_t dev)
static int agp_i810_probe(device_t dev)
static int agp_i810_bind_memory(device_t dev, struct agp_memory *mem, vm_offset_t offset)
static int agp_i810_get_stolen_size(device_t dev)
static int agp_i830_set_aperture(device_t dev, u_int32_t aperture)
static int agp_i965_install_gatt(device_t dev)
static struct resource_spec agp_i810_res_spec[]
static void agp_i915_chipset_flush_teardown(device_t dev)
static struct resource_spec agp_i915_res_spec[]
void intel_gtt_clear_range(u_int first_entry, u_int num_entries)
static const struct agp_i810_driver agp_i810_i815_driver
static void agp_i810_install_gtt_pte(device_t dev, u_int index, vm_offset_t physical, int flags)
struct intel_gtt agp_intel_gtt_get(device_t dev)
static struct resource_spec agp_i965_res_spec[]
static void agp_i915_write_gtt(device_t dev, u_int index, uint32_t pte)
static int agp_i810_install_gatt(device_t dev)
static const struct agp_i810_driver agp_i810_g965_driver
static const struct agp_i810_driver agp_i810_i915_driver
static void agp_i915_chipset_flush(device_t dev)
static int agp_i915_get_gtt_mappable_entries(device_t dev)
static int agp_i810_method_set_aperture(device_t dev, u_int32_t aperture)
static void agp_i855_dump_regs(device_t dev)
static int agp_i810_chipset_flush_setup(device_t dev)
static const struct agp_i810_match * agp_i810_match(device_t dev)
static void agp_i965_dump_regs(device_t dev)
static const struct agp_i810_driver agp_i810_g4x_driver
static void agp_i810_identify(driver_t *driver, device_t parent)
#define AGP_DCACHE_MEMORY
#define AGP_I810_DRT_POPULATED
#define AGP_I830_GCC1_GMS_STOLEN_8192
#define AGP_G4X_GCC1_GMS_STOLEN_96M
#define AGP_G4x_GCC1_SIZE_MASK
#define AGP_I855_GCC1_GMS_STOLEN_1M
#define AGP_I915_GCC1_GMS_STOLEN_48M
#define AGP_I830_GCC1_DEV2_DISABLED
#define AGP_I810_PGTBL_SIZE_256KB
#define AGP_G33_MGGC_GGMS_SIZE_1M
#define AGP_I855_GCC1_GMS_STOLEN_16M
#define AGP_I830_GCC1_GMS_STOLEN_1024
#define AGP_I830_GCC1_GMASIZE_64
#define AGP_G4X_GCC1_GMS_STOLEN_224M
#define I830_PTE_SYSTEM_CACHED
#define AGP_I810_SMRAM_GMS_DISABLED
#define AGP_I855_GCC1_GMS
#define AGP_I810_MISCC_WINSIZE
#define AGP_I830_GCC1_GMASIZE
#define AGP_G4x_GCC1_SIZE_VT_2M
#define AGP_I965_PGTBL_SIZE_1_5MB
#define AGP_I810_PGTBL_SIZE_512KB
#define AGP_I810_MISCC_WINSIZE_64
#define AGP_G33_GCC1_GMS_STOLEN_256M
#define AGP_I915_DEVEN_D2F0
#define AGP_G33_GCC1_GMS_STOLEN_128M
#define AGP_G4x_GCC1_SIZE_1M
#define AGP_I855_GCC1_GMS_STOLEN_8M
#define AGP_I810_SMRAM_GMS
#define AGP_I810_MISCC_WINSIZE_32
#define AGP_I855_GCC1_GMS_STOLEN_4M
#define AGP_G4x_GCC1_SIZE_2M
#define AGP_I965_PGTBL_SIZE_2MB
#define AGP_I810_PGTBL_SIZE_2MB
#define AGP_I810_PGTBL_SIZE_1_5MB
#define AGP_I830_GCC1_GMS_STOLEN_512
#define AGP_G4X_GCC1_GMS_STOLEN_352M
#define AGP_G33_MGGC_GGMS_SIZE_2M
#define AGP_I830_GCC1_DEV2
#define AGP_G4x_GCC1_SIZE_VT_1_5M
#define AGP_I965_GTTMMADR
#define AGP_G4x_GCC1_SIZE_VT_1M
#define AGP_I830_GCC1_GMS
#define AGP_I810_PGTBL_SIZE_128KB
#define AGP_I965_PGTBL_CTL2
#define AGP_I915_DEVEN_D2F0_DISABLED
#define AGP_G4X_GCC1_GMS_STOLEN_160M
#define AGP_I915_GCC1_GMS_STOLEN_64M
#define AGP_I810_PGTBL_CTL
#define AGP_I810_PGTBL_SIZE_MASK
#define AGP_I855_GCC1_GMS_STOLEN_32M
#define AGP_I810_PGTBL_SIZE_1MB
#define AGP_G33_MGGC_GGMS_MASK
#define AGP_I830_GCC1_GMASIZE_128
#define AGP_I965_PGTBL_SIZE_1MB
#define AGP_USER_CACHED_MEMORY
int(* get_stolen_size)(device_t)
u_int32_t(* read_gtt_pte)(device_t, u_int)
int(* install_gatt)(device_t)
int(* chipset_flush_setup)(device_t)
void(* dump_regs)(device_t)
void(* set_desc)(device_t, const struct agp_i810_match *)
int(* check_active)(device_t)
void(* install_gtt_pte)(device_t, u_int, vm_offset_t, int)
vm_paddr_t(* read_gtt_pte_paddr)(device_t, u_int)
void(* deinstall_gatt)(device_t)
void(* chipset_flush_teardown)(device_t)
int(* set_aperture)(device_t, u_int32_t)
void(* write_gtt)(device_t, u_int, uint32_t)
int(* get_gtt_mappable_entries)(device_t)
struct resource_spec * res_spec
int(* get_gtt_total_entries)(device_t)
void(* chipset_flush)(device_t)
const struct agp_i810_driver * driver
void * sc_flush_page_vaddr
struct resource * sc_res[2]
int sc_bios_allocated_flush_page
u_int32_t initial_aperture
struct resource * sc_flush_page_res
u_int gtt_mappable_entries
const struct agp_i810_match * match
struct vm_object * am_obj
struct resource * as_aperture
struct agp_memory_list as_memory
unsigned int do_idle_maps
vm_paddr_t scratch_page_dma
unsigned int gtt_total_entries
unsigned int gtt_mappable_entries