summaryrefslogtreecommitdiff
path: root/sys/include/fdt.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/include/fdt.h')
-rw-r--r--sys/include/fdt.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/sys/include/fdt.h b/sys/include/fdt.h
new file mode 100644
index 0000000..92e5695
--- /dev/null
+++ b/sys/include/fdt.h
@@ -0,0 +1,37 @@
+#include <stdint.h>
+#include <endian.h>
+
+#ifndef _FDT_H
+#define _FDT_H
+
+#define FDT_HEADER_MAGIC 0xd00dfeed
+
+static inline uint32_t
+fdt_uint32(uint32_t x)
+{
+#if BYTE_ORDER == LITTLE_ENDIAN
+return __bswap32(x);
+#else
+return x;
+#endif
+}
+
+struct fdt_header {
+ uint32_t magic; /* FDT_HEADER_MAGIC */
+ uint32_t totalsize; /* size of the whole device tree, in bytes */
+ uint32_t off_dt_struct; /* offset to structure block */
+ uint32_t off_dt_strings; /* offset to strings block */
+ uint32_t off_mem_rsvmap; /* offset to memory reservation block */
+ uint32_t version; /* dt spec version */
+ uint32_t last_comp_version; /* last compatible version. spec says this needs to be 16 */
+ uint32_t boot_cpuid_phys; /* physical id of the systems boot cpu */
+ uint32_t size_dt_strings; /* size of strings block */
+ uint32_t size_dt_struct; /* size of structure block */
+};
+
+struct fdt_reserve_entry {
+ uint64_t address;
+ uint64_t size;
+};
+
+#endif /* _FDT_H */