Lines Matching refs:node
27 static int read_addr(const struct upl *upl, ofnode node, const char *prop, in read_addr() argument
35 ret = ofnode_read_u32(node, prop, &val); in read_addr()
41 ret = ofnode_read_u64(node, prop, &val); in read_addr()
60 static int read_size(const struct upl *upl, ofnode node, const char *prop, in read_size() argument
68 ret = ofnode_read_u32(node, prop, &val); in read_size()
74 ret = ofnode_read_u64(node, prop, &val); in read_size()
93 static int ofnode_read_bitmask(ofnode node, const char *prop, in ofnode_read_bitmask() argument
103 ret = ofnode_read_string_list(node, prop, &list); in ofnode_read_bitmask()
122 ofnode_get_name(node), prop, str); in ofnode_read_bitmask()
140 static int ofnode_read_value(ofnode node, const char *prop, in ofnode_read_value() argument
147 str = ofnode_read_string(node, prop); in ofnode_read_value()
162 static int read_uint(ofnode node, const char *prop, uint *valp) in read_uint() argument
167 ret = ofnode_read_u32(node, prop, &val); in read_uint()
182 static int decode_root_props(struct upl *upl, ofnode node) in decode_root_props() argument
186 ret = read_uint(node, UPLP_ADDRESS_CELLS, &upl->addr_cells); in decode_root_props()
188 ret = read_uint(node, UPLP_SIZE_CELLS, &upl->size_cells); in decode_root_props()
204 ofnode node; in decode_upl_params() local
207 node = ofnode_find_subnode(options, UPLN_UPL_PARAMS); in decode_upl_params()
208 if (!ofnode_valid(node)) in decode_upl_params()
210 log_debug("decoding '%s'\n", ofnode_get_name(node)); in decode_upl_params()
212 ret = read_addr(upl, node, UPLP_SMBIOS, &upl->smbios); in decode_upl_params()
215 ret = read_addr(upl, node, UPLP_ACPI, &upl->acpi); in decode_upl_params()
218 ret = ofnode_read_bitmask(node, UPLP_BOOTMODE, bootmode_names, in decode_upl_params()
222 ret = read_uint(node, UPLP_ADDR_WIDTH, &upl->addr_width); in decode_upl_params()
225 ret = read_uint(node, UPLP_ACPI_NVS_SIZE, &upl->acpi_nvs_size); in decode_upl_params()
240 ofnode node, images; in decode_upl_images() local
254 ofnode_for_each_subnode(node, images) { in decode_upl_images()
257 ret = read_addr(upl, node, UPLP_LOAD, &img.load); in decode_upl_images()
259 ret = read_size(upl, node, UPLP_SIZE, &img.size); in decode_upl_images()
261 ret = read_uint(node, UPLP_OFFSET, &img.offset); in decode_upl_images()
262 img.description = ofnode_read_string(node, UPLP_DESCRIPTION); in decode_upl_images()
321 static bool node_matches_at(ofnode node, const char *base) in node_matches_at() argument
323 const char *name = ofnode_get_name(node); in node_matches_at()
336 static int decode_upl_memory_node(struct upl *upl, ofnode node) in decode_upl_memory_node() argument
342 buf = ofnode_read_prop(node, UPLP_REG, &size); in decode_upl_memory_node()
345 ofnode_get_name(node), UPLP_REG); in decode_upl_memory_node()
351 mem.hotpluggable = ofnode_read_bool(node, UPLP_HOTPLUGGABLE); in decode_upl_memory_node()
367 ofnode node; in decode_upl_memmap() local
369 ofnode_for_each_subnode(node, root) { in decode_upl_memmap()
374 memmap.name = ofnode_get_name(node); in decode_upl_memmap()
377 buf = ofnode_read_prop(node, UPLP_REG, &size); in decode_upl_memmap()
380 ofnode_get_name(node), UPLP_REG); in decode_upl_memmap()
387 ret = ofnode_read_bitmask(node, UPLP_USAGE, usage_names, in decode_upl_memmap()
408 ofnode node; in decode_upl_memres() local
410 ofnode_for_each_subnode(node, root) { in decode_upl_memres()
415 log_debug("decoding '%s'\n", ofnode_get_name(node)); in decode_upl_memres()
416 memres.name = ofnode_get_name(node); in decode_upl_memres()
418 buf = ofnode_read_prop(node, UPLP_REG, &size); in decode_upl_memres()
421 ofnode_get_name(node)); in decode_upl_memres()
428 memres.no_map = ofnode_read_bool(node, UPLP_NO_MAP); in decode_upl_memres()
444 static int decode_upl_serial(struct upl *upl, ofnode node) in decode_upl_serial() argument
451 ser->compatible = ofnode_read_string(node, UPLP_COMPATIBLE); in decode_upl_serial()
454 ofnode_get_name(node)); in decode_upl_serial()
457 ret = read_uint(node, UPLP_CLOCK_FREQUENCY, &ser->clock_frequency); in decode_upl_serial()
459 ret = read_uint(node, UPLP_CURRENT_SPEED, &ser->current_speed); in decode_upl_serial()
463 buf = ofnode_read_prop(node, UPLP_REG, &size); in decode_upl_serial()
466 ofnode_get_name(node)); in decode_upl_serial()
478 read_uint(node, UPLP_REG_IO_SHIFT, &ser->reg_io_shift); in decode_upl_serial()
479 read_uint(node, UPLP_REG_OFFSET, &ser->reg_offset); in decode_upl_serial()
480 read_uint(node, UPLP_REG_IO_WIDTH, &ser->reg_io_width); in decode_upl_serial()
481 read_addr(upl, node, UPLP_VIRTUAL_REG, &ser->virtual_reg); in decode_upl_serial()
482 ret = ofnode_read_value(node, UPLP_ACCESS_TYPE, access_types, in decode_upl_serial()
497 static int decode_upl_graphics(struct upl *upl, ofnode node) in decode_upl_graphics() argument
504 compat = ofnode_read_string(node, UPLP_COMPATIBLE); in decode_upl_graphics()
507 ofnode_get_name(node)); in decode_upl_graphics()
512 ofnode_get_name(node), compat); in decode_upl_graphics()
516 buf = ofnode_read_prop(node, UPLP_REG, &size); in decode_upl_graphics()
519 ofnode_get_name(node)); in decode_upl_graphics()
527 ret = read_uint(node, UPLP_WIDTH, &gra->width); in decode_upl_graphics()
529 ret = read_uint(node, UPLP_HEIGHT, &gra->height); in decode_upl_graphics()
531 ret = read_uint(node, UPLP_STRIDE, &gra->stride); in decode_upl_graphics()
533 ret = ofnode_read_value(node, UPLP_GRAPHICS_FORMAT, in decode_upl_graphics()
546 ofnode root, node; in upl_read_handoff() local
559 ofnode_for_each_subnode(node, root) { in upl_read_handoff()
560 const char *name = ofnode_get_name(node); in upl_read_handoff()
564 ret = decode_upl_params(upl, node); in upl_read_handoff()
568 ret = decode_upl_images(upl, node); in upl_read_handoff()
569 } else if (node_matches_at(node, UPLN_MEMORY)) { in upl_read_handoff()
570 ret = decode_upl_memory_node(upl, node); in upl_read_handoff()
572 ret = decode_upl_memmap(upl, node); in upl_read_handoff()
574 ret = decode_upl_memres(upl, node); in upl_read_handoff()
575 } else if (node_matches_at(node, UPLN_SERIAL)) { in upl_read_handoff()
576 ret = decode_upl_serial(upl, node); in upl_read_handoff()
577 } else if (node_matches_at(node, UPLN_GRAPHICS)) { in upl_read_handoff()
578 ret = decode_upl_graphics(upl, node); in upl_read_handoff()