[PATCH] board: spacemit: Add SpacemiT MUSE Pi Pro
Niu Zhihong
zhihong at nzhnb.com
Mon Jul 28 10:25:47 CEST 2025
MUSE Pi Pro uses spacemit K1,
a new generation of octa-core 64-bit RISC-V processor,
which includes octa-core X60.
Features tested on a MUSE Pi Pro 16GB:
- SD-card boot
- eMMC boot
Signed-off-by: Niu Zhihong <zhihong at nzhnb.com>
---
arch/riscv/Kconfig | 4 ++
arch/riscv/dts/Makefile | 1 +
arch/riscv/dts/k1-muse-pi-pro.dts | 27 ++++++++
board/spacemit/muse-pi-pro/Kconfig | 37 +++++++++++
board/spacemit/muse-pi-pro/MAINTAINERS | 6 ++
board/spacemit/muse-pi-pro/Makefile | 3 +
board/spacemit/muse-pi-pro/board.c | 8 +++
configs/muse-pi-pro_defconfig | 6 ++
doc/board/spacemit/index.rst | 1 +
doc/board/spacemit/muse-pi-pro.rst | 85 ++++++++++++++++++++++++++
include/configs/muse-pi-pro.h | 11 ++++
11 files changed, 189 insertions(+)
create mode 100644 arch/riscv/dts/k1-muse-pi-pro.dts
create mode 100644 board/spacemit/muse-pi-pro/Kconfig
create mode 100644 board/spacemit/muse-pi-pro/MAINTAINERS
create mode 100644 board/spacemit/muse-pi-pro/Makefile
create mode 100644 board/spacemit/muse-pi-pro/board.c
create mode 100644 configs/muse-pi-pro_defconfig
create mode 100644 doc/board/spacemit/muse-pi-pro.rst
create mode 100644 include/configs/muse-pi-pro.h
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 8c6feae5735..29430fe4d1c 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -14,6 +14,9 @@ config TARGET_ANDES_AE350
config TARGET_BANANAPI_F3
bool "Support BananaPi F3 Board"
+config TARGET_MUSE_PI_PRO
+ bool "Support MUSE Pi Pro Board"
+
config TARGET_K230_CANMV
bool "Support K230 CanMV Board"
@@ -112,6 +115,7 @@ source "board/sipeed/maix/Kconfig"
source "board/sophgo/milkv_duo/Kconfig"
source "board/sophgo/licheerv_nano/Kconfig"
source "board/spacemit/bananapi-f3/Kconfig"
+source "board/spacemit/muse-pi-pro/Kconfig"
source "board/starfive/visionfive2/Kconfig"
source "board/thead/th1520_lpi4a/Kconfig"
source "board/xilinx/mbv/Kconfig"
diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile
index 2b10c2d6c01..f959f174f21 100644
--- a/arch/riscv/dts/Makefile
+++ b/arch/riscv/dts/Makefile
@@ -2,6 +2,7 @@
dtb-$(CONFIG_TARGET_ANDES_AE350) += ae350_32.dtb ae350_64.dtb
dtb-$(CONFIG_TARGET_BANANAPI_F3) += k1-bananapi-f3.dtb
+dtb-$(CONFIG_TARGET_MUSE_PI_PRO) += k1-muse-pi-pro.dtb
dtb-$(CONFIG_TARGET_K230_CANMV) += k230-canmv.dtb
dtb-$(CONFIG_TARGET_MICROCHIP_ICICLE) += mpfs-icicle-kit.dtb
dtb-$(CONFIG_TARGET_MILKV_DUO) += cv1800b-milkv-duo.dtb
diff --git a/arch/riscv/dts/k1-muse-pi-pro.dts b/arch/riscv/dts/k1-muse-pi-pro.dts
new file mode 100644
index 00000000000..5e32d696b63
--- /dev/null
+++ b/arch/riscv/dts/k1-muse-pi-pro.dts
@@ -0,0 +1,27 @@
+/*
+ * Copyright The U-Boot Contributors
+ */
+
+#include "k1.dtsi"
+#include "binman.dtsi"
+#include "k1-pinctrl.dtsi"
+
+/ {
+ model = "MUSE Pi Pro";
+ compatible = "muse-pi-pro", "spacemit,k1";
+
+ chosen {
+ stdout-path = "serial0";
+ };
+
+ memory at 0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x4 0x0>;
+ };
+};
+
+&uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0_2_cfg>;
+ status = "okay";
+};
diff --git a/board/spacemit/muse-pi-pro/Kconfig b/board/spacemit/muse-pi-pro/Kconfig
new file mode 100644
index 00000000000..49a27154c22
--- /dev/null
+++ b/board/spacemit/muse-pi-pro/Kconfig
@@ -0,0 +1,37 @@
+if TARGET_MUSE_PI_PRO
+
+config SYS_BOARD
+ default "muse-pi-pro"
+
+config SYS_VENDOR
+ default "spacemit"
+
+config SYS_CPU
+ default "k1"
+
+config SYS_CONFIG_NAME
+ default "muse-pi-pro"
+
+config TEXT_BASE
+ default 0x200000
+
+config SYS_LOAD_ADDR
+ default 0x200000
+
+config SPL_OPENSBI_LOAD_ADDR
+ default 0x00000000
+
+config SYS_NS16550
+ def_bool y
+
+config HAS_CUSTOM_SYS_INIT_SP_ADDR
+ def_bool y
+
+config CUSTOM_SYS_INIT_SP_ADDR
+ default 0x1000000
+
+config BOARD_SPECIFIC_OPTIONS
+ def_bool y
+ select SPACEMIT_K1
+
+endif
diff --git a/board/spacemit/muse-pi-pro/MAINTAINERS b/board/spacemit/muse-pi-pro/MAINTAINERS
new file mode 100644
index 00000000000..671a231c88c
--- /dev/null
+++ b/board/spacemit/muse-pi-pro/MAINTAINERS
@@ -0,0 +1,6 @@
+MUSE Pi Pro
+M: Niu Zhihong <zhihong at nzhnb.com>
+S: Maintained
+F: board/spacemit/muse-pi-pro/
+F: configs/muse-pi-pro_defconfig
+F: doc/board/spacemit/muse-pi-pro.rst
diff --git a/board/spacemit/muse-pi-pro/Makefile b/board/spacemit/muse-pi-pro/Makefile
new file mode 100644
index 00000000000..d4ee1504bbd
--- /dev/null
+++ b/board/spacemit/muse-pi-pro/Makefile
@@ -0,0 +1,3 @@
+# Copyright The U-Boot Contributors
+
+obj-y := board.o
diff --git a/board/spacemit/muse-pi-pro/board.c b/board/spacemit/muse-pi-pro/board.c
new file mode 100644
index 00000000000..599e20117e3
--- /dev/null
+++ b/board/spacemit/muse-pi-pro/board.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright The U-Boot Contributors
+ */
+
+int board_init(void)
+{
+ return 0;
+}
diff --git a/configs/muse-pi-pro_defconfig b/configs/muse-pi-pro_defconfig
new file mode 100644
index 00000000000..d35ddfa18be
--- /dev/null
+++ b/configs/muse-pi-pro_defconfig
@@ -0,0 +1,6 @@
+CONFIG_RISCV=y
+CONFIG_ARCH_RV64I=y
+CONFIG_RISCV_SMODE=y
+CONFIG_TARGET_MUSE_PI_PRO=y
+CONFIG_DEFAULT_DEVICE_TREE="k1-muse-pi-pro"
+CONFIG_FIT=y
diff --git a/doc/board/spacemit/index.rst b/doc/board/spacemit/index.rst
index e7d3d94e459..fa24aaa84b4 100644
--- a/doc/board/spacemit/index.rst
+++ b/doc/board/spacemit/index.rst
@@ -6,4 +6,5 @@ SpacemiT
:maxdepth: 1
bananapi-f3
+ muse-pi-pro
diff --git a/doc/board/spacemit/muse-pi-pro.rst b/doc/board/spacemit/muse-pi-pro.rst
new file mode 100644
index 00000000000..4aa2eab5917
--- /dev/null
+++ b/doc/board/spacemit/muse-pi-pro.rst
@@ -0,0 +1,85 @@
+.. Copyright The U-Boot Contributors
+
+MUSE Pi Pro
+================
+
+Building
+~~~~~~~~
+
+1. Build OpenSBI
+
+ First, you need to build OpenSBI, which is required by U-Boot.
+ You can clone the OpenSBI repository and build it as follows:
+.. code-block:: console
+
+ export CROSS_COMPILE=riscv64-linux-gnu-
+ git clone https://gitee.com/bianbu-linux/opensbi.git
+ cd opensbi
+ make PLATFORM=generic
+
+
+2. Then build U-Boot as following:
+
+.. code-block:: console
+
+ cd u-boot
+ make muse-pi-pro_defconfig
+ make OPENSBI=opensbi/build/platform/generic/firmware/fw_dynamic.bin
+
+This will generate u-boot.itb
+
+Burning
+~~~~~~~
+To burn the U-Boot image to the MUSE Pi Pro board,
+you need to write the `u-boot.itb` file to the
+fourth partition of the SD card.
+
+You can use the `dd` command as follows:
+
+.. code-block:: console
+
+ dd if=u-boot.itb of=/dev/mmcblk0p4
+
+Booting
+~~~~~~~
+Sample boot log from Banana Pi BPI-F3 board
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. code-block:: none
+
+ sys: 0x200
+ try sd...
+ bm:3
+ j...
+
+ U-Boot SPL 2022.10spacemit-dirty (Apr 30 2025 - 05:48:50 +0000)
+ [ 0.331] DDR type LPDDR4X
+ [ 0.331] set ddr tx odt to 80ohm!
+ [ 0.353] lpddr4_silicon_init consume 22ms
+ [ 0.354] Change DDR data rate to 2400MT/s
+ [ 0.503] ## Checking hash(es) for config conf-1 ... OK
+ [ 0.505] ## Checking hash(es) for Image opensbi ... OK
+ [ 0.511] ## Checking hash(es) for Image uboot ... OK
+ [ 0.516] ## Checking hash(es) for Image fdt-1 ... OK
+ [ 0.562] ## Checking hash(es) for config config_1 ... OK
+ [ 0.564] ## Checking hash(es) for Image opensbi ... crc32+ OK
+
+
+ U-Boot 2025.07-00902-gf2f451d9d6d3-dirty (Jul 28 2025 - 14:38:51 +0800)
+
+ DRAM: 16 GiB
+ Core: 21 devices, 9 uclasses, devicetree: separate
+ Loading Environment from nowhere... OK
+ In: serial at d4017000
+ Out: serial at d4017000
+ Err: serial at d4017000
+ Net: No ethernet found.
+ => cpu list
+ 0: cpu at 0 spacemit,x60
+ 1: cpu at 1 spacemit,x60
+ 2: cpu at 2 spacemit,x60
+ 3: cpu at 3 spacemit,x60
+ 4: cpu at 4 spacemit,x60
+ 5: cpu at 5 spacemit,x60
+ 6: cpu at 6 spacemit,x60
+ 7: cpu at 7 spacemit,x60
+ =>
\ No newline at end of file
diff --git a/include/configs/muse-pi-pro.h b/include/configs/muse-pi-pro.h
new file mode 100644
index 00000000000..706dcc7f486
--- /dev/null
+++ b/include/configs/muse-pi-pro.h
@@ -0,0 +1,11 @@
+/*
+ * Copyright The U-Boot Contributors
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CFG_SYS_SDRAM_BASE 0x0
+#define CFG_SYS_NS16550_IER 0x40
+
+#endif /* __CONFIG_H */
--
2.45.2
More information about the U-Boot
mailing list