Lines Matching refs:fdt
13 static int fdt_sw_probe_(void *fdt) in fdt_sw_probe_() argument
15 if (fdt_magic(fdt) == FDT_MAGIC) in fdt_sw_probe_()
17 else if (fdt_magic(fdt) != FDT_SW_MAGIC) in fdt_sw_probe_()
22 #define FDT_SW_PROBE(fdt) \ argument
25 if ((err = fdt_sw_probe_(fdt)) != 0) \
35 static int fdt_sw_probe_memrsv_(void *fdt) in fdt_sw_probe_memrsv_() argument
37 int err = fdt_sw_probe_(fdt); in fdt_sw_probe_memrsv_()
41 if (fdt_off_dt_strings(fdt) != 0) in fdt_sw_probe_memrsv_()
46 #define FDT_SW_PROBE_MEMRSV(fdt) \ argument
49 if ((err = fdt_sw_probe_memrsv_(fdt)) != 0) \
61 static int fdt_sw_probe_struct_(void *fdt) in fdt_sw_probe_struct_() argument
63 int err = fdt_sw_probe_(fdt); in fdt_sw_probe_struct_()
67 if (fdt_off_dt_strings(fdt) != fdt_totalsize(fdt)) in fdt_sw_probe_struct_()
72 #define FDT_SW_PROBE_STRUCT(fdt) \ argument
75 if ((err = fdt_sw_probe_struct_(fdt)) != 0) \
79 static inline uint32_t sw_flags(void *fdt) in sw_flags() argument
82 return fdt_last_comp_version(fdt); in sw_flags()
90 static void *fdt_grab_space_(void *fdt, size_t len) in fdt_grab_space_() argument
92 int offset = fdt_size_dt_struct(fdt); in fdt_grab_space_()
95 spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) in fdt_grab_space_()
96 - fdt_size_dt_strings(fdt); in fdt_grab_space_()
101 fdt_set_size_dt_struct(fdt, offset + len); in fdt_grab_space_()
102 return fdt_offset_ptr_w_(fdt, offset); in fdt_grab_space_()
109 void *fdt = buf; in fdt_create_with_flags() local
126 fdt_set_magic(fdt, FDT_SW_MAGIC); in fdt_create_with_flags()
127 fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION); in fdt_create_with_flags()
128 fdt_set_last_comp_version(fdt, flags); in fdt_create_with_flags()
130 fdt_set_totalsize(fdt, bufsize); in fdt_create_with_flags()
132 fdt_set_off_mem_rsvmap(fdt, hdrsize); in fdt_create_with_flags()
133 fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt)); in fdt_create_with_flags()
134 fdt_set_off_dt_strings(fdt, 0); in fdt_create_with_flags()
144 int fdt_resize(void *fdt, void *buf, int bufsize) in fdt_resize() argument
149 FDT_SW_PROBE(fdt); in fdt_resize()
151 headsize = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_resize()
152 tailsize = fdt_size_dt_strings(fdt); in fdt_resize()
154 if ((headsize + tailsize) > fdt_totalsize(fdt)) in fdt_resize()
160 oldtail = (char *)fdt + fdt_totalsize(fdt) - tailsize; in fdt_resize()
165 if (buf <= fdt) { in fdt_resize()
166 memmove(buf, fdt, headsize); in fdt_resize()
170 memmove(buf, fdt, headsize); in fdt_resize()
180 int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size) in fdt_add_reservemap_entry() argument
185 FDT_SW_PROBE_MEMRSV(fdt); in fdt_add_reservemap_entry()
187 offset = fdt_off_dt_struct(fdt); in fdt_add_reservemap_entry()
188 if ((offset + sizeof(*re)) > fdt_totalsize(fdt)) in fdt_add_reservemap_entry()
191 re = (struct fdt_reserve_entry *)((char *)fdt + offset); in fdt_add_reservemap_entry()
195 fdt_set_off_dt_struct(fdt, offset + sizeof(*re)); in fdt_add_reservemap_entry()
200 int fdt_finish_reservemap(void *fdt) in fdt_finish_reservemap() argument
202 int err = fdt_add_reservemap_entry(fdt, 0, 0); in fdt_finish_reservemap()
207 fdt_set_off_dt_strings(fdt, fdt_totalsize(fdt)); in fdt_finish_reservemap()
211 int fdt_begin_node(void *fdt, const char *name) in fdt_begin_node() argument
216 FDT_SW_PROBE_STRUCT(fdt); in fdt_begin_node()
219 nh = fdt_grab_space_(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); in fdt_begin_node()
228 int fdt_end_node(void *fdt) in fdt_end_node() argument
232 FDT_SW_PROBE_STRUCT(fdt); in fdt_end_node()
234 en = fdt_grab_space_(fdt, FDT_TAGSIZE); in fdt_end_node()
242 static int fdt_add_string_(void *fdt, const char *s) in fdt_add_string_() argument
244 char *strtab = (char *)fdt + fdt_totalsize(fdt); in fdt_add_string_()
245 int strtabsize = fdt_size_dt_strings(fdt); in fdt_add_string_()
250 struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_add_string_()
251 if (fdt_totalsize(fdt) + offset < struct_top) in fdt_add_string_()
255 fdt_set_size_dt_strings(fdt, strtabsize + len); in fdt_add_string_()
260 static void fdt_del_last_string_(void *fdt, const char *s) in fdt_del_last_string_() argument
262 int strtabsize = fdt_size_dt_strings(fdt); in fdt_del_last_string_()
265 fdt_set_size_dt_strings(fdt, strtabsize - len); in fdt_del_last_string_()
268 static int fdt_find_add_string_(void *fdt, const char *s, int *allocated) in fdt_find_add_string_() argument
270 char *strtab = (char *)fdt + fdt_totalsize(fdt); in fdt_find_add_string_()
271 int strtabsize = fdt_size_dt_strings(fdt); in fdt_find_add_string_()
282 return fdt_add_string_(fdt, s); in fdt_find_add_string_()
285 int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp) in fdt_property_placeholder() argument
291 FDT_SW_PROBE_STRUCT(fdt); in fdt_property_placeholder()
294 if (sw_flags(fdt) & FDT_CREATE_FLAG_NO_NAME_DEDUP) { in fdt_property_placeholder()
296 nameoff = fdt_add_string_(fdt, name); in fdt_property_placeholder()
298 nameoff = fdt_find_add_string_(fdt, name, &allocated); in fdt_property_placeholder()
303 prop = fdt_grab_space_(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); in fdt_property_placeholder()
306 fdt_del_last_string_(fdt, name); in fdt_property_placeholder()
317 int fdt_property(void *fdt, const char *name, const void *val, int len) in fdt_property() argument
322 ret = fdt_property_placeholder(fdt, name, len, &ptr); in fdt_property()
329 int fdt_finish(void *fdt) in fdt_finish() argument
331 char *p = (char *)fdt; in fdt_finish()
337 FDT_SW_PROBE_STRUCT(fdt); in fdt_finish()
340 end = fdt_grab_space_(fdt, sizeof(*end)); in fdt_finish()
346 oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt); in fdt_finish()
347 newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_finish()
348 memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt)); in fdt_finish()
349 fdt_set_off_dt_strings(fdt, newstroffset); in fdt_finish()
353 while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { in fdt_finish()
356 fdt_offset_ptr_w_(fdt, offset); in fdt_finish()
360 nameoff += fdt_size_dt_strings(fdt); in fdt_finish()
369 fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt)); in fdt_finish()
372 fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION); in fdt_finish()
373 fdt_set_magic(fdt, FDT_MAGIC); in fdt_finish()