From patchwork Fri Jan 10 01:47:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 239361 List-Id: U-Boot discussion From: andre.przywara at arm.com (Andre Przywara) Date: Fri, 10 Jan 2020 01:47:31 +0000 Subject: [PATCH 1/2] sunxi: SPL: Factor out sunxi_get_boot_source() In-Reply-To: <20200110014732.4185-1-andre.przywara@arm.com> References: <20200110014732.4185-1-andre.przywara@arm.com> Message-ID: <20200110014732.4185-2-andre.przywara@arm.com> The Boot ROM write some boot source ID (SD card, eMMC, SPI, ...) into a certain location in SRAM, so the SPL can easily determine where to load U-Boot proper from. Factor out reading this value, as it will come in handy again shortly. Signed-off-by: Andre Przywara --- arch/arm/mach-sunxi/board.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c index aa1d2230c9..9c0cf718b8 100644 --- a/arch/arm/mach-sunxi/board.c +++ b/arch/arm/mach-sunxi/board.c @@ -221,12 +221,22 @@ void s_init(void) eth_init_board(); } +#define SUNXI_INVALID_BOOT_SOURCE -1 + +static int sunxi_get_boot_source(void) +{ + if (!is_boot0_magic(SPL_ADDR + 4)) /* eGON.BT0 */ + return SUNXI_INVALID_BOOT_SOURCE; + + return readb(SPL_ADDR + 0x28); +} + /* The sunxi internal brom will try to loader external bootloader * from mmc0, nand flash, mmc2. */ uint32_t sunxi_get_boot_device(void) { - int boot_source; + int boot_source = sunxi_get_boot_source(); /* * When booting from the SD card or NAND memory, the "eGON.BT0" @@ -244,11 +254,9 @@ uint32_t sunxi_get_boot_device(void) * binary over USB. If it is found, it determines where SPL was * read from. */ - if (!is_boot0_magic(SPL_ADDR + 4)) /* eGON.BT0 */ - return BOOT_DEVICE_BOARD; - - boot_source = readb(SPL_ADDR + 0x28); switch (boot_source) { + case SUNXI_INVALID_BOOT_SOURCE: + return BOOT_DEVICE_BOARD; case SUNXI_BOOTED_FROM_MMC0: case SUNXI_BOOTED_FROM_MMC0_HIGH: return BOOT_DEVICE_MMC1;