diff options
Diffstat (limited to 'meta/recipes-bsp/grub/grub/0001-fdt-add-grub_fdt_create_empty_tree-function.patch')
-rw-r--r-- | meta/recipes-bsp/grub/grub/0001-fdt-add-grub_fdt_create_empty_tree-function.patch | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/meta/recipes-bsp/grub/grub/0001-fdt-add-grub_fdt_create_empty_tree-function.patch b/meta/recipes-bsp/grub/grub/0001-fdt-add-grub_fdt_create_empty_tree-function.patch new file mode 100644 index 0000000000..341457488d --- /dev/null +++ b/meta/recipes-bsp/grub/grub/0001-fdt-add-grub_fdt_create_empty_tree-function.patch | |||
@@ -0,0 +1,73 @@ | |||
1 | From b3417ec69ff7d52379a8f2cb291dbecccdab684f Mon Sep 17 00:00:00 2001 | ||
2 | From: Leif Lindholm <leif.lindholm@linaro.org> | ||
3 | Date: Wed, 4 Dec 2013 13:09:21 +0000 | ||
4 | Subject: [PATCH 1/2] fdt: add grub_fdt_create_empty_tree() function | ||
5 | |||
6 | Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> | ||
7 | --- | ||
8 | grub-core/lib/fdt.c | 39 +++++++++++++++++++++++++++++++++++++++ | ||
9 | include/grub/fdt.h | 1 + | ||
10 | 2 files changed, 40 insertions(+) | ||
11 | |||
12 | diff --git a/grub-core/lib/fdt.c b/grub-core/lib/fdt.c | ||
13 | index 9f34dc7..581a118 100644 | ||
14 | --- a/grub-core/lib/fdt.c | ||
15 | +++ b/grub-core/lib/fdt.c | ||
16 | @@ -423,3 +423,42 @@ int grub_fdt_set_prop (void *fdt, unsigned int nodeoffset, const char *name, | ||
17 | grub_memcpy (prop + 3, val, len); | ||
18 | return 0; | ||
19 | } | ||
20 | + | ||
21 | +struct empty_tree { | ||
22 | + grub_fdt_header_t header; | ||
23 | + grub_uint64_t empty_rsvmap[2]; | ||
24 | + struct { | ||
25 | + grub_uint32_t prop_start; | ||
26 | + grub_uint8_t name[1]; | ||
27 | + grub_uint32_t prop_end; | ||
28 | + grub_uint32_t node_end; | ||
29 | + } empty_node; | ||
30 | +}; | ||
31 | + | ||
32 | +int | ||
33 | +grub_fdt_create_empty_tree (void *fdt, unsigned int size) | ||
34 | +{ | ||
35 | + struct empty_tree *et; | ||
36 | + | ||
37 | + if (size < sizeof (struct empty_tree)) | ||
38 | + return -1; | ||
39 | + | ||
40 | + grub_memset (fdt, 0, size); | ||
41 | + et = fdt; | ||
42 | + | ||
43 | + et->empty_node.node_end = grub_cpu_to_be32 (FDT_END); | ||
44 | + et->empty_node.prop_end = grub_cpu_to_be32 (FDT_END_NODE); | ||
45 | + et->empty_node.prop_start = grub_cpu_to_be32 (FDT_BEGIN_NODE); | ||
46 | + ((struct empty_tree *) fdt)->header.off_mem_rsvmap = | ||
47 | + grub_cpu_to_be32 (ALIGN_UP (sizeof (grub_fdt_header_t), 8)); | ||
48 | + | ||
49 | + grub_fdt_set_off_dt_strings (fdt, sizeof (struct empty_tree)); | ||
50 | + grub_fdt_set_off_dt_struct (fdt, sizeof (grub_fdt_header_t) + 16); | ||
51 | + grub_fdt_set_version (fdt, FDT_SUPPORTED_VERSION); | ||
52 | + grub_fdt_set_last_comp_version (fdt, FDT_SUPPORTED_VERSION); | ||
53 | + grub_fdt_set_size_dt_struct (fdt, sizeof (et->empty_node)); | ||
54 | + grub_fdt_set_totalsize (fdt, size); | ||
55 | + grub_fdt_set_magic (fdt, FDT_MAGIC); | ||
56 | + | ||
57 | + return 0; | ||
58 | +} | ||
59 | diff --git a/include/grub/fdt.h b/include/grub/fdt.h | ||
60 | index 2ad0536..06eec19 100644 | ||
61 | --- a/include/grub/fdt.h | ||
62 | +++ b/include/grub/fdt.h | ||
63 | @@ -82,6 +82,7 @@ typedef struct { | ||
64 | #define grub_fdt_set_size_dt_struct(fdt, value) \ | ||
65 | grub_fdt_set_header(fdt, size_dt_struct, value) | ||
66 | |||
67 | +int grub_fdt_create_empty_tree (void *fdt, unsigned int size); | ||
68 | int grub_fdt_check_header (void *fdt, unsigned int size); | ||
69 | int grub_fdt_find_subnode (const void *fdt, unsigned int parentoffset, | ||
70 | const char *name); | ||
71 | -- | ||
72 | 1.8.4.2 | ||
73 | |||