]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
board: k1: initialize clock and serial devices in SPL
authorRaymond Mao <raymond.mao@riscstar.com>
Tue, 30 Jun 2026 01:19:08 +0000 (09:19 +0800)
committerTim Ouyang <tim609@andestech.com>
Tue, 21 Jul 2026 08:57:13 +0000 (16:57 +0800)
Initialize clock and serial devices in SPL. Otherwise, the device
driver won't be loaded in SPL.

Signed-off-by: Raymond Mao <raymond.mao@riscstar.com>
Signed-off-by: Guodong Xu <guodong@riscstar.com>
Tested-by: Songsong Zhang <sszhang@vsit.ai>
board/spacemit/k1/spl.c

index e15cf5f1abf24e9f1056c59ef9483eb6c0ba0d13..78f266163473ca65b884e28f49e9c1729f7ab878 100644 (file)
@@ -3,8 +3,45 @@
  * Copyright (c) 2025-2026, RISCstar Ltd.
  */
 
+#include <dm/device.h>
+#include <dm/uclass.h>
+#include <log.h>
 #include <spl.h>
 
+static void clk_early_init(void)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device_by_name(UCLASS_CLK, "clock-controller@d4090000", &dev);
+       if (ret)
+               panic("Fail to detect clock-controller@d4090000\n");
+       ret = uclass_get_device_by_name(UCLASS_CLK, "system-controller@d4050000", &dev);
+       if (ret)
+               panic("Fail to detect system-controller@d4050000\n");
+       ret = uclass_get_device_by_name(UCLASS_CLK, "system-controller@d4282800", &dev);
+       if (ret)
+               panic("Fail to detect system-controller@d4282800\n");
+       ret = uclass_get_device_by_name(UCLASS_CLK, "system-controller@d4015000", &dev);
+       if (ret)
+               panic("Fail to detect system-controller@d4015000\n");
+
+       if (device_active(dev))
+               log_debug("clk: device is active\n");
+       else
+               log_debug("clk: device not active, probing...\n");
+}
+
+void serial_early_init(void)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device(UCLASS_SERIAL, 0, &dev);
+       if (ret)
+               panic("Serial uclass init failed: %d\n", ret);
+}
+
 void board_init_f(ulong dummy)
 {
        int ret;
@@ -15,6 +52,8 @@ void board_init_f(ulong dummy)
 
        riscv_cpu_setup();
 
+       clk_early_init();
+       serial_early_init();
        preloader_console_init();
 }