projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-usb
[oweals/u-boot.git]
/
tools
/
mkimage.c
diff --git
a/tools/mkimage.c
b/tools/mkimage.c
index 42171883109480524c4d0d8c4ffd2f2be5d12359..d2cd1917874eef0154764351cb7c0edd274553c0 100644
(file)
--- a/
tools/mkimage.c
+++ b/
tools/mkimage.c
@@
-7,6
+7,7
@@
* Wolfgang Denk, wd@denx.de
*/
* Wolfgang Denk, wd@denx.de
*/
+#include "imagetool.h"
#include "mkimage.h"
#include "imximage.h"
#include <image.h>
#include "mkimage.h"
#include "imximage.h"
#include <image.h>
@@
-97,8
+98,9
@@
static void usage(const char *msg)
" -i => input filename for ramdisk file\n");
#ifdef CONFIG_FIT_SIGNATURE
fprintf(stderr,
" -i => input filename for ramdisk file\n");
#ifdef CONFIG_FIT_SIGNATURE
fprintf(stderr,
- "Signing / verified boot options: [-E] [-k keydir] [-K dtb] [ -c <comment>] [-p addr] [-r] [-N engine]\n"
+ "Signing / verified boot options: [-E] [-
B size] [-
k keydir] [-K dtb] [ -c <comment>] [-p addr] [-r] [-N engine]\n"
" -E => place data outside of the FIT structure\n"
" -E => place data outside of the FIT structure\n"
+ " -B => align size in hex for FIT structure and header\n"
" -k => set directory containing private keys\n"
" -K => write public keys to this .dtb file\n"
" -c => add comment in signature node\n"
" -k => set directory containing private keys\n"
" -K => write public keys to this .dtb file\n"
" -c => add comment in signature node\n"
@@
-143,7
+145,7
@@
static void process_args(int argc, char **argv)
int opt;
while ((opt = getopt(argc, argv,
int opt;
while ((opt = getopt(argc, argv,
- "a:A:b:c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVx")) != -1) {
+ "a:A:b:
B:
c:C:d:D:e:Ef:Fk:i:K:ln:N:p:O:rR:qsT:vVx")) != -1) {
switch (opt) {
case 'a':
params.addr = strtoull(optarg, &ptr, 16);
switch (opt) {
case 'a':
params.addr = strtoull(optarg, &ptr, 16);
@@
-167,6
+169,15
@@
static void process_args(int argc, char **argv)
params.cmdname, optarg);
exit(EXIT_FAILURE);
}
params.cmdname, optarg);
exit(EXIT_FAILURE);
}
+ break;
+ case 'B':
+ params.bl_len = strtoull(optarg, &ptr, 16);
+ if (*ptr) {
+ fprintf(stderr, "%s: invalid block length %s\n",
+ params.cmdname, optarg);
+ exit(EXIT_FAILURE);
+ }
+
break;
case 'c':
params.comment = optarg;
break;
case 'c':
params.comment = optarg;
@@
-200,7
+211,7
@@
static void process_args(int argc, char **argv)
case 'f':
datafile = optarg;
params.auto_its = !strcmp(datafile, "auto");
case 'f':
datafile = optarg;
params.auto_its = !strcmp(datafile, "auto");
- /*
no break
*/
+ /*
fallthrough
*/
case 'F':
/*
* The flattened image tree (FIT) format
case 'F':
/*
* The flattened image tree (FIT) format
@@
-544,13
+555,21
@@
int main(int argc, char **argv)
ret = imx8mimage_copy_image(ifd, ¶ms);
if (ret)
return ret;
ret = imx8mimage_copy_image(ifd, ¶ms);
if (ret)
return ret;
+ } else if ((params.type == IH_TYPE_RKSD) ||
+ (params.type == IH_TYPE_RKSPI)) {
+ /* Rockchip has special Image format */
+ int ret;
+
+ ret = rockchip_copy_image(ifd, ¶ms);
+ if (ret)
+ return ret;
} else {
copy_file(ifd, params.datafile, pad_len);
}
if (params.type == IH_TYPE_FIRMWARE_IVT) {
/* Add alignment and IVT */
} else {
copy_file(ifd, params.datafile, pad_len);
}
if (params.type == IH_TYPE_FIRMWARE_IVT) {
/* Add alignment and IVT */
- uint32_t aligned_filesize =
(params.file_size + 0x1000
-
- 1) & ~(0x1000 - 1
);
+ uint32_t aligned_filesize =
ALIGN(params.file_size,
+
0x1000
);
flash_header_v2_t ivt_header = { { 0xd1, 0x2000, 0x40 },
params.addr, 0, 0, 0, params.addr
+ aligned_filesize
flash_header_v2_t ivt_header = { { 0xd1, 0x2000, 0x40 },
params.addr, 0, 0, 0, params.addr
+ aligned_filesize