[PATCH v2 09/16] board: k1: initialize clock and serial devices in SPL

Raymond Mao raymondmaoca at gmail.com
Tue Feb 10 16:14:52 CET 2026


From: Raymond Mao <raymond.mao at riscstar.com>

Initialize clock and serial devices in SPL. Otherwise, the device
driver won't be loaded in SPL.

Signed-off-by: Raymond Mao <raymond.mao at riscstar.com>
---
 board/spacemit/k1/spl.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/board/spacemit/k1/spl.c b/board/spacemit/k1/spl.c
index e15cf5f1abf..78f26616347 100644
--- a/board/spacemit/k1/spl.c
+++ b/board/spacemit/k1/spl.c
@@ -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 at d4090000", &dev);
+	if (ret)
+		panic("Fail to detect clock-controller at d4090000\n");
+	ret = uclass_get_device_by_name(UCLASS_CLK, "system-controller at d4050000", &dev);
+	if (ret)
+		panic("Fail to detect system-controller at d4050000\n");
+	ret = uclass_get_device_by_name(UCLASS_CLK, "system-controller at d4282800", &dev);
+	if (ret)
+		panic("Fail to detect system-controller at d4282800\n");
+	ret = uclass_get_device_by_name(UCLASS_CLK, "system-controller at d4015000", &dev);
+	if (ret)
+		panic("Fail to detect system-controller at 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();
 }
 
-- 
2.25.1



More information about the U-Boot mailing list