Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/sys Add some definitions for bus_dma(9) overrides.
details: https://anonhg.NetBSD.org/src/rev/fc5ea4983687
branches: trunk
changeset: 769118:fc5ea4983687
user: dyoung <dyoung%NetBSD.org@localhost>
date: Wed Aug 31 20:04:51 2011 +0000
description:
Add some definitions for bus_dma(9) overrides.
diffstat:
sys/sys/bus.h | 38 +++++++++++++++++++++++++++++++++++++-
1 files changed, 37 insertions(+), 1 deletions(-)
diffs (64 lines):
diff -r 856933ee78b7 -r fc5ea4983687 sys/sys/bus.h
--- a/sys/sys/bus.h Wed Aug 31 18:52:37 2011 +0000
+++ b/sys/sys/bus.h Wed Aug 31 20:04:51 2011 +0000
@@ -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.
*/
Home |
Main Index |
Thread Index |
Old Index