Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/Config-images.in
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ menu "Target Images"
int "Root filesystem partition size (in MiB)"
depends on USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS
default 232 if TARGET_loongarch64
default 236 if TARGET_spacemit
default 448 if TARGET_mediatek || TARGET_microchipsw
default 104
help
Expand Down
1 change: 1 addition & 0 deletions include/image-commands.mk
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,7 @@ define Build/fit-its
$(if $(DEVICE_DTS_DELIMITER),-l $(DEVICE_DTS_DELIMITER)) \
$(if $(DEVICE_DTS_LOADADDR),-s $(DEVICE_DTS_LOADADDR)) \
$(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtbo)) \
$(if $(DEVICE_DTS_MULTI),$(foreach dtb,$(DEVICE_DTS_MULTI), -m $(dtb))) \
-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
-A $(LINUX_KARCH) -v $(LINUX_VERSION)
endef
Expand Down
10 changes: 5 additions & 5 deletions include/u-boot.mk
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,12 @@ endef

TARGET_DEP = TARGET_$(BUILD_TARGET)$(if $(BUILD_SUBTARGET),_$(BUILD_SUBTARGET))

ifndef UBOOT_USE_INTREE_DTC
DTC=$(wildcard $(LINUX_DIR)/scripts/dtc/dtc)
endif

UBOOT_MAKE_FLAGS = \
PATH=$(STAGING_DIR_HOST)/bin:$(PATH) \
PATH=$(STAGING_DIR_HOST)/bin:$(if $(DTC),$(shell dirname $(DTC)):)$(PATH) \
HOSTCC="$(HOSTCC)" \
HOSTCFLAGS="$(HOST_CFLAGS) $(HOST_CPPFLAGS) -std=gnu11" \
HOSTLDFLAGS="$(HOST_LDFLAGS)" \
Expand Down Expand Up @@ -123,10 +127,6 @@ define Build/Configure/U-Boot
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS) $(UBOOT_CONFIGURE_VARS) oldconfig)
endef

ifndef UBOOT_USE_INTREE_DTC
DTC=$(wildcard $(LINUX_DIR)/scripts/dtc/dtc)
endif

define Build/Compile/U-Boot
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
CROSS_COMPILE=$(TARGET_CROSS) \
Expand Down
2 changes: 1 addition & 1 deletion package/base-files/files/lib/upgrade/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export_bootdevice() {
done
;;
PARTUUID=????????-????-????-????-??????????0?/PARTNROFF=1 | \
PARTUUID=????????-????-????-????-??????????02)
PARTUUID=????????-????-????-????-??????????0?)
uuid="${rootpart#PARTUUID=}"
uuid="${uuid%/PARTNROFF=1}"
uuid="${uuid%0?}00"
Expand Down
4 changes: 2 additions & 2 deletions package/base-files/files/sbin/sysupgrade
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ COMMAND=/lib/upgrade/do_stage2
ADD_PROVISIONING=0
SAVE_OVERLAY=0
SAVE_OVERLAY_PATH=
SAVE_PARTITIONS=1
SAVE_INSTALLED_PKGS=0
SKIP_UNCHANGED=0
CONF_IMAGE=
Expand All @@ -32,6 +31,7 @@ export MTD_CONFIG_ARGS=""
export INTERACTIVE=0
export VERBOSE=1
export SAVE_CONFIG=1
export SAVE_PARTITIONS=1
export IGNORE_MINOR_COMPAT=0
export FORCE=0
export CONFFILES=/tmp/sysupgrade.conffiles
Expand All @@ -45,7 +45,7 @@ while [ -n "$1" ]; do
-n) export SAVE_CONFIG=0;;
-c) SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/etc;;
-o) SAVE_OVERLAY=1 SAVE_OVERLAY_PATH=/;;
-p) SAVE_PARTITIONS=0;;
-p) export SAVE_PARTITIONS=0;;
-P) ADD_PROVISIONING=1;;
-k) SAVE_INSTALLED_PKGS=1;;
-u) SKIP_UNCHANGED=1;;
Expand Down
20 changes: 11 additions & 9 deletions package/boot/opensbi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=opensbi
PKG_RELEASE:=1.6
PKG_VERSION:=1.9

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/riscv/opensbi
PKG_SOURCE_DATE:=2024-12-24
PKG_SOURCE_VERSION:=bd613dd92113f683052acfb23d9dc8ba60029e0a
PKG_MIRROR_HASH:=19593a340e4346ed953f17664a15744f9efdc68340a89ec6831c5e0e4dc5656d
PKG_SOURCE_URL:=https://github.com/riscv/opensbi
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_MIRROR_HASH:=1abb1467ade206dc7880caf6bd994cac43cbb207882b43b63a05322d91ef3902

PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)

Expand All @@ -29,7 +28,7 @@ include $(INCLUDE_DIR)/package.mk
define Package/opensbi
SECTION:=boot
CATEGORY:=Boot Loaders
DEPENDS:=@(TARGET_sifiveu||TARGET_d1)
DEPENDS:=@(TARGET_sifiveu||TARGET_d1||TARGET_spacemit)
URL:=https://github.com/riscv/opensbi/blob/master/README.md
VARIANT:=$(subst _,/,$(subst opensbi_,,$(1)))
TITLE:=OpenSBI generic
Expand All @@ -46,12 +45,15 @@ endef

export GCC_HONOUR_COPTS=s

MAKE_VARS = \
CROSS_COMPILE="$(TARGET_CROSS)"
MAKE_FLAGS = \
CROSS_COMPILE="$(TARGET_CROSS)" \
REPRODUCIBLE=y \
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
OPENSBI_VERSION_GIT="v$(PKG_VERSION)-OpenWrt-$(REVISION)"

define Build/Compile
$(eval $(Package/opensbi_$(BUILD_VARIANT))) \
+$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) \
+$(MAKE) $(MAKE_FLAGS) -C $(PKG_BUILD_DIR) \
PLATFORM=$(PLAT)
endef

Expand Down
59 changes: 59 additions & 0 deletions package/boot/uboot-spacemit/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# SPDX-License-Identifier: GPL-2.0-only

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=uboot-spacemit

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/spacemit-com/uboot-2022.10.git
PKG_SOURCE_DATE:=2026-06-05
PKG_SOURCE_VERSION:=46a4f510352684407c074b7c0e9114b5443dcc59
PKG_MIRROR_HASH:=6c52e24dba290ff9f86875e6b5a5c6d9a3fb8a2b80e950c7f4f08a09a3cb99e0

PKG_RELEASE:=1

include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk

# build an user installable package
PKG_TARGETS:=
PKG_BUILD_DEPENDS:=opensbi

define U-Boot/spacemit_k1
NAME:=SpacemiT K1
BUILD_TARGET:=spacemit
BUILD_SUBTARGET:=k1
UBOOT_CONFIG:=k1
UBOOT_IMAGE:= \
FSBL.bin \
u-boot.itb \
bootinfo_emmc.bin \
bootinfo_sd.bin \
bootinfo_spinand.bin \
bootinfo_spinor.bin
DEPENDS:=+mtd
endef

UBOOT_TARGETS:= \
spacemit_k1

UBOOT_MAKE_FLAGS += OPENSBI=$(STAGING_DIR_IMAGE)/fw_dynamic-generic.bin

define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)/u-boot-$(BUILD_VARIANT)
$(INSTALL_DATA) $(patsubst %,$(PKG_BUILD_DIR)/%,$(UBOOT_IMAGE)) $(STAGING_DIR_IMAGE)/u-boot-$(BUILD_VARIANT)/
$(INSTALL_BIN) bootstrap.sh $(STAGING_DIR_IMAGE)/u-boot-$(BUILD_VARIANT)/
$(TAR) -C $(STAGING_DIR_IMAGE) -cvzf $(STAGING_DIR_IMAGE)/u-boot-$(BUILD_VARIANT).tar.gz u-boot-$(BUILD_VARIANT)/
$(INSTALL_DATA) $(STAGING_DIR_IMAGE)/u-boot-$(BUILD_VARIANT).tar.gz $(BIN_DIR)/
endef

define Package/u-boot/install
$(INSTALL_DIR) $(1)/usr/share/bootloader
$(INSTALL_DATA) $(patsubst %,$(PKG_BUILD_DIR)/%,$(UBOOT_IMAGE)) $(1)/usr/share/bootloader/
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) update-bootloader.sh $(1)/sbin/
endef

$(eval $(call BuildPackage/U-Boot))
46 changes: 46 additions & 0 deletions package/boot/uboot-spacemit/bootstrap.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/bin/sh -e

