sunxi: Allow booting from 128KB SD/eMMC offset
authorAndre Przywara <andre.przywara@arm.com>
Sun, 16 Dec 2018 02:04:58 +0000 (02:04 +0000)
committerJagan Teki <jagan@amarulasolutions.com>
Wed, 10 Apr 2019 10:04:32 +0000 (15:34 +0530)
commit067e0b9684d4f195d92e0b1de260d69dc1e0f2c5
tree82acf9b4536b1691f50bfadf40499dc744bef5b3
parent9d0f9e837421c3e6d1e99caed401511d886a1c36
sunxi: Allow booting from 128KB SD/eMMC offset

On modern Allwinner SoCs (tested: H2+, A64, H5, H6) the BootROM can
actually load the SPL also from sector 256 (128KB) of an SD card or eMMC
chip. For more details, see [1].
In this case the boot source indicator (written at offset 0x28 of SRAM A1)
has bit 4 set, so it's 0x10 for SD card and 0x12 for eMMC.

Add those new values to the existing boot source check to allow booting
the SPL from those "high" disk offsets as well. For this to work, the
value of CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR needs to be adjusted,
for instance to 0x140 (right after the high SPL). Doing this dynamically
sounds desirable, but looks nasty to implement.

[1] https://groups.google.com/forum/#!topic/linux-sunxi/MaiijyaAFjk

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
arch/arm/include/asm/arch-sunxi/spl.h
arch/arm/mach-sunxi/board.c