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(void *fdt, const char *name, const void *val, int len) in fdt_property() argument
228 FDT_SW_CHECK_HEADER(fdt); in fdt_property()
230 nameoff = _fdt_find_add_string(fdt, name); in fdt_property()
234 prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); in fdt_property()
245 int fdt_finish(void *fdt) in fdt_finish() argument
247 char *p = (char *)fdt; in fdt_finish()
253 FDT_SW_CHECK_HEADER(fdt); in fdt_finish()
256 end = _fdt_grab_space(fdt, sizeof(*end)); in fdt_finish()
262 oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt); in fdt_finish()
263 newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_finish()
264 memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt)); in fdt_finish()
265 fdt_set_off_dt_strings(fdt, newstroffset); in fdt_finish()
269 while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { in fdt_finish()
272 _fdt_offset_ptr_w(fdt, offset); in fdt_finish()
276 nameoff += fdt_size_dt_strings(fdt); in fdt_finish()
285 fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt)); in fdt_finish()
286 fdt_set_magic(fdt, FDT_MAGIC); in fdt_finish()