diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/amd64/pci/agp_machdep.c | 72 | ||||
-rw-r--r-- | sys/arch/i386/pci/agp_machdep.c | 111 | ||||
-rw-r--r-- | sys/dev/pci/agpvar.h | 13 |
3 files changed, 3 insertions, 193 deletions
diff --git a/sys/arch/amd64/pci/agp_machdep.c b/sys/arch/amd64/pci/agp_machdep.c index 973a277cb01..bee427e465a 100644 --- a/sys/arch/amd64/pci/agp_machdep.c +++ b/sys/arch/amd64/pci/agp_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: agp_machdep.c,v 1.14 2015/03/14 03:38:46 jsg Exp $ */ +/* $OpenBSD: agp_machdep.c,v 1.15 2024/07/02 04:10:25 jsg Exp $ */ /* * Copyright (c) 2008 - 2009 Owain G. Ainsworth <oga@openbsd.org> @@ -43,17 +43,10 @@ #include <sys/param.h> #include <sys/systm.h> -#include <sys/malloc.h> -#include <sys/rwlock.h> - -#include <dev/pci/pcivar.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/pcidevs.h> #include <uvm/uvm_extern.h> #include <machine/cpufunc.h> -#include <machine/bus.h> #include <machine/pmap.h> void @@ -67,66 +60,3 @@ agp_flush_cache_range(vaddr_t va, vsize_t sz) { pmap_flush_cache(va, sz); } - -struct agp_map { - bus_space_tag_t bst; - bus_space_handle_t bsh; - bus_size_t size; -}; - -int -agp_init_map(bus_space_tag_t tag, bus_addr_t address, bus_size_t size, - int flags, struct agp_map **mapp) -{ - struct agp_map *map; - int err; - - map = malloc(sizeof(*map), M_AGP, M_WAITOK | M_CANFAIL); - if (map == NULL) - return (ENOMEM); - - map->bst = tag; - map->size = size; - - if ((err = bus_space_map(tag, address, size, flags, &map->bsh)) != 0) { - free(map, M_AGP, sizeof(*map)); - return (err); - } - *mapp = map; - return (0); -} - -void -agp_destroy_map(struct agp_map *map) -{ - bus_space_unmap(map->bst, map->bsh, map->size); - free(map, M_AGP, sizeof(*map)); -} - - -int -agp_map_subregion(struct agp_map *map, bus_size_t offset, bus_size_t size, - bus_space_handle_t *bshp) -{ - return (bus_space_subregion(map->bst, map->bsh, offset, size, bshp)); -} - -void -agp_unmap_subregion(struct agp_map *map, bus_space_handle_t bsh, - bus_size_t size) -{ - /* subregion doesn't need unmapping, do nothing */ -} - -void -agp_map_atomic(struct agp_map *map, bus_size_t offset, - bus_space_handle_t *bshp) -{ - agp_map_subregion(map, offset, PAGE_SIZE, bshp); -} - -void -agp_unmap_atomic(struct agp_map *map, bus_space_handle_t bsh) -{ - /* subregion doesn't need unmapping, do nothing */ -} diff --git a/sys/arch/i386/pci/agp_machdep.c b/sys/arch/i386/pci/agp_machdep.c index 14738d58786..ef5232d5b43 100644 --- a/sys/arch/i386/pci/agp_machdep.c +++ b/sys/arch/i386/pci/agp_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: agp_machdep.c,v 1.21 2023/01/30 10:49:05 jsg Exp $ */ +/* $OpenBSD: agp_machdep.c,v 1.22 2024/07/02 04:10:25 jsg Exp $ */ /* * Copyright (c) 2008 - 2009 Owain G. Ainsworth <oga@openbsd.org> @@ -43,16 +43,10 @@ #include <sys/param.h> #include <sys/systm.h> -#include <sys/malloc.h> - -#include <dev/pci/pcivar.h> -#include <dev/pci/pcireg.h> -#include <dev/pci/agpvar.h> #include <uvm/uvm_extern.h> #include <machine/cpufunc.h> -#include <machine/bus.h> #include <machine/pmap.h> void @@ -66,106 +60,3 @@ agp_flush_cache_range(vaddr_t va, vsize_t sz) { pmap_flush_cache(va, sz); } - -struct agp_map { - bus_space_tag_t bst; - bus_addr_t addr; - bus_size_t size; - int flags; - vaddr_t va; -}; - -extern struct extent *iomem_ex; - -int -agp_init_map(bus_space_tag_t tag, bus_addr_t address, bus_size_t size, - int flags, struct agp_map **mapp) -{ - struct agp_map *map; - int error; - - KASSERT(tag == I386_BUS_SPACE_MEM); - - /* - * We grab the extent out of the bus region ourselves - * so we don't need to do these allocations every time. - */ - error = extent_alloc_region(iomem_ex, address, size, - EX_NOWAIT | EX_MALLOCOK); - if (error) - return (error); - - map = malloc(sizeof(*map), M_AGP, M_WAITOK | M_CANFAIL); - if (map == NULL) - return (ENOMEM); - - map->bst = tag; - map->addr = address; - map->size = size; - map->flags = flags; - - map->va = (vaddr_t)km_alloc(PAGE_SIZE, &kv_any, &kp_none, &kd_waitok); - if (map->va == 0) { - free(map, M_AGP, sizeof(*map)); - return (ENOMEM); - } - - *mapp = map; - return (0); -} - -void -agp_destroy_map(struct agp_map *map) -{ - if (extent_free(iomem_ex, map->addr, map->size, - EX_NOWAIT | EX_MALLOCOK )) - printf("%s: can't free region\n",__func__); - km_free((void *)map->va, PAGE_SIZE, &kv_any, &kp_none); - free(map, M_AGP, sizeof(*map)); -} - - -int -agp_map_subregion(struct agp_map *map, bus_size_t offset, bus_size_t size, - bus_space_handle_t *bshp) -{ - return (_bus_space_map(map->bst, map->addr + offset, size, - map->flags, bshp)); -} - -void -agp_unmap_subregion(struct agp_map *map, bus_space_handle_t bsh, - bus_size_t size) -{ - return (_bus_space_unmap(map->bst, bsh, size, NULL)); -} - -void -agp_map_atomic(struct agp_map *map, bus_size_t offset, - bus_space_handle_t *bshp) -{ - int pmap_flags = PMAP_NOCACHE; - paddr_t pa; - - KASSERT((offset & PGOFSET) == 0); - - if (map->flags & BUS_SPACE_MAP_CACHEABLE) - pmap_flags = 0; - else if (map->flags & BUS_SPACE_MAP_PREFETCHABLE) - pmap_flags = PMAP_WC; - - pa = bus_space_mmap(map->bst, map->addr, offset, 0, 0); - pmap_kenter_pa(map->va, pa | pmap_flags, PROT_READ | PROT_WRITE); - pmap_update(pmap_kernel()); - - *bshp = (bus_space_handle_t)map->va; -} - -void -agp_unmap_atomic(struct agp_map *map, bus_space_handle_t bsh) -{ - KASSERT(bsh == (bus_space_handle_t)map->va); - - pmap_kremove(map->va, PAGE_SIZE); - pmap_update(pmap_kernel()); -} diff --git a/sys/dev/pci/agpvar.h b/sys/dev/pci/agpvar.h index afbc298d142..c290f1bd09f 100644 --- a/sys/dev/pci/agpvar.h +++ b/sys/dev/pci/agpvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: agpvar.h,v 1.35 2024/05/13 01:15:51 jsg Exp $ */ +/* $OpenBSD: agpvar.h,v 1.36 2024/07/02 04:10:25 jsg Exp $ */ /* $NetBSD: agpvar.h,v 1.4 2001/10/01 21:54:48 fvdl Exp $ */ /*- @@ -122,8 +122,6 @@ struct agp_gatt { size_t ag_size; }; -struct agp_map; - /* * Functions private to the AGP code. */ @@ -136,15 +134,6 @@ void agp_free_gatt(bus_dma_tag_t, struct agp_gatt *); void agp_flush_cache(void); void agp_flush_cache_range(vaddr_t, vsize_t); int agp_generic_enable(struct agp_softc *, u_int32_t); -int agp_init_map(bus_space_tag_t, bus_addr_t, bus_size_t, int, struct - agp_map **); -void agp_destroy_map(struct agp_map *); -int agp_map_subregion(struct agp_map *, bus_size_t, bus_size_t, - bus_space_handle_t *); -void agp_unmap_subregion(struct agp_map *, bus_space_handle_t, - bus_size_t); -void agp_map_atomic(struct agp_map *, bus_size_t, bus_space_handle_t *); -void agp_unmap_atomic(struct agp_map *, bus_space_handle_t); int agp_alloc_dmamem(bus_dma_tag_t, size_t, bus_dmamap_t *, bus_addr_t *, bus_dma_segment_t *); |