Module Name: src
Committed By: dyoung
Date: Wed Aug 31 20:04:51 UTC 2011
Modified Files:
src/sys/sys: bus.h
Log Message:
Add some definitions for bus_dma(9) overrides.
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/sys/bus.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/sys/bus.h
diff -u src/sys/sys/bus.h:1.8 src/sys/sys/bus.h:1.9
--- src/sys/sys/bus.h:1.8 Sat Aug 20 06:00:14 2011
+++ src/sys/sys/bus.h Wed Aug 31 20:04:51 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: bus.h,v 1.8 2011/08/20 06:00:14 he Exp $ */
+/* $NetBSD: bus.h,v 1.9 2011/08/31 20:04:51 dyoung Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -79,6 +79,17 @@
#endif
};
+enum bus_dma_override_idx {
+ BUS_DMAMAP_OVERRIDE_CREATE = __BIT(0)
+ , BUS_DMAMAP_OVERRIDE_DESTROY = __BIT(1)
+ , BUS_DMAMAP_OVERRIDE_LOAD = __BIT(2)
+ , BUS_DMAMAP_OVERRIDE_LOAD_MBUF = __BIT(3)
+ , BUS_DMAMAP_OVERRIDE_LOAD_UIO = __BIT(4)
+ , BUS_DMAMAP_OVERRIDE_LOAD_RAW = __BIT(5)
+ , BUS_DMAMAP_OVERRIDE_UNLOAD = __BIT(6)
+ , BUS_DMAMAP_OVERRIDE_SYNC = __BIT(7)
+};
+
/* Only add new members at the end of this struct! */
struct bus_space_overrides {
int (*ov_space_map)(void *, bus_space_tag_t, bus_addr_t, bus_size_t,
@@ -119,11 +130,36 @@
#endif
};
+struct mbuf;
+struct uio;
+
+/* Only add new members at the end of this struct! */
+struct bus_dma_overrides {
+ int (*ov_dmamap_create)(void *, bus_dma_tag_t, bus_size_t, int,
+ bus_size_t, bus_size_t, int, bus_dmamap_t *);
+ void (*ov_dmamap_destroy)(void *, bus_dma_tag_t, bus_dmamap_t);
+ int (*ov_dmamap_load)(void *, bus_dma_tag_t, bus_dmamap_t, void *,
+ bus_size_t, struct lwp *, int);
+ int (*ov_dmamap_load_mbuf)(void *, bus_dma_tag_t, bus_dmamap_t,
+ struct mbuf *, int);
+ int (*ov_dmamap_load_uio)(void *, bus_dma_tag_t, bus_dmamap_t,
+ struct uio *, int);
+ int (*ov_dmamap_load_raw)(void *, bus_dma_tag_t, bus_dmamap_t,
+ bus_dma_segment_t *, int, bus_size_t, int);
+ void (*ov_dmamap_unload)(void *, bus_dma_tag_t, bus_dmamap_t);
+ void (*ov_dmamap_sync)(void *, bus_dma_tag_t, bus_dmamap_t, bus_addr_t,
+ bus_size_t, int);
+};
+
int bus_space_tag_create(bus_space_tag_t, uint64_t, uint64_t,
const struct bus_space_overrides *, void *,
bus_space_tag_t *);
void bus_space_tag_destroy(bus_space_tag_t);
+int bus_dma_tag_create(bus_dma_tag_t, uint64_t,
+ const struct bus_dma_overrides *, void *, bus_dma_tag_t *);
+void bus_dma_tag_destroy(bus_dma_tag_t);
+
/* Reserve a region of bus space. Reserved bus space cannot be allocated
* with bus_space_alloc(). Reserved space has not been bus_space_map()'d.
*/