Lines Matching refs:fdt

56 static int _fdt_sw_check_header(void *fdt)  in _fdt_sw_check_header()  argument
58 if (fdt_magic(fdt) != FDT_SW_MAGIC) in _fdt_sw_check_header()
64 #define FDT_SW_CHECK_HEADER(fdt) \ argument
67 if ((err = _fdt_sw_check_header(fdt)) != 0) \
71 static void *_fdt_grab_space(void *fdt, size_t len) in _fdt_grab_space() argument
73 int offset = fdt_size_dt_struct(fdt); in _fdt_grab_space()
76 spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) in _fdt_grab_space()
77 - fdt_size_dt_strings(fdt); in _fdt_grab_space()
82 fdt_set_size_dt_struct(fdt, offset + len); in _fdt_grab_space()
83 return _fdt_offset_ptr_w(fdt, offset); in _fdt_grab_space()
88 void *fdt = buf; in fdt_create() local
95 fdt_set_magic(fdt, FDT_SW_MAGIC); in fdt_create()
96 fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION); in fdt_create()
97 fdt_set_last_comp_version(fdt, FDT_FIRST_SUPPORTED_VERSION); in fdt_create()
98 fdt_set_totalsize(fdt, bufsize); in fdt_create()
100 fdt_set_off_mem_rsvmap(fdt, FDT_ALIGN(sizeof(struct fdt_header), in fdt_create()
102 fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt)); in fdt_create()
103 fdt_set_off_dt_strings(fdt, bufsize); in fdt_create()
108 int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size) in fdt_add_reservemap_entry() argument
113 FDT_SW_CHECK_HEADER(fdt); in fdt_add_reservemap_entry()
115 if (fdt_size_dt_struct(fdt)) in fdt_add_reservemap_entry()
118 offset = fdt_off_dt_struct(fdt); in fdt_add_reservemap_entry()
119 if ((offset + sizeof(*re)) > fdt_totalsize(fdt)) in fdt_add_reservemap_entry()
122 re = (struct fdt_reserve_entry *)((char *)fdt + offset); in fdt_add_reservemap_entry()
126 fdt_set_off_dt_struct(fdt, offset + sizeof(*re)); in fdt_add_reservemap_entry()
131 int fdt_finish_reservemap(void *fdt) in fdt_finish_reservemap() argument
133 return fdt_add_reservemap_entry(fdt, 0, 0); in fdt_finish_reservemap()
136 int fdt_begin_node(void *fdt, const char *name) in fdt_begin_node() argument
141 FDT_SW_CHECK_HEADER(fdt); in fdt_begin_node()
143 nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); in fdt_begin_node()
152 int fdt_end_node(void *fdt) in fdt_end_node() argument
156 FDT_SW_CHECK_HEADER(fdt); in fdt_end_node()
158 en = _fdt_grab_space(fdt, FDT_TAGSIZE); in fdt_end_node()
166 static int _fdt_find_add_string(void *fdt, const char *s) in _fdt_find_add_string() argument
168 char *strtab = (char *)fdt + fdt_totalsize(fdt); in _fdt_find_add_string()
170 int strtabsize = fdt_size_dt_strings(fdt); in _fdt_find_add_string()
180 struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in _fdt_find_add_string()
181 if (fdt_totalsize(fdt) + offset < struct_top) in _fdt_find_add_string()
185 fdt_set_size_dt_strings(fdt, strtabsize + len); in _fdt_find_add_string()
189 int fdt_property(void *fdt, const char *name, const void *val, int len) in fdt_property() argument
194 FDT_SW_CHECK_HEADER(fdt); in fdt_property()
196 nameoff = _fdt_find_add_string(fdt, name); in fdt_property()
200 prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); in fdt_property()
211 int fdt_finish(void *fdt) in fdt_finish() argument
213 char *p = (char *)fdt; in fdt_finish()
219 FDT_SW_CHECK_HEADER(fdt); in fdt_finish()
222 end = _fdt_grab_space(fdt, sizeof(*end)); in fdt_finish()
228 oldstroffset = fdt_totalsize(fdt) - fdt_size_dt_strings(fdt); in fdt_finish()
229 newstroffset = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); in fdt_finish()
230 memmove(p + newstroffset, p + oldstroffset, fdt_size_dt_strings(fdt)); in fdt_finish()
231 fdt_set_off_dt_strings(fdt, newstroffset); in fdt_finish()
235 while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { in fdt_finish()
238 _fdt_offset_ptr_w(fdt, offset); in fdt_finish()
242 nameoff += fdt_size_dt_strings(fdt); in fdt_finish()
251 fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt)); in fdt_finish()
252 fdt_set_magic(fdt, FDT_MAGIC); in fdt_finish()