diff options
author | Bernhard Nortmann <bernhard.nortmann@web.de> | 2015-09-17 18:52:51 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2015-09-29 11:50:07 +0200 |
commit | a188438175bd5fb4ef0440c9fdd0ded8b5640b3d (patch) | |
tree | c30231ef3e1e183e913ec6a17300f25f68f0e724 /tools | |
parent | e954eb8028d7085fc8d0737c8e637ab940f7f147 (diff) | |
download | u-boot-a188438175bd5fb4ef0440c9fdd0ded8b5640b3d.tar.gz |
sunxi: (mksunxiboot) signature to indicate "sunxi" SPL variant
This patch follows up on a discussion of ways to improve support
for the sunxi FEL ("USB boot") mechanism, especially with regard
to boot scripts, see:
https://groups.google.com/d/msg/linux-sunxi/wBEGUoLNRro/rHGq6nSYCQAJ
The idea is to convert the (currently unused) "pad" bytes in the
SPL header into an area where data can be passed to U-Boot. To
do this safely, we have to make sure that we're actually using
our "sunxi" flavor of the SPL, and not the Allwinner boot0.
The modified mksunxiboot introduces a special signature to the
SPL header in place of the "pub_head_size" field. This can be
used to reliably distinguish between compatible versions of sunxi
SPL and anything else (older variants or Allwinner's boot0).
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/mksunxiboot.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c index 54f4d0564e..9c1c5b7cee 100644 --- a/tools/mksunxiboot.c +++ b/tools/mksunxiboot.c @@ -118,6 +118,10 @@ int main(int argc, char *argv[]) ALIGN(file_size + sizeof(struct boot_file_head), BLOCK_SIZE); img.header.b_instruction = cpu_to_le32(img.header.b_instruction); img.header.length = cpu_to_le32(img.header.length); + + memcpy(img.header.spl_signature, SPL_SIGNATURE, 3); /* "sunxi" marker */ + img.header.spl_signature[3] = SPL_HEADER_VERSION; + gen_check_sum(&img.header); count = write(fd_out, &img, le32_to_cpu(img.header.length)); |