diff options
Diffstat (limited to 'meta-ti-extras/recipes/dtc/dtc/0002-DTBO-magic-and-dtbo-format-options.patch')
-rw-r--r-- | meta-ti-extras/recipes/dtc/dtc/0002-DTBO-magic-and-dtbo-format-options.patch | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/meta-ti-extras/recipes/dtc/dtc/0002-DTBO-magic-and-dtbo-format-options.patch b/meta-ti-extras/recipes/dtc/dtc/0002-DTBO-magic-and-dtbo-format-options.patch deleted file mode 100644 index 73e0a09..0000000 --- a/meta-ti-extras/recipes/dtc/dtc/0002-DTBO-magic-and-dtbo-format-options.patch +++ /dev/null | |||
@@ -1,253 +0,0 @@ | |||
1 | From d69b3ebbf86c45cbe717ee35359e15af3cf02014 Mon Sep 17 00:00:00 2001 | ||
2 | From: Pantelis Antoniou <pantelis.antoniou@konsulko.com> | ||
3 | Date: Thu, 5 May 2016 14:07:48 +0300 | ||
4 | Subject: [PATCH] DTBO magic and dtbo format options | ||
5 | |||
6 | Introduce a new magic number for dynamic plugin objects, | ||
7 | which is enabled by selecting dtbo/input output options. | ||
8 | |||
9 | Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com> | ||
10 | --- | ||
11 | Documentation/manual.txt | 7 +++++++ | ||
12 | dtc.c | 14 +++++++++++--- | ||
13 | dtc.h | 4 ++-- | ||
14 | fdtdump.c | 2 +- | ||
15 | flattree.c | 11 ++++++----- | ||
16 | libfdt/fdt.c | 2 +- | ||
17 | libfdt/fdt.h | 3 ++- | ||
18 | tests/mangle-layout.c | 7 ++++--- | ||
19 | 8 files changed, 34 insertions(+), 16 deletions(-) | ||
20 | |||
21 | diff --git a/Documentation/manual.txt b/Documentation/manual.txt | ||
22 | index 398de32..f64c4f4 100644 | ||
23 | --- a/Documentation/manual.txt | ||
24 | +++ b/Documentation/manual.txt | ||
25 | @@ -60,6 +60,9 @@ The currently supported Input Formats are: | ||
26 | - "dtb": "blob" format. A flattened device-tree block with | ||
27 | header in one binary blob. | ||
28 | |||
29 | + - "dtbo" : "blob" format. Identical with "dtb" but meant | ||
30 | + for use with dynamic-device tree objects. | ||
31 | + | ||
32 | - "dts": "source" format. A text file containing a "source" | ||
33 | for a device-tree. | ||
34 | |||
35 | @@ -71,6 +74,8 @@ The currently supported Output Formats are: | ||
36 | |||
37 | - "dtb": "blob" format | ||
38 | |||
39 | + - "dtbo": "blob" format - for objects | ||
40 | + | ||
41 | - "dts": "source" format | ||
42 | |||
43 | - "asm": assembly language file. A file that can be sourced | ||
44 | @@ -78,6 +83,8 @@ The currently supported Output Formats are: | ||
45 | then simply be added to your Makefile. Additionally, the | ||
46 | assembly file exports some symbols that can be used. | ||
47 | |||
48 | + - "asmo": assembly language file for objects. Identical to "asm" | ||
49 | + | ||
50 | |||
51 | 3) Command Line | ||
52 | |||
53 | diff --git a/dtc.c b/dtc.c | ||
54 | index 5fa23c4..63c2c9c 100644 | ||
55 | --- a/dtc.c | ||
56 | +++ b/dtc.c | ||
57 | @@ -117,6 +117,8 @@ static const char *guess_type_by_name(const char *fname, const char *fallback) | ||
58 | return "dts"; | ||
59 | if (!strcasecmp(s, ".dtb")) | ||
60 | return "dtb"; | ||
61 | + if (!strcasecmp(s, ".dtbo")) | ||
62 | + return "dtbo"; | ||
63 | return fallback; | ||
64 | } | ||
65 | |||
66 | @@ -147,6 +149,8 @@ static const char *guess_input_format(const char *fname, const char *fallback) | ||
67 | magic = fdt32_to_cpu(magic); | ||
68 | if (magic == FDT_MAGIC) | ||
69 | return "dtb"; | ||
70 | + if (magic == FDT_MAGIC_DTBO) | ||
71 | + return "dtbo"; | ||
72 | |||
73 | return guess_type_by_name(fname, fallback); | ||
74 | } | ||
75 | @@ -275,7 +279,7 @@ int main(int argc, char *argv[]) | ||
76 | bi = dt_from_source(arg); | ||
77 | else if (streq(inform, "fs")) | ||
78 | bi = dt_from_fs(arg); | ||
79 | - else if(streq(inform, "dtb")) | ||
80 | + else if(streq(inform, "dtb") || streq(inform, "dtbo")) | ||
81 | bi = dt_from_blob(arg); | ||
82 | else | ||
83 | die("Unknown input format \"%s\"\n", inform); | ||
84 | @@ -306,9 +310,13 @@ int main(int argc, char *argv[]) | ||
85 | if (streq(outform, "dts")) { | ||
86 | dt_to_source(outf, bi); | ||
87 | } else if (streq(outform, "dtb")) { | ||
88 | - dt_to_blob(outf, bi, outversion); | ||
89 | + dt_to_blob(outf, bi, FDT_MAGIC, outversion); | ||
90 | + } else if (streq(outform, "dtbo")) { | ||
91 | + dt_to_blob(outf, bi, FDT_MAGIC_DTBO, outversion); | ||
92 | } else if (streq(outform, "asm")) { | ||
93 | - dt_to_asm(outf, bi, outversion); | ||
94 | + dt_to_asm(outf, bi, FDT_MAGIC, outversion); | ||
95 | + } else if (streq(outform, "asmo")) { | ||
96 | + dt_to_asm(outf, bi, FDT_MAGIC_DTBO, outversion); | ||
97 | } else if (streq(outform, "null")) { | ||
98 | /* do nothing */ | ||
99 | } else { | ||
100 | diff --git a/dtc.h b/dtc.h | ||
101 | index 56212c8..9d7f2d6 100644 | ||
102 | --- a/dtc.h | ||
103 | +++ b/dtc.h | ||
104 | @@ -252,8 +252,8 @@ void process_checks(bool force, struct boot_info *bi); | ||
105 | |||
106 | /* Flattened trees */ | ||
107 | |||
108 | -void dt_to_blob(FILE *f, struct boot_info *bi, int version); | ||
109 | -void dt_to_asm(FILE *f, struct boot_info *bi, int version); | ||
110 | +void dt_to_blob(FILE *f, struct boot_info *bi, fdt32_t magic, int version); | ||
111 | +void dt_to_asm(FILE *f, struct boot_info *bi, fdt32_t magic, int version); | ||
112 | |||
113 | struct boot_info *dt_from_blob(const char *fname); | ||
114 | |||
115 | diff --git a/fdtdump.c b/fdtdump.c | ||
116 | index 9183555..11c2b8d 100644 | ||
117 | --- a/fdtdump.c | ||
118 | +++ b/fdtdump.c | ||
119 | @@ -306,7 +306,7 @@ int main(int argc, char *argv[]) | ||
120 | p = memchr(p, smagic[0], endp - p - 4); | ||
121 | if (!p) | ||
122 | break; | ||
123 | - if (fdt_magic(p) == FDT_MAGIC) { | ||
124 | + if (fdt_magic(p) == FDT_MAGIC || fdt_magic(p) == FDT_MAGIC_DTBO) { | ||
125 | /* try and validate the main struct */ | ||
126 | off_t this_len = endp - p; | ||
127 | fdt32_t max_version = 17; | ||
128 | diff --git a/flattree.c b/flattree.c | ||
129 | index ec14954..64ed375 100644 | ||
130 | --- a/flattree.c | ||
131 | +++ b/flattree.c | ||
132 | @@ -335,6 +335,7 @@ static struct data flatten_reserve_list(struct reserve_info *reservelist, | ||
133 | } | ||
134 | |||
135 | static void make_fdt_header(struct fdt_header *fdt, | ||
136 | + fdt32_t magic, | ||
137 | struct version_info *vi, | ||
138 | int reservesize, int dtsize, int strsize, | ||
139 | int boot_cpuid_phys) | ||
140 | @@ -345,7 +346,7 @@ static void make_fdt_header(struct fdt_header *fdt, | ||
141 | |||
142 | memset(fdt, 0xff, sizeof(*fdt)); | ||
143 | |||
144 | - fdt->magic = cpu_to_fdt32(FDT_MAGIC); | ||
145 | + fdt->magic = cpu_to_fdt32(magic); | ||
146 | fdt->version = cpu_to_fdt32(vi->version); | ||
147 | fdt->last_comp_version = cpu_to_fdt32(vi->last_comp_version); | ||
148 | |||
149 | @@ -366,7 +367,7 @@ static void make_fdt_header(struct fdt_header *fdt, | ||
150 | fdt->size_dt_struct = cpu_to_fdt32(dtsize); | ||
151 | } | ||
152 | |||
153 | -void dt_to_blob(FILE *f, struct boot_info *bi, int version) | ||
154 | +void dt_to_blob(FILE *f, struct boot_info *bi, fdt32_t magic, int version) | ||
155 | { | ||
156 | struct version_info *vi = NULL; | ||
157 | int i; | ||
158 | @@ -390,7 +391,7 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version) | ||
159 | reservebuf = flatten_reserve_list(bi->reservelist, vi); | ||
160 | |||
161 | /* Make header */ | ||
162 | - make_fdt_header(&fdt, vi, reservebuf.len, dtbuf.len, strbuf.len, | ||
163 | + make_fdt_header(&fdt, magic, vi, reservebuf.len, dtbuf.len, strbuf.len, | ||
164 | bi->boot_cpuid_phys); | ||
165 | |||
166 | /* | ||
167 | @@ -460,7 +461,7 @@ static void dump_stringtable_asm(FILE *f, struct data strbuf) | ||
168 | } | ||
169 | } | ||
170 | |||
171 | -void dt_to_asm(FILE *f, struct boot_info *bi, int version) | ||
172 | +void dt_to_asm(FILE *f, struct boot_info *bi, fdt32_t magic, int version) | ||
173 | { | ||
174 | struct version_info *vi = NULL; | ||
175 | int i; | ||
176 | @@ -832,7 +833,7 @@ struct boot_info *dt_from_blob(const char *fname) | ||
177 | } | ||
178 | |||
179 | magic = fdt32_to_cpu(magic); | ||
180 | - if (magic != FDT_MAGIC) | ||
181 | + if (magic != FDT_MAGIC && magic != FDT_MAGIC_DTBO) | ||
182 | die("Blob has incorrect magic number\n"); | ||
183 | |||
184 | rc = fread(&totalsize, sizeof(totalsize), 1, f); | ||
185 | diff --git a/libfdt/fdt.c b/libfdt/fdt.c | ||
186 | index 22286a1..28d422c 100644 | ||
187 | --- a/libfdt/fdt.c | ||
188 | +++ b/libfdt/fdt.c | ||
189 | @@ -57,7 +57,7 @@ | ||
190 | |||
191 | int fdt_check_header(const void *fdt) | ||
192 | { | ||
193 | - if (fdt_magic(fdt) == FDT_MAGIC) { | ||
194 | + if (fdt_magic(fdt) == FDT_MAGIC || fdt_magic(fdt) == FDT_MAGIC_DTBO) { | ||
195 | /* Complete tree */ | ||
196 | if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) | ||
197 | return -FDT_ERR_BADVERSION; | ||
198 | diff --git a/libfdt/fdt.h b/libfdt/fdt.h | ||
199 | index 526aedb..493cd55 100644 | ||
200 | --- a/libfdt/fdt.h | ||
201 | +++ b/libfdt/fdt.h | ||
202 | @@ -55,7 +55,7 @@ | ||
203 | #ifndef __ASSEMBLY__ | ||
204 | |||
205 | struct fdt_header { | ||
206 | - fdt32_t magic; /* magic word FDT_MAGIC */ | ||
207 | + fdt32_t magic; /* magic word FDT_MAGIC[|_DTBO] */ | ||
208 | fdt32_t totalsize; /* total size of DT block */ | ||
209 | fdt32_t off_dt_struct; /* offset to structure */ | ||
210 | fdt32_t off_dt_strings; /* offset to strings */ | ||
211 | @@ -93,6 +93,7 @@ struct fdt_property { | ||
212 | #endif /* !__ASSEMBLY */ | ||
213 | |||
214 | #define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ | ||
215 | +#define FDT_MAGIC_DTBO 0xd00dfdb0 /* DTBO magic */ | ||
216 | #define FDT_TAGSIZE sizeof(fdt32_t) | ||
217 | |||
218 | #define FDT_BEGIN_NODE 0x1 /* Start node: full name */ | ||
219 | diff --git a/tests/mangle-layout.c b/tests/mangle-layout.c | ||
220 | index a76e51e..d29ebc6 100644 | ||
221 | --- a/tests/mangle-layout.c | ||
222 | +++ b/tests/mangle-layout.c | ||
223 | @@ -42,7 +42,8 @@ static void expand_buf(struct bufstate *buf, int newsize) | ||
224 | buf->size = newsize; | ||
225 | } | ||
226 | |||
227 | -static void new_header(struct bufstate *buf, int version, const void *fdt) | ||
228 | +static void new_header(struct bufstate *buf, fdt32_t magic, int version, | ||
229 | + const void *fdt) | ||
230 | { | ||
231 | int hdrsize; | ||
232 | |||
233 | @@ -56,7 +57,7 @@ static void new_header(struct bufstate *buf, int version, const void *fdt) | ||
234 | expand_buf(buf, hdrsize); | ||
235 | memset(buf->buf, 0, hdrsize); | ||
236 | |||
237 | - fdt_set_magic(buf->buf, FDT_MAGIC); | ||
238 | + fdt_set_magic(buf->buf, magic); | ||
239 | fdt_set_version(buf->buf, version); | ||
240 | fdt_set_last_comp_version(buf->buf, 16); | ||
241 | fdt_set_boot_cpuid_phys(buf->buf, fdt_boot_cpuid_phys(fdt)); | ||
242 | @@ -145,7 +146,7 @@ int main(int argc, char *argv[]) | ||
243 | if (fdt_version(fdt) < 17) | ||
244 | CONFIG("Input tree must be v17"); | ||
245 | |||
246 | - new_header(&buf, version, fdt); | ||
247 | + new_header(&buf, FDT_MAGIC, version, fdt); | ||
248 | |||
249 | while (*blockorder) { | ||
250 | add_block(&buf, version, *blockorder, fdt); | ||
251 | -- | ||
252 | 1.9.1 | ||
253 | |||