mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
48 lines
1.9 KiB
Diff
48 lines
1.9 KiB
Diff
From 8df52c4a9b6f7590031b3fcd2c2b98552597986b Mon Sep 17 00:00:00 2001
|
|
From: Andre Przywara <andre.przywara@arm.com>
|
|
To: Jagan Teki <jagan@amarulasolutions.com>
|
|
Subject: [PATCH] sunxi: spl: h616: fix booting from high MMC offset
|
|
Date: Fri, 10 May 2024 00:13:16 +0100
|
|
|
|
The BootROM in the Allwinner H616 tries to load the initial boot code
|
|
from sector 16 (8KB) of an SD card or eMMC device, but also looks at
|
|
sector 512 (256KB). This helps with GPT formatted cards.
|
|
A "high" boot offset is also used on previous SoCs, but it's sector 256
|
|
(128KB) there instead.
|
|
|
|
Extend the existing offset calculation code to consider the different
|
|
sector offset when running on an H616 SoC. This allows to load U-Boot
|
|
on any H616 device when the SPL is not located at 8KB.
|
|
|
|
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
|
---
|
|
arch/arm/mach-sunxi/board.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
|
|
index 0140b07d32a..046e9fbfc67 100644
|
|
--- a/arch/arm/mach-sunxi/board.c
|
|
+++ b/arch/arm/mach-sunxi/board.c
|
|
@@ -333,7 +333,8 @@ uint32_t sunxi_get_spl_size(void)
|
|
* The eGON SPL image can be located at 8KB or at 128KB into an SD card or
|
|
* an eMMC device. The boot source has bit 4 set in the latter case.
|
|
* By adding 120KB to the normal offset when booting from a "high" location
|
|
- * we can support both cases.
|
|
+ * we can support both cases. The H616 has the alternative location
|
|
+ * moved up to 256 KB instead of 128KB, so cater for that, too.
|
|
* Also U-Boot proper is located at least 32KB after the SPL, but will
|
|
* immediately follow the SPL if that is bigger than that.
|
|
*/
|
|
@@ -349,6 +350,8 @@ unsigned long board_spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
|
|
case SUNXI_BOOTED_FROM_MMC0_HIGH:
|
|
case SUNXI_BOOTED_FROM_MMC2_HIGH:
|
|
sector += (128 - 8) * 2;
|
|
+ if (IS_ENABLED(CONFIG_MACH_SUN50I_H616))
|
|
+ sector += 128 * 2;
|
|
break;
|
|
}
|
|
|
|
--
|
|
2.35.8
|
|
|