All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 1/3] sunxi: (mksunxiboot) signature to indicate "sunxi" SPL variant
Date: Wed, 16 Sep 2015 04:03:38 +0300	[thread overview]
Message-ID: <20150916040338.29cf0e93@i7> (raw)
In-Reply-To: <1442236530-24382-2-git-send-email-bernhard.nortmann@web.de>

On Mon, 14 Sep 2015 15:15:28 +0200
Bernhard Nortmann <bernhard.nortmann@web.de> wrote:

> 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>
> ---
> 
> Changes in v2:
> - Rename field to fel_script_address, discard fel_data_size
> - Clearing header fields is no longer needed, as mksunxiboot.c zeroes entire image first
> 
>  tools/mksunxiboot.c | 23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
> index 676d392..cb0865c 100644
> --- a/tools/mksunxiboot.c
> +++ b/tools/mksunxiboot.c
> @@ -27,12 +27,29 @@ struct boot_file_head {
>  	 * by the boot ROM. To be compatible with Allwinner tools we
>  	 * would need to implement the proper fields here instead of
>  	 * padding.
> +	 *
> +	 * Actually we want the ability to recognize our "sunxi" variant
> +	 * of the SPL. To do so, let's place a special signature into the
> +	 * "pub_head_size" field. We can reasonably expect Allwinner's
> +	 * boot0 to always have the upper 16 bits of this set to 0 (after
> +	 * all the value shouldn't be larger than the limit imposed by
> +	 * SRAM size).
> +	 * If the signature is present (at 0x14), then we know it's safe
> +	 * to use the remaining 8 bytes (at 0x18) for our own purposes.
> +	 * (E.g. sunxi-tools "fel" utility can pass information there.)
>  	 */
> -	uint8_t pad[12];		/* align to 32 bytes */
> +	union {
> +		uint32_t pub_head_size;
> +		uint8_t spl_signature[4];
> +	};
> +	uint32_t fel_script_address;
> +	uint32_t reserved;		/* padding, align to 32 bytes */
>  };
>  
>  #define BOOT0_MAGIC                     "eGON.BT0"
>  #define STAMP_VALUE                     0x5F0A6C39
> +#define SPL_SIGNATURE			"SPL" /* marks "sunxi" header */
> +#define SPL_HEADER_VERSION		1
>  
>  /* check sum functon from sun4i boot code */
>  int gen_check_sum(struct boot_file_head *head_p)
> @@ -133,6 +150,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));

Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>

-- 
Best regards,
Siarhei Siamashka

  reply	other threads:[~2015-09-16  1:03 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-14 13:15 [U-Boot] [PATCH v2 0/3] sunxi: support FEL-provided environment vars and "fel" boot target Bernhard Nortmann
2015-09-14 13:15 ` [U-Boot] [PATCH v2 1/3] sunxi: (mksunxiboot) signature to indicate "sunxi" SPL variant Bernhard Nortmann
2015-09-16  1:03   ` Siarhei Siamashka [this message]
2015-09-14 13:15 ` [U-Boot] [PATCH v2 2/3] sunxi: retrieve FEL-provided values to environment variables Bernhard Nortmann
2015-09-16  1:00   ` Siarhei Siamashka
2015-09-17 14:05     ` Bernhard Nortmann
2015-09-14 13:15 ` [U-Boot] [PATCH v2 3/3] sunxi: add "fel" boot target Bernhard Nortmann
2015-09-16  1:04   ` Siarhei Siamashka
2015-09-14 14:12 ` [U-Boot] [PATCH v2 0/3] sunxi: support FEL-provided environment vars and " Hans de Goede
2015-09-16  1:34   ` Siarhei Siamashka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150916040338.29cf0e93@i7 \
    --to=siarhei.siamashka@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.