]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/mach-rockchip/rk3188-board-spl.c
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / arch / arm / mach-rockchip / rk3188-board-spl.c
index f93feae0c9bedc339ed9fdbbf261b42048047eb0..59c7e4d4db63cbacbc2d2ba6a4f58e0ac853a3f0 100644 (file)
@@ -1,9 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2015 Google, Inc
- *
- * SPDX-License-Identifier:     GPL-2.0+
  */
 
+#include <clk.h>
 #include <common.h>
 #include <debug_uart.h>
 #include <dm.h>
@@ -71,15 +71,30 @@ fallback:
        return BOOT_DEVICE_MMC1;
 }
 
-u32 spl_boot_mode(const u32 boot_device)
+static int setup_arm_clock(void)
 {
-       return MMCSD_MODE_RAW;
+       struct udevice *dev;
+       struct clk clk;
+       int ret;
+
+       ret = rockchip_get_clk(&dev);
+       if (ret)
+               return ret;
+
+       clk.id = CLK_ARM;
+       ret = clk_request(dev, &clk);
+       if (ret < 0)
+               return ret;
+
+       ret = clk_set_rate(&clk, 600000000);
+
+       clk_free(&clk);
+       return ret;
 }
 
 void board_init_f(ulong dummy)
 {
        struct udevice *pinctrl, *dev;
-       struct rk3188_pmu *pmu;
        int ret;
 
        /* Example code showing how to enable the debug UART on RK3188 */
@@ -109,29 +124,18 @@ void board_init_f(ulong dummy)
        printch('\n');
 #endif
 
-       ret = spl_init();
+       ret = spl_early_init();
        if (ret) {
-               debug("spl_init() failed: %d\n", ret);
+               debug("spl_early_init() failed: %d\n", ret);
                hang();
        }
 
-       rockchip_timer_init();
-
        ret = rockchip_get_clk(&dev);
        if (ret) {
                debug("CLK init failed: %d\n", ret);
                return;
        }
 
-       /*
-        * Recover the bootrom's stackpointer.
-        * For whatever reason needs to run after rockchip_get_clk.
-        */
-       pmu = syscon_get_first_range(ROCKCHIP_SYSCON_PMU);
-       if (IS_ERR(pmu))
-               error("pmu syscon returned %ld\n", PTR_ERR(pmu));
-       SAVE_SP_ADDR = readl(&pmu->sys_reg[2]);
-
        ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
        if (ret) {
                debug("Pinctrl init failed: %d\n", ret);
@@ -144,8 +148,9 @@ void board_init_f(ulong dummy)
                return;
        }
 
-#if defined(CONFIG_ROCKCHIP_SPL_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
-       back_to_bootrom();
+       setup_arm_clock();
+#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
+       back_to_bootrom(BROM_BOOT_NEXTSTAGE);
 #endif
 }
 
@@ -205,8 +210,8 @@ void spl_board_init(void)
        }
 
        preloader_console_init();
-#ifdef CONFIG_ROCKCHIP_SPL_BACK_TO_BROM
-       back_to_bootrom();
+#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM)
+       back_to_bootrom(BROM_BOOT_NEXTSTAGE);
 #endif
        return;