Message ID | 1432216765-8421-2-git-send-email-r.spliet@ultimaker.com |
---|---|
State | Superseded |
Delegated to: | Hans de Goede |
Headers | show |
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 --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;