return fdt_node_offset_by_phandle(dtb->fdt, phandle);
}
+int dtoverlay_find_symbol(DTBLOB_T *dtb, const char *symbol_name)
+{
+ int symbols_off, path_len;
+ const char *node_path;
+
+ node_path = dtoverlay_get_alias(dtb, symbol_name);
+
+ if (node_path)
+ {
+ path_len = strlen(node_path);
+ }
+ else
+ {
+ symbols_off = fdt_path_offset(dtb->fdt, "/__symbols__");
+
+ if (symbols_off < 0)
+ {
+ dtoverlay_error("No symbols found");
+ return -FDT_ERR_NOTFOUND;
+ }
+
+ node_path = fdt_getprop(dtb->fdt, symbols_off, symbol_name, &path_len);
+ if (path_len < 0)
+ return -FDT_ERR_NOTFOUND;
+ }
+ return fdt_path_offset_namelen(dtb->fdt, node_path, path_len);
+}
+
int dtoverlay_find_matching_node(DTBLOB_T *dtb, const char **node_names,
int pos)
{
return fdt_getprop(dtb->fdt, pos, prop_name, prop_len);
}
+int dtoverlay_set_property(DTBLOB_T *dtb, int pos,
+ const char *prop_name, const void *prop, int prop_len)
+{
+ int err = fdt_setprop(dtb->fdt, pos, prop_name, prop, prop_len);
+ if (err < 0)
+ dtoverlay_error("Failed to set property '%s'", prop_name);
+ return err;
+}
+
const char *dtoverlay_get_alias(DTBLOB_T *dtb, const char *alias_name)
{
int node_off;
int dtoverlay_find_phandle(DTBLOB_T *dtb, int phandle);
+int dtoverlay_find_symbol(DTBLOB_T *dtb, const char *symbol_name);
+
int dtoverlay_find_matching_node(DTBLOB_T *dtb, const char **node_names,
int pos);
const void *dtoverlay_get_property(DTBLOB_T *dtb, int pos,
const char *prop_name, int *prop_len);
+int dtoverlay_set_property(DTBLOB_T *dtb, int pos,
+ const char *prop_name, const void *prop, int prop_len);
+
const char *dtoverlay_get_alias(DTBLOB_T *dtb, const char *alias_name);
int dtoverlay_set_alias(DTBLOB_T *dtb, const char *alias_name, const char *value);