summaryrefslogtreecommitdiff
path: root/tools/src/dart.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/src/dart.h')
-rw-r--r--tools/src/dart.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/src/dart.h b/tools/src/dart.h
new file mode 100644
index 0000000..7d8474b
--- /dev/null
+++ b/tools/src/dart.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: MIT */
+
+#ifndef DART_H
+#define DART_H
+
+#include "types.h"
+
+#define DART_PTR_ERR BIT(63)
+#define DART_IS_ERR(val) FIELD_GET(DART_PTR_ERR, val)
+
+typedef struct dart_dev dart_dev_t;
+
+enum dart_type_t {
+ DART_T8020,
+ DART_T8110,
+ DART_T6000,
+};
+
+dart_dev_t *dart_init(uintptr_t base, u8 device, bool keep_pts, enum dart_type_t type);
+dart_dev_t *dart_init_adt(const char *path, int instance, int device, bool keep_pts);
+void dart_lock_adt(const char *path, int instance);
+dart_dev_t *dart_init_fdt(void *dt, u32 phandle, int device, bool keep_pts);
+int dart_setup_pt_region(dart_dev_t *dart, const char *path, int device, u64 vm_base);
+int dart_map(dart_dev_t *dart, uintptr_t iova, void *bfr, size_t len);
+void dart_unmap(dart_dev_t *dart, uintptr_t iova, size_t len);
+void dart_free_l2(dart_dev_t *dart, uintptr_t iova);
+void *dart_translate(dart_dev_t *dart, uintptr_t iova);
+u64 dart_search(dart_dev_t *dart, void *paddr);
+u64 dart_find_iova(dart_dev_t *dart, s64 start, size_t len);
+void dart_shutdown(dart_dev_t *dart);
+u64 dart_vm_base(dart_dev_t *dart);
+
+#endif