Add a helper to set the initrd properties in the unflattened tree. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/of/base.c | 39 +++++++++++++++++++++++++++++++++++++++ include/of.h | 3 +++ 2 files changed, 42 insertions(+) diff --git a/drivers/of/base.c b/drivers/of/base.c index 721db29..4dbe11e 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1201,3 +1201,42 @@ int of_device_is_stdout_path(struct device_d *dev) return 0; } + +/** + * of_add_initrd - add initrd properties to the devicetree + * @root - the root node of the tree + * @start - physical start address of the initrd image + * @end - physical end address of the initrd image + * + * Add initrd properties to the devicetree, or, if end is 0, + * delete them. + */ +int of_add_initrd(struct device_node *root, resource_size_t start, + resource_size_t end) +{ + struct device_node *chosen; + __be32 buf[2]; + + chosen = of_find_node_by_path(root, "/chosen"); + if (!chosen) + return -EINVAL; + + if (end) { + of_write_number(buf, start, 2); + of_set_property(chosen, "linux,initrd-start", buf, 8, 1); + of_write_number(buf, end, 2); + of_set_property(chosen, "linux,initrd-end", buf, 8, 1); + } else { + struct property *pp; + + pp = of_find_property(chosen, "linux,initrd-start"); + if (pp) + of_delete_property(pp); + + pp = of_find_property(chosen, "linux,initrd-end"); + if (pp) + of_delete_property(pp); + } + + return 0; +} diff --git a/include/of.h b/include/of.h index 6154490..1562f4e 100644 --- a/include/of.h +++ b/include/of.h @@ -68,6 +68,9 @@ struct driver_d; int of_match(struct device_d *dev, struct driver_d *drv); +int of_add_initrd(struct device_node *root, resource_size_t start, + resource_size_t end); + struct property *of_find_property(const struct device_node *node, const char *name); struct device_node *of_find_node_by_path(struct device_node *root, const char *path); -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox