Skip to content
Snippets Groups Projects
Commit f1737152 authored by Tom Rini's avatar Tom Rini
Browse files
parents d85cd291 3c4c142e
No related branches found
No related tags found
No related merge requests found
...@@ -194,6 +194,31 @@ static inline int fdt_setprop_uxx(void *fdt, int nodeoffset, const char *name, ...@@ -194,6 +194,31 @@ static inline int fdt_setprop_uxx(void *fdt, int nodeoffset, const char *name,
return fdt_setprop_u32(fdt, nodeoffset, name, (uint32_t)val); return fdt_setprop_u32(fdt, nodeoffset, name, (uint32_t)val);
} }
int fdt_root(void *fdt)
{
char *serial;
int err;
err = fdt_check_header(fdt);
if (err < 0) {
printf("fdt_root: %s\n", fdt_strerror(err));
return err;
}
serial = getenv("serial#");
if (serial) {
err = fdt_setprop(fdt, 0, "serial-number", serial,
strlen(serial) + 1);
if (err < 0) {
printf("WARNING: could not set serial-number %s.\n",
fdt_strerror(err));
return err;
}
}
return 0;
}
int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end) int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end)
{ {
......
...@@ -471,6 +471,10 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, ...@@ -471,6 +471,10 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
int ret = -EPERM; int ret = -EPERM;
int fdt_ret; int fdt_ret;
if (fdt_root(blob) < 0) {
printf("ERROR: root node setup failed\n");
goto err;
}
if (fdt_chosen(blob) < 0) { if (fdt_chosen(blob) < 0) {
printf("ERROR: /chosen node create failed\n"); printf("ERROR: /chosen node create failed\n");
goto err; goto err;
......
The root node
Optional properties:
- serial-number : a string representing the device's serial number
...@@ -16,8 +16,35 @@ u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell, ...@@ -16,8 +16,35 @@ u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell,
const char *prop, const u32 dflt); const char *prop, const u32 dflt);
u32 fdt_getprop_u32_default(const void *fdt, const char *path, u32 fdt_getprop_u32_default(const void *fdt, const char *path,
const char *prop, const u32 dflt); const char *prop, const u32 dflt);
/**
* Add data to the root of the FDT before booting the OS.
*
* See doc/device-tree-bindings/root.txt
*
* @param fdt FDT address in memory
* @return 0 if ok, or -FDT_ERR_... on error
*/
int fdt_root(void *fdt);
/**
* Add chosen data the FDT before booting the OS.
*
* In particular, this adds the kernel command line (bootargs) to the FDT.
*
* @param fdt FDT address in memory
* @return 0 if ok, or -FDT_ERR_... on error
*/
int fdt_chosen(void *fdt); int fdt_chosen(void *fdt);
/**
* Add initrd information to the FDT before booting the OS.
*
* @param fdt FDT address in memory
* @return 0 if ok, or -FDT_ERR_... on error
*/
int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end); int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end);
void do_fixup_by_path(void *fdt, const char *path, const char *prop, void do_fixup_by_path(void *fdt, const char *path, const char *prop,
const void *val, int len, int create); const void *val, int len, int create);
void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop, void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment