arm: dra7xx: Fix Linux boot from eMMC
authorSam Protsenko <semen.protsenko@linaro.org>
Thu, 21 Sep 2017 19:37:57 +0000 (22:37 +0300)
committerTom Rini <trini@konsulko.com>
Fri, 29 Sep 2017 18:07:58 +0000 (14:07 -0400)
Right now on OMAP5-based boards we have only one partition defined for
Linux boot, which is rootfs. That doesn't work with bootpart=1:2 (that
is defined in include/environment/ti/boot.h). To fix Linux boot we may
either:

 1. Change bootpart to be 1:1
 2. Or add preceding partition, so that rootfs is actually 1:2

Second choice seems more reasonable, as DFU is already using similar
partition table and can rely on bootpart to be 1:2.

This patch adds "bootloader" partition. So now eMMC layout for Linux
boot looks like this:

offset               content                 size          partition
(KiB)                                        (KiB)
Reviewed-by: Tom Rini <trini@konsulko.com>
=======================================================================

0       +--------------------------------+
        | MBR/GPT header                 |   128           -
128     +--------------------------------+
        | MLO                            |   256           -
384     +--------------------------------+
        | u-boot.img                     |   1792          bootloader
2176    +--------------------------------+
        | //////////// hole //////////// |   256           -
2432    +--------------------------------+
        | U-Boot environment             |   128           -
2560    +--------------------------------+
        | U-Boot environment (redundant) |   128           -
2688    +--------------------------------+
        | rootfs                         |   remaining     rootfs
end     +--------------------------------+

=======================================================================

Guard hole appears because U-Boot environment offset was calculated for
Android partition table, which has two additional partitions in place of
that hole ("environment" and "misc" partitions).

This patch also changes rootfs offset from 2 MiB further to 2688 KiB,
so that there won't be any collisions with U-Boot environment when we
flash rootfs.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
include/configs/dra7xx_evm.h

index 6c0fc35d3a358bd54a9cf7c168ea74ed66cff34f..1555fc1b5041e2f0b6606cb424cdba3a7af57981 100644 (file)
@@ -51,7 +51,8 @@
 #define PARTS_DEFAULT \
        /* Linux partitions */ \
        "uuid_disk=${uuid_gpt_disk};" \
-       "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \
+       "name=bootloader,start=384K,size=1792K,uuid=${uuid_gpt_bootloader};" \
+       "name=rootfs,start=2688K,size=-,uuid=${uuid_gpt_rootfs}\0" \
        /* Android partitions */ \
        "partitions_android=" \
        "uuid_disk=${uuid_gpt_disk};" \