diff mbox

[U-Boot,1/2] nand: sunxi: change BLOCK_SIZE in mksunxiboot to match NAND block size

Message ID 1432216765-8421-2-git-send-email-r.spliet@ultimaker.com
State Superseded
Delegated to: Hans de Goede
Headers show

Commit Message

Roy Spliet May 21, 2015, 1:59 p.m. UTC
From: Daniel Kochmański <dkochmanski@turtle-solutions.eu>

This change is necessary to calculate correct checksum for NAND
boot. Works both for MMC and NAND. Without it BROM rejects boot image
as invalid (bad checksum). (Changes block size from 0x200 to 0x2000).

V2: Document decision in source too

Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
Cc: Ian Campbell <ijc@hellion.org.uk>
Cc: Hans De Goede <hdegoede@redhat.com>
Signed-off-by: Roy Spliet <r.spliet@ultimaker.com>
---
 tools/mksunxiboot.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Hans de Goede May 21, 2015, 6:12 p.m. UTC | #1
Hi,

On 21-05-15 15:59, Roy Spliet wrote:
> From: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
>
> This change is necessary to calculate correct checksum for NAND
> boot. Works both for MMC and NAND. Without it BROM rejects boot image
> as invalid (bad checksum). (Changes block size from 0x200 to 0x2000).
>
> V2: Document decision in source too
>
> Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
> Cc: Ian Campbell <ijc@hellion.org.uk>
> Cc: Hans De Goede <hdegoede@redhat.com>
> Signed-off-by: Roy Spliet <r.spliet@ultimaker.com>

Looks good: Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans


> ---
>   tools/mksunxiboot.c | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
> index 0035f6e..3361251 100644
> --- a/tools/mksunxiboot.c
> +++ b/tools/mksunxiboot.c
> @@ -65,7 +65,13 @@ int gen_check_sum(struct boot_file_head *head_p)
>
>   #define SUN4I_SRAM_SIZE 0x7600	/* 0x7748+ is used by BROM */
>   #define SRAM_LOAD_MAX_SIZE (SUN4I_SRAM_SIZE - sizeof(struct boot_file_head))
> -#define BLOCK_SIZE 512
> +
> +/*
> + * BROM (at least on A10 and A20) requires NAND-images to be explicitly aligned
> + * to a multiple of 8K, and rejects the image otherwise. MMC-images are fine
> + * with 512B blocks. To cater for both, align to the largest of the two.
> + */
> +#define BLOCK_SIZE 0x2000
>
>   struct boot_img {
>   	struct boot_file_head header;
>
diff mbox

Patch

diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
index 0035f6e..3361251 100644
--- a/tools/mksunxiboot.c
+++ b/tools/mksunxiboot.c
@@ -65,7 +65,13 @@  int gen_check_sum(struct boot_file_head *head_p)
 
 #define SUN4I_SRAM_SIZE 0x7600	/* 0x7748+ is used by BROM */
 #define SRAM_LOAD_MAX_SIZE (SUN4I_SRAM_SIZE - sizeof(struct boot_file_head))
-#define BLOCK_SIZE 512
+
+/*
+ * BROM (at least on A10 and A20) requires NAND-images to be explicitly aligned
+ * to a multiple of 8K, and rejects the image otherwise. MMC-images are fine
+ * with 512B blocks. To cater for both, align to the largest of the two.
+ */
+#define BLOCK_SIZE 0x2000
 
 struct boot_img {
 	struct boot_file_head header;