summaryrefslogtreecommitdiff
path: root/include/libcamera/internal/dma_heaps.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libcamera/internal/dma_heaps.h')
-rw-r--r--include/libcamera/internal/dma_heaps.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/libcamera/internal/dma_heaps.h b/include/libcamera/internal/dma_heaps.h
new file mode 100644
index 00000000..80bf29e7
--- /dev/null
+++ b/include/libcamera/internal/dma_heaps.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2020, Raspberry Pi Ltd
+ *
+ * dma_heaps.h - Helper class for dma-heap allocations.
+ */
+
+#pragma once
+
+#include <stddef.h>
+
+#include <libcamera/base/flags.h>
+#include <libcamera/base/unique_fd.h>
+
+namespace libcamera {
+
+class DmaHeap
+{
+public:
+ enum class DmaHeapFlag {
+ Cma = 1 << 0,
+ System = 1 << 1,
+ };
+
+ using DmaHeapFlags = Flags<DmaHeapFlag>;
+
+ DmaHeap(DmaHeapFlags flags = DmaHeapFlag::Cma);
+ ~DmaHeap();
+ bool isValid() const { return dmaHeapHandle_.isValid(); }
+ UniqueFD alloc(const char *name, std::size_t size);
+
+private:
+ UniqueFD dmaHeapHandle_;
+};
+
+LIBCAMERA_FLAGS_ENABLE_OPERATORS(DmaHeap::DmaHeapFlag)
+
+} /* namespace libcamera */