Lines Matching full:blob

103  * @fdt: pointer to the device tree blob
417 int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int banks) in fdt_fixup_memory_banks() argument
430 err = fdt_check_header(blob); in fdt_fixup_memory_banks()
437 nodeoffset = fdt_find_or_add_subnode(blob, 0, "memory"); in fdt_fixup_memory_banks()
441 err = fdt_setprop(blob, nodeoffset, "device_type", "memory", in fdt_fixup_memory_banks()
465 len = fdt_pack_reg(blob, tmp, start, size, banks); in fdt_fixup_memory_banks()
467 err = fdt_setprop(blob, nodeoffset, "reg", tmp, len); in fdt_fixup_memory_banks()
477 int fdt_fixup_memory(void *blob, u64 start, u64 size) in fdt_fixup_memory() argument
479 return fdt_fixup_memory_banks(blob, &start, &size, 1); in fdt_fixup_memory()
560 int fdt_record_loadable(void *blob, u32 index, const char *name, in fdt_record_loadable() argument
566 err = fdt_check_header(blob); in fdt_record_loadable()
573 node = fdt_find_or_add_subnode(blob, 0, "fit-images"); in fdt_record_loadable()
578 node = fdt_find_or_add_subnode(blob, node, name); in fdt_record_loadable()
587 fdt_setprop_u32(blob, node, "load-addr", load_addr); in fdt_record_loadable()
589 fdt_setprop_u32(blob, node, "entry-point", entry_point); in fdt_record_loadable()
590 fdt_setprop_u32(blob, node, "size", size); in fdt_record_loadable()
592 fdt_setprop_string(blob, node, "type", type); in fdt_record_loadable()
594 fdt_setprop_string(blob, node, "os", os); in fdt_record_loadable()
600 int fdt_shrink_to_minimum(void *blob, uint extrasize) in fdt_shrink_to_minimum() argument
607 if (!blob) in fdt_shrink_to_minimum()
610 total = fdt_num_mem_rsv(blob); in fdt_shrink_to_minimum()
612 fdt_get_mem_rsv(blob, i, &addr, &size); in fdt_shrink_to_minimum()
613 if (addr == (uintptr_t)blob) { in fdt_shrink_to_minimum()
614 fdt_del_mem_rsv(blob, i); in fdt_shrink_to_minimum()
625 actualsize = fdt_off_dt_strings(blob) + in fdt_shrink_to_minimum()
626 fdt_size_dt_strings(blob) + 5 * sizeof(struct fdt_reserve_entry); in fdt_shrink_to_minimum()
630 actualsize = ALIGN(actualsize + ((uintptr_t)blob & 0xfff), 0x1000); in fdt_shrink_to_minimum()
631 actualsize = actualsize - ((uintptr_t)blob & 0xfff); in fdt_shrink_to_minimum()
634 fdt_set_totalsize(blob, actualsize); in fdt_shrink_to_minimum()
637 ret = fdt_add_mem_rsv(blob, map_to_sysmem(blob), actualsize); in fdt_shrink_to_minimum()
652 int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose) { in fdt_pci_dma_ranges() argument
659 addrcell = fdt_getprop_u32_default(blob, "/", "#address-cells", 1); in fdt_pci_dma_ranges()
660 sizecell = fdt_getprop_u32_default(blob, "/", "#size-cells", 1); in fdt_pci_dma_ranges()
707 fdt_setprop(blob, phb_off, "dma-ranges", &dma_ranges[0], len*4); in fdt_pci_dma_ranges()
732 static int fdt_del_subnodes(const void *blob, int parent_offset) in fdt_del_subnodes() argument
737 for (ndepth = 0, off = fdt_next_node(blob, parent_offset, &ndepth); in fdt_del_subnodes()
739 off = fdt_next_node(blob, off, &ndepth)) { in fdt_del_subnodes()
742 fdt_get_name(blob, off, 0), off); in fdt_del_subnodes()
743 ret = fdt_del_node((void *)blob, off); in fdt_del_subnodes()
757 static int fdt_del_partitions(void *blob, int parent_offset) in fdt_del_partitions() argument
764 off = fdt_next_node(blob, parent_offset, &ndepth); in fdt_del_partitions()
766 prop = fdt_getprop(blob, off, "label", NULL); in fdt_del_partitions()
772 return fdt_del_partitions(blob, off); in fdt_del_partitions()
774 ret = fdt_del_subnodes(blob, parent_offset); in fdt_del_partitions()
785 int fdt_node_set_part_info(void *blob, int parent_offset, in fdt_node_set_part_info() argument
795 ret = fdt_del_partitions(blob, parent_offset); in fdt_node_set_part_info()
803 off = fdt_next_node(blob, parent_offset, &ndepth); in fdt_node_set_part_info()
819 ret = fdt_add_subnode(blob, parent_offset, buf); in fdt_node_set_part_info()
821 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
836 ret = fdt_setprop(blob, newoff, "read_only", NULL, 0); in fdt_node_set_part_info()
838 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
850 ret = fdt_setprop(blob, newoff, "reg", &cell, sizeof(cell)); in fdt_node_set_part_info()
852 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
861 ret = fdt_setprop_string(blob, newoff, "label", part->name); in fdt_node_set_part_info()
863 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
875 printf("Can't increase blob size: %s\n", fdt_strerror(ret)); in fdt_node_set_part_info()
894 * fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
896 void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info, in fdt_fixup_mtdparts() argument
908 noff = fdt_node_offset_by_compatible(blob, -1, in fdt_fixup_mtdparts()
912 fdt_get_name(blob, noff, 0), in fdt_fixup_mtdparts()
916 if (fdt_node_set_part_info(blob, noff, dev)) in fdt_fixup_mtdparts()
921 noff = fdt_node_offset_by_compatible(blob, noff, in fdt_fixup_mtdparts()
928 void fdt_del_node_and_alias(void *blob, const char *alias) in fdt_del_node_and_alias() argument
930 int off = fdt_path_offset(blob, alias); in fdt_del_node_and_alias()
935 fdt_del_node(blob, off); in fdt_del_node_and_alias()
937 off = fdt_path_offset(blob, "/aliases"); in fdt_del_node_and_alias()
938 fdt_delprop(blob, off, alias); in fdt_del_node_and_alias()
966 * parentoffset in the FDT blob corresponds to a bus
970 * is at parentoffset in the FDT blob will require to
993 int (*match)(const void *blob, int parentoffset);
994 void (*count_cells)(const void *blob, int parentoffset,
1002 void fdt_support_default_count_cells(const void *blob, int parentoffset, in fdt_support_default_count_cells() argument
1008 *addrc = fdt_address_cells(blob, parentoffset); in fdt_support_default_count_cells()
1011 prop = fdt_getprop(blob, parentoffset, "#size-cells", NULL); in fdt_support_default_count_cells()
1050 static int of_bus_isa_match(const void *blob, int parentoffset) in of_bus_isa_match() argument
1054 name = fdt_get_name(blob, parentoffset, NULL); in of_bus_isa_match()
1061 static void of_bus_isa_count_cells(const void *blob, int parentoffset, in of_bus_isa_count_cells() argument
1120 static struct of_bus *of_match_bus(const void *blob, int parentoffset) in of_match_bus() argument
1128 if (!bus->match || bus->match(blob, parentoffset)) in of_match_bus()
1142 static int of_translate_one(const void *blob, int parent, struct of_bus *bus, in of_translate_one() argument
1163 ranges = fdt_getprop(blob, parent, rprop, &rlen); in of_translate_one()
1205 static u64 __of_translate_address(const void *blob, int node_offset, in __of_translate_address() argument
1215 fdt_get_name(blob, node_offset, NULL)); in __of_translate_address()
1218 parent = fdt_parent_offset(blob, node_offset); in __of_translate_address()
1221 bus = of_match_bus(blob, parent); in __of_translate_address()
1224 bus->count_cells(blob, parent, &na, &ns); in __of_translate_address()
1227 fdt_get_name(blob, node_offset, NULL)); in __of_translate_address()
1233 bus->name, na, ns, fdt_get_name(blob, parent, NULL)); in __of_translate_address()
1240 parent = fdt_parent_offset(blob, node_offset); in __of_translate_address()
1250 pbus = of_match_bus(blob, parent); in __of_translate_address()
1251 pbus->count_cells(blob, parent, &pna, &pns); in __of_translate_address()
1254 fdt_get_name(blob, node_offset, NULL)); in __of_translate_address()
1259 pbus->name, pna, pns, fdt_get_name(blob, parent, NULL)); in __of_translate_address()
1262 if (of_translate_one(blob, node_offset, bus, pbus, in __of_translate_address()
1278 u64 fdt_translate_address(const void *blob, int node_offset, in fdt_translate_address() argument
1281 return __of_translate_address(blob, node_offset, in_addr, "ranges"); in fdt_translate_address()
1288 * @blob: ptr to device tree
1293 int fdt_node_offset_by_compat_reg(void *blob, const char *compat, in fdt_node_offset_by_compat_reg() argument
1296 int len, off = fdt_node_offset_by_compatible(blob, -1, compat); in fdt_node_offset_by_compat_reg()
1298 const fdt32_t *reg = fdt_getprop(blob, off, "reg", &len); in fdt_node_offset_by_compat_reg()
1300 if (compat_off == fdt_translate_address(blob, off, reg)) in fdt_node_offset_by_compat_reg()
1303 off = fdt_node_offset_by_compatible(blob, off, compat); in fdt_node_offset_by_compat_reg()
1312 * @blob: ptr to device tree
1314 int fdt_alloc_phandle(void *blob) in fdt_alloc_phandle() argument
1319 for (offset = fdt_next_node(blob, -1, NULL); offset >= 0; in fdt_alloc_phandle()
1320 offset = fdt_next_node(blob, offset, NULL)) { in fdt_alloc_phandle()
1321 phandle = max(phandle, fdt_get_phandle(blob, offset)); in fdt_alloc_phandle()
1453 int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf) in fdt_add_edid() argument
1458 noff = fdt_node_offset_by_compatible(blob, -1, compat); in fdt_add_edid()
1460 debug("%s: %s\n", fdt_get_name(blob, noff, 0), compat); in fdt_add_edid()
1462 ret = fdt_setprop(blob, noff, "edid", edid_buf, 128); in fdt_add_edid()
1464 ret = fdt_increase_size(blob, 512); in fdt_add_edid()
1476 printf("Can't increase blob size: %s\n", fdt_strerror(ret)); in fdt_add_edid()
1701 int fdt_fixup_display(void *blob, const char *path, const char *display) in fdt_fixup_display() argument
1708 toff = fdt_path_offset(blob, path); in fdt_fixup_display()
1710 toff = fdt_subnode_offset(blob, toff, "display-timings"); in fdt_fixup_display()
1714 for (off = fdt_first_subnode(blob, toff); in fdt_fixup_display()
1716 off = fdt_next_subnode(blob, off)) { in fdt_fixup_display()
1717 uint32_t h = fdt_get_phandle(blob, off); in fdt_fixup_display()
1718 debug("%s:0x%x\n", fdt_get_name(blob, off, NULL), in fdt_fixup_display()
1720 if (strcasecmp(fdt_get_name(blob, off, NULL), display) == 0) in fdt_fixup_display()
1721 return fdt_setprop_u32(blob, toff, "native-mode", h); in fdt_fixup_display()