aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/xdma
diff options
context:
space:
mode:
authorRuslan Bukin <br@FreeBSD.org>2020-02-07 14:36:28 +0000
committerRuslan Bukin <br@FreeBSD.org>2020-02-07 14:36:28 +0000
commita8692c16c962027f141facc357ee28578ccf04b7 (patch)
tree0457fa9ab94616ffc04853c23607e71de3f8b455 /sys/dev/xdma
parent79208b1025f3a99aea828109b5423a62be3f87b0 (diff)
Notes
Diffstat (limited to 'sys/dev/xdma')
-rw-r--r--sys/dev/xdma/xdma.c18
-rw-r--r--sys/dev/xdma/xdma.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/sys/dev/xdma/xdma.c b/sys/dev/xdma/xdma.c
index d88cb1306536..aa6e6497a34c 100644
--- a/sys/dev/xdma/xdma.c
+++ b/sys/dev/xdma/xdma.c
@@ -511,6 +511,24 @@ xdma_ofw_get(device_t dev, const char *prop)
#endif
/*
+ * Allocate xdma controller.
+ */
+xdma_controller_t *
+xdma_get(device_t dev, device_t dma_dev)
+{
+ xdma_controller_t *xdma;
+
+ xdma = malloc(sizeof(struct xdma_controller),
+ M_XDMA, M_WAITOK | M_ZERO);
+ xdma->dev = dev;
+ xdma->dma_dev = dma_dev;
+
+ TAILQ_INIT(&xdma->channels);
+
+ return (xdma);
+}
+
+/*
* Free xDMA controller object.
*/
int
diff --git a/sys/dev/xdma/xdma.h b/sys/dev/xdma/xdma.h
index 48a03c125b3a..b9a8dd2c37c3 100644
--- a/sys/dev/xdma/xdma.h
+++ b/sys/dev/xdma/xdma.h
@@ -231,6 +231,7 @@ static MALLOC_DEFINE(M_XDMA, "xdma", "xDMA framework");
/* xDMA controller ops */
xdma_controller_t *xdma_ofw_get(device_t dev, const char *prop);
+xdma_controller_t *xdma_get(device_t dev, device_t dma_dev);
int xdma_put(xdma_controller_t *xdma);
vmem_t * xdma_get_memory(device_t dev);
void xdma_put_memory(vmem_t *vmem);