diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2021-03-22 14:39:01 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-03-23 12:16:25 +0100 |
commit | d2e7b10d2cb3b97dcad6a45bd97a3857cbc3db66 (patch) | |
tree | 93d886dcf6e298e10c41918503c346ccd6238e20 /arch/arm/cpu | |
parent | 5ef1dfb28ad9b95f5366b4c8cc4bfc20cd789e94 (diff) | |
download | barebox-d2e7b10d2cb3b97dcad6a45bd97a3857cbc3db66.tar.gz barebox-d2e7b10d2cb3b97dcad6a45bd97a3857cbc3db66.tar.xz |
ARM: make ARM_USE_COMPRESSED_DTB available for other arches
Other PBL-enabled architecture can benefit from compressed dtbs as well.
Move symbol and code to a comm place to be able to use it from RISC-V
in a later commit. In order not to break out of tree boards at runtime,
the old symbol name is maintained for ARM.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r-- | arch/arm/cpu/start.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index f48f5beea8..c61db66865 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -18,6 +18,7 @@ #include <linux/kasan.h> #include <memory.h> #include <uncompress.h> +#include <compressed-dtb.h> #include <malloc.h> #include <debug_ll.h> @@ -30,18 +31,6 @@ static unsigned long arm_endmem; static void *barebox_boarddata; static unsigned long barebox_boarddata_size; -static bool blob_is_fdt(const void *blob) -{ - return get_unaligned_be32(blob) == FDT_MAGIC; -} - -static bool blob_is_compressed_fdt(const void *blob) -{ - const struct barebox_arm_boarddata_compressed_dtb *dtb = blob; - - return dtb->magic == BAREBOX_ARM_BOARDDATA_COMPRESSED_DTB_MAGIC; -} - static bool blob_is_arm_boarddata(const void *blob) { const struct barebox_arm_boarddata *bd = blob; @@ -64,7 +53,7 @@ void *barebox_arm_boot_dtb(void) void *dtb; void *data; int ret; - struct barebox_arm_boarddata_compressed_dtb *compressed_dtb; + struct barebox_boarddata_compressed_dtb *compressed_dtb; static void *boot_dtb; if (boot_dtb) @@ -75,8 +64,7 @@ void *barebox_arm_boot_dtb(void) return barebox_boarddata; } - if (!IS_ENABLED(CONFIG_ARM_USE_COMPRESSED_DTB) || !barebox_boarddata - || !blob_is_compressed_fdt(barebox_boarddata)) + if (!fdt_blob_can_be_decompressed(barebox_boarddata)) return NULL; compressed_dtb = barebox_boarddata; @@ -185,7 +173,7 @@ __noreturn __no_sanitize_address void barebox_non_pbl_start(unsigned long membas totalsize = get_unaligned_be32(boarddata + 4); name = "DTB"; } else if (blob_is_compressed_fdt(boarddata)) { - struct barebox_arm_boarddata_compressed_dtb *bd = boarddata; + struct barebox_boarddata_compressed_dtb *bd = boarddata; totalsize = bd->datalen + sizeof(*bd); name = "Compressed DTB"; } else if (blob_is_arm_boarddata(boarddata)) { |