Lines Matching refs:fdt
58 static int fdt_sw_check_header_(void *fdt) in fdt_sw_check_header_() argument
60 if (fdt_magic(fdt) != FDT_SW_MAGIC) in fdt_sw_check_header_()
66 #define FDT_SW_CHECK_HEADER(fdt) \ argument
69 if ((err = fdt_sw_check_header_(fdt)) != 0) \
73 static void *fdt_grab_space_(void *fdt, size_t len) in fdt_grab_space_() argument
75 int offset = fdt_size_dt_struct(fdt); in fdt_grab_space_()
78 spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) in fdt_grab_space_()
79 - fdt_size_dt_strings(fdt); in fdt_grab_space_()
84 fdt_set_size_dt_struct(fdt, offset + len); in fdt_grab_space_()
85 return fdt_offset_ptr_w_(fdt, offset); in fdt_grab_space_()
90 void *fdt = buf; in fdt_create() local
97 fdt_set_magic(fdt, FDT_SW_MAGIC); in fdt_create()
98 fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION); in fdt_create()
99 fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION); in fdt_create()
100 fdt_set_totalsize(fdt, bufsize); in fdt_create()
102 fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header), in fdt_create()
104 fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt)); in fdt_create()
105 fdt_set_off_dt_strings(fdt, bufsize); in fdt_create()
110 int fdt_resize(void *fdt, void *buf, int bufsize) in fdt_resize() argument
115 FDT_SW_CHECK_HEADER(fdt); in fdt_resize()
117 headsize = fdt_off_dt_struct(fdt); in fdt_resize()
118 tailsize = fdt_size_dt_strings(fdt); in fdt_resize()
123 oldtail = (char *)fdt + fdt_totalsize(fdt) - tailsize; in fdt_resize()
128 if (buf <= fdt) { in fdt_resize()
129 memmove(buf, fdt, headsize); in fdt_resize()
133 memmove(buf, fdt, headsize); in fdt_resize()
142 int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size) in fdt_add_reservemap_entry() argument
147 FDT_SW_CHECK_HEADER(fdt); in fdt_add_reservemap_entry()
149 if (fdt_size_dt_struct(fdt)) in fdt_add_reservemap_entry()
152 offset = fdt_off_dt_struct(fdt); in fdt_add_reservemap_entry()
153 if ((offset + sizeof(*re)) > fdt_totalsize(fdt)) in fdt_add_reservemap_entry()
156 re = (struct fdt_reserve_entry *)((char *)fdt + offset); in fdt_add_reservemap_entry()
160 fdt_set_off_dt_struct(fdt, offset + sizeof(*re)); in fdt_add_reservemap_entry()
165 int fdt_finish_reservemap(void *fdt) in fdt_finish_reservemap() argument
167 return fdt_add_reservemap_entry(fdt, 0, 0); in fdt_finish_reservemap()
170 int fdt_begin_node(void *fdt, const char *name) in fdt_begin_node() argument
175 FDT_SW_CHECK_HEADER(fdt); in fdt_begin_node()
177 nh = fdt_grab_space_(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); in fdt_begin_node()
186 int fdt_end_node(void *fdt) in fdt_end_node() argument
190 FDT_SW_CHECK_HEADER(fdt); in fdt_end_node()
192 en = fdt_grab_space_(fdt, FDT_TAGSIZE); in fdt_end_node()
200 static int fdt_find_add_string_(void *fdt, const char *s) in fdt_find_add_string_() argument
202 char *strtab = (char *)fdt + fdt_totalsize(fdt); in fdt_find_add_string_()
204 int strtabsize = fdt_size_dt_strings(fdt); in fdt_find_add_string_()
214 struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_find_add_string_()
215 if (fdt_totalsize(fdt) + offset < struct_top) in fdt_find_add_string_()
219 fdt_set_size_dt_strings(fdt, strtabsize + len); in fdt_find_add_string_()
223 int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp) in fdt_property_placeholder() argument
228 FDT_SW_CHECK_HEADER(fdt); in fdt_property_placeholder()
230 nameoff = fdt_find_add_string_(fdt, name); in fdt_property_placeholder()
234 prop = fdt_grab_space_(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); in fdt_property_placeholder()
245 int fdt_property(void *fdt, const char *name, const void *val, int len) in fdt_property() argument
250 ret = fdt_property_placeholder(fdt, name, len, &ptr); in fdt_property()
257 int fdt_finish(void *fdt) in fdt_finish() argument
259 char *p = (char *)fdt; in fdt_finish()
265 FDT_SW_CHECK_HEADER(fdt); in fdt_finish()
268 end = fdt_grab_space_(fdt, sizeof(*end)); in fdt_finish()
274 oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt); in fdt_finish()
275 newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_finish()
276 memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt)); in fdt_finish()
277 fdt_set_off_dt_strings(fdt, newstroffset); in fdt_finish()
281 while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { in fdt_finish()
284 fdt_offset_ptr_w_(fdt, offset); in fdt_finish()
288 nameoff += fdt_size_dt_strings(fdt); in fdt_finish()
297 fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt)); in fdt_finish()
298 fdt_set_magic(fdt, FDT_MAGIC); in fdt_finish()