From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] sunxi_nand_spl: Be smarter about where to look for backup u-boot.bin
Date: Mon, 21 Sep 2015 13:24:44 +0200 [thread overview]
Message-ID: <55FFE8FC.1070309@redhat.com> (raw)
In-Reply-To: <1442830971.10338.42.camel@hellion.org.uk>
Hi,
On 21-09-15 12:22, Ian Campbell wrote:
> On Sun, 2015-09-20 at 15:39 -0400, Hans de Goede wrote:
>> We know when u-boot is written to its own partition, in this case the
>> layout always is:
>>
>> eb 0 spl
>> eb 1 spl-backup
>> eb 2 u-boot
>> eb 3 u-boot-backup
>>
>> eb: erase-block
>>
>> So if we cannot load u-boot from its primary offset we know exactly where
>> to look for it.
>
> Is it worth noting here (or perhaps in a code comment?) that the code
> currently assumes that the first four ebs are of uniform size?
The eraseblock size is a property of the nand, given a certain nand chip,
all eraseblocks on that chip always have the same size.
Regards,
Hans
>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> Changes in v2:
>> -Add an eraseblock_size helper variable to make the calculation for
>> finding
>> the backup u-boot easier to understand
>> ---
>> drivers/mtd/nand/sunxi_nand_spl.c | 26 ++++++++++++++++++++------
>> 1 file changed, 20 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/sunxi_nand_spl.c
>> b/drivers/mtd/nand/sunxi_nand_spl.c
>> index 5985534..b0e07aa 100644
>> --- a/drivers/mtd/nand/sunxi_nand_spl.c
>> +++ b/drivers/mtd/nand/sunxi_nand_spl.c
>> @@ -356,18 +356,32 @@ static int nand_read_buffer(uint32_t offs, unsigned
>> int size, void *dest,
>>
>> int nand_spl_load_image(uint32_t offs, unsigned int size, void *dest)
>> {
>> +#if CONFIG_SYS_NAND_U_BOOT_OFFS == CONFIG_SPL_PAD_TO
>> + /*
>> + * u-boot-dtb.bin appended to SPL, use syndrome (like the BROM
>> does)
>> + * and try different erase block sizes to find the backup.
>> + */
>> const uint32_t boot_offsets[] = {
>> 0 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
>> 1 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
>> 2 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
>> 4 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
>> };
>> - int i, syndrome;
>> -
>> - if (CONFIG_SYS_NAND_U_BOOT_OFFS == CONFIG_SPL_PAD_TO)
>> - syndrome = 1; /* u-boot-dtb.bin appended to SPL */
>> - else
>> - syndrome = 0; /* u-boot-dtb.bin on its own partition */
>> + const int syndrome = 1;
>> +#else
>> + /*
>> + * u-boot-dtb.bin on its own partition, do not use syndrome, u
>> -boot
>> + * partition sits after 2 eraseblocks (spl, spl-backup), look
>> for
>> + * backup u-boot 1 erase block further.
>> + */
>> + const uint32_t eraseblock_size = CONFIG_SYS_NAND_U_BOOT_OFFS /
>> 2;
>> + const uint32_t boot_offsets[] = {
>> + CONFIG_SYS_NAND_U_BOOT_OFFS,
>> + CONFIG_SYS_NAND_U_BOOT_OFFS + eraseblock_size,
>> + };
>> + const int syndrome = 0;
>> +#endif
>> + int i;
>>
>> if (offs == CONFIG_SYS_NAND_U_BOOT_OFFS) {
>> for (i = 0; i < ARRAY_SIZE(boot_offsets); i++) {
next prev parent reply other threads:[~2015-09-21 11:24 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-20 19:39 [U-Boot] [PATCH v2] sunxi_nand_spl: Be smarter about where to look for backup u-boot.bin Hans de Goede
2015-09-21 10:22 ` Ian Campbell
2015-09-21 11:24 ` Hans de Goede [this message]
2015-09-21 12:19 ` Ian Campbell
2015-09-21 13:19 ` Hans de Goede
2015-09-21 13:44 ` Ian Campbell
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=55FFE8FC.1070309@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.