RTEMS  5.0.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
fdt.h
1 #ifndef FDT_H
2 #define FDT_H
3 /*
4  * libfdt - Flat Device Tree manipulation
5  * Copyright (C) 2006 David Gibson, IBM Corporation.
6  * Copyright 2012 Kim Phillips, Freescale Semiconductor.
7  *
8  * libfdt is dual licensed: you can use it either under the terms of
9  * the GPL, or the BSD license, at your option.
10  *
11  * a) This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License as
13  * published by the Free Software Foundation; either version 2 of the
14  * License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public
22  * License along with this library; if not, write to the Free
23  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24  * MA 02110-1301 USA
25  *
26  * Alternatively,
27  *
28  * b) Redistribution and use in source and binary forms, with or
29  * without modification, are permitted provided that the following
30  * conditions are met:
31  *
32  * 1. Redistributions of source code must retain the above
33  * copyright notice, this list of conditions and the following
34  * disclaimer.
35  * 2. Redistributions in binary form must reproduce the above
36  * copyright notice, this list of conditions and the following
37  * disclaimer in the documentation and/or other materials
38  * provided with the distribution.
39  *
40  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
41  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
42  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
43  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
44  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
45  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
46  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
47  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
48  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
50  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
51  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
52  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53  */
54 
55 #ifndef __ASSEMBLY__
56 
57 struct fdt_header {
58  fdt32_t magic; /* magic word FDT_MAGIC */
59  fdt32_t totalsize; /* total size of DT block */
60  fdt32_t off_dt_struct; /* offset to structure */
61  fdt32_t off_dt_strings; /* offset to strings */
62  fdt32_t off_mem_rsvmap; /* offset to memory reserve map */
63  fdt32_t version; /* format version */
64  fdt32_t last_comp_version; /* last compatible version */
65 
66  /* version 2 fields below */
67  fdt32_t boot_cpuid_phys; /* Which physical CPU id we're
68  booting on */
69  /* version 3 fields below */
70  fdt32_t size_dt_strings; /* size of the strings block */
71 
72  /* version 17 fields below */
73  fdt32_t size_dt_struct; /* size of the structure block */
74 };
75 
77  fdt64_t address;
78  fdt64_t size;
79 };
80 
82  fdt32_t tag;
83  char name[0];
84 };
85 
86 struct fdt_property {
87  fdt32_t tag;
88  fdt32_t len;
89  fdt32_t nameoff;
90  char data[0];
91 };
92 
93 #endif /* !__ASSEMBLY */
94 
95 #define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */
96 #define FDT_TAGSIZE sizeof(fdt32_t)
97 
98 #define FDT_BEGIN_NODE 0x1 /* Start node: full name */
99 #define FDT_END_NODE 0x2 /* End node */
100 #define FDT_PROP 0x3 /* Property: name off,
101  size, content */
102 #define FDT_NOP 0x4 /* nop */
103 #define FDT_END 0x9
104 
105 #define FDT_V1_SIZE (7*sizeof(fdt32_t))
106 #define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t))
107 #define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t))
108 #define FDT_V16_SIZE FDT_V3_SIZE
109 #define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t))
110 
111 #endif /* FDT_H */
Definition: fdt.h:57
Definition: fdt.h:76
Definition: fdt.h:81
Definition: fdt.h:86
unsigned size
Definition: tte.h:74