# bootstrap SpacemiT K1 boards
# * hold the FDL (Firmware Download) button while powering on
# * run this script without arguments to upload u-boot and drop to its prompt
# * pass the filename of a FIT (*.itb) image to boot it:
# ./u-boot-spacemit_k1/bootstrap.sh openwrt-spacemit-k1-generic-initramfs.itb

dir="$(dirname "$(readlink -f "$0")")"
stage1="${dir}/FSBL.bin"
stage2="${dir}/u-boot.itb"
stage3="${1}"

die() {
echo "$(basename "$0"): error: $*"
exit 1
}

which fastboot 2>/dev/null 1>&2 || die "the fastboot tool is required"
test -f "${stage1}" || die "missing file: ${stage1}"
test -f "${stage2}" || die "missing file: ${stage2}"
test -n "${stage3}" -a ! -f "${stage3}" && die "not a file: ${stage3}"

fastboot getvar version-brom
echo "uploading stage1..."
fastboot stage "${stage1}"
fastboot continue
sleep 1

echo "uploading stage2..."
fastboot stage "${stage2}"
fastboot continue
sleep 1

if test -z "${stage3}"; then
echo "dropping to prompt..."
fastboot oem env:set bootdelay:-1
fastboot continue
exit 0
fi

echo "uploading stage3..."
fastboot oem env:set bootargs:earlycon=sbi console=ttyS0,115200 root=/dev/ram
fastboot stage "${stage3}"
fastboot oem env:set bootdelay:0
fastboot continue
147 changes: 147 additions & 0 deletions package/boot/uboot-spacemit/patches/0001-SpacemiT-K1X-Fixups.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
From 49efbf8f5dd59c50e42b6c77cb56fc000872ef53 Mon Sep 17 00:00:00 2001
From: Patrick Yavitz <pyavitz@gmail.com>
Date: Mon, 16 Feb 2026 09:18:25 -0500
Subject: [PATCH] SpacemiT K1X Fixups

a.heider: fix bugs, remove net config

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
---
board/spacemit/k1-x/k1x.c | 33 +++++++++++----------------------
include/configs/k1-x.h | 27 ++++++++++-----------------
2 files changed, 21 insertions(+), 39 deletions(-)

--- a/board/spacemit/k1-x/k1x.c
+++ b/board/spacemit/k1-x/k1x.c
@@ -532,8 +532,8 @@ void _load_env_from_blk(struct blk_desc
if (part > MAX_SEARCH_PARTITIONS)
return;

- env_set("bootfs_part", simple_itoa(part));
- env_set("bootfs_devname", dev_name);
+ env_set("distro_bootpart", simple_itoa(part));
+ env_set("devtype", dev_name);

/*load env.txt and import to uboot*/
memset((void *)CONFIG_SPL_LOAD_FIT_ADDRESS, 0, CONFIG_ENV_SIZE);
@@ -739,7 +739,7 @@ void setenv_boot_mode(void)
const char *boot_override = env_get("boot_override");

if (boot_override) {
- env_set("boot_device", boot_override);
+ env_set("devtype", boot_override);
env_set("boot_override", NULL);
return;
}
@@ -748,34 +748,23 @@ void setenv_boot_mode(void)
u32 boot_mode = get_boot_mode();
switch (boot_mode) {
case BOOT_MODE_NAND:
- env_set("boot_device", "nand");
+ env_set("devtype", "nand");
break;
case BOOT_MODE_NOR:
- char *blk_name;
- int blk_index;
-
- if (get_available_boot_blk_dev(&blk_name, &blk_index)){
- printf("can not get available blk dev\n");
- return;
- }
-
- env_set("boot_device", "nor");
- env_set("boot_devnum", simple_itoa(blk_index));
- break;
case BOOT_MODE_EMMC:
- env_set("boot_device", "mmc");
- env_set("boot_devnum", simple_itoa(MMC_DEV_EMMC));
+ env_set("devtype", "mmc");
+ env_set("devnum", simple_itoa(MMC_DEV_EMMC));
break;
case BOOT_MODE_SD:
- env_set("boot_device", "mmc");
- env_set("boot_devnum", simple_itoa(MMC_DEV_SD));
+ env_set("devtype", "mmc");
+ env_set("devnum", simple_itoa(MMC_DEV_SD));
break;
case BOOT_MODE_USB:
// for fastboot image download and run test
env_set("bootcmd", CONFIG_BOOTCOMMAND);
break;
default:
- env_set("boot_device", "");
+ env_set("devtype", "");
break;
}
}
@@ -1048,9 +1037,9 @@ int board_late_init(void)
setenv_boot_mode();

// Resize the last partition for sd
- const char *boot_device = env_get("boot_device");
+ const char *boot_device = env_get("devtype");
if (boot_device && strcmp(boot_device, "mmc") == 0) {
- const char *boot_devnum = env_get("boot_devnum");
+ const char *boot_devnum = env_get("devnum");
unsigned long devnum = simple_strtoul(boot_devnum, NULL, 10);
if (devnum == MMC_DEV_SD) {
printf("Resize the last partition for boot dev %s devnum %lu\n", boot_device, devnum);
--- a/include/configs/k1-x.h
+++ b/include/configs/k1-x.h
@@ -20,11 +20,6 @@
#define RISCV_SMODE_TIMER_FREQ 24000000
#define RISCV_TIMER_FREQ (RISCV_SMODE_TIMER_FREQ)

-#define CONFIG_IPADDR 10.0.92.253
-#define CONFIG_SERVERIP 10.0.92.134
-#define CONFIG_GATEWAYIP 10.0.92.1
-#define CONFIG_NETMASK 255.255.255.0
-
#define DEFAULT_PRODUCT_NAME "k1-x_deb1"

#define DDR_TRAINING_DATA_BASE (0xc0832000)
@@ -108,11 +103,6 @@
#define TLV_CODE_EEPROM_I2C_INDEX 0x81
#define TLV_CODE_EEPROM_PIN_GROUP 0x82

-// #define RAMDISK_LOAD_ADDR (CONFIG_FASTBOOT_BUF_ADDR + CONFIG_FASTBOOT_BUF_SIZE)
-// #define DTB_LOAD_ADDR (CONFIG_FASTBOOT_BUF_ADDR + CONFIG_FASTBOOT_BUF_SIZE * 2)
-#define RAMDISK_LOAD_ADDR 0x21000000
-#define DTB_LOAD_ADDR 0x31000000
-
// for those has NOT been through test procedure(ATE)
#define SVT_DRO_DEFAULT_VALUE (120)

@@ -217,6 +207,11 @@ enum private_part_offset {
#define BOOT_TARGET_DEVICES(func) \
func(QEMU, qemu, na)

+#define KERNEL_ADDR_R __stringify(0x10000000)
+#define RAMDISK_ADDR_R __stringify(0x21000000)
+#define FDT_ADDR_R __stringify(0x31000000)
+#define FDTOVERLAY_ADDR_R __stringify(0x01000000)
+
#include <config_distro_bootcmd.h>

#define BOOTENV_DEV_QEMU(devtypeu, devtypel, instance) \
@@ -244,15 +239,13 @@ enum private_part_offset {
"stdout_flash=serial,vidconsole\0" \
"kernel_comp_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
"kernel_comp_size=" __stringify(CONFIG_FASTBOOT_BUF_SIZE) "\0" \
- "kernel_addr_r=" __stringify(CONFIG_FASTBOOT_BUF_ADDR) "\0" \
- "ramdisk_addr=" __stringify(RAMDISK_LOAD_ADDR) "\0" \
- "dtb_addr=" __stringify(DTB_LOAD_ADDR) "\0" \
"scriptaddr=0x2c100000\0" \
"pxefile_addr_r=0x0c200000\0" \
- "splashimage=" __stringify(CONFIG_FASTBOOT_BUF_ADDR) "\0" \
- "splashpos=m,m\0" \
- "splashfile=bianbu.bmp\0" \
- "led0_gpio=" __stringify(STATUS_LED_GPIO0) "\0" \
+ "fdt_addr_r=" FDT_ADDR_R "\0" \
+ "kernel_addr_r=" KERNEL_ADDR_R "\0" \
+ "ramdisk_addr_r=" RAMDISK_ADDR_R "\0" \
+ "fdtoverlay_addr_r=" FDTOVERLAY_ADDR_R "\0" \
+ "fdtfile=spacemit/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
BOOTENV_DEVICE_CONFIG


Loading
Loading