All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] spacemit: k1: add Milk-V Jupiter
@ 2026-10-12 15:15 Hung-Chun Tseng
  2026-10-12 22:59 ` E Shattow
  0 siblings, 1 reply; 3+ messages in thread
From: Hung-Chun Tseng @ 2026-10-12 15:15 UTC (permalink / raw)
  To: Yixun Lan, Huan Zhou, Eric Chung
  Cc: Guodong Xu, Raymond Mao, u-boot-spacemit, u-boot

The SPL already maps the Milk-V Jupiter EEPROM product name
"k1-x_milkv-jupiter" to "spacemit/k1-milkv-jupiter", and the upstream
device tree for the board is in dts/upstream, but the board is not in
CONFIG_OF_LIST. board_fit_config_name_match() therefore finds no
configuration for it and U-Boot proper starts with the default
(Banana Pi BPI-F3) device tree.

Add a u-boot.dtsi for the board and list it in CONFIG_OF_LIST. The
board is close to the BPI-F3: the EEPROM is at 0x50 on i2c2 and the P1
PMIC at 0x41 on i2c8, with the same buck1/buck3/aldo1 rails, so the
dtsi follows k1-bananapi-f3-u-boot.dtsi. Like the MusePi Pro, the
Jupiter has an SPI NOR flash on the QSPI controller, so mark it
bootph-pre-ram as well.

Signed-off-by: Hung-Chun Tseng <alan.tseng.cs@gmail.com>
---
Not tested on hardware: I don't have a way to recover the board if the
new boot chain fails, so this is compile-tested only. What I checked:

- The FIT built from spacemit_k1_defconfig now has a
  "spacemit/k1-milkv-jupiter" configuration (conf-2), and the Jupiter
  DTB carries the bootph-pre-ram and regulator-name properties from the
  new dtsi.
- On a Milk-V Jupiter running Linux, the EEPROM at 0x50 on i2c2 holds a
  TlvInfo product name (type 0x21) of "k1-x_milkv-jupiter", which is the
  name board/spacemit/k1/spl.c maps to "spacemit/k1-milkv-jupiter".
- On the same board, the P1 PMIC answers at 0x41 on i2c8, and the SPI
  NOR on the QSPI controller at 0xd420c000 is a GD25Q64, matching the
  nodes this dtsi marks bootph-pre-ram.

A Tested-by from someone with a Jupiter would be welcome.

 arch/riscv/dts/k1-milkv-jupiter-u-boot.dtsi | 132 ++++++++++++++++++++
 configs/spacemit_k1_defconfig               |   2 +-
 2 files changed, 133 insertions(+), 1 deletion(-)
 create mode 100644 arch/riscv/dts/k1-milkv-jupiter-u-boot.dtsi

diff --git a/arch/riscv/dts/k1-milkv-jupiter-u-boot.dtsi b/arch/riscv/dts/k1-milkv-jupiter-u-boot.dtsi
new file mode 100644
index 000000000..24bc87669
--- /dev/null
+++ b/arch/riscv/dts/k1-milkv-jupiter-u-boot.dtsi
@@ -0,0 +1,132 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright (C) 2026 RISCstar Ltd.
+ * Copyright (C) 2026 Hung-Chun Tseng <alan.tseng.cs@gmail.com>
+ *
+ * Based on k1-bananapi-f3-u-boot.dtsi.
+ */
+
+#include "binman.dtsi"
+
+/ {
+	memory@0 {
+		device_type = "memory";
+		reg = <0x00000000 0x00000000 0x00000000 0x80000000>;
+	};
+};
+
+&uart0 {
+	bootph-pre-ram;
+};
+
+&osc_32k {
+	bootph-pre-ram;
+};
+
+&vctcxo_1m {
+	bootph-pre-ram;
+};
+
+&vctcxo_3m {
+	bootph-pre-ram;
+};
+
+&vctcxo_24m {
+	bootph-pre-ram;
+};
+
+&syscon_mpmu {
+	bootph-pre-ram;
+};
+
+&pll {
+	bootph-pre-ram;
+};
+
+&syscon_apmu {
+	bootph-pre-ram;
+};
+
+&syscon_apbc {
+	bootph-pre-ram;
+};
+
+&i2c2 {
+	bootph-pre-ram;
+
+	eeprom@50 {
+		bootph-pre-ram;
+	};
+};
+
+/*
+ * The kernel pmic@41 nodes use the standard regulator-* properties only;
+ * U-Boot's regulator framework looks up suppliers by `regulator-name`.
+ * Carry the U-Boot-specific names (vdd_core / vdd_1v8 / vdd_1v8_mmc) here
+ * so SPL can program the bucks that DDR training depends on.
+ */
+&i2c8 {
+	bootph-pre-ram;
+
+	pmic@41 {
+		bootph-pre-ram;
+
+		regulators {
+			buck1 {
+				regulator-name = "vdd_core";
+				bootph-pre-ram;
+			};
+
+			buck3 {
+				regulator-name = "vdd_1v8";
+				bootph-pre-ram;
+			};
+
+			aldo1 {
+				regulator-name = "vdd_1v8_mmc";
+				bootph-pre-ram;
+			};
+		};
+	};
+};
+
+&qspi {
+	bootph-pre-ram;
+
+	flash@0 {
+		bootph-pre-ram;
+	};
+};
+
+&emmc {
+	bootph-pre-ram;
+	max-frequency = <204800000>;
+};
+
+&sdhci0 {
+	bootph-pre-ram;
+	max-frequency = <204800000>;
+};
+
+&binman {
+	u-boot-spl-ddr {
+		type = "section";
+		filename = "u-boot-spl-ddr.bin";
+		pad-byte = <0xff>;
+
+		u-boot-spl {
+		};
+
+		ddr-fw {
+			type = "blob";
+			filename = "ddr_fw.bin";
+			align = <64>;
+		};
+
+		u-boot-any {
+			type = "section";
+			size = <0>;
+			offset = <0>;
+		};
+	};
+};
diff --git a/configs/spacemit_k1_defconfig b/configs/spacemit_k1_defconfig
index 39c490438..8e8ecbb6d 100644
--- a/configs/spacemit_k1_defconfig
+++ b/configs/spacemit_k1_defconfig
@@ -65,7 +65,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_EFI_PARTITION=y
 CONFIG_OF_UPSTREAM=y
-CONFIG_OF_LIST="spacemit/k1-bananapi-f3 spacemit/k1-musepi-pro"
+CONFIG_OF_LIST="spacemit/k1-bananapi-f3 spacemit/k1-milkv-jupiter spacemit/k1-musepi-pro"
 CONFIG_MULTI_DTB_FIT=y
 CONFIG_ENV_OVERWRITE=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-13  1:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-12 15:15 [PATCH] spacemit: k1: add Milk-V Jupiter Hung-Chun Tseng
2026-10-12 22:59 ` E Shattow
2026-10-12 23:16   ` Hung-Chun Tseng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.