diff options
author | Brad Smith <brad@cvs.openbsd.org> | 2006-04-04 21:18:44 +0000 |
---|---|---|
committer | Brad Smith <brad@cvs.openbsd.org> | 2006-04-04 21:18:44 +0000 |
commit | 6e1fce54ffe410977ee0c4d562ab9a698eb55496 (patch) | |
tree | ef6564927240799fcbfa808bbe714d2353f68bc0 | |
parent | 1d56c37bdafae6c3cfd7d81df5d3a3c4b8e27f9e (diff) |
clean up after Theo's "support mbuf handling in alpha sgmap dma maps" commit.
ok martin@
-rw-r--r-- | sys/arch/alpha/dev/sgmap_common.c | 98 | ||||
-rw-r--r-- | sys/arch/alpha/dev/sgmapvar.h | 20 | ||||
-rw-r--r-- | sys/arch/alpha/include/bus.h | 12 |
3 files changed, 6 insertions, 124 deletions
diff --git a/sys/arch/alpha/dev/sgmap_common.c b/sys/arch/alpha/dev/sgmap_common.c index f650f889795..6393ff79627 100644 --- a/sys/arch/alpha/dev/sgmap_common.c +++ b/sys/arch/alpha/dev/sgmap_common.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sgmap_common.c,v 1.7 2006/03/20 01:00:58 martin Exp $ */ +/* $OpenBSD: sgmap_common.c,v 1.8 2006/04/04 21:18:43 brad Exp $ */ /* $NetBSD: sgmap_common.c,v 1.13 2000/06/29 09:02:57 mrg Exp $ */ /*- @@ -149,89 +149,6 @@ alpha_sgmap_init(t, sgmap, name, wbase, sgvabase, sgvasize, ptesize, ptva, } int -alpha_sgmap_alloc(map, origlen, sgmap, flags) - bus_dmamap_t map; - bus_size_t origlen; - struct alpha_sgmap *sgmap; - int flags; -{ - int error; - bus_size_t len = origlen, boundary, alignment; - int s; - -#ifdef DIAGNOSTIC - if (map->_dm_flags & DMAMAP_HAS_SGMAP) - panic("alpha_sgmap_alloc: already have sgva space"); -#endif - /* - * Add a range for spill page. - */ - len += NBPG; - - /* - * And add an additional amount in case of ALLOCNOW. - */ - if (flags & BUS_DMA_ALLOCNOW) - len += NBPG; - - map->_dm_sgvalen = round_page(len); - - /* - * ARGH! If the addition of spill pages bumped us over our - * boundary, we have to 2x the boundary limit. - */ - boundary = map->_dm_boundary; - if (boundary && boundary < map->_dm_sgvalen) { - alignment = boundary; - do { - boundary <<= 1; - } while (boundary < map->_dm_sgvalen); - } else - alignment = NBPG; -#if 0 - printf("len %x -> %x, _dm_sgvalen %x _dm_boundary %x boundary %x -> ", - origlen, len, map->_dm_sgvalen, map->_dm_boundary, boundary); -#endif - - s = splvm(); - error = extent_alloc(sgmap->aps_ex, map->_dm_sgvalen, alignment, 0, - boundary, (flags & BUS_DMA_NOWAIT) ? EX_NOWAIT : EX_WAITOK, - &map->_dm_sgva); - splx(s); -#if 0 - printf("error %d _dm_sgva %x\n", error, map->_dm_sgva); -#endif - - if (error == 0) - map->_dm_flags |= DMAMAP_HAS_SGMAP; - else - map->_dm_flags &= ~DMAMAP_HAS_SGMAP; - - return (error); -} - -void -alpha_sgmap_free(map, sgmap) - bus_dmamap_t map; - struct alpha_sgmap *sgmap; -{ - int s; - -#ifdef DIAGNOSTIC - if ((map->_dm_flags & DMAMAP_HAS_SGMAP) == 0) - panic("alpha_sgmap_free: no sgva space to free"); -#endif - - s = splvm(); - if (extent_free(sgmap->aps_ex, map->_dm_sgva, map->_dm_sgvalen, - EX_NOWAIT)) - panic("alpha_sgmap_free"); - splx(s); - - map->_dm_flags &= ~DMAMAP_HAS_SGMAP; -} - -int alpha_sgmap_dmamap_create(t, size, nsegments, maxsegsz, boundary, flags, dmamp) bus_dma_tag_t t; @@ -252,14 +169,9 @@ alpha_sgmap_dmamap_create(t, size, nsegments, maxsegsz, boundary, map = *dmamp; - if (flags & BUS_DMA_ALLOCNOW) { - error = alpha_sgmap_alloc(map, round_page(size), - t->_sgmap, flags); - if (error) - alpha_sgmap_dmamap_destroy(t, map); -} + /* XXX BUS_DMA_ALLOCNOW */ - return (error); + return (error); } void @@ -267,9 +179,7 @@ alpha_sgmap_dmamap_destroy(t, map) bus_dma_tag_t t; bus_dmamap_t map; { - - if (map->_dm_flags & DMAMAP_HAS_SGMAP) - alpha_sgmap_free(map, t->_sgmap); + KASSERT(map->dm_mapsize == 0); _bus_dmamap_destroy(t, map); } diff --git a/sys/arch/alpha/dev/sgmapvar.h b/sys/arch/alpha/dev/sgmapvar.h index 402aaaacb34..9a758b82b7b 100644 --- a/sys/arch/alpha/dev/sgmapvar.h +++ b/sys/arch/alpha/dev/sgmapvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: sgmapvar.h,v 1.3 2006/03/20 01:00:58 martin Exp $ */ +/* $OpenBSD: sgmapvar.h,v 1.4 2006/04/04 21:18:43 brad Exp $ */ /* $NetBSD: sgmapvar.h,v 1.10 1998/08/14 16:50:02 thorpej Exp $ */ /*- @@ -68,20 +68,6 @@ struct alpha_sgmap { bus_addr_t aps_wbase; /* base of the dma window */ }; -/* - * Log entry, used for debugging SGMAPs. - */ -struct sgmap_log_entry { - int sl_op; /* op; 1 = load, 0 = unload */ - struct alpha_sgmap *sl_sgmap; /* sgmap for entry */ - void *sl_origbuf; /* original buffer */ - u_long sl_pgoffset; /* page offset of buffer start */ - u_long sl_origlen; /* length of transfer */ - u_long sl_sgva; /* sgva of transfer */ - u_long sl_dmaaddr; /* dma address */ - int sl_ptecnt; /* pte count */ -}; - extern vaddr_t alpha_sgmap_prefetch_spill_page_va; extern bus_addr_t alpha_sgmap_prefetch_spill_page_pa; @@ -89,10 +75,6 @@ void alpha_sgmap_init(bus_dma_tag_t, struct alpha_sgmap *, const char *, bus_addr_t, bus_addr_t, bus_size_t, size_t, void *, bus_size_t); -int alpha_sgmap_alloc(bus_dmamap_t, bus_size_t, - struct alpha_sgmap *, int); -void alpha_sgmap_free(bus_dmamap_t, struct alpha_sgmap *); - int alpha_sgmap_dmamap_create(bus_dma_tag_t, bus_size_t, int, bus_size_t, bus_size_t, int, bus_dmamap_t *); void alpha_sgmap_dmamap_destroy(bus_dma_tag_t, bus_dmamap_t); diff --git a/sys/arch/alpha/include/bus.h b/sys/arch/alpha/include/bus.h index 279bc12f3be..ce668936a65 100644 --- a/sys/arch/alpha/include/bus.h +++ b/sys/arch/alpha/include/bus.h @@ -1,4 +1,4 @@ -/* $OpenBSD: bus.h,v 1.20 2005/05/25 18:29:58 jason Exp $ */ +/* $OpenBSD: bus.h,v 1.21 2006/04/04 21:18:43 brad Exp $ */ /* $NetBSD: bus.h,v 1.10 1996/12/02 22:19:32 cgd Exp $ */ /* @@ -442,7 +442,6 @@ struct alpha_bus_space { */ #define DMAMAP_NO_COALESCE 0x40000000 /* don't coalesce adjacent segments */ -#define DMAMAP_HAS_SGMAP 0x80000000 /* sgva/len are valid */ /* Forwards needed by prototypes below. */ struct mbuf; @@ -615,15 +614,6 @@ struct alpha_bus_dmamap { int _dm_flags; /* misc. flags */ /* - * This is used only for SGMAP-mapped DMA, but we keep it - * here to avoid pointless indirection. - */ - int _dm_pteidx; /* PTE index */ - int _dm_ptecnt; /* PTE count */ - u_long _dm_sgva; /* allocated sgva */ - bus_size_t _dm_sgvalen; /* svga length */ - - /* * Private cookie to be used by the DMA back-end. */ void *_dm_cookie; |