X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fimage.h;h=4a280b78e748ebe49f4c74a4ab60b160ec8b37e2;hb=9c6bf1715f6afd97cb9cf79d68cc00a81d5a9efa;hp=83a2d412c9f4c28fa587523ce469caf07c480700;hpb=f388e3bed7318efe97058b673801dda6f563d319;p=oweals%2Fu-boot.git diff --git a/include/image.h b/include/image.h index 83a2d412c9..4a280b78e7 100644 --- a/include/image.h +++ b/include/image.h @@ -68,7 +68,6 @@ struct fdt_region; # define IMAGE_ENABLE_SHA1 1 # endif # else -# define CONFIG_CRC32 /* FIT images need CRC32 support */ # define IMAGE_ENABLE_CRC32 1 # define IMAGE_ENABLE_MD5 1 # define IMAGE_ENABLE_SHA1 1 @@ -126,7 +125,8 @@ enum ih_category { * Operating System Codes * * The following are exposed to uImage header. - * Do not change values for backward compatibility. + * New IDs *MUST* be appended at the end of the list and *NEVER* + * inserted for backward compatibility. */ enum { IH_OS_INVALID = 0, /* Invalid OS */ @@ -156,6 +156,8 @@ enum { IH_OS_OPENRTOS, /* OpenRTOS */ IH_OS_ARM_TRUSTED_FIRMWARE, /* ARM Trusted Firmware */ IH_OS_TEE, /* Trusted Execution Environment */ + IH_OS_OPENSBI, /* RISC-V OpenSBI */ + IH_OS_EFI, /* EFI Firmware (e.g. GRUB2) */ IH_OS_COUNT, }; @@ -164,7 +166,8 @@ enum { * CPU Architecture Codes (supported by Linux) * * The following are exposed to uImage header. - * Do not change values for backward compatibility. + * New IDs *MUST* be appended at the end of the list and *NEVER* + * inserted for backward compatibility. */ enum { IH_ARCH_INVALID = 0, /* Invalid CPU */ @@ -237,7 +240,8 @@ enum { * as command interpreter (=> Shell Scripts). * * The following are exposed to uImage header. - * Do not change values for backward compatibility. + * New IDs *MUST* be appended at the end of the list and *NEVER* + * inserted for backward compatibility. */ enum { @@ -252,7 +256,6 @@ enum { IH_TYPE_FLATDT, /* Binary Flat Device Tree Blob */ IH_TYPE_KWBIMAGE, /* Kirkwood Boot Image */ IH_TYPE_IMXIMAGE, /* Freescale IMXBoot Image */ - IH_TYPE_IMX8IMAGE, /* Freescale IMX8Boot Image */ IH_TYPE_UBLIMAGE, /* Davinci UBL Image */ IH_TYPE_OMAPIMAGE, /* TI OMAP Config Header Image */ IH_TYPE_AISIMAGE, /* TI Davinci AIS Image */ @@ -280,6 +283,9 @@ enum { IH_TYPE_STM32IMAGE, /* STMicroelectronics STM32 Image */ IH_TYPE_SOCFPGAIMAGE_V1, /* Altera SOCFPGA A10 Preloader */ IH_TYPE_MTKIMAGE, /* MediaTek BootROM loadable Image */ + IH_TYPE_IMX8MIMAGE, /* Freescale IMX8MBoot Image */ + IH_TYPE_IMX8IMAGE, /* Freescale IMX8Boot Image */ + IH_TYPE_COPRO, /* Coprocessor Image for remoteproc*/ IH_TYPE_COUNT, /* Number of image types */ }; @@ -288,7 +294,8 @@ enum { * Compression Types * * The following are exposed to uImage header. - * Do not change values for backward compatibility. + * New IDs *MUST* be appended at the end of the list and *NEVER* + * inserted for backward compatibility. */ enum { IH_COMP_NONE = 0, /* No Compression Used */ @@ -301,6 +308,7 @@ enum { IH_COMP_COUNT, }; +#define LZ4F_MAGIC 0x184D2204 /* LZ4 Magic Number */ #define IH_MAGIC 0x27051956 /* Image Magic Number */ #define IH_NMLEN 32 /* Image Name Length */ @@ -312,13 +320,13 @@ enum { * all data in network byte order (aka natural aka bigendian). */ typedef struct image_header { - __be32 ih_magic; /* Image Header Magic Number */ - __be32 ih_hcrc; /* Image Header CRC Checksum */ - __be32 ih_time; /* Image Creation Timestamp */ - __be32 ih_size; /* Image Data Size */ - __be32 ih_load; /* Data Load Address */ - __be32 ih_ep; /* Entry Point Address */ - __be32 ih_dcrc; /* Image Data CRC Checksum */ + uint32_t ih_magic; /* Image Header Magic Number */ + uint32_t ih_hcrc; /* Image Header CRC Checksum */ + uint32_t ih_time; /* Image Creation Timestamp */ + uint32_t ih_size; /* Image Data Size */ + uint32_t ih_load; /* Data Load Address */ + uint32_t ih_ep; /* Entry Point Address */ + uint32_t ih_dcrc; /* Image Data CRC Checksum */ uint8_t ih_os; /* Operating System */ uint8_t ih_arch; /* CPU architecture */ uint8_t ih_type; /* Image Type */ @@ -556,7 +564,7 @@ int boot_get_setup(bootm_headers_t *images, uint8_t arch, ulong *setup_start, #ifndef USE_HOSTCC /* Image format types, returned by _get_format() routine */ #define IMAGE_FORMAT_INVALID 0x00 -#if defined(CONFIG_IMAGE_FORMAT_LEGACY) +#if defined(CONFIG_LEGACY_IMAGE_FORMAT) #define IMAGE_FORMAT_LEGACY 0x01 /* legacy image_header based format */ #endif #define IMAGE_FORMAT_FIT 0x02 /* new, libfdt based format */ @@ -844,6 +852,23 @@ static inline int image_check_target_arch(const image_header_t *hdr) } #endif /* USE_HOSTCC */ +/** + * image_decomp() - decompress an image + * + * @comp: Compression algorithm that is used (IH_COMP_...) + * @load: Destination load address in U-Boot memory + * @image_start Image start address (where we are decompressing from) + * @type: OS type (IH_OS_...) + * @load_bug: Place to decompress to + * @image_buf: Address to decompress from + * @image_len: Number of bytes in @image_buf to decompress + * @unc_len: Available space for decompression + * @return 0 if OK, -ve on error (BOOTM_ERR_...) + */ +int image_decomp(int comp, ulong load, ulong image_start, int type, + void *load_buf, void *image_buf, ulong image_len, + uint unc_len, ulong *load_end); + /** * Set up properties in the FDT * @@ -1041,6 +1066,10 @@ int fit_check_format(const void *fit); int fit_conf_find_compat(const void *fit, const void *fdt); int fit_conf_get_node(const void *fit, const char *conf_uname); +int fit_conf_get_prop_node_count(const void *fit, int noffset, + const char *prop_name); +int fit_conf_get_prop_node_index(const void *fit, int noffset, + const char *prop_name, int index); /** * fit_conf_get_prop_node() - Get node refered to by a configuration @@ -1066,18 +1095,18 @@ int calculate_hash(const void *data, int data_len, const char *algo, * At present we only support signing on the host, and verification on the * device */ -#if defined(CONFIG_FIT_SIGNATURE) -# ifdef USE_HOSTCC +#if defined(USE_HOSTCC) +# if defined(CONFIG_FIT_SIGNATURE) # define IMAGE_ENABLE_SIGN 1 # define IMAGE_ENABLE_VERIFY 1 -# include -#else +# include +# else # define IMAGE_ENABLE_SIGN 0 -# define IMAGE_ENABLE_VERIFY 1 +# define IMAGE_ENABLE_VERIFY 0 # endif #else # define IMAGE_ENABLE_SIGN 0 -# define IMAGE_ENABLE_VERIFY 0 +# define IMAGE_ENABLE_VERIFY CONFIG_IS_ENABLED(FIT_SIGNATURE) #endif #ifdef USE_HOSTCC @@ -1307,6 +1336,7 @@ int android_image_get_second(const struct andr_img_hdr *hdr, ulong *second_data, ulong *second_len); ulong android_image_get_end(const struct andr_img_hdr *hdr); ulong android_image_get_kload(const struct andr_img_hdr *hdr); +ulong android_image_get_kcomp(const struct andr_img_hdr *hdr); void android_print_contents(const struct andr_img_hdr *hdr); #endif /* CONFIG_ANDROID_BOOT_IMAGE */