]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
rockchip: spl: rk3399: implement chip-specific board_spl_was_booted_from()
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Fri, 29 Sep 2017 17:27:58 +0000 (19:27 +0200)
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Sat, 30 Sep 2017 22:33:34 +0000 (00:33 +0200)
To support the new "same-as-spl" specifier in the boot-order on the
RK3399, this implements the chip-specific mapping from the information
obtainable from the BROM to a OF path name.

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/mach-rockchip/rk3399-board-spl.c

index 8e38ef19a3df56ed816418ee1e081b904f9ea903..9c20f56dc949c468bab0589f06f480988d59ecef 100644 (file)
@@ -26,6 +26,30 @@ void board_return_to_bootrom(void)
        back_to_bootrom();
 }
 
+static const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
+       [BROM_BOOTSOURCE_EMMC] = "/sdhci@fe330000",
+       [BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000",
+       [BROM_BOOTSOURCE_SD] = "/dwmmc@fe320000",
+};
+
+const char *board_spl_was_booted_from(void)
+{
+       u32  bootdevice_brom_id = readl(RK3399_BROM_BOOTSOURCE_ID_ADDR);
+       const char *bootdevice_ofpath = NULL;
+
+       if (bootdevice_brom_id < ARRAY_SIZE(boot_devices))
+               bootdevice_ofpath = boot_devices[bootdevice_brom_id];
+
+       if (bootdevice_ofpath)
+               debug("%s: brom_bootdevice_id %x maps to '%s'\n",
+                     __func__, bootdevice_brom_id, bootdevice_ofpath);
+       else
+               debug("%s: failed to resolve brom_bootdevice_id %x\n",
+                     __func__, bootdevice_brom_id);
+
+       return bootdevice_ofpath;
+}
+
 u32 spl_boot_device(void)
 {
        u32 boot_device = BOOT_DEVICE_MMC1;