Use the same approach as ARM barebox uses.

See also 6c03bdf8f99 ("kbuild: pbl: use same compression algo for both
barebox and DTB").

Signed-off-by: Antony Pavlov <[email protected]>
---
 arch/riscv/boot/start.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/arch/riscv/boot/start.c b/arch/riscv/boot/start.c
index 2e18105bbfb..ab9bb6f320f 100644
--- a/arch/riscv/boot/start.c
+++ b/arch/riscv/boot/start.c
@@ -35,7 +35,7 @@ static unsigned long barebox_boarddata_size;
 void *barebox_riscv_boot_dtb(void)
 {
        void *dtb;
-       int ret;
+       int ret = 0;
        struct barebox_boarddata_compressed_dtb *compressed_dtb;
        static void *boot_dtb;
 
@@ -58,8 +58,13 @@ void *barebox_riscv_boot_dtb(void)
        if (!dtb)
                return NULL;
 
-       ret = uncompress(compressed_dtb->data, compressed_dtb->datalen,
-                        NULL, NULL, dtb, NULL, NULL);
+       if (IS_ENABLED(CONFIG_IMAGE_COMPRESSION_NONE))
+               memcpy(dtb, compressed_dtb->data,
+                      compressed_dtb->datalen_uncompressed);
+       else
+               ret = uncompress(compressed_dtb->data, compressed_dtb->datalen,
+                                NULL, NULL, dtb, NULL, NULL);
+
        if (ret) {
                pr_err("uncompressing dtb failed\n");
                free(dtb);
-- 
2.39.0


Reply via email to