Merge git://git.denx.de/u-boot-fdt
This commit is contained in:
commit
f1737152c0
|
@ -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,
|
||||||
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;
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
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,
|
||||||
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,
|
||||||
|
|
Loading…
Reference in New Issue