]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spl: Set up the bloblist in board_init_r()
authorSimon Glass <sjg@chromium.org>
Wed, 25 Sep 2019 14:11:19 +0000 (08:11 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 8 Oct 2019 05:51:03 +0000 (13:51 +0800)
At present the bloblist is set up in spl_common_init() which can be called
from spl_early_init(), i.e. before SDRAM is ready. This prevents the
bloblist from being located in SDRAM, which is useful on some platforms
where SRAM is inaccessible after U-Boot relocates (e.g. x86 CAR region).

It doesn't serve much purpose to have the bloblist available early, since
very little is known about the platform then, and the handoff info is
written when SPL is about to jump to U-Boot.

Move the code to board_init_r() to avoid any restrictions.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
common/spl/spl.c

index 730cd6b308446506ae773b204048d9304f9d4fbb..5fdd6d0d032181cfd6e841ede1c2dd47fd6b9701 100644 (file)
@@ -410,23 +410,6 @@ static int spl_common_init(bool setup_malloc)
                return ret;
        }
 #endif
-       if (CONFIG_IS_ENABLED(BLOBLIST)) {
-               ret = bloblist_init();
-               if (ret) {
-                       debug("%s: Failed to set up bloblist: ret=%d\n",
-                             __func__, ret);
-                       return ret;
-               }
-       }
-       if (CONFIG_IS_ENABLED(HANDOFF)) {
-               int ret;
-
-               ret = setup_spl_handoff();
-               if (ret) {
-                       puts(SPL_TPL_PROMPT "Cannot set up SPL handoff\n");
-                       hang();
-               }
-       }
        if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) {
                ret = fdtdec_setup();
                if (ret) {
@@ -604,6 +587,24 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
         */
        timer_init();
 #endif
+       if (CONFIG_IS_ENABLED(BLOBLIST)) {
+               ret = bloblist_init();
+               if (ret) {
+                       debug("%s: Failed to set up bloblist: ret=%d\n",
+                             __func__, ret);
+                       puts(SPL_TPL_PROMPT "Cannot set up bloblist\n");
+                       hang();
+               }
+       }
+       if (CONFIG_IS_ENABLED(HANDOFF)) {
+               int ret;
+
+               ret = setup_spl_handoff();
+               if (ret) {
+                       puts(SPL_TPL_PROMPT "Cannot set up SPL handoff\n");
+                       hang();
+               }
+       }
 
 #if CONFIG_IS_ENABLED(BOARD_INIT)
        spl_board_init();