提交 ce36252c 编写于 作者: A Alexander Graf

dt: add helper for empty dt creation

We want to get rid of the concept of loading an external device tree and instead
generate our own. However, to do this we need to also create a device tree
template programatically.

This patch adds a helper to create an empty device tree in memory.
Signed-off-by: NAlexander Graf <agraf@suse.de>
Reviewed-by: NPeter Crosthwaite <peter.crosthwaite@petalogix.com>
上级 7d5fd108
...@@ -25,6 +25,43 @@ ...@@ -25,6 +25,43 @@
#include <libfdt.h> #include <libfdt.h>
#define FDT_MAX_SIZE 0x10000
void *create_device_tree(int *sizep)
{
void *fdt;
int ret;
*sizep = FDT_MAX_SIZE;
fdt = g_malloc0(FDT_MAX_SIZE);
ret = fdt_create(fdt, FDT_MAX_SIZE);
if (ret < 0) {
goto fail;
}
ret = fdt_begin_node(fdt, "");
if (ret < 0) {
goto fail;
}
ret = fdt_end_node(fdt);
if (ret < 0) {
goto fail;
}
ret = fdt_finish(fdt);
if (ret < 0) {
goto fail;
}
ret = fdt_open_into(fdt, fdt, *sizep);
if (ret) {
fprintf(stderr, "Unable to copy device tree in memory\n");
exit(1);
}
return fdt;
fail:
fprintf(stderr, "%s Couldn't create dt: %s\n", __func__, fdt_strerror(ret));
exit(1);
}
void *load_device_tree(const char *filename_path, int *sizep) void *load_device_tree(const char *filename_path, int *sizep)
{ {
int dt_size; int dt_size;
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#ifndef __DEVICE_TREE_H__ #ifndef __DEVICE_TREE_H__
#define __DEVICE_TREE_H__ #define __DEVICE_TREE_H__
void *create_device_tree(int *sizep);
void *load_device_tree(const char *filename_path, int *sizep); void *load_device_tree(const char *filename_path, int *sizep);
int qemu_devtree_setprop(void *fdt, const char *node_path, int qemu_devtree_setprop(void *fdt, const char *node_path,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册