Lines Matching refs:fdt

13 static int fdt_sw_probe_(void *fdt)  in fdt_sw_probe_()  argument
16 if (fdt_magic(fdt) == FDT_MAGIC) in fdt_sw_probe_()
18 else if (fdt_magic(fdt) != FDT_SW_MAGIC) in fdt_sw_probe_()
25 #define FDT_SW_PROBE(fdt) \ argument
28 if ((err = fdt_sw_probe_(fdt)) != 0) \
38 static int fdt_sw_probe_memrsv_(void *fdt) in fdt_sw_probe_memrsv_() argument
40 int err = fdt_sw_probe_(fdt); in fdt_sw_probe_memrsv_()
44 if (!can_assume(VALID_INPUT) && fdt_off_dt_strings(fdt) != 0) in fdt_sw_probe_memrsv_()
49 #define FDT_SW_PROBE_MEMRSV(fdt) \ argument
52 if ((err = fdt_sw_probe_memrsv_(fdt)) != 0) \
64 static int fdt_sw_probe_struct_(void *fdt) in fdt_sw_probe_struct_() argument
66 int err = fdt_sw_probe_(fdt); in fdt_sw_probe_struct_()
71 fdt_off_dt_strings(fdt) != fdt_totalsize(fdt)) in fdt_sw_probe_struct_()
76 #define FDT_SW_PROBE_STRUCT(fdt) \ argument
79 if ((err = fdt_sw_probe_struct_(fdt)) != 0) \
83 static inline uint32_t sw_flags(void *fdt) in sw_flags() argument
86 return fdt_last_comp_version(fdt); in sw_flags()
94 static void *fdt_grab_space_(void *fdt, size_t len) in fdt_grab_space_() argument
96 unsigned int offset = fdt_size_dt_struct(fdt); in fdt_grab_space_()
99 spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) in fdt_grab_space_()
100 - fdt_size_dt_strings(fdt); in fdt_grab_space_()
105 fdt_set_size_dt_struct(fdt, offset + len); in fdt_grab_space_()
106 return fdt_offset_ptr_w_(fdt, offset); in fdt_grab_space_()
113 void *fdt = buf; in fdt_create_with_flags() local
130 fdt_set_magic(fdt, FDT_SW_MAGIC); in fdt_create_with_flags()
131 fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION); in fdt_create_with_flags()
132 fdt_set_last_comp_version(fdt, flags); in fdt_create_with_flags()
134 fdt_set_totalsize(fdt, bufsize); in fdt_create_with_flags()
136 fdt_set_off_mem_rsvmap(fdt, hdrsize); in fdt_create_with_flags()
137 fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt)); in fdt_create_with_flags()
138 fdt_set_off_dt_strings(fdt, 0); in fdt_create_with_flags()
148 int fdt_resize(void *fdt, void *buf, int bufsize) in fdt_resize() argument
153 FDT_SW_PROBE(fdt); in fdt_resize()
158 headsize = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_resize()
159 tailsize = fdt_size_dt_strings(fdt); in fdt_resize()
162 headsize + tailsize > fdt_totalsize(fdt)) in fdt_resize()
168 oldtail = (char *)fdt + fdt_totalsize(fdt) - tailsize; in fdt_resize()
173 if (buf <= fdt) { in fdt_resize()
174 memmove(buf, fdt, headsize); in fdt_resize()
178 memmove(buf, fdt, headsize); in fdt_resize()
188 int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size) in fdt_add_reservemap_entry() argument
193 FDT_SW_PROBE_MEMRSV(fdt); in fdt_add_reservemap_entry()
195 offset = fdt_off_dt_struct(fdt); in fdt_add_reservemap_entry()
196 if ((offset + sizeof(*re)) > fdt_totalsize(fdt)) in fdt_add_reservemap_entry()
199 re = (struct fdt_reserve_entry *)((char *)fdt + offset); in fdt_add_reservemap_entry()
203 fdt_set_off_dt_struct(fdt, offset + sizeof(*re)); in fdt_add_reservemap_entry()
208 int fdt_finish_reservemap(void *fdt) in fdt_finish_reservemap() argument
210 int err = fdt_add_reservemap_entry(fdt, 0, 0); in fdt_finish_reservemap()
215 fdt_set_off_dt_strings(fdt, fdt_totalsize(fdt)); in fdt_finish_reservemap()
219 int fdt_begin_node(void *fdt, const char *name) in fdt_begin_node() argument
224 FDT_SW_PROBE_STRUCT(fdt); in fdt_begin_node()
227 nh = fdt_grab_space_(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); in fdt_begin_node()
236 int fdt_end_node(void *fdt) in fdt_end_node() argument
240 FDT_SW_PROBE_STRUCT(fdt); in fdt_end_node()
242 en = fdt_grab_space_(fdt, FDT_TAGSIZE); in fdt_end_node()
250 static int fdt_add_string_(void *fdt, const char *s) in fdt_add_string_() argument
252 char *strtab = (char *)fdt + fdt_totalsize(fdt); in fdt_add_string_()
253 unsigned int strtabsize = fdt_size_dt_strings(fdt); in fdt_add_string_()
258 struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_add_string_()
259 if (fdt_totalsize(fdt) - offset < struct_top) in fdt_add_string_()
263 fdt_set_size_dt_strings(fdt, strtabsize + len); in fdt_add_string_()
268 static void fdt_del_last_string_(void *fdt, const char *s) in fdt_del_last_string_() argument
270 int strtabsize = fdt_size_dt_strings(fdt); in fdt_del_last_string_()
273 fdt_set_size_dt_strings(fdt, strtabsize - len); in fdt_del_last_string_()
276 static int fdt_find_add_string_(void *fdt, const char *s, int *allocated) in fdt_find_add_string_() argument
278 char *strtab = (char *)fdt + fdt_totalsize(fdt); in fdt_find_add_string_()
279 int strtabsize = fdt_size_dt_strings(fdt); in fdt_find_add_string_()
290 return fdt_add_string_(fdt, s); in fdt_find_add_string_()
293 int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp) in fdt_property_placeholder() argument
299 FDT_SW_PROBE_STRUCT(fdt); in fdt_property_placeholder()
302 if (sw_flags(fdt) & FDT_CREATE_FLAG_NO_NAME_DEDUP) { in fdt_property_placeholder()
304 nameoff = fdt_add_string_(fdt, name); in fdt_property_placeholder()
306 nameoff = fdt_find_add_string_(fdt, name, &allocated); in fdt_property_placeholder()
311 prop = fdt_grab_space_(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); in fdt_property_placeholder()
314 fdt_del_last_string_(fdt, name); in fdt_property_placeholder()
325 int fdt_property(void *fdt, const char *name, const void *val, int len) in fdt_property() argument
330 ret = fdt_property_placeholder(fdt, name, len, &ptr); in fdt_property()
337 int fdt_finish(void *fdt) in fdt_finish() argument
339 char *p = (char *)fdt; in fdt_finish()
345 FDT_SW_PROBE_STRUCT(fdt); in fdt_finish()
348 end = fdt_grab_space_(fdt, sizeof(*end)); in fdt_finish()
354 oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt); in fdt_finish()
355 newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_finish()
356 memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt)); in fdt_finish()
357 fdt_set_off_dt_strings(fdt, newstroffset); in fdt_finish()
361 while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { in fdt_finish()
364 fdt_offset_ptr_w_(fdt, offset); in fdt_finish()
368 nameoff += fdt_size_dt_strings(fdt); in fdt_finish()
377 fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt)); in fdt_finish()
380 fdt_set_last_comp_version(fdt, FDT_LAST_COMPATIBLE_VERSION); in fdt_finish()
381 fdt_set_magic(fdt, FDT_MAGIC); in fdt_finish()