summaryrefslogtreecommitdiffstats
path: root/tools/bus_space/C/lang.c
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-06-09 19:14:27 +0000
committerdim <dim@FreeBSD.org>2015-06-09 19:14:27 +0000
commit6370dd4a2cfcd7b1e323f780f34523097a892d0c (patch)
tree16a54540a7fb71a7c91fd866ad2437410acbf587 /tools/bus_space/C/lang.c
parent8c2b6d93700b452fac3cadba57de1b18a783ec92 (diff)
parent8fbb8a1dd51626b81ee23212d3001e3908ff17c4 (diff)
downloadFreeBSD-src-6370dd4a2cfcd7b1e323f780f34523097a892d0c.zip
FreeBSD-src-6370dd4a2cfcd7b1e323f780f34523097a892d0c.tar.gz
Merged ^/head r283871 through r284187.
Diffstat (limited to 'tools/bus_space/C/lang.c')
-rw-r--r--tools/bus_space/C/lang.c61
1 files changed, 59 insertions, 2 deletions
diff --git a/tools/bus_space/C/lang.c b/tools/bus_space/C/lang.c
index 6408343..9d3c7fb 100644
--- a/tools/bus_space/C/lang.c
+++ b/tools/bus_space/C/lang.c
@@ -31,9 +31,10 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include "bus_space.h"
+#include "busdma.h"
#include "libbus_space.h"
-int
+int16_t
bus_space_read_1(int rid, long ofs)
{
uint8_t val;
@@ -41,7 +42,7 @@ bus_space_read_1(int rid, long ofs)
return ((!bs_read(rid, ofs, &val, sizeof(val))) ? -1 : (int)val);
}
-int
+int32_t
bus_space_read_2(int rid, long ofs)
{
uint16_t val;
@@ -98,3 +99,59 @@ bus_space_subregion(int rid, long ofs, long sz)
return (bs_subregion(rid, ofs, sz));
}
+
+int
+busdma_tag_create(const char *dev, bus_addr_t align, bus_addr_t bndry,
+ bus_addr_t maxaddr, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz,
+ u_int datarate, u_int flags, busdma_tag_t *out_p)
+{
+ int res;
+
+ res = bd_tag_create(dev, align, bndry, maxaddr, maxsz, nsegs, maxsegsz,
+ datarate, flags);
+ if (res == -1)
+ return (errno);
+ *out_p = res;
+ return (0);
+}
+
+int
+busdma_tag_derive(busdma_tag_t tag, bus_addr_t align, bus_addr_t bndry,
+ bus_addr_t maxaddr, bus_size_t maxsz, u_int nsegs, bus_size_t maxsegsz,
+ u_int datarate, u_int flags, busdma_tag_t *out_p)
+{
+ int res;
+
+ res = bd_tag_derive(tag, align, bndry, maxaddr, maxsz, nsegs, maxsegsz,
+ datarate, flags);
+ if (res == -1)
+ return (errno);
+ *out_p = res;
+ return (0);
+}
+
+int
+busdma_tag_destroy(busdma_tag_t tag)
+{
+
+ return (bd_tag_destroy(tag));
+}
+
+int
+busdma_mem_alloc(busdma_tag_t tag, u_int flags, busdma_md_t *out_p)
+{
+ int res;
+
+ res = bd_mem_alloc(tag, flags);
+ if (res == -1)
+ return (errno);
+ *out_p = res;
+ return (0);
+}
+
+int
+busdma_mem_free(busdma_md_t md)
+{
+
+ return (bd_mem_free(md));
+}
OpenPOWER on IntegriCloud