All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] sunxi: (mksunxiboot) signature to indicate "sunxi" SPL variant
Date: Thu, 10 Sep 2015 20:29:52 +0200	[thread overview]
Message-ID: <55F1CC20.90000@redhat.com> (raw)
In-Reply-To: <1441199831-25541-1-git-send-email-bernhard.nortmann@web.de>

Hi,

On 02-09-15 15:17, Bernhard Nortmann 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>
> ---
>
>   tools/mksunxiboot.c | 27 ++++++++++++++++++++++++++-
>   1 file changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
> index 3361251..58bc5c7 100644
> --- a/tools/mksunxiboot.c
> +++ b/tools/mksunxiboot.c
> @@ -27,12 +27,31 @@ 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.)
> +	 *
> +	 * The overall header size still sums up to 32 bytes.
>   	 */
> -	uint8_t pad[12];		/* align to 32 bytes */
> +	union {
> +		uint32_t pub_head_size;
> +		uint8_t spl_signature[4];
> +	};
> +	uint32_t fel_data_address;
> +	uint32_t fel_data_size;

I believe these 2 should be renamed to:

	uint32_t fel_boot_script_address;
	uint32_t fel_boot_script_size;

To properly reflect what they are (they are not some abstract
data, they are specifically a boot.scr image)

With that changed and Siarhei's ack for the series (I'm assuming
Sairhei will take care of the sunxi-tools side of things),
I'm ok with merging this.

Regards,

Hans



I
>   };
>
>   #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 +152,12 @@ 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;
> +	img.header.fel_data_address = 0; /* ensure fields are zeroed */
> +	img.header.fel_data_size = 0;
> +
>   	gen_check_sum(&img.header);
>
>   	count = write(fd_out, &img, le32_to_cpu(img.header.length));
>

  parent reply	other threads:[~2015-09-10 18:29 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-02 13:17 [U-Boot] [PATCH] sunxi: (mksunxiboot) signature to indicate "sunxi" SPL variant Bernhard Nortmann
2015-09-02 14:51 ` Siarhei Siamashka
2015-09-02 16:59   ` Bernhard Nortmann
2015-09-10 18:29 ` Hans de Goede [this message]
2015-09-11  8:17   ` Bernhard Nortmann

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=55F1CC20.90000@redhat.com \
    --to=hdegoede@redhat.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.