summaryrefslogtreecommitdiffstats
path: root/EmbeddedPkg/Include/fdt.h
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-27 16:53:57 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-27 16:53:57 +0000
commitfa4a70633868ce5a59e3bc3c98c137952a6c4ccb (patch)
treec29d5d77b7b05b194377b77c068147cc6cc09f5d /EmbeddedPkg/Include/fdt.h
parent8213627ef73ea5cac96c9eaeaed8dd8169ec3431 (diff)
downloadedk2-fa4a70633868ce5a59e3bc3c98c137952a6c4ccb.tar.gz
edk2-fa4a70633868ce5a59e3bc3c98c137952a6c4ccb.tar.bz2
edk2-fa4a70633868ce5a59e3bc3c98c137952a6c4ccb.zip
EmbeddedPkg: Added support to libfdt
Use the library libdt from the Device Tree Compiler project. The used version is from Wednesday 22nd August 2012 (commit: 8716901d2215a3) The Device Tree Compiler project is under dual BSD/GPL license (it means the license is either BSD or GPL). The BSD license is the license that fits to the Tianocore contribution requirements. The use of libfdt into Tianocore has been authorised by David Gibson the author of libfdt and its current maintainer Jon Loeliger (email thread on 7th September 2011). Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13760 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EmbeddedPkg/Include/fdt.h')
-rw-r--r--EmbeddedPkg/Include/fdt.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/EmbeddedPkg/Include/fdt.h b/EmbeddedPkg/Include/fdt.h
new file mode 100644
index 0000000000..6e7a8b3973
--- /dev/null
+++ b/EmbeddedPkg/Include/fdt.h
@@ -0,0 +1,74 @@
+/** @file
+*
+* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
+*
+* This program and the accompanying materials
+* are licensed and made available under the terms and conditions of the BSD License
+* which accompanies this distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#ifndef _FDT_H
+#define _FDT_H
+
+#ifndef __ASSEMBLY__
+
+struct fdt_header {
+ uint32_t magic; /* magic word FDT_MAGIC */
+ uint32_t totalsize; /* total size of DT block */
+ uint32_t off_dt_struct; /* offset to structure */
+ uint32_t off_dt_strings; /* offset to strings */
+ uint32_t off_mem_rsvmap; /* offset to memory reserve map */
+ uint32_t version; /* format version */
+ uint32_t last_comp_version; /* last compatible version */
+
+ /* version 2 fields below */
+ uint32_t boot_cpuid_phys; /* Which physical CPU id we're
+ booting on */
+ /* version 3 fields below */
+ uint32_t size_dt_strings; /* size of the strings block */
+
+ /* version 17 fields below */
+ uint32_t size_dt_struct; /* size of the structure block */
+};
+
+struct fdt_reserve_entry {
+ uint64_t address;
+ uint64_t size;
+};
+
+struct fdt_node_header {
+ uint32_t tag;
+ char name[0];
+};
+
+struct fdt_property {
+ uint32_t tag;
+ uint32_t len;
+ uint32_t nameoff;
+ char data[0];
+};
+
+#endif /* !__ASSEMBLY */
+
+#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */
+#define FDT_TAGSIZE sizeof(uint32_t)
+
+#define FDT_BEGIN_NODE 0x1 /* Start node: full name */
+#define FDT_END_NODE 0x2 /* End node */
+#define FDT_PROP 0x3 /* Property: name off,
+ size, content */
+#define FDT_NOP 0x4 /* nop */
+#define FDT_END 0x9
+
+#define FDT_V1_SIZE (7*sizeof(uint32_t))
+#define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(uint32_t))
+#define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(uint32_t))
+#define FDT_V16_SIZE FDT_V3_SIZE
+#define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(uint32_t))
+
+#endif /* _FDT_H */