summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/include
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2006-05-12 20:48:20 +0000
committerBrad Smith <brad@cvs.openbsd.org>2006-05-12 20:48:20 +0000
commit14386d7e3174d157ac5bf93f4ae751d8c0517992 (patch)
treee6cd66e29b287d3c4eb1f58f05058fb87fa50668 /sys/arch/alpha/include
parent3a1a208b741df59910fb9e108226cba78f3ee915 (diff)
Keep track of which DMA window was actually used to map the
request (not always the passed in DMA tag if we try direct-map and then fall back to sgmap-mapped). Use the actual window when performing dmamap_sync and dmamap_unload operations. From NetBSD ok martin@
Diffstat (limited to 'sys/arch/alpha/include')
-rw-r--r--sys/arch/alpha/include/bus.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/arch/alpha/include/bus.h b/sys/arch/alpha/include/bus.h
index e42d3037850..adb8c1421fc 100644
--- a/sys/arch/alpha/include/bus.h
+++ b/sys/arch/alpha/include/bus.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: bus.h,v 1.23 2006/04/27 15:17:07 mickey Exp $ */
+/* $OpenBSD: bus.h,v 1.24 2006/05/12 20:48:19 brad Exp $ */
/* $NetBSD: bus.h,v 1.10 1996/12/02 22:19:32 cgd Exp $ */
/*
@@ -594,9 +594,11 @@ struct alpha_bus_dma_tag {
#define bus_dmamap_load_raw(t, m, sg, n, s, f) \
(*(t)->_dmamap_load_raw)((t), (m), (sg), (n), (s), (f))
#define bus_dmamap_unload(t, p) \
- (*(t)->_dmamap_unload)((t), (p))
+ (void)(t), \
+ (*(p)->_dm_window->_dmamap_unload)((p)->_dm_window, (p))
#define bus_dmamap_sync(t, p, a, s, op) \
- (*(t)->_dmamap_sync)((t), (p), (a), (s), (op))
+ (void)(t), \
+ (*(p)->_dm_window->_dmamap_sync)((p)->_dm_window, (p), (a), (s), (op))
#define bus_dmamem_alloc(t, s, a, b, sg, n, r, f) \
(*(t)->_dmamem_alloc)((t), (s), (a), (b), (sg), (n), (r), (f))
#define bus_dmamem_free(t, sg, n) \
@@ -629,6 +631,11 @@ struct alpha_bus_dmamap {
void *_dm_cookie;
/*
+ * The DMA window that we ended up being mapped in.
+ */
+ bus_dma_tag_t _dm_window;
+
+ /*
* PUBLIC MEMBERS: these are used by machine-independent code.
*/
bus_size_t dm_mapsize; /* size of the mapping */