
Move this function higher in the file so that it can later be used by add_upl_params()
Name the functions encode_reg() to better fit with the naming of the equivalent upl_read functions.
Signed-off-by: Simon Glass sjg@chromium.org ---
boot/upl_write.c | 90 ++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 45 deletions(-)
diff --git a/boot/upl_write.c b/boot/upl_write.c index c29848a9ce3..eed84832a42 100644 --- a/boot/upl_write.c +++ b/boot/upl_write.c @@ -143,6 +143,48 @@ static int ofnode_write_value(ofnode node, const char *prop, return 0; }
+/** + * encode_reg() - Generate a set of addr/size pairs + * + * Each base/size value from each region is written to the buffer in a suitable + * format to be written to the devicetree + * + * @upl: UPL state + * @buf: Buffer to write to + * @size: Buffer size + * @num_regions: Number of regions to process + * @region: List of regions to process (struct memregion) + * Returns: Number of bytes written, or -ENOSPC if the buffer is too small + */ +static int encode_reg(const struct upl *upl, char *buf, int size, + uint num_regions, const struct alist *region) +{ + char *ptr, *end = buf + size; + int i; + + ptr = buf; + for (i = 0; i < num_regions; i++) { + const struct memregion *reg = alist_get(region, i, + struct memregion); + + if (upl->addr_cells == 1) + *(u32 *)ptr = cpu_to_fdt32(reg->base); + else + *(u64 *)ptr = cpu_to_fdt64(reg->base); + ptr += upl->addr_cells * sizeof(u32); + + if (upl->size_cells == 1) + *(u32 *)ptr = cpu_to_fdt32(reg->size); + else + *(u64 *)ptr = cpu_to_fdt64(reg->size); + ptr += upl->size_cells * sizeof(u32); + if (ptr > end) + return log_msg_ret("uer", -ENOSPC); + } + + return ptr - buf; +} + /** * add_addr_size_cells() - Add #address/#size-cells properties to the tree * @@ -247,48 +289,6 @@ static int add_upl_image(const struct upl *upl, ofnode options) return 0; }
-/** - * buffer_addr_size() - Generate a set of addr/size pairs - * - * Each base/size value from each region is written to the buffer in a suitable - * format to be written to the devicetree - * - * @upl: UPL state - * @buf: Buffer to write to - * @size: Buffer size - * @num_regions: Number of regions to process - * @region: List of regions to process (struct memregion) - * Returns: Number of bytes written, or -ENOSPC if the buffer is too small - */ -static int buffer_addr_size(const struct upl *upl, char *buf, int size, - uint num_regions, const struct alist *region) -{ - char *ptr, *end = buf + size; - int i; - - ptr = buf; - for (i = 0; i < num_regions; i++) { - const struct memregion *reg = alist_get(region, i, - struct memregion); - - if (upl->addr_cells == 1) - *(u32 *)ptr = cpu_to_fdt32(reg->base); - else - *(u64 *)ptr = cpu_to_fdt64(reg->base); - ptr += upl->addr_cells * sizeof(u32); - - if (upl->size_cells == 1) - *(u32 *)ptr = cpu_to_fdt32(reg->size); - else - *(u64 *)ptr = cpu_to_fdt64(reg->size); - ptr += upl->size_cells * sizeof(u32); - if (ptr > end) - return -ENOSPC; - } - - return ptr - buf; -} - /** * write_mem_node() - Write a memory node and reg property * @@ -322,7 +322,7 @@ static int write_mem_node(const struct upl *upl, ofnode parent, if (ret) return log_msg_ret("wmn", ret);
- len = buffer_addr_size(upl, buf, sizeof(buf), mem->count, mem); + len = encode_reg(upl, buf, sizeof(buf), mem->count, mem); ret = ofnode_write_prop(node, UPLP_REG, buf, len, true); if (ret) return log_msg_ret("wm1", ret); @@ -483,7 +483,7 @@ static int add_upl_serial(const struct upl *upl, ofnode root, char buf[16]; int len;
- len = buffer_addr_size(upl, buf, sizeof(buf), 1, &ser->reg); + len = encode_reg(upl, buf, sizeof(buf), 1, &ser->reg); if (len < 0) return log_msg_ret("buf", len);
@@ -538,7 +538,7 @@ static int add_upl_graphics(const struct upl *upl, ofnode root) char buf[16]; int len;
- len = buffer_addr_size(upl, buf, sizeof(buf), 1, &gra->reg); + len = encode_reg(upl, buf, sizeof(buf), 1, &gra->reg); if (len < 0) return log_msg_ret("buf", len);