Merge git://git.denx.de/u-boot-fsl-qoriq
[oweals/u-boot.git] / arch / arm / mach-rockchip / rk3188-board-spl.c
index 117f6b8f4219694101081ce95193b20f8274b7fa..406207ed21ce63f7aa718a12f1c61e36fab8a169 100644 (file)
@@ -4,6 +4,7 @@
  * SPDX-License-Identifier:     GPL-2.0+
  */
 
+#include <clk.h>
 #include <common.h>
 #include <debug_uart.h>
 #include <dm.h>
@@ -76,6 +77,27 @@ u32 spl_boot_mode(const u32 boot_device)
        return MMCSD_MODE_RAW;
 }
 
+static int setup_arm_clock(void)
+{
+       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;
@@ -129,7 +151,7 @@ void board_init_f(ulong dummy)
         */
        pmu = syscon_get_first_range(ROCKCHIP_SYSCON_PMU);
        if (IS_ERR(pmu))
-               error("pmu syscon returned %ld\n", PTR_ERR(pmu));
+               pr_err("pmu syscon returned %ld\n", PTR_ERR(pmu));
        SAVE_SP_ADDR = readl(&pmu->sys_reg[2]);
 
        ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
@@ -144,7 +166,8 @@ void board_init_f(ulong dummy)
                return;
        }
 
-#if defined(CONFIG_ROCKCHIP_SPL_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
+       setup_arm_clock();
+#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
        back_to_bootrom();
 #endif
 }
@@ -205,7 +228,7 @@ void spl_board_init(void)
        }
 
        preloader_console_init();
-#ifdef CONFIG_ROCKCHIP_SPL_BACK_TO_BROM
+#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM)
        back_to_bootrom();
 #endif
        return;