diff options
Diffstat (limited to 'drivers/core/ofnode.c')
-rw-r--r-- | drivers/core/ofnode.c | 105 |
1 files changed, 69 insertions, 36 deletions
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 7e3b3719d18..950895e72a9 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -315,7 +315,7 @@ int ofnode_read_u8(ofnode node, const char *propname, u8 *outp) int len; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); if (ofnode_is_np(node)) return of_read_u8(ofnode_to_np(node), propname, outp); @@ -323,11 +323,11 @@ int ofnode_read_u8(ofnode node, const char *propname, u8 *outp) cell = fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, &len); if (!cell || len < sizeof(*cell)) { - dm_warn("(not found)\n"); + log_debug("(not found)\n"); return -EINVAL; } *outp = *cell; - dm_warn("%#x (%u)\n", *outp, *outp); + log_debug("%#x (%u)\n", *outp, *outp); return 0; } @@ -346,7 +346,7 @@ int ofnode_read_u16(ofnode node, const char *propname, u16 *outp) int len; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); if (ofnode_is_np(node)) return of_read_u16(ofnode_to_np(node), propname, outp); @@ -354,11 +354,11 @@ int ofnode_read_u16(ofnode node, const char *propname, u16 *outp) cell = fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, &len); if (!cell || len < sizeof(*cell)) { - dm_warn("(not found)\n"); + log_debug("(not found)\n"); return -EINVAL; } *outp = be16_to_cpup(cell); - dm_warn("%#x (%u)\n", *outp, *outp); + log_debug("%#x (%u)\n", *outp, *outp); return 0; } @@ -391,7 +391,7 @@ int ofnode_read_u32_index(ofnode node, const char *propname, int index, int len; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); if (ofnode_is_np(node)) return of_read_u32_index(ofnode_to_np(node), propname, index, @@ -400,17 +400,17 @@ int ofnode_read_u32_index(ofnode node, const char *propname, int index, cell = fdt_getprop(ofnode_to_fdt(node), ofnode_to_offset(node), propname, &len); if (!cell) { - dm_warn("(not found)\n"); + log_debug("(not found)\n"); return -EINVAL; } if (len < (sizeof(int) * (index + 1))) { - dm_warn("(not large enough)\n"); + log_debug("(not large enough)\n"); return -EOVERFLOW; } *outp = fdt32_to_cpu(cell[index]); - dm_warn("%#x (%u)\n", *outp, *outp); + log_debug("%#x (%u)\n", *outp, *outp); return 0; } @@ -430,17 +430,17 @@ int ofnode_read_u64_index(ofnode node, const char *propname, int index, cell = fdt_getprop(ofnode_to_fdt(node), ofnode_to_offset(node), propname, &len); if (!cell) { - dm_warn("(not found)\n"); + log_debug("(not found)\n"); return -EINVAL; } if (len < (sizeof(u64) * (index + 1))) { - dm_warn("(not large enough)\n"); + log_debug("(not large enough)\n"); return -EOVERFLOW; } *outp = fdt64_to_cpu(cell[index]); - dm_warn("%#llx (%llu)\n", *outp, *outp); + log_debug("%#llx (%llu)\n", *outp, *outp); return 0; } @@ -468,7 +468,7 @@ int ofnode_read_u64(ofnode node, const char *propname, u64 *outp) int len; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); if (ofnode_is_np(node)) return of_read_u64(ofnode_to_np(node), propname, outp); @@ -476,12 +476,12 @@ int ofnode_read_u64(ofnode node, const char *propname, u64 *outp) cell = fdt_getprop(ofnode_to_fdt(node), ofnode_to_offset(node), propname, &len); if (!cell || len < sizeof(*cell)) { - dm_warn("(not found)\n"); + log_debug("(not found)\n"); return -EINVAL; } *outp = fdt64_to_cpu(cell[0]); - dm_warn("%#llx (%llu)\n", (unsigned long long)*outp, - (unsigned long long)*outp); + log_debug("%#llx (%llu)\n", (unsigned long long)*outp, + (unsigned long long)*outp); return 0; } @@ -499,11 +499,11 @@ bool ofnode_read_bool(ofnode node, const char *propname) bool prop; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); prop = ofnode_has_property(node, propname); - dm_warn("%s\n", prop ? "true" : "false"); + log_debug("%s\n", prop ? "true" : "false"); return prop ? true : false; } @@ -514,7 +514,7 @@ const void *ofnode_read_prop(ofnode node, const char *propname, int *sizep) int len; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); if (ofnode_is_np(node)) { struct property *prop = of_find_property( @@ -529,7 +529,7 @@ const void *ofnode_read_prop(ofnode node, const char *propname, int *sizep) propname, &len); } if (!val) { - dm_warn("<not found>\n"); + log_debug("<not found>\n"); if (sizep) *sizep = -FDT_ERR_NOTFOUND; return NULL; @@ -553,7 +553,7 @@ const char *ofnode_read_string(ofnode node, const char *propname) dm_warn("<invalid>\n"); return NULL; } - dm_warn("%s\n", str); + log_debug("%s\n", str); return str; } @@ -573,7 +573,7 @@ ofnode ofnode_find_subnode(ofnode node, const char *subnode_name) ofnode subnode; assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, subnode_name); + log_debug("%s: %s: ", __func__, subnode_name); if (ofnode_is_np(node)) { struct device_node *np = ofnode_to_np(node); @@ -588,8 +588,8 @@ ofnode ofnode_find_subnode(ofnode node, const char *subnode_name) ofnode_to_offset(node), subnode_name); subnode = noffset_to_ofnode(node, ooffset); } - dm_warn("%s\n", ofnode_valid(subnode) ? - ofnode_get_name(subnode) : "<none>"); + log_debug("%s\n", ofnode_valid(subnode) ? + ofnode_get_name(subnode) : "<none>"); return subnode; } @@ -598,7 +598,7 @@ int ofnode_read_u32_array(ofnode node, const char *propname, u32 *out_values, size_t sz) { assert(ofnode_valid(node)); - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); if (ofnode_is_np(node)) { return of_read_u32_array(ofnode_to_np(node), propname, @@ -611,7 +611,7 @@ int ofnode_read_u32_array(ofnode node, const char *propname, out_values, sz); /* get the error right, but space is more important in SPL */ - if (!IS_ENABLED(CONFIG_SPL_BUILD)) { + if (!IS_ENABLED(CONFIG_XPL_BUILD)) { if (ret == -FDT_ERR_NOTFOUND) return -EINVAL; else if (ret == -FDT_ERR_BADLAYOUT) @@ -1032,7 +1032,7 @@ ofnode ofnode_get_aliases_node(const char *name) if (!prop) return ofnode_null(); - dm_warn("%s: node_path: %s\n", __func__, prop); + log_debug("%s: node_path: %s\n", __func__, prop); return ofnode_path(prop); } @@ -1301,7 +1301,7 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type, int len; int ret = -ENOENT; - dm_warn("%s: %s: ", __func__, propname); + log_debug("%s: %s: ", __func__, propname); /* * If we follow the pci bus bindings strictly, we should check @@ -1318,10 +1318,10 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type, int i; for (i = 0; i < num; i++) { - dm_warn("pci address #%d: %08lx %08lx %08lx\n", i, - (ulong)fdt32_to_cpu(cell[0]), - (ulong)fdt32_to_cpu(cell[1]), - (ulong)fdt32_to_cpu(cell[2])); + log_debug("pci address #%d: %08lx %08lx %08lx\n", i, + (ulong)fdt32_to_cpu(cell[0]), + (ulong)fdt32_to_cpu(cell[1]), + (ulong)fdt32_to_cpu(cell[2])); if ((fdt32_to_cpu(*cell) & type) == type) { const unaligned_fdt64_t *ptr; @@ -1348,7 +1348,7 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type, ret = -EINVAL; fail: - dm_warn("(not found)\n"); + log_debug("(not found)\n"); return ret; } @@ -1468,7 +1468,7 @@ int ofnode_read_simple_size_cells(ofnode node) bool ofnode_pre_reloc(ofnode node) { -#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_TPL_BUILD) +#if defined(CONFIG_XPL_BUILD) || defined(CONFIG_TPL_BUILD) /* for SPL and TPL the remaining nodes after the fdtgrep 1st pass * had property bootph-all or bootph-pre-sram/bootph-pre-ram. * They are removed in final dtb (fdtgrep 2nd pass) @@ -1632,7 +1632,7 @@ int ofnode_write_string(ofnode node, const char *propname, const char *value) { assert(ofnode_valid(node)); - dm_warn("%s: %s = %s", __func__, propname, value); + log_debug("%s: %s = %s", __func__, propname, value); return ofnode_write_prop(node, propname, value, strlen(value) + 1, false); @@ -1735,6 +1735,39 @@ const char *ofnode_conf_read_str(const char *prop_name) return ofnode_read_string(node, prop_name); } +bool ofnode_options_read_bool(const char *prop_name) +{ + ofnode uboot; + + uboot = ofnode_path("/options/u-boot"); + if (!ofnode_valid(uboot)) + return false; + + return ofnode_read_bool(uboot, prop_name); +} + +int ofnode_options_read_int(const char *prop_name, int default_val) +{ + ofnode uboot; + + uboot = ofnode_path("/options/u-boot"); + if (!ofnode_valid(uboot)) + return default_val; + + return ofnode_read_u32_default(uboot, prop_name, default_val); +} + +const char *ofnode_options_read_str(const char *prop_name) +{ + ofnode uboot; + + uboot = ofnode_path("/options/u-boot"); + if (!ofnode_valid(uboot)) + return NULL; + + return ofnode_read_string(uboot, prop_name); +} + int ofnode_read_bootscript_address(u64 *bootscr_address, u64 *bootscr_offset) { int ret; |