The support of libfdt should only be needed when OF_CONTROL is enabled and OF_PLATDATA is not, as in other cases there is no DT file to query.
This patch fixes this dependency allowing to save some space. Signed-off-by: Walter Lozano <walter.loz...@collabora.com> --- drivers/core/ofnode.c | 132 +++++++++++++++++++++++++++++++++++++-- include/dm/read.h | 141 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 267 insertions(+), 6 deletions(-) diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 8f0eab2ca6..524d763379 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -23,11 +23,14 @@ int ofnode_read_u32(ofnode node, const char *propname, u32 *outp) if (ofnode_is_np(node)) { return of_read_u32(ofnode_to_np(node), propname, outp); } else { - const fdt32_t *cell; + const fdt32_t *cell = NULL; int len; +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) cell = fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, &len); +#endif + if (!cell || len < sizeof(int)) { debug("(not found)\n"); return -EINVAL; @@ -57,7 +60,7 @@ int ofnode_read_s32_default(ofnode node, const char *propname, s32 def) int ofnode_read_u64(ofnode node, const char *propname, u64 *outp) { - const unaligned_fdt64_t *cell; + const unaligned_fdt64_t *cell = NULL; int len; assert(ofnode_valid(node)); @@ -66,8 +69,10 @@ int ofnode_read_u64(ofnode node, const char *propname, u64 *outp) if (ofnode_is_np(node)) return of_read_u64(ofnode_to_np(node), propname, outp); +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) cell = fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, &len); +#endif if (!cell || len < sizeof(*cell)) { debug("(not found)\n"); return -EINVAL; @@ -118,8 +123,10 @@ const char *ofnode_read_string(ofnode node, const char *propname) len = prop->length; } } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) str = fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, &len); +#endif } if (!str) { debug("<not found>\n"); @@ -150,8 +157,11 @@ ofnode ofnode_find_subnode(ofnode node, const char *subnode_name) } subnode = np_to_ofnode(np); } else { - int ooffset = fdt_subnode_offset(gd->fdt_blob, + int ooffset = -FDT_ERR_NOTFOUND; +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) + ooffset = fdt_subnode_offset(gd->fdt_blob, ofnode_to_offset(node), subnode_name); +#endif subnode = offset_to_ofnode(ooffset); } debug("%s\n", ofnode_valid(subnode) ? @@ -170,9 +180,13 @@ int ofnode_read_u32_array(ofnode node, const char *propname, return of_read_u32_array(ofnode_to_np(node), propname, out_values, sz); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_int_array(gd->fdt_blob, ofnode_to_offset(node), propname, out_values, sz); +#else + return -FDT_ERR_NOTFOUND; +#endif } } @@ -182,8 +196,12 @@ ofnode ofnode_first_subnode(ofnode node) if (ofnode_is_np(node)) return np_to_ofnode(node.np->child); +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return offset_to_ofnode( fdt_first_subnode(gd->fdt_blob, ofnode_to_offset(node))); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } ofnode ofnode_next_subnode(ofnode node) @@ -192,8 +210,12 @@ ofnode ofnode_next_subnode(ofnode node) if (ofnode_is_np(node)) return np_to_ofnode(node.np->sibling); +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return offset_to_ofnode( fdt_next_subnode(gd->fdt_blob, ofnode_to_offset(node))); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } ofnode ofnode_get_parent(ofnode node) @@ -204,9 +226,12 @@ ofnode ofnode_get_parent(ofnode node) if (ofnode_is_np(node)) parent = np_to_ofnode(of_get_parent(ofnode_to_np(node))); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) parent.of_offset = fdt_parent_offset(gd->fdt_blob, ofnode_to_offset(node)); - +#else + parent.of_offset = -FDT_ERR_NOTFOUND; +#endif return parent; } @@ -220,7 +245,11 @@ const char *ofnode_get_name(ofnode node) if (ofnode_is_np(node)) return strrchr(node.np->full_name, '/') + 1; +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_get_name(gd->fdt_blob, ofnode_to_offset(node), NULL); +#endif + + return NULL; } ofnode ofnode_get_by_phandle(uint phandle) @@ -230,16 +259,18 @@ ofnode ofnode_get_by_phandle(uint phandle) if (of_live_active()) node = np_to_ofnode(of_find_node_by_phandle(phandle)); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) node.of_offset = fdt_node_offset_by_phandle(gd->fdt_blob, phandle); +#else + node.of_offset = -FDT_ERR_NOTFOUND; +#endif return node; } int ofnode_read_size(ofnode node, const char *propname) { - int len; - if (ofnode_is_np(node)) { struct property *prop = of_find_property( ofnode_to_np(node), propname, NULL); @@ -247,9 +278,12 @@ int ofnode_read_size(ofnode node, const char *propname) if (prop) return prop->length; } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) + int len; if (fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, &len)) return len; +#endif } return -EINVAL; @@ -282,9 +316,13 @@ fdt_addr_t ofnode_get_addr_size_index(ofnode node, int index, fdt_size_t *size) } else { na = ofnode_read_simple_addr_cells(ofnode_get_parent(node)); ns = ofnode_read_simple_size_cells(ofnode_get_parent(node)); +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_addr_size_fixed(gd->fdt_blob, ofnode_to_offset(node), "reg", index, na, ns, size, true); +#else + return FDT_ADDR_T_NONE; +#endif } return FDT_ADDR_T_NONE; @@ -309,6 +347,7 @@ int ofnode_stringlist_search(ofnode node, const char *property, return of_property_match_string(ofnode_to_np(node), property, string); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) int ret; ret = fdt_stringlist_search(gd->fdt_blob, @@ -320,6 +359,9 @@ int ofnode_stringlist_search(ofnode node, const char *property, return -EINVAL; return ret; +#else + return -ENODATA; +#endif } } @@ -330,6 +372,7 @@ int ofnode_read_string_index(ofnode node, const char *property, int index, return of_property_read_string_index(ofnode_to_np(node), property, index, outp); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) int len; *outp = fdt_stringlist_get(gd->fdt_blob, ofnode_to_offset(node), @@ -337,6 +380,9 @@ int ofnode_read_string_index(ofnode node, const char *property, int index, if (len < 0) return -EINVAL; return 0; +#else + return -EINVAL; +#endif } } @@ -345,11 +391,16 @@ int ofnode_read_string_count(ofnode node, const char *property) if (ofnode_is_np(node)) { return of_property_count_strings(ofnode_to_np(node), property); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_stringlist_count(gd->fdt_blob, ofnode_to_offset(node), property); +#else + return -FDT_ERR_NOTFOUND; +#endif } } +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) static void ofnode_from_fdtdec_phandle_args(struct fdtdec_phandle_args *in, struct ofnode_phandle_args *out) { @@ -358,6 +409,7 @@ static void ofnode_from_fdtdec_phandle_args(struct fdtdec_phandle_args *in, out->args_count = in->args_count; memcpy(out->args, in->args, sizeof(out->args)); } +#endif static void ofnode_from_of_phandle_args(struct of_phandle_args *in, struct ofnode_phandle_args *out) @@ -384,6 +436,7 @@ int ofnode_parse_phandle_with_args(ofnode node, const char *list_name, return ret; ofnode_from_of_phandle_args(&args, out_args); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) struct fdtdec_phandle_args args; int ret; @@ -394,6 +447,9 @@ int ofnode_parse_phandle_with_args(ofnode node, const char *list_name, if (ret) return ret; ofnode_from_fdtdec_phandle_args(&args, out_args); +#else + return -ENOENT; +#endif } return 0; @@ -406,9 +462,13 @@ int ofnode_count_phandle_with_args(ofnode node, const char *list_name, return of_count_phandle_with_args(ofnode_to_np(node), list_name, cells_name); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_parse_phandle_with_args(gd->fdt_blob, ofnode_to_offset(node), list_name, cells_name, 0, -1, NULL); +#else + return -ENOENT; +#endif } ofnode ofnode_path(const char *path) @@ -416,7 +476,11 @@ ofnode ofnode_path(const char *path) if (of_live_active()) return np_to_ofnode(of_find_node_by_path(path)); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return offset_to_ofnode(fdt_path_offset(gd->fdt_blob, path)); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } const char *ofnode_get_chosen_prop(const char *name) @@ -532,8 +596,12 @@ const void *ofnode_get_property(ofnode node, const char *propname, int *lenp) if (ofnode_is_np(node)) return of_get_property(ofnode_to_np(node), propname, lenp); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_getprop(gd->fdt_blob, ofnode_to_offset(node), propname, lenp); +#else + return NULL; +#endif } bool ofnode_is_available(ofnode node) @@ -541,8 +609,12 @@ bool ofnode_is_available(ofnode node) if (ofnode_is_np(node)) return of_device_is_available(ofnode_to_np(node)); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_is_enabled(gd->fdt_blob, ofnode_to_offset(node)); +#else + return 0; +#endif } fdt_addr_t ofnode_get_addr_size(ofnode node, const char *property, @@ -565,9 +637,13 @@ fdt_addr_t ofnode_get_addr_size(ofnode node, const char *property, else return of_read_number(prop, na); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_addr_size(gd->fdt_blob, ofnode_to_offset(node), property, sizep); +#else + return FDT_ADDR_T_NONE; +#endif } } @@ -584,8 +660,12 @@ const uint8_t *ofnode_read_u8_array_ptr(ofnode node, const char *propname, return (uint8_t *)prop; } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_locate_byte_array(gd->fdt_blob, ofnode_to_offset(node), propname, sz); +#else + return NULL; +#endif } } @@ -684,7 +764,11 @@ int ofnode_read_addr_cells(ofnode node) if (ofnode_is_np(node)) return of_n_addr_cells(ofnode_to_np(node)); else /* NOTE: this call should walk up the parent stack */ +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_address_cells(gd->fdt_blob, ofnode_to_offset(node)); +#else + return -FDT_ERR_BADNCELLS; +#endif } int ofnode_read_size_cells(ofnode node) @@ -692,7 +776,11 @@ int ofnode_read_size_cells(ofnode node) if (ofnode_is_np(node)) return of_n_size_cells(ofnode_to_np(node)); else /* NOTE: this call should walk up the parent stack */ +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_size_cells(gd->fdt_blob, ofnode_to_offset(node)); +#else + return -FDT_ERR_BADNCELLS; +#endif } int ofnode_read_simple_addr_cells(ofnode node) @@ -700,7 +788,11 @@ int ofnode_read_simple_addr_cells(ofnode node) if (ofnode_is_np(node)) return of_simple_addr_cells(ofnode_to_np(node)); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_address_cells(gd->fdt_blob, ofnode_to_offset(node)); +#else + return -FDT_ERR_BADNCELLS; +#endif } int ofnode_read_simple_size_cells(ofnode node) @@ -708,7 +800,11 @@ int ofnode_read_simple_size_cells(ofnode node) if (ofnode_is_np(node)) return of_simple_size_cells(ofnode_to_np(node)); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_size_cells(gd->fdt_blob, ofnode_to_offset(node)); +#else + return -FDT_ERR_BADNCELLS; +#endif } bool ofnode_pre_reloc(ofnode node) @@ -742,6 +838,7 @@ int ofnode_read_resource(ofnode node, uint index, struct resource *res) if (ofnode_is_np(node)) { return of_address_to_resource(ofnode_to_np(node), index, res); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) struct fdt_resource fres; int ret; @@ -754,6 +851,9 @@ int ofnode_read_resource(ofnode node, uint index, struct resource *res) res->end = fres.end; return 0; +#else + return -EINVAL; +#endif } } @@ -774,7 +874,11 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr) if (ofnode_is_np(node)) return of_translate_address(ofnode_to_np(node), in_addr); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_translate_address(gd->fdt_blob, ofnode_to_offset(node), in_addr); +#else + return OF_BAD_ADDR; +#endif } u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) @@ -782,7 +886,11 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) if (ofnode_is_np(node)) return of_translate_dma_address(ofnode_to_np(node), in_addr); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_translate_dma_address(gd->fdt_blob, ofnode_to_offset(node), in_addr); +#else + return OF_BAD_ADDR; +#endif } int ofnode_device_is_compatible(ofnode node, const char *compat) @@ -791,9 +899,13 @@ int ofnode_device_is_compatible(ofnode node, const char *compat) return of_device_is_compatible(ofnode_to_np(node), compat, NULL, NULL); else +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return !fdt_node_check_compatible(gd->fdt_blob, ofnode_to_offset(node), compat); +#else + return !-FDT_ERR_NOTFOUND; +#endif } ofnode ofnode_by_compatible(ofnode from, const char *compat) @@ -803,8 +915,12 @@ ofnode ofnode_by_compatible(ofnode from, const char *compat) (struct device_node *)ofnode_to_np(from), NULL, compat)); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return offset_to_ofnode(fdt_node_offset_by_compatible( gd->fdt_blob, ofnode_to_offset(from), compat)); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } } @@ -816,9 +932,13 @@ ofnode ofnode_by_prop_value(ofnode from, const char *propname, (struct device_node *)ofnode_to_np(from), propname, propval, proplen)); } else { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return offset_to_ofnode(fdt_node_offset_by_prop_value( gd->fdt_blob, ofnode_to_offset(from), propname, propval, proplen)); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } } diff --git a/include/dm/read.h b/include/dm/read.h index d37fcb504d..53ad523371 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -40,7 +40,11 @@ static inline ofnode dev_ofnode(struct udevice *dev) static inline bool dev_of_valid(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_valid(dev_ofnode(dev)); +#else + return false; +#endif } #ifndef CONFIG_DM_DEV_READ_INLINE @@ -607,13 +611,21 @@ int dev_read_alias_highest_id(const char *stem); static inline int dev_read_u32(struct udevice *dev, const char *propname, u32 *outp) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_u32(dev_ofnode(dev), propname, outp); +#else + return -EINVAL; +#endif } static inline int dev_read_u32_default(struct udevice *dev, const char *propname, int def) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_u32_default(dev_ofnode(dev), propname, def); +#else + return def; +#endif } static inline int dev_read_s32(struct udevice *dev, @@ -625,7 +637,11 @@ static inline int dev_read_s32(struct udevice *dev, static inline int dev_read_s32_default(struct udevice *dev, const char *propname, int def) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_s32_default(dev_ofnode(dev), propname, def); +#else + return def; +#endif } static inline int dev_read_u32u(struct udevice *dev, @@ -634,7 +650,11 @@ static inline int dev_read_u32u(struct udevice *dev, u32 val; int ret; +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) ret = ofnode_read_u32(dev_ofnode(dev), propname, &val); +#else + return -EINVAL; +#endif if (ret) return ret; *outp = val; @@ -645,35 +665,59 @@ static inline int dev_read_u32u(struct udevice *dev, static inline int dev_read_u64(struct udevice *dev, const char *propname, u64 *outp) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_u64(dev_ofnode(dev), propname, outp); +#else + return -EINVAL; +#endif } static inline u64 dev_read_u64_default(struct udevice *dev, const char *propname, u64 def) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_u64_default(dev_ofnode(dev), propname, def); +#else + return def; +#endif } static inline const char *dev_read_string(struct udevice *dev, const char *propname) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_string(dev_ofnode(dev), propname); +#else + return NULL; +#endif } static inline bool dev_read_bool(struct udevice *dev, const char *propname) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_bool(dev_ofnode(dev), propname); +#else + return -EINVAL; +#endif } static inline ofnode dev_read_subnode(struct udevice *dev, const char *subbnode_name) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_find_subnode(dev_ofnode(dev), subbnode_name); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } static inline int dev_read_size(struct udevice *dev, const char *propname) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_size(dev_ofnode(dev), propname); +#else + return -EINVAL; +#endif } static inline fdt_addr_t dev_read_addr_index(struct udevice *dev, int index) @@ -735,142 +779,239 @@ static inline fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *propname, fdt_size_t *sizep) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_get_addr_size(dev_ofnode(dev), propname, sizep); +#else + return FDT_ADDR_T_NONE; +#endif } static inline const char *dev_read_name(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_get_name(dev_ofnode(dev)); +#else + return NULL; +#endif } static inline int dev_read_stringlist_search(struct udevice *dev, const char *propname, const char *string) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_stringlist_search(dev_ofnode(dev), propname, string); +#else + return -ENODATA; +#endif } static inline int dev_read_string_index(struct udevice *dev, const char *propname, int index, const char **outp) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_string_index(dev_ofnode(dev), propname, index, outp); +#else + return -EINVAL; +#endif } static inline int dev_read_string_count(struct udevice *dev, const char *propname) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_string_count(dev_ofnode(dev), propname); +#else + return -FDT_ERR_NOTFOUND; +#endif } static inline int dev_read_phandle_with_args(struct udevice *dev, const char *list_name, const char *cells_name, int cell_count, int index, struct ofnode_phandle_args *out_args) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_parse_phandle_with_args(dev_ofnode(dev), list_name, cells_name, cell_count, index, out_args); +#else + return -ENOENT; +#endif } static inline int dev_count_phandle_with_args(struct udevice *dev, const char *list_name, const char *cells_name) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_count_phandle_with_args(dev_ofnode(dev), list_name, cells_name); +#else + return -ENOENT; +#endif } static inline int dev_read_addr_cells(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) /* NOTE: this call should walk up the parent stack */ return fdt_address_cells(gd->fdt_blob, dev_of_offset(dev)); +#else + return 2; +#endif } static inline int dev_read_size_cells(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) /* NOTE: this call should walk up the parent stack */ return fdt_size_cells(gd->fdt_blob, dev_of_offset(dev)); +#else + return 2; +#endif } static inline int dev_read_simple_addr_cells(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_address_cells(gd->fdt_blob, dev_of_offset(dev)); +#else + return 2; +#endif } static inline int dev_read_simple_size_cells(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_size_cells(gd->fdt_blob, dev_of_offset(dev)); +#else + return 2; +#endif } static inline int dev_read_phandle(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdt_get_phandle(gd->fdt_blob, dev_of_offset(dev)); +#else + return 0; +#endif } static inline const void *dev_read_prop(struct udevice *dev, const char *propname, int *lenp) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_get_property(dev_ofnode(dev), propname, lenp); +#else + return NULL; +#endif } static inline int dev_read_alias_seq(struct udevice *dev, int *devnump) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_alias_seq(gd->fdt_blob, dev->uclass->uc_drv->name, dev_of_offset(dev), devnump); +#else + return -ENOENT; +#endif } static inline int dev_read_u32_array(struct udevice *dev, const char *propname, u32 *out_values, size_t sz) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_u32_array(dev_ofnode(dev), propname, out_values, sz); +#else + return -FDT_ERR_NOTFOUND; +#endif } static inline ofnode dev_read_first_subnode(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_first_subnode(dev_ofnode(dev)); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } static inline ofnode dev_read_next_subnode(ofnode node) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_next_subnode(node); +#else + return offset_to_ofnode(-FDT_ERR_NOTFOUND); +#endif } static inline const uint8_t *dev_read_u8_array_ptr(struct udevice *dev, const char *propname, size_t sz) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_u8_array_ptr(dev_ofnode(dev), propname, sz); +#else + return NULL; +#endif } static inline int dev_read_enabled(struct udevice *dev) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_is_enabled(gd->fdt_blob, dev_of_offset(dev)); +#else + return 0; +#endif } static inline int dev_read_resource(struct udevice *dev, uint index, struct resource *res) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_resource(dev_ofnode(dev), index, res); +#else + return -EINVAL; +#endif } static inline int dev_read_resource_byname(struct udevice *dev, const char *name, struct resource *res) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_read_resource_byname(dev_ofnode(dev), name, res); +#else + return -EINVAL; +#endif } static inline u64 dev_translate_address(struct udevice *dev, const fdt32_t *in_addr) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_translate_address(dev_ofnode(dev), in_addr); +#else + return OF_BAD_ADDR; +#endif } static inline u64 dev_translate_dma_address(struct udevice *dev, const fdt32_t *in_addr) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); +#else + return OF_BAD_ADDR; +#endif } static inline int dev_read_alias_highest_id(const char *stem) { +#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA) return fdtdec_get_alias_highest_id(gd->fdt_blob, stem); +#else + return -1; +#endif + } #endif /* CONFIG_DM_DEV_READ_INLINE */ -- 2.20.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot