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