Lines Matching +full:dt +full:- +full:node
3 * SPDX-License-Identifier: GPL-2.0+
29 * good reason why driver-model conversion is infeasible. Examples include
35 COMPAT(NVIDIA_TEGRA20_EMC, "nvidia,tegra20-emc"),
36 COMPAT(NVIDIA_TEGRA20_EMC_TABLE, "nvidia,tegra20-emc-table"),
37 COMPAT(NVIDIA_TEGRA20_NAND, "nvidia,tegra20-nand"),
38 COMPAT(NVIDIA_TEGRA124_XUSB_PADCTL, "nvidia,tegra124-xusb-padctl"),
39 COMPAT(NVIDIA_TEGRA210_XUSB_PADCTL, "nvidia,tegra210-xusb-padctl"),
41 COMPAT(SAMSUNG_EXYNOS5_SROMC, "samsung,exynos-sromc"),
42 COMPAT(SAMSUNG_S3C2440_I2C, "samsung,s3c2440-i2c"),
43 COMPAT(SAMSUNG_EXYNOS5_SOUND, "samsung,exynos-sound"),
44 COMPAT(WOLFSON_WM8994_CODEC, "wolfson,wm8994-codec"),
45 COMPAT(SAMSUNG_EXYNOS_USB_PHY, "samsung,exynos-usb-phy"),
46 COMPAT(SAMSUNG_EXYNOS5_USB3_PHY, "samsung,exynos5250-usb3-phy"),
47 COMPAT(SAMSUNG_EXYNOS_TMU, "samsung,exynos-tmu"),
48 COMPAT(SAMSUNG_EXYNOS_MIPI_DSI, "samsung,exynos-mipi-dsi"),
49 COMPAT(SAMSUNG_EXYNOS_DWMMC, "samsung,exynos-dwmmc"),
50 COMPAT(SAMSUNG_EXYNOS_MMC, "samsung,exynos-mmc"),
52 COMPAT(GENERIC_SPI_FLASH, "spi-flash"),
53 COMPAT(MAXIM_98095_CODEC, "maxim,max98095-codec"),
54 COMPAT(SAMSUNG_EXYNOS5_I2C, "samsung,exynos5-hsi2c"),
55 COMPAT(SAMSUNG_EXYNOS_SYSMMU, "samsung,sysmmu-v3.3"),
58 COMPAT(INTEL_QRK_MRC, "intel,quark-mrc"),
59 COMPAT(ALTERA_SOCFPGA_DWMAC, "altr,socfpga-stmmac"),
60 COMPAT(ALTERA_SOCFPGA_DWMMC, "altr,socfpga-dw-mshc"),
62 COMPAT(INTEL_BAYTRAIL_FSP, "intel,baytrail-fsp"),
63 COMPAT(INTEL_BAYTRAIL_FSP_MDP, "intel,baytrail-fsp-mdp"),
64 COMPAT(INTEL_IVYBRIDGE_FSP, "intel,ivybridge-fsp"),
65 COMPAT(COMPAT_SUNXI_NAND, "allwinner,sun4i-a10-nand"),
66 COMPAT(ALTERA_SOCFPGA_CLK, "altr,clk-mgr"),
67 COMPAT(ALTERA_SOCFPGA_PINCTRL_SINGLE, "pinctrl-single"),
68 COMPAT(ALTERA_SOCFPGA_H2F_BRG, "altr,socfpga-hps2fpga-bridge"),
69 COMPAT(ALTERA_SOCFPGA_LWH2F_BRG, "altr,socfpga-lwhps2fpga-bridge"),
70 COMPAT(ALTERA_SOCFPGA_F2H_BRG, "altr,socfpga-fpga2hps-bridge"),
71 COMPAT(ALTERA_SOCFPGA_F2SDR0, "altr,socfpga-fpga2sdram0-bridge"),
72 COMPAT(ALTERA_SOCFPGA_F2SDR1, "altr,socfpga-fpga2sdram1-bridge"),
73 COMPAT(ALTERA_SOCFPGA_F2SDR2, "altr,socfpga-fpga2sdram2-bridge"),
74 COMPAT(ROCKCHIP_NANDC, "rockchip,rk-nandc"),
84 fdt_addr_t fdtdec_get_addr_size_fixed(const void *blob, int node, in fdtdec_get_addr_size_fixed() argument
95 prop = fdt_getprop(blob, node, prop_name, &len); in fdtdec_get_addr_size_fixed()
107 (u32)(prop_after_size - prop), ((u32)(prop_end - prop))); in fdtdec_get_addr_size_fixed()
113 addr = fdt_translate_address(blob, node, prop_addr); in fdtdec_get_addr_size_fixed()
130 int node, const char *prop_name, int index, fdt_size_t *sizep, in fdtdec_get_addr_size_auto_parent() argument
139 debug("(bad #address-cells)\n"); in fdtdec_get_addr_size_auto_parent()
145 debug("(bad #size-cells)\n"); in fdtdec_get_addr_size_auto_parent()
151 return fdtdec_get_addr_size_fixed(blob, node, prop_name, index, na, in fdtdec_get_addr_size_auto_parent()
155 fdt_addr_t fdtdec_get_addr_size_auto_noparent(const void *blob, int node, in fdtdec_get_addr_size_auto_noparent() argument
163 parent = fdt_parent_offset(blob, node); in fdtdec_get_addr_size_auto_noparent()
169 return fdtdec_get_addr_size_auto_parent(blob, parent, node, prop_name, in fdtdec_get_addr_size_auto_noparent()
173 fdt_addr_t fdtdec_get_addr_size(const void *blob, int node, in fdtdec_get_addr_size() argument
178 return fdtdec_get_addr_size_fixed(blob, node, prop_name, 0, in fdtdec_get_addr_size()
183 fdt_addr_t fdtdec_get_addr(const void *blob, int node, in fdtdec_get_addr() argument
186 return fdtdec_get_addr_size(blob, node, prop_name, NULL); in fdtdec_get_addr()
190 int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type, in fdtdec_get_pci_addr() argument
195 int ret = -ENOENT; in fdtdec_get_pci_addr()
201 * the value of the node's parent node's #address-cells and in fdtdec_get_pci_addr()
202 * #size-cells. They need to be 3 and 2 accordingly. However, in fdtdec_get_pci_addr()
205 cell = fdt_getprop(blob, node, prop_name, &len); in fdtdec_get_pci_addr()
219 addr->phys_hi = fdt32_to_cpu(cell[0]); in fdtdec_get_pci_addr()
220 addr->phys_mid = fdt32_to_cpu(cell[1]); in fdtdec_get_pci_addr()
221 addr->phys_lo = fdt32_to_cpu(cell[1]); in fdtdec_get_pci_addr()
230 ret = -ENXIO; in fdtdec_get_pci_addr()
236 ret = -EINVAL; in fdtdec_get_pci_addr()
244 int fdtdec_get_pci_vendev(const void *blob, int node, u16 *vendor, u16 *device) in fdtdec_get_pci_vendev() argument
249 list = fdt_getprop(blob, node, "compatible", &len); in fdtdec_get_pci_vendev()
251 return -ENOENT; in fdtdec_get_pci_vendev()
279 return -ENOENT; in fdtdec_get_pci_vendev()
288 barnum = addr->phys_hi & 0xff; in fdtdec_get_pci_bar32()
290 return -EINVAL; in fdtdec_get_pci_bar32()
292 barnum = (barnum - PCI_BASE_ADDRESS_0) / 4; in fdtdec_get_pci_bar32()
299 uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name, in fdtdec_get_uint64() argument
305 cell64 = fdt_getprop(blob, node, prop_name, &length); in fdtdec_get_uint64()
312 int fdtdec_get_is_enabled(const void *blob, int node) in fdtdec_get_is_enabled() argument
321 * http://www.mail-archive.com/u-boot@lists.denx.de/msg71598.html in fdtdec_get_is_enabled()
323 cell = fdt_getprop(blob, node, "status", NULL); in fdtdec_get_is_enabled()
329 enum fdt_compat_id fdtdec_lookup(const void *blob, int node) in fdtdec_lookup() argument
335 if (0 == fdt_node_check_compatible(blob, node, in fdtdec_lookup()
341 int fdtdec_next_compatible(const void *blob, int node, in fdtdec_next_compatible() argument
344 return fdt_node_offset_by_compatible(blob, node, compat_names[id]); in fdtdec_next_compatible()
347 int fdtdec_next_compatible_subnode(const void *blob, int node, in fdtdec_next_compatible_subnode() argument
351 node = fdt_next_node(blob, node, depthp); in fdtdec_next_compatible_subnode()
356 blob, node, compat_names[id])) in fdtdec_next_compatible_subnode()
357 return node; in fdtdec_next_compatible_subnode()
359 return -FDT_ERR_NOTFOUND; in fdtdec_next_compatible_subnode()
367 int node, err; in fdtdec_next_alias() local
372 node = fdt_path_offset(blob, str); in fdtdec_next_alias()
373 if (node < 0) in fdtdec_next_alias()
374 return node; in fdtdec_next_alias()
375 err = fdt_node_check_compatible(blob, node, compat_names[id]); in fdtdec_next_alias()
379 return -FDT_ERR_NOTFOUND; in fdtdec_next_alias()
381 return node; in fdtdec_next_alias()
399 int offset, node; in fdtdec_add_aliases_for_id() local
404 /* find the alias node if present */ in fdtdec_add_aliases_for_id()
408 * start with nothing, and we can assume that the root node can't in fdtdec_add_aliases_for_id()
414 for (node = count = 0; node >= 0 && count < maxcount;) { in fdtdec_add_aliases_for_id()
415 node = fdtdec_next_compatible(blob, node, id); in fdtdec_add_aliases_for_id()
416 if (node >= 0) in fdtdec_add_aliases_for_id()
417 nodes[count++] = node; in fdtdec_add_aliases_for_id()
419 if (node >= 0) in fdtdec_add_aliases_for_id()
432 node = 0; in fdtdec_add_aliases_for_id()
434 path = fdt_string(blob, fdt32_to_cpu(prop->nameoff)); in fdtdec_add_aliases_for_id()
435 if (prop->len && 0 == strncmp(path, name, name_len)) in fdtdec_add_aliases_for_id()
436 node = fdt_path_offset(blob, prop->data); in fdtdec_add_aliases_for_id()
437 if (node <= 0) in fdtdec_add_aliases_for_id()
448 /* Make sure the node we found is actually in our list! */ in fdtdec_add_aliases_for_id()
449 found = -1; in fdtdec_add_aliases_for_id()
451 if (nodes[j] == node) { in fdtdec_add_aliases_for_id()
456 if (found == -1) { in fdtdec_add_aliases_for_id()
457 debug("%s: warning: alias '%s' points to a node " in fdtdec_add_aliases_for_id()
460 fdt_get_name(blob, node, NULL), in fdtdec_add_aliases_for_id()
466 * Add this node to our list in the right place, and mark in fdtdec_add_aliases_for_id()
469 if (fdtdec_get_is_enabled(blob, node)) { in fdtdec_add_aliases_for_id()
472 "a node be placed in the list in a " in fdtdec_add_aliases_for_id()
474 "node '%s'\n", __func__, path, in fdtdec_add_aliases_for_id()
475 fdt_get_name(blob, node, NULL)); in fdtdec_add_aliases_for_id()
478 node_list[number] = node; in fdtdec_add_aliases_for_id()
529 debug(" - %s, %s\n", name, prop); in fdtdec_get_alias_seq()
530 if (len < find_namelen || *prop != '/' || prop[len - 1] || in fdtdec_get_alias_seq()
538 if (val != -1) { in fdtdec_get_alias_seq()
546 return -ENOENT; in fdtdec_get_alias_seq()
565 return -FDT_ERR_NOTFOUND; in fdtdec_get_chosen_node()
588 if (!gd->fdt_blob || ((uintptr_t)gd->fdt_blob & 3) || in fdtdec_prepare_fdt()
589 fdt_check_header(gd->fdt_blob)) { in fdtdec_prepare_fdt()
593 …device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG… in fdtdec_prepare_fdt()
595 if (gd->fdt_blob) { in fdtdec_prepare_fdt()
596 printf("fdt_blob=%p\n", gd->fdt_blob); in fdtdec_prepare_fdt()
597 print_buffer((ulong)gd->fdt_blob, gd->fdt_blob, 4, in fdtdec_prepare_fdt()
602 return -1; in fdtdec_prepare_fdt()
607 int fdtdec_lookup_phandle(const void *blob, int node, const char *prop_name) in fdtdec_lookup_phandle() argument
613 phandle = fdt_getprop(blob, node, prop_name, NULL); in fdtdec_lookup_phandle()
615 return -FDT_ERR_NOTFOUND; in fdtdec_lookup_phandle()
622 * Look up a property in a node and check that it has a minimum length.
625 * @param node node to examine
628 * @param err 0 if ok, or -FDT_ERR_NOTFOUND if the property is not
629 found, or -FDT_ERR_BADLAYOUT if not enough data
632 static const void *get_prop_check_min_len(const void *blob, int node, in get_prop_check_min_len() argument
639 cell = fdt_getprop(blob, node, prop_name, &len); in get_prop_check_min_len()
641 *err = -FDT_ERR_NOTFOUND; in get_prop_check_min_len()
643 *err = -FDT_ERR_BADLAYOUT; in get_prop_check_min_len()
649 int fdtdec_get_int_array(const void *blob, int node, const char *prop_name, in fdtdec_get_int_array() argument
656 cell = get_prop_check_min_len(blob, node, prop_name, in fdtdec_get_int_array()
665 int fdtdec_get_int_array_count(const void *blob, int node, in fdtdec_get_int_array_count() argument
673 cell = fdt_getprop(blob, node, prop_name, &len); in fdtdec_get_int_array_count()
675 return -FDT_ERR_NOTFOUND; in fdtdec_get_int_array_count()
685 const u32 *fdtdec_locate_array(const void *blob, int node, in fdtdec_locate_array() argument
691 cell = get_prop_check_min_len(blob, node, prop_name, in fdtdec_locate_array()
696 int fdtdec_get_bool(const void *blob, int node, const char *prop_name) in fdtdec_get_bool() argument
702 cell = fdt_getprop(blob, node, prop_name, &len); in fdtdec_get_bool()
715 int node = -1; in fdtdec_parse_phandle_with_args() local
721 return -ENOENT; in fdtdec_parse_phandle_with_args()
726 rc = -EINVAL; in fdtdec_parse_phandle_with_args()
736 * Find the provider node and parse the #*-cells in fdtdec_parse_phandle_with_args()
739 * This is not needed if the cell count is hard-coded in fdtdec_parse_phandle_with_args()
741 * except when we're going to return the found node in fdtdec_parse_phandle_with_args()
745 node = fdt_node_offset_by_phandle(blob, in fdtdec_parse_phandle_with_args()
747 if (!node) { in fdtdec_parse_phandle_with_args()
756 count = fdtdec_get_int(blob, node, cells_name, in fdtdec_parse_phandle_with_args()
757 -1); in fdtdec_parse_phandle_with_args()
758 if (count == -1) { in fdtdec_parse_phandle_with_args()
763 fdt_get_name(blob, node, in fdtdec_parse_phandle_with_args()
786 * or return -ENOENT for an empty entry. in fdtdec_parse_phandle_with_args()
788 rc = -ENOENT; in fdtdec_parse_phandle_with_args()
802 out_args->node = node; in fdtdec_parse_phandle_with_args()
803 out_args->args_count = count; in fdtdec_parse_phandle_with_args()
805 out_args->args[i] = in fdtdec_parse_phandle_with_args()
814 node = -1; in fdtdec_parse_phandle_with_args()
821 * -ENOENT : index is for empty phandle in fdtdec_parse_phandle_with_args()
822 * -EINVAL : parsing error on data in fdtdec_parse_phandle_with_args()
823 * [1..n] : Number of phandle (count mode; when index = -1) in fdtdec_parse_phandle_with_args()
825 rc = index < 0 ? cur_index : -ENOENT; in fdtdec_parse_phandle_with_args()
830 int fdtdec_get_child_count(const void *blob, int node) in fdtdec_get_child_count() argument
835 fdt_for_each_subnode(subnode, blob, node) in fdtdec_get_child_count()
841 int fdtdec_get_byte_array(const void *blob, int node, const char *prop_name, in fdtdec_get_byte_array() argument
847 cell = get_prop_check_min_len(blob, node, prop_name, count, &err); in fdtdec_get_byte_array()
853 const u8 *fdtdec_locate_byte_array(const void *blob, int node, in fdtdec_locate_byte_array() argument
859 cell = get_prop_check_min_len(blob, node, prop_name, count, &err); in fdtdec_locate_byte_array()
909 int fdtdec_decode_region(const void *blob, int node, const char *prop_name, in fdtdec_decode_region() argument
915 debug("%s: %s: %s\n", __func__, fdt_get_name(blob, node, NULL), in fdtdec_decode_region()
917 cell = fdt_getprop(blob, node, prop_name, &len); in fdtdec_decode_region()
920 return -1; in fdtdec_decode_region()
935 while (cells--) in fdtdec_get_number()
941 int fdt_get_resource(const void *fdt, int node, const char *property, in fdt_get_resource() argument
948 parent = fdt_parent_offset(fdt, node); in fdt_get_resource()
955 ptr = fdt_getprop(fdt, node, property, &len); in fdt_get_resource()
963 res->start = res->end = fdtdec_get_number(ptr, na); in fdt_get_resource()
964 res->end += fdtdec_get_number(&ptr[na], ns) - 1; in fdt_get_resource()
972 return -FDT_ERR_NOTFOUND; in fdt_get_resource()
975 int fdt_get_named_resource(const void *fdt, int node, const char *property, in fdt_get_named_resource() argument
981 index = fdt_stringlist_search(fdt, node, prop_names, name); in fdt_get_named_resource()
985 return fdt_get_resource(fdt, node, property, index, res); in fdt_get_named_resource()
996 int node; in fdtdec_decode_memory_region() local
998 if (config_node == -1) { in fdtdec_decode_memory_region()
1001 debug("%s: Cannot find /config node\n", __func__); in fdtdec_decode_memory_region()
1002 return -ENOENT; in fdtdec_decode_memory_region()
1008 snprintf(prop_name, sizeof(prop_name), "%s-memory%s", mem_type, in fdtdec_decode_memory_region()
1017 node = fdt_path_offset(blob, mem); in fdtdec_decode_memory_region()
1018 if (node < 0) { in fdtdec_decode_memory_region()
1019 debug("%s: Failed to find node '%s': %s\n", __func__, mem, in fdtdec_decode_memory_region()
1020 fdt_strerror(node)); in fdtdec_decode_memory_region()
1021 return -ENOENT; in fdtdec_decode_memory_region()
1025 * Not strictly correct - the memory may have multiple banks. We just in fdtdec_decode_memory_region()
1028 if (fdtdec_decode_region(blob, node, "reg", &base, &size)) { in fdtdec_decode_memory_region()
1031 return -EINVAL; in fdtdec_decode_memory_region()
1034 snprintf(prop_name, sizeof(prop_name), "%s-offset%s", mem_type, in fdtdec_decode_memory_region()
1040 return -EINVAL; in fdtdec_decode_memory_region()
1049 static int decode_timing_property(const void *blob, int node, const char *name, in decode_timing_property() argument
1055 prop = fdt_getprop(blob, node, name, &length); in decode_timing_property()
1058 fdt_get_name(blob, node, NULL), name); in decode_timing_property()
1063 result->typ = fdtdec_get_int(blob, node, name, 0); in decode_timing_property()
1064 result->min = result->typ; in decode_timing_property()
1065 result->max = result->typ; in decode_timing_property()
1067 ret = fdtdec_get_int_array(blob, node, name, &result->min, 3); in decode_timing_property()
1074 struct display_timing *dt) in fdtdec_decode_display_timing() argument
1076 int i, node, timings_node; in fdtdec_decode_display_timing() local
1080 timings_node = fdt_subnode_offset(blob, parent, "display-timings"); in fdtdec_decode_display_timing()
1084 for (i = 0, node = fdt_first_subnode(blob, timings_node); in fdtdec_decode_display_timing()
1085 node > 0 && i != index; in fdtdec_decode_display_timing()
1086 node = fdt_next_subnode(blob, node)) in fdtdec_decode_display_timing()
1089 if (node < 0) in fdtdec_decode_display_timing()
1090 return node; in fdtdec_decode_display_timing()
1092 memset(dt, 0, sizeof(*dt)); in fdtdec_decode_display_timing()
1094 ret |= decode_timing_property(blob, node, "hback-porch", in fdtdec_decode_display_timing()
1095 &dt->hback_porch); in fdtdec_decode_display_timing()
1096 ret |= decode_timing_property(blob, node, "hfront-porch", in fdtdec_decode_display_timing()
1097 &dt->hfront_porch); in fdtdec_decode_display_timing()
1098 ret |= decode_timing_property(blob, node, "hactive", &dt->hactive); in fdtdec_decode_display_timing()
1099 ret |= decode_timing_property(blob, node, "hsync-len", &dt->hsync_len); in fdtdec_decode_display_timing()
1100 ret |= decode_timing_property(blob, node, "vback-porch", in fdtdec_decode_display_timing()
1101 &dt->vback_porch); in fdtdec_decode_display_timing()
1102 ret |= decode_timing_property(blob, node, "vfront-porch", in fdtdec_decode_display_timing()
1103 &dt->vfront_porch); in fdtdec_decode_display_timing()
1104 ret |= decode_timing_property(blob, node, "vactive", &dt->vactive); in fdtdec_decode_display_timing()
1105 ret |= decode_timing_property(blob, node, "vsync-len", &dt->vsync_len); in fdtdec_decode_display_timing()
1106 ret |= decode_timing_property(blob, node, "clock-frequency", in fdtdec_decode_display_timing()
1107 &dt->pixelclock); in fdtdec_decode_display_timing()
1109 dt->flags = 0; in fdtdec_decode_display_timing()
1110 val = fdtdec_get_int(blob, node, "vsync-active", -1); in fdtdec_decode_display_timing()
1111 if (val != -1) { in fdtdec_decode_display_timing()
1112 dt->flags |= val ? DISPLAY_FLAGS_VSYNC_HIGH : in fdtdec_decode_display_timing()
1115 val = fdtdec_get_int(blob, node, "hsync-active", -1); in fdtdec_decode_display_timing()
1116 if (val != -1) { in fdtdec_decode_display_timing()
1117 dt->flags |= val ? DISPLAY_FLAGS_HSYNC_HIGH : in fdtdec_decode_display_timing()
1120 val = fdtdec_get_int(blob, node, "de-active", -1); in fdtdec_decode_display_timing()
1121 if (val != -1) { in fdtdec_decode_display_timing()
1122 dt->flags |= val ? DISPLAY_FLAGS_DE_HIGH : in fdtdec_decode_display_timing()
1125 val = fdtdec_get_int(blob, node, "pixelclk-active", -1); in fdtdec_decode_display_timing()
1126 if (val != -1) { in fdtdec_decode_display_timing()
1127 dt->flags |= val ? DISPLAY_FLAGS_PIXDATA_POSEDGE : in fdtdec_decode_display_timing()
1131 if (fdtdec_get_bool(blob, node, "interlaced")) in fdtdec_decode_display_timing()
1132 dt->flags |= DISPLAY_FLAGS_INTERLACED; in fdtdec_decode_display_timing()
1133 if (fdtdec_get_bool(blob, node, "doublescan")) in fdtdec_decode_display_timing()
1134 dt->flags |= DISPLAY_FLAGS_DOUBLESCAN; in fdtdec_decode_display_timing()
1135 if (fdtdec_get_bool(blob, node, "doubleclk")) in fdtdec_decode_display_timing()
1136 dt->flags |= DISPLAY_FLAGS_DOUBLECLK; in fdtdec_decode_display_timing()
1146 mem = fdt_path_offset(gd->fdt_blob, "/memory"); in fdtdec_setup_memory_size()
1148 debug("%s: Missing /memory node\n", __func__); in fdtdec_setup_memory_size()
1149 return -EINVAL; in fdtdec_setup_memory_size()
1152 ret = fdt_get_resource(gd->fdt_blob, mem, "reg", 0, &res); in fdtdec_setup_memory_size()
1155 return -EINVAL; in fdtdec_setup_memory_size()
1158 gd->ram_size = (phys_size_t)(res.end - res.start + 1); in fdtdec_setup_memory_size()
1160 (unsigned long long)gd->ram_size); in fdtdec_setup_memory_size()
1171 mem = fdt_node_offset_by_prop_value(gd->fdt_blob, -1, "device_type", in fdtdec_setup_memory_banksize()
1174 debug("%s: Missing /memory node\n", __func__); in fdtdec_setup_memory_banksize()
1175 return -EINVAL; in fdtdec_setup_memory_banksize()
1179 ret = fdt_get_resource(gd->fdt_blob, mem, "reg", reg++, &res); in fdtdec_setup_memory_banksize()
1180 if (ret == -FDT_ERR_NOTFOUND) { in fdtdec_setup_memory_banksize()
1182 mem = fdt_node_offset_by_prop_value(gd->fdt_blob, mem, in fdtdec_setup_memory_banksize()
1185 if (mem == -FDT_ERR_NOTFOUND) in fdtdec_setup_memory_banksize()
1188 ret = fdt_get_resource(gd->fdt_blob, mem, "reg", reg++, &res); in fdtdec_setup_memory_banksize()
1189 if (ret == -FDT_ERR_NOTFOUND) in fdtdec_setup_memory_banksize()
1193 return -EINVAL; in fdtdec_setup_memory_banksize()
1196 gd->bd->bi_dram[bank].start = (phys_addr_t)res.start; in fdtdec_setup_memory_banksize()
1197 gd->bd->bi_dram[bank].size = in fdtdec_setup_memory_banksize()
1198 (phys_size_t)(res.end - res.start + 1); in fdtdec_setup_memory_banksize()
1202 (unsigned long long)gd->bd->bi_dram[bank].start, in fdtdec_setup_memory_banksize()
1203 (unsigned long long)gd->bd->bi_dram[bank].size); in fdtdec_setup_memory_banksize()
1222 return -1; in uncompress_blob()
1225 return -EBADMSG; in uncompress_blob()
1231 return -ENOMEM; in uncompress_blob()
1237 return -ENOTSUPP; in uncompress_blob()
1251 return -EBADMSG; in uncompress_blob()
1259 return -ENOTSUPP; in uncompress_blob()
1273 gd->fdt_blob = __dtb_dt_spl_begin; in fdtdec_setup()
1275 gd->fdt_blob = __dtb_dt_begin; in fdtdec_setup()
1281 gd->fdt_blob = (ulong *)&_image_binary_end; in fdtdec_setup()
1283 gd->fdt_blob = (ulong *)&__bss_end; in fdtdec_setup()
1286 gd->fdt_blob = (ulong *)&_end; in fdtdec_setup()
1289 gd->fdt_blob_kern = (ulong *)ALIGN((ulong)gd->fdt_blob + in fdtdec_setup()
1290 fdt_totalsize(gd->fdt_blob), 8); in fdtdec_setup()
1291 if (fdt_check_header(gd->fdt_blob_kern)) in fdtdec_setup()
1292 gd->fdt_blob_kern = NULL; in fdtdec_setup()
1297 gd->fdt_blob = board_fdt_blob_setup(); in fdtdec_setup()
1301 return -1; in fdtdec_setup()
1307 gd->fdt_blob = (void *)prior_stage_fdt_address; in fdtdec_setup()
1309 gd->fdt_blob = (void *)env_get_ulong("fdtcontroladdr", 16, in fdtdec_setup()
1310 (uintptr_t)gd->fdt_blob); in fdtdec_setup()
1321 if (uncompress_blob(gd->fdt_blob, 0x1000000, &fdt_blob) == 0) in fdtdec_setup()
1322 gd->fdt_blob = fdt_blob; in fdtdec_setup()
1328 fdt_blob = locate_dtb_in_fit(gd->fdt_blob); in fdtdec_setup()
1330 gd->fdt_blob = fdt_blob; in fdtdec_setup()