summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/grub/grub/0001-fdt-add-grub_fdt_create_empty_tree-function.patch
diff options
context:
space:
mode:
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.patch73
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 @@
1From b3417ec69ff7d52379a8f2cb291dbecccdab684f Mon Sep 17 00:00:00 2001
2From: Leif Lindholm <leif.lindholm@linaro.org>
3Date: Wed, 4 Dec 2013 13:09:21 +0000
4Subject: [PATCH 1/2] fdt: add grub_fdt_create_empty_tree() function
5
6Signed-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
12diff --git a/grub-core/lib/fdt.c b/grub-core/lib/fdt.c
13index 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+}
59diff --git a/include/grub/fdt.h b/include/grub/fdt.h
60index 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--
721.8.4.2
73