From a93648d197df48fa46dd55f925ff70468bd81c71 Mon Sep 17 00:00:00 2001 From: Guilherme Maciel Ferreira Date: Thu, 15 Jan 2015 02:48:07 -0200 Subject: [PATCH] imagetool: replace image registration function by linker_lists feature The registration was introduced in commit f86ed6a8d52c99bb2d17d3cac1647edca0c4399c This commit also removes all registration functions, and the member "next" from image_type_params struct Signed-off-by: Guilherme Maciel Ferreira --- tools/Makefile | 2 ++ tools/aisimage.c | 30 ++++++++-------- tools/atmelimage.c | 30 ++++++++-------- tools/default_image.c | 30 ++++++++-------- tools/dumpimage.c | 46 ++++--------------------- tools/fit_image.c | 30 ++++++++-------- tools/gpimage.c | 29 ++++++++-------- tools/imagetool.c | 72 +++++++------------------------------- tools/imagetool.h | 80 +++++++++++++++++++++---------------------- tools/imagetool.lds | 24 +++++++++++++ tools/imximage.c | 30 ++++++++-------- tools/kwbimage.c | 30 ++++++++-------- tools/mkimage.c | 44 ++---------------------- tools/mxsimage.c | 35 ++++++++----------- tools/omapimage.c | 29 ++++++++-------- tools/pblimage.c | 30 ++++++++-------- tools/socfpgaimage.c | 30 ++++++++-------- tools/ublimage.c | 29 ++++++++-------- 18 files changed, 254 insertions(+), 376 deletions(-) create mode 100644 tools/imagetool.lds diff --git a/tools/Makefile b/tools/Makefile index e549f8e63c..cb44456cbd 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -122,6 +122,8 @@ HOSTLOADLIBES_dumpimage := $(HOSTLOADLIBES_mkimage) HOSTLOADLIBES_fit_info := $(HOSTLOADLIBES_mkimage) HOSTLOADLIBES_fit_check_sign := $(HOSTLOADLIBES_mkimage) +HOSTLDFLAGS += -T $(srctree)/tools/imagetool.lds + hostprogs-$(CONFIG_EXYNOS5250) += mkexynosspl hostprogs-$(CONFIG_EXYNOS5420) += mkexynosspl HOSTCFLAGS_mkexynosspl.o := -pedantic diff --git a/tools/aisimage.c b/tools/aisimage.c index 8de370a2e0..9338342cb3 100644 --- a/tools/aisimage.c +++ b/tools/aisimage.c @@ -413,19 +413,17 @@ int aisimage_check_params(struct image_tool_params *params) /* * aisimage parameters */ -static struct image_type_params aisimage_params = { - .name = "TI Davinci AIS Boot Image support", - .header_size = 0, - .hdr = NULL, - .check_image_type = aisimage_check_image_types, - .verify_header = aisimage_verify_header, - .print_header = aisimage_print_header, - .set_header = aisimage_set_header, - .check_params = aisimage_check_params, - .vrec_header = aisimage_generate, -}; - -void init_ais_image_type(void) -{ - register_image_type(&aisimage_params); -} +U_BOOT_IMAGE_TYPE( + aisimage, + "TI Davinci AIS Boot Image support", + 0, + NULL, + aisimage_check_params, + aisimage_verify_header, + aisimage_print_header, + aisimage_set_header, + NULL, + aisimage_check_image_types, + NULL, + aisimage_generate +); diff --git a/tools/atmelimage.c b/tools/atmelimage.c index c8101d2ddc..5b72ac54a6 100644 --- a/tools/atmelimage.c +++ b/tools/atmelimage.c @@ -324,19 +324,17 @@ static int atmel_vrec_header(struct image_tool_params *params, return EXIT_SUCCESS; } -static struct image_type_params atmelimage_params = { - .name = "ATMEL ROM-Boot Image support", - .header_size = 0, - .hdr = NULL, - .check_image_type = atmel_check_image_type, - .verify_header = atmel_verify_header, - .print_header = atmel_print_header, - .set_header = atmel_set_header, - .check_params = atmel_check_params, - .vrec_header = atmel_vrec_header, -}; - -void init_atmel_image_type(void) -{ - register_image_type(&atmelimage_params); -} +U_BOOT_IMAGE_TYPE( + atmelimage, + "ATMEL ROM-Boot Image support", + 0, + NULL, + atmel_check_params, + atmel_verify_header, + atmel_print_header, + atmel_set_header, + NULL, + atmel_check_image_type, + NULL, + atmel_vrec_header +); diff --git a/tools/default_image.c b/tools/default_image.c index a92fa8015b..0b0e076831 100644 --- a/tools/default_image.c +++ b/tools/default_image.c @@ -150,19 +150,17 @@ static int image_extract_datafile(void *ptr, struct image_tool_params *params) /* * Default image type parameters definition */ -static struct image_type_params defimage_params = { - .name = "Default Image support", - .header_size = sizeof(image_header_t), - .hdr = (void*)&header, - .check_image_type = image_check_image_types, - .verify_header = image_verify_header, - .print_header = image_print_contents, - .set_header = image_set_header, - .extract_datafile = image_extract_datafile, - .check_params = image_check_params, -}; - -void init_default_image_type(void) -{ - register_image_type(&defimage_params); -} +U_BOOT_IMAGE_TYPE( + defimage, + "Default Image support", + sizeof(image_header_t), + (void *)&header, + image_check_params, + image_verify_header, + image_print_contents, + image_set_header, + image_extract_datafile, + image_check_image_types, + NULL, + NULL +); diff --git a/tools/dumpimage.c b/tools/dumpimage.c index 0228e183ab..80bf583b39 100644 --- a/tools/dumpimage.c +++ b/tools/dumpimage.c @@ -20,41 +20,6 @@ static struct image_tool_params params = { .type = IH_TYPE_KERNEL, }; -/** - * dumpimage_register() - register respective image generation/list support - * - * the input struct image_type_params is checked and appended to the link - * list, if the input structure is already registered, issue an error - * - * @tparams: Image type parameters - */ -static void dumpimage_register(struct image_type_params *tparams) -{ - struct image_type_params **tp; - - if (!tparams) { - fprintf(stderr, "%s: %s: Null input\n", params.cmdname, - __func__); - exit(EXIT_FAILURE); - } - - /* scan the linked list, check for registry and point the last one */ - for (tp = &dumpimage_tparams; *tp != NULL; tp = &(*tp)->next) { - if (!strcmp((*tp)->name, tparams->name)) { - fprintf(stderr, "%s: %s already registered\n", - params.cmdname, tparams->name); - return; - } - } - - /* add input struct entry at the end of link list */ - *tp = tparams; - /* mark input entry as last entry in the link list */ - tparams->next = NULL; - - debug("Registered %s\n", tparams->name); -} - /* * dumpimage_extract_datafile - * @@ -70,8 +35,12 @@ static int dumpimage_extract_datafile(void *ptr, struct stat *sbuf) { int retval = -1; struct image_type_params *curr; + struct image_type_params *start = ll_entry_start( + struct image_type_params, image_type); + struct image_type_params *end = ll_entry_end( + struct image_type_params, image_type); - for (curr = dumpimage_tparams; curr != NULL; curr = curr->next) { + for (curr = start; curr != end; curr++) { if (curr->verify_header) { retval = curr->verify_header((unsigned char *)ptr, sbuf->st_size, ¶ms); @@ -104,9 +73,6 @@ int main(int argc, char **argv) int retval = 0; struct image_type_params *tparams = NULL; - /* Init all image generation/list support */ - register_image_tool(dumpimage_register); - params.cmdname = *argv; while ((opt = getopt(argc, argv, "li:o:p:V")) != -1) { @@ -142,7 +108,7 @@ int main(int argc, char **argv) usage(); /* set tparams as per input type_id */ - tparams = imagetool_get_type(params.type, dumpimage_tparams); + tparams = imagetool_get_type(params.type); if (tparams == NULL) { fprintf(stderr, "%s: unsupported type %s\n", params.cmdname, genimg_get_type_name(params.type)); diff --git a/tools/fit_image.c b/tools/fit_image.c index 3ececf913f..5712842969 100644 --- a/tools/fit_image.c +++ b/tools/fit_image.c @@ -162,19 +162,17 @@ static int fit_check_params(struct image_tool_params *params) (params->lflag && (params->dflag || params->fflag))); } -static struct image_type_params fitimage_params = { - .name = "FIT Image support", - .header_size = sizeof(image_header_t), - .hdr = (void*)&header, - .verify_header = fit_verify_header, - .print_header = fit_print_contents, - .check_image_type = fit_check_image_types, - .fflag_handle = fit_handle_file, - .set_header = NULL, /* FIT images use DTB header */ - .check_params = fit_check_params, -}; - -void init_fit_image_type (void) -{ - register_image_type(&fitimage_params); -} +U_BOOT_IMAGE_TYPE( + fitimage, + "FIT Image support", + sizeof(image_header_t), + (void *)&header, + fit_check_params, + fit_verify_header, + fit_print_contents, + NULL, + NULL, + fit_check_image_types, + fit_handle_file, + NULL /* FIT images use DTB header */ +); diff --git a/tools/gpimage.c b/tools/gpimage.c index 1cabb5b612..1adc55c5fc 100644 --- a/tools/gpimage.c +++ b/tools/gpimage.c @@ -60,18 +60,17 @@ static void gpimage_set_header(void *ptr, struct stat *sbuf, int ifd, /* * gpimage parameters */ -static struct image_type_params gpimage_params = { - .name = "TI KeyStone GP Image support", - .header_size = GPIMAGE_HDR_SIZE, - .hdr = (void *)&gpimage_header, - .check_image_type = gpimage_check_image_types, - .verify_header = gpimage_verify_header, - .print_header = gpimage_print_header, - .set_header = gpimage_set_header, - .check_params = gpimage_check_params, -}; - -void init_gpimage_type(void) -{ - register_image_type(&gpimage_params); -} +U_BOOT_IMAGE_TYPE( + gpimage, + "TI KeyStone GP Image support", + GPIMAGE_HDR_SIZE, + (void *)&gpimage_header, + gpimage_check_params, + gpimage_verify_header, + gpimage_print_header, + gpimage_set_header, + NULL, + gpimage_check_image_types, + NULL, + NULL +); diff --git a/tools/imagetool.c b/tools/imagetool.c index a25b86b36e..9d2819ed68 100644 --- a/tools/imagetool.c +++ b/tools/imagetool.c @@ -10,68 +10,15 @@ #include -/* - * Callback function to register a image type within a tool - */ -static imagetool_register_t register_func; - -/* - * register_image_tool - - * - * The tool provides its own registration function in order to all image - * types initialize themselves. - */ -void register_image_tool(imagetool_register_t image_register) -{ - /* - * Save the image tool callback function. It will be used to register - * image types within that tool - */ - register_func = image_register; - - /* Init ATMEL ROM Boot Image generation/list support */ - init_atmel_image_type(); - /* Init Freescale PBL Boot image generation/list support */ - init_pbl_image_type(); - /* Init Kirkwood Boot image generation/list support */ - init_kwb_image_type(); - /* Init Freescale imx Boot image generation/list support */ - init_imx_image_type(); - /* Init Freescale mxs Boot image generation/list support */ - init_mxs_image_type(); - /* Init FIT image generation/list support */ - init_fit_image_type(); - /* Init TI OMAP Boot image generation/list support */ - init_omap_image_type(); - /* Init Default image generation/list support */ - init_default_image_type(); - /* Init Davinci UBL support */ - init_ubl_image_type(); - /* Init Davinci AIS support */ - init_ais_image_type(); - /* Init Altera SOCFPGA support */ - init_socfpga_image_type(); - /* Init TI Keystone boot image generation/list support */ - init_gpimage_type(); -} - -/* - * register_image_type - - * - * Register a image type within a tool - */ -void register_image_type(struct image_type_params *tparams) -{ - register_func(tparams); -} - -struct image_type_params *imagetool_get_type( - int type, - struct image_type_params *tparams) +struct image_type_params *imagetool_get_type(int type) { struct image_type_params *curr; + struct image_type_params *start = ll_entry_start( + struct image_type_params, image_type); + struct image_type_params *end = ll_entry_end( + struct image_type_params, image_type); - for (curr = tparams; curr != NULL; curr = curr->next) { + for (curr = start; curr != end; curr++) { if (curr->check_image_type) { if (!curr->check_image_type(type)) return curr; @@ -89,7 +36,12 @@ int imagetool_verify_print_header( int retval = -1; struct image_type_params *curr; - for (curr = tparams; curr != NULL; curr = curr->next) { + struct image_type_params *start = ll_entry_start( + struct image_type_params, image_type); + struct image_type_params *end = ll_entry_end( + struct image_type_params, image_type); + + for (curr = start; curr != end; curr++) { if (curr->verify_header) { retval = curr->verify_header((unsigned char *)ptr, sbuf->st_size, params); diff --git a/tools/imagetool.h b/tools/imagetool.h index 44d9380995..8724cb525f 100644 --- a/tools/imagetool.h +++ b/tools/imagetool.h @@ -19,6 +19,16 @@ #include #include #include + +/* define __KERNEL__ in order to get the definitions + * required by the linker list. This is probably not + * the best way to do this */ +#ifndef __KERNEL__ +#define __KERNEL__ +#include +#undef __KERNEL__ +#endif /* __KERNEL__ */ + #include "fdt_host.h" #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) @@ -127,29 +137,8 @@ struct image_type_params { */ int (*vrec_header) (struct image_tool_params *, struct image_type_params *); - /* pointer to the next registered entry in linked list */ - struct image_type_params *next; }; -/* - * Tool registration function. - */ -typedef void (*imagetool_register_t)(struct image_type_params *); - -/* - * Initializes all image types with the given registration callback - * function. - * An image tool uses this function to initialize all image types. - */ -void register_image_tool(imagetool_register_t image_register); - -/* - * Register a image type within a tool. - * An image type uses this function to register itself within - * all tools. - */ -void register_image_type(struct image_type_params *tparams); - /** * imagetool_get_type() - find the image type params for a given image type * @@ -161,9 +150,7 @@ void register_image_type(struct image_type_params *tparams); * if input type_id is not supported by any of image_type_support * returns NULL */ -struct image_type_params *imagetool_get_type( - int type, - struct image_type_params *tparams); +struct image_type_params *imagetool_get_type(int type); /* * imagetool_verify_print_header() - verifies the image header @@ -201,24 +188,37 @@ int imagetool_save_datafile( /* * There is a c file associated with supported image type low level code * for ex. default_image.c, fit_image.c - * init_xxx_type() is the only function referred by image tool core to avoid - * a single lined header file, you can define them here - * - * Supported image types init functions */ -void init_default_image_type(void); -void init_atmel_image_type(void); -void init_pbl_image_type(void); -void init_ais_image_type(void); -void init_kwb_image_type(void); -void init_imx_image_type(void); -void init_mxs_image_type(void); -void init_fit_image_type(void); -void init_ubl_image_type(void); -void init_omap_image_type(void); -void init_socfpga_image_type(void); -void init_gpimage_type(void); + void pbl_load_uboot(int fd, struct image_tool_params *mparams); +#define U_BOOT_IMAGE_TYPE( \ + _id, \ + _name, \ + _header_size, \ + _header, \ + _check_params, \ + _verify_header, \ + _print_header, \ + _set_header, \ + _extract_datafile, \ + _check_image_type, \ + _fflag_handle, \ + _vrec_header \ + ) \ + ll_entry_declare(struct image_type_params, _id, image_type) = { \ + .name = _name, \ + .header_size = _header_size, \ + .hdr = _header, \ + .check_params = _check_params, \ + .verify_header = _verify_header, \ + .print_header = _print_header, \ + .set_header = _set_header, \ + .extract_datafile = _extract_datafile, \ + .check_image_type = _check_image_type, \ + .fflag_handle = _fflag_handle, \ + .vrec_header = _vrec_header \ + } + #endif /* _IMAGETOOL_H_ */ diff --git a/tools/imagetool.lds b/tools/imagetool.lds new file mode 100644 index 0000000000..7e92b4ac66 --- /dev/null +++ b/tools/imagetool.lds @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2011-2012 The Chromium OS Authors. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +SECTIONS +{ + + . = ALIGN(4); + .u_boot_list : { + KEEP(*(SORT(.u_boot_list*))); + } + + __u_boot_sandbox_option_start = .; + _u_boot_sandbox_getopt : { *(.u_boot_sandbox_getopt) } + __u_boot_sandbox_option_end = .; + + __bss_start = .; +} + +INSERT BEFORE .data; diff --git a/tools/imximage.c b/tools/imximage.c index 526b7d490d..3d37591886 100644 --- a/tools/imximage.c +++ b/tools/imximage.c @@ -694,19 +694,17 @@ static int imximage_generate(struct image_tool_params *params, /* * imximage parameters */ -static struct image_type_params imximage_params = { - .name = "Freescale i.MX Boot Image support", - .header_size = 0, - .hdr = NULL, - .check_image_type = imximage_check_image_types, - .verify_header = imximage_verify_header, - .print_header = imximage_print_header, - .set_header = imximage_set_header, - .check_params = imximage_check_params, - .vrec_header = imximage_generate, -}; - -void init_imx_image_type(void) -{ - register_image_type(&imximage_params); -} +U_BOOT_IMAGE_TYPE( + imximage, + "Freescale i.MX Boot Image support", + 0, + NULL, + imximage_check_params, + imximage_verify_header, + imximage_print_header, + imximage_set_header, + NULL, + imximage_check_image_types, + NULL, + imximage_generate +); diff --git a/tools/kwbimage.c b/tools/kwbimage.c index 807d46668b..66f459ad6b 100644 --- a/tools/kwbimage.c +++ b/tools/kwbimage.c @@ -905,19 +905,17 @@ static int kwbimage_check_params(struct image_tool_params *params) /* * kwbimage type parameters definition */ -static struct image_type_params kwbimage_params = { - .name = "Marvell MVEBU Boot Image support", - .header_size = 0, /* no fixed header size */ - .hdr = NULL, - .vrec_header = kwbimage_generate, - .check_image_type = kwbimage_check_image_types, - .verify_header = kwbimage_verify_header, - .print_header = kwbimage_print_header, - .set_header = kwbimage_set_header, - .check_params = kwbimage_check_params, -}; - -void init_kwb_image_type (void) -{ - register_image_type(&kwbimage_params); -} +U_BOOT_IMAGE_TYPE( + kwbimage, + "Marvell MVEBU Boot Image support", + 0, + NULL, + kwbimage_check_params, + kwbimage_verify_header, + kwbimage_print_header, + kwbimage_set_header, + NULL, + kwbimage_check_image_types, + NULL, + kwbimage_generate +); diff --git a/tools/mkimage.c b/tools/mkimage.c index c04a2abee5..f668487c89 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -29,42 +29,6 @@ struct image_tool_params params = { .imagename2 = "", }; -/* - * mkimage_register - - * - * It is used to register respective image generation/list support to the - * mkimage core - * - * the input struct image_type_params is checked and appended to the link - * list, if the input structure is already registered, error - */ -void mkimage_register (struct image_type_params *tparams) -{ - struct image_type_params **tp; - - if (!tparams) { - fprintf (stderr, "%s: %s: Null input\n", - params.cmdname, __FUNCTION__); - exit (EXIT_FAILURE); - } - - /* scan the linked list, check for registry and point the last one */ - for (tp = &mkimage_tparams; *tp != NULL; tp = &(*tp)->next) { - if (!strcmp((*tp)->name, tparams->name)) { - fprintf (stderr, "%s: %s already registered\n", - params.cmdname, tparams->name); - return; - } - } - - /* add input struct entry at the end of link list */ - *tp = tparams; - /* mark input entry as last entry in the link list */ - tparams->next = NULL; - - debug ("Registered %s\n", tparams->name); -} - int main (int argc, char **argv) { @@ -75,9 +39,6 @@ main (int argc, char **argv) struct image_type_params *tparams = NULL; int pad_len = 0; - /* Init all image generation/list support */ - register_image_tool(mkimage_register); - params.cmdname = *argv; params.addr = params.ep = 0; @@ -215,7 +176,7 @@ NXTARG: ; usage (); /* set tparams as per input type_id */ - tparams = imagetool_get_type(params.type, mkimage_tparams); + tparams = imagetool_get_type(params.type); if (tparams == NULL) { fprintf (stderr, "%s: unsupported type %s\n", params.cmdname, genimg_get_type_name(params.type)); @@ -466,8 +427,7 @@ copy_file (int ifd, const char *datafile, int pad) uint8_t zeros[4096]; int offset = 0; int size; - struct image_type_params *tparams = imagetool_get_type(params.type, - mkimage_tparams); + struct image_type_params *tparams = imagetool_get_type(params.type); if (pad >= sizeof(zeros)) { fprintf(stderr, "%s: Can't pad to %d\n", diff --git a/tools/mxsimage.c b/tools/mxsimage.c index 04beefe05c..98fc64491c 100644 --- a/tools/mxsimage.c +++ b/tools/mxsimage.c @@ -2312,25 +2312,18 @@ fail: /* * mxsimage parameters */ -static struct image_type_params mxsimage_params = { - .name = "Freescale MXS Boot Image support", - .header_size = 0, - .hdr = NULL, - .check_image_type = mxsimage_check_image_types, - .verify_header = mxsimage_verify_header, - .print_header = mxsimage_print_header, - .set_header = mxsimage_set_header, - .check_params = mxsimage_check_params, - .vrec_header = mxsimage_generate, -}; - -void init_mxs_image_type(void) -{ - register_image_type(&mxsimage_params); -} - -#else -void init_mxs_image_type(void) -{ -} +U_BOOT_IMAGE_TYPE( + mxsimage, + "Freescale MXS Boot Image support", + 0, + NULL, + mxsimage_check_params, + mxsimage_verify_header, + mxsimage_print_header, + mxsimage_set_header, + NULL, + mxsimage_check_image_types, + NULL, + mxsimage_generate +); #endif diff --git a/tools/omapimage.c b/tools/omapimage.c index 1e0c164796..7198b3330d 100644 --- a/tools/omapimage.c +++ b/tools/omapimage.c @@ -162,18 +162,17 @@ static void omapimage_set_header(void *ptr, struct stat *sbuf, int ifd, /* * omapimage parameters */ -static struct image_type_params omapimage_params = { - .name = "TI OMAP CH/GP Boot Image support", - .header_size = OMAP_FILE_HDR_SIZE, - .hdr = (void *)&omapimage_header, - .check_image_type = omapimage_check_image_types, - .verify_header = omapimage_verify_header, - .print_header = omapimage_print_header, - .set_header = omapimage_set_header, - .check_params = gpimage_check_params, -}; - -void init_omap_image_type(void) -{ - register_image_type(&omapimage_params); -} +U_BOOT_IMAGE_TYPE( + omapimage, + "TI OMAP CH/GP Boot Image support", + OMAP_FILE_HDR_SIZE, + (void *)&omapimage_header, + gpimage_check_params, + omapimage_verify_header, + omapimage_print_header, + omapimage_set_header, + NULL, + omapimage_check_image_types, + NULL, + NULL +); diff --git a/tools/pblimage.c b/tools/pblimage.c index 2a799ab4b6..d74fde9a44 100644 --- a/tools/pblimage.c +++ b/tools/pblimage.c @@ -308,19 +308,17 @@ int pblimage_check_params(struct image_tool_params *params) }; /* pblimage parameters */ -static struct image_type_params pblimage_params = { - .name = "Freescale PBL Boot Image support", - .header_size = sizeof(struct pbl_header), - .hdr = (void *)&pblimage_header, - .check_image_type = pblimage_check_image_types, - .check_params = pblimage_check_params, - .verify_header = pblimage_verify_header, - .print_header = pblimage_print_header, - .set_header = pblimage_set_header, -}; - -void init_pbl_image_type(void) -{ - pbl_size = 0; - register_image_type(&pblimage_params); -} +U_BOOT_IMAGE_TYPE( + pblimage, + "Freescale PBL Boot Image support", + sizeof(struct pbl_header), + (void *)&pblimage_header, + pblimage_check_params, + pblimage_verify_header, + pblimage_print_header, + pblimage_set_header, + NULL, + pblimage_check_image_types, + NULL, + NULL +); diff --git a/tools/socfpgaimage.c b/tools/socfpgaimage.c index 917873e7b3..652ae45f81 100644 --- a/tools/socfpgaimage.c +++ b/tools/socfpgaimage.c @@ -241,19 +241,17 @@ static void socfpgaimage_set_header(void *ptr, struct stat *sbuf, int ifd, sign_buffer(buf, 0, 0, data_size, 0); } -static struct image_type_params socfpgaimage_params = { - .name = "Altera SOCFPGA preloader support", - .vrec_header = socfpgaimage_vrec_header, - .header_size = 0, /* This will be modified by vrec_header() */ - .hdr = (void *)buffer, - .check_image_type = socfpgaimage_check_image_types, - .verify_header = socfpgaimage_verify_header, - .print_header = socfpgaimage_print_header, - .set_header = socfpgaimage_set_header, - .check_params = socfpgaimage_check_params, -}; - -void init_socfpga_image_type(void) -{ - register_image_type(&socfpgaimage_params); -} +U_BOOT_IMAGE_TYPE( + socfpgaimage, + "Altera SOCFPGA preloader support", + 0, /* This will be modified by vrec_header() */ + (void *)buffer, + socfpgaimage_check_params, + socfpgaimage_verify_header, + socfpgaimage_print_header, + socfpgaimage_set_header, + NULL, + socfpgaimage_check_image_types, + NULL, + socfpgaimage_vrec_header +); diff --git a/tools/ublimage.c b/tools/ublimage.c index cbbbe205da..6ed1eef29c 100644 --- a/tools/ublimage.c +++ b/tools/ublimage.c @@ -244,18 +244,17 @@ int ublimage_check_params(struct image_tool_params *params) /* * ublimage parameters */ -static struct image_type_params ublimage_params = { - .name = "Davinci UBL boot support", - .header_size = sizeof(struct ubl_header), - .hdr = (void *)&ublimage_header, - .check_image_type = ublimage_check_image_types, - .verify_header = ublimage_verify_header, - .print_header = ublimage_print_header, - .set_header = ublimage_set_header, - .check_params = ublimage_check_params, -}; - -void init_ubl_image_type(void) -{ - register_image_type(&ublimage_params); -} +U_BOOT_IMAGE_TYPE( + ublimage, + "Davinci UBL boot support", + sizeof(struct ubl_header), + (void *)&ublimage_header, + ublimage_check_params, + ublimage_verify_header, + ublimage_print_header, + ublimage_set_header, + NULL, + ublimage_check_image_types, + NULL, + NULL +); -- 2.25.1