Lines Matching refs:blob
415 int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int banks) in fdt_fixup_memory_banks() argument
428 err = fdt_check_header(blob); in fdt_fixup_memory_banks()
435 nodeoffset = fdt_find_or_add_subnode(blob, 0, "memory"); in fdt_fixup_memory_banks()
439 err = fdt_setprop(blob, nodeoffset, "device_type", "memory", in fdt_fixup_memory_banks()
457 len = fdt_pack_reg(blob, tmp, start, size, banks); in fdt_fixup_memory_banks()
459 err = fdt_setprop(blob, nodeoffset, "reg", tmp, len); in fdt_fixup_memory_banks()
468 int fdt_set_usable_memory(void *blob, u64 start[], u64 size[], int areas) in fdt_set_usable_memory() argument
480 err = fdt_check_header(blob); in fdt_set_usable_memory()
487 nodeoffset = fdt_find_or_add_subnode(blob, 0, "memory"); in fdt_set_usable_memory()
491 len = fdt_pack_reg(blob, tmp, start, size, areas); in fdt_set_usable_memory()
493 err = fdt_setprop(blob, nodeoffset, "linux,usable-memory", tmp, len); in fdt_set_usable_memory()
504 int fdt_fixup_memory(void *blob, u64 start, u64 size) in fdt_fixup_memory() argument
506 return fdt_fixup_memory_banks(blob, &start, &size, 1); in fdt_fixup_memory()
587 int fdt_record_loadable(void *blob, u32 index, const char *name, in fdt_record_loadable() argument
593 err = fdt_check_header(blob); in fdt_record_loadable()
600 node = fdt_find_or_add_subnode(blob, 0, "fit-images"); in fdt_record_loadable()
605 node = fdt_find_or_add_subnode(blob, node, name); in fdt_record_loadable()
609 fdt_setprop_u64(blob, node, "load", load_addr); in fdt_record_loadable()
611 fdt_setprop_u64(blob, node, "entry", entry_point); in fdt_record_loadable()
612 fdt_setprop_u32(blob, node, "size", size); in fdt_record_loadable()
614 fdt_setprop_string(blob, node, "type", type); in fdt_record_loadable()
616 fdt_setprop_string(blob, node, "os", os); in fdt_record_loadable()
622 int fdt_shrink_to_minimum(void *blob, uint extrasize) in fdt_shrink_to_minimum() argument
630 if (!blob) in fdt_shrink_to_minimum()
633 total = fdt_num_mem_rsv(blob); in fdt_shrink_to_minimum()
635 fdt_get_mem_rsv(blob, i, &addr, &size); in fdt_shrink_to_minimum()
636 if (addr == (uintptr_t)blob) { in fdt_shrink_to_minimum()
637 fdt_del_mem_rsv(blob, i); in fdt_shrink_to_minimum()
649 actualsize = fdt_off_dt_strings(blob) + in fdt_shrink_to_minimum()
650 fdt_size_dt_strings(blob) + 5 * sizeof(struct fdt_reserve_entry); in fdt_shrink_to_minimum()
654 actualsize = ALIGN(actualsize + ((uintptr_t)blob & 0xfff), 0x1000); in fdt_shrink_to_minimum()
655 actualsize = actualsize - ((uintptr_t)blob & 0xfff); in fdt_shrink_to_minimum()
658 fdt_set_totalsize(blob, actualsize); in fdt_shrink_to_minimum()
662 ret = fdt_add_mem_rsv(blob, map_to_sysmem(blob), actualsize); in fdt_shrink_to_minimum()
678 int fdt_pci_dma_ranges(void *blob, int phb_off, struct pci_controller *hose) { in fdt_pci_dma_ranges() argument
685 addrcell = fdt_getprop_u32_default(blob, "/", "#address-cells", 1); in fdt_pci_dma_ranges()
686 sizecell = fdt_getprop_u32_default(blob, "/", "#size-cells", 1); in fdt_pci_dma_ranges()
736 fdt_setprop(blob, phb_off, "dma-ranges", &dma_ranges[0], len*4); in fdt_pci_dma_ranges()
756 static int fdt_del_subnodes(const void *blob, int parent_offset) in fdt_del_subnodes() argument
761 for (ndepth = 0, off = fdt_next_node(blob, parent_offset, &ndepth); in fdt_del_subnodes()
763 off = fdt_next_node(blob, off, &ndepth)) { in fdt_del_subnodes()
766 fdt_get_name(blob, off, 0), off); in fdt_del_subnodes()
767 ret = fdt_del_node((void *)blob, off); in fdt_del_subnodes()
781 static int fdt_del_partitions(void *blob, int parent_offset) in fdt_del_partitions() argument
788 off = fdt_next_node(blob, parent_offset, &ndepth); in fdt_del_partitions()
790 prop = fdt_getprop(blob, off, "label", NULL); in fdt_del_partitions()
796 return fdt_del_partitions(blob, off); in fdt_del_partitions()
798 ret = fdt_del_subnodes(blob, parent_offset); in fdt_del_partitions()
809 static int fdt_node_set_part_info(void *blob, int parent_offset, in fdt_node_set_part_info() argument
819 ret = fdt_del_partitions(blob, parent_offset); in fdt_node_set_part_info()
827 sizecell = fdt_getprop_u32_default_node(blob, parent_offset, in fdt_node_set_part_info()
834 off = fdt_next_node(blob, parent_offset, &ndepth); in fdt_node_set_part_info()
850 ret = fdt_add_subnode(blob, parent_offset, buf); in fdt_node_set_part_info()
852 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
867 ret = fdt_setprop(blob, newoff, "read_only", NULL, 0); in fdt_node_set_part_info()
869 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
880 ret = fdt_setprop_u64(blob, newoff, in fdt_node_set_part_info()
883 ret = fdt_appendprop_u64(blob, newoff, in fdt_node_set_part_info()
886 ret = fdt_setprop_u32(blob, newoff, in fdt_node_set_part_info()
889 ret = fdt_appendprop_u32(blob, newoff, in fdt_node_set_part_info()
894 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
903 ret = fdt_setprop_string(blob, newoff, "label", part->name); in fdt_node_set_part_info()
905 ret = fdt_increase_size(blob, 512); in fdt_node_set_part_info()
938 void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info, in fdt_fixup_mtdparts() argument
950 while ((noff = fdt_node_offset_by_compatible(blob, noff, in fdt_fixup_mtdparts()
954 prop = fdt_getprop(blob, noff, "status", NULL); in fdt_fixup_mtdparts()
959 fdt_get_name(blob, noff, 0), in fdt_fixup_mtdparts()
970 if (fdt_node_set_part_info(blob, noff, dev)) in fdt_fixup_mtdparts()
978 void fdt_del_node_and_alias(void *blob, const char *alias) in fdt_del_node_and_alias() argument
980 int off = fdt_path_offset(blob, alias); in fdt_del_node_and_alias()
985 fdt_del_node(blob, off); in fdt_del_node_and_alias()
987 off = fdt_path_offset(blob, "/aliases"); in fdt_del_node_and_alias()
988 fdt_delprop(blob, off, alias); in fdt_del_node_and_alias()
1043 int (*match)(const void *blob, int parentoffset);
1044 void (*count_cells)(const void *blob, int parentoffset,
1052 void fdt_support_default_count_cells(const void *blob, int parentoffset, in fdt_support_default_count_cells() argument
1058 *addrc = fdt_address_cells(blob, parentoffset); in fdt_support_default_count_cells()
1061 prop = fdt_getprop(blob, parentoffset, "#size-cells", NULL); in fdt_support_default_count_cells()
1100 static int of_bus_isa_match(const void *blob, int parentoffset) in of_bus_isa_match() argument
1104 name = fdt_get_name(blob, parentoffset, NULL); in of_bus_isa_match()
1111 static void of_bus_isa_count_cells(const void *blob, int parentoffset, in of_bus_isa_count_cells() argument
1170 static struct of_bus *of_match_bus(const void *blob, int parentoffset) in of_match_bus() argument
1178 if (!bus->match || bus->match(blob, parentoffset)) in of_match_bus()
1192 static int of_translate_one(const void *blob, int parent, struct of_bus *bus, in of_translate_one() argument
1213 ranges = fdt_getprop(blob, parent, rprop, &rlen); in of_translate_one()
1255 static u64 __of_translate_address(const void *blob, int node_offset, in __of_translate_address() argument
1265 fdt_get_name(blob, node_offset, NULL)); in __of_translate_address()
1268 parent = fdt_parent_offset(blob, node_offset); in __of_translate_address()
1271 bus = of_match_bus(blob, parent); in __of_translate_address()
1274 bus->count_cells(blob, parent, &na, &ns); in __of_translate_address()
1277 fdt_get_name(blob, node_offset, NULL)); in __of_translate_address()
1283 bus->name, na, ns, fdt_get_name(blob, parent, NULL)); in __of_translate_address()
1290 parent = fdt_parent_offset(blob, node_offset); in __of_translate_address()
1300 pbus = of_match_bus(blob, parent); in __of_translate_address()
1301 pbus->count_cells(blob, parent, &pna, &pns); in __of_translate_address()
1304 fdt_get_name(blob, node_offset, NULL)); in __of_translate_address()
1309 pbus->name, pna, pns, fdt_get_name(blob, parent, NULL)); in __of_translate_address()
1312 if (of_translate_one(blob, node_offset, bus, pbus, in __of_translate_address()
1328 u64 fdt_translate_address(const void *blob, int node_offset, in fdt_translate_address() argument
1331 return __of_translate_address(blob, node_offset, in_addr, "ranges"); in fdt_translate_address()
1334 u64 fdt_translate_dma_address(const void *blob, int node_offset, in fdt_translate_dma_address() argument
1337 return __of_translate_address(blob, node_offset, in_addr, "dma-ranges"); in fdt_translate_dma_address()
1340 int fdt_get_dma_range(const void *blob, int node, phys_addr_t *cpu, in fdt_get_dma_range() argument
1353 ranges = fdt_getprop(blob, parent, "dma-ranges", &len); in fdt_get_dma_range()
1368 parent = fdt_parent_offset(blob, parent); in fdt_get_dma_range()
1373 fdt_get_name(blob, node, NULL)); in fdt_get_dma_range()
1380 parent = fdt_parent_offset(blob, node); in fdt_get_dma_range()
1388 bus_node = of_match_bus(blob, node); in fdt_get_dma_range()
1389 bus_node->count_cells(blob, node, &na, &ns); in fdt_get_dma_range()
1392 fdt_get_name(blob, node, NULL)); in fdt_get_dma_range()
1397 bus_node = of_match_bus(blob, parent); in fdt_get_dma_range()
1398 bus_node->count_cells(blob, parent, &pna, &pns); in fdt_get_dma_range()
1401 fdt_get_name(blob, parent, NULL)); in fdt_get_dma_range()
1407 *cpu = fdt_translate_dma_address(blob, node, ranges + na); in fdt_get_dma_range()
1422 int fdt_node_offset_by_compat_reg(void *blob, const char *compat, in fdt_node_offset_by_compat_reg() argument
1425 int len, off = fdt_node_offset_by_compatible(blob, -1, compat); in fdt_node_offset_by_compat_reg()
1427 const fdt32_t *reg = fdt_getprop(blob, off, "reg", &len); in fdt_node_offset_by_compat_reg()
1429 if (compat_off == fdt_translate_address(blob, off, reg)) in fdt_node_offset_by_compat_reg()
1432 off = fdt_node_offset_by_compatible(blob, off, compat); in fdt_node_offset_by_compat_reg()
1443 int fdt_alloc_phandle(void *blob) in fdt_alloc_phandle() argument
1448 for (offset = fdt_next_node(blob, -1, NULL); offset >= 0; in fdt_alloc_phandle()
1449 offset = fdt_next_node(blob, offset, NULL)) { in fdt_alloc_phandle()
1450 phandle = max(phandle, fdt_get_phandle(blob, offset)); in fdt_alloc_phandle()
1582 int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf) in fdt_add_edid() argument
1587 noff = fdt_node_offset_by_compatible(blob, -1, compat); in fdt_add_edid()
1589 debug("%s: %s\n", fdt_get_name(blob, noff, 0), compat); in fdt_add_edid()
1591 ret = fdt_setprop(blob, noff, "edid", edid_buf, 128); in fdt_add_edid()
1593 ret = fdt_increase_size(blob, 512); in fdt_add_edid()
1844 int fdt_fixup_display(void *blob, const char *path, const char *display) in fdt_fixup_display() argument
1851 toff = fdt_path_offset(blob, path); in fdt_fixup_display()
1853 toff = fdt_subnode_offset(blob, toff, "display-timings"); in fdt_fixup_display()
1857 for (off = fdt_first_subnode(blob, toff); in fdt_fixup_display()
1859 off = fdt_next_subnode(blob, off)) { in fdt_fixup_display()
1860 uint32_t h = fdt_get_phandle(blob, off); in fdt_fixup_display()
1861 debug("%s:0x%x\n", fdt_get_name(blob, off, NULL), in fdt_fixup_display()
1863 if (strcasecmp(fdt_get_name(blob, off, NULL), display) == 0) in fdt_fixup_display()
1864 return fdt_setprop_u32(blob, toff, "native-mode", h); in fdt_fixup_display()