diff --git a/config/boards/orangepi5.conf b/config/boards/orangepi5.conf index b2cf27667..74454569a 100644 --- a/config/boards/orangepi5.conf +++ b/config/boards/orangepi5.conf @@ -33,7 +33,8 @@ function post_family_config__orangepi5_use_mainline_uboot() { declare -g BOOTBRANCH="tag:v2025.04" declare -g BOOTPATCHDIR="v2025.04" declare -g BOOTDIR="u-boot-${BOARD}" # do not share u-boot directory - declare -g UBOOT_TARGET_MAP="BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB};;u-boot-rockchip.bin u-boot-rockchip-spi.bin" + declare -g UBOOT_TARGET_MAP="BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB} $BOOTCONFIG_SATA;;u-boot-rockchip-spi-sata.bin + BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB} $BOOTCONFIG;;u-boot-rockchip.bin u-boot-rockchip-spi.bin" unset uboot_custom_postprocess write_uboot_platform write_uboot_platform_mtd # disable stuff from rockchip64_common; we're using binman here which does all the work already # Just use the binman-provided u-boot-rockchip.bin, which is ready-to-go @@ -42,10 +43,63 @@ function post_family_config__orangepi5_use_mainline_uboot() { } function write_uboot_platform_mtd() { - flashcp -v -p "$1/u-boot-rockchip-spi.bin" /dev/mtd0 + FILES=$(find "$1" -maxdepth 1 -type f -name "u-boot-rockchip-spi*.bin") + if [ -z "$FILES" ]; then + echo "No SPI image found." + exit 1 + fi + + MENU_ITEMS=() + i=1 + + # Read the files into an array + while IFS= read -r file; do + filename=$(basename "$file") + MENU_ITEMS+=("$i" "$filename" "") + ((i++)) + done <<< "$FILES" + + # If there is only one image, we can skip the dialog + if [[ $i -eq 2 ]]; then + flashcp -v -p "$1/${MENU_ITEMS[1]}" /dev/mtd0 + return + fi + + [[ -f /etc/armbian-release ]] && source /etc/armbian-release + backtitle="Armbian for $BOARD_NAME install script, https://www.armbian.com" + + CHOICE=$(dialog --no-collapse \ + --title "armbian-install" \ + --backtitle $backtitle \ + --radiolist "Choose SPI image:" 0 56 4 \ + "${MENU_ITEMS[@]}" \ + 3>&1 1>&2 2>&3) + + if [ $? -eq 0 ]; then + flashcp -v -p "$1/${MENU_ITEMS[($CHOICE*3)-2]}" /dev/mtd0 + else + echo "No SPI image chosen." + exit 1 + fi } } +function pre_config_uboot_target__orangepi5_patch_uboot_bootconfig_hack_for_sata() { + if [[ $BRANCH == "vendor" ]]; then + return + fi + + display_alert "u-boot for ${BOARD}" "u-boot: hack bootconfig for sata spi image" "info" + + if [[ $target_make == *"orangepi-5-sata-rk3588s_defconfig"* ]]; then + BOOTCONFIG="orangepi-5-sata-rk3588s_defconfig" + target_make=${target_make/orangepi-5-sata-rk3588s_defconfig/} + else + BOOTCONFIG="orangepi-5-rk3588s_defconfig" + target_make=${target_make/orangepi-5-rk3588s_defconfig/} + fi +} + function post_family_tweaks_bsp__orangepi5_copy_usb2_service() { if [[ $BRANCH == "edge" || $BRANCH == "current" ]]; then return diff --git a/patch/u-boot/v2025.04/board_orangepi5/0001-add-sata-dts-and-defconfig-for-OPi5.patch b/patch/u-boot/v2025.04/board_orangepi5/0001-add-sata-dts-and-defconfig-for-OPi5.patch new file mode 100644 index 000000000..6bce8605c --- /dev/null +++ b/patch/u-boot/v2025.04/board_orangepi5/0001-add-sata-dts-and-defconfig-for-OPi5.patch @@ -0,0 +1,175 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Muhammed Efe Cetin +Date: Sat, 26 Apr 2025 15:45:44 +0300 +Subject: add sata dts and defconfig for OPi5 + +--- + arch/arm/dts/rk3588s-orangepi-5-sata-u-boot.dtsi | 16 ++ + configs/orangepi-5-sata-rk3588s_defconfig | 93 ++++++++++ + dts/upstream/src/arm64/rockchip/rk3588s-orangepi-5-sata.dts | 33 ++++ + 3 files changed, 142 insertions(+) + +diff --git a/arch/arm/dts/rk3588s-orangepi-5-sata-u-boot.dtsi b/arch/arm/dts/rk3588s-orangepi-5-sata-u-boot.dtsi +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null ++++ b/arch/arm/dts/rk3588s-orangepi-5-sata-u-boot.dtsi +@@ -0,0 +1,16 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++#include "rk3588s-u-boot.dtsi" ++#include "rk3588s-orangepi-5-u-boot.dtsi" ++ ++/ { ++ chosen { ++ u-boot,spl-boot-order = "same-as-spl", &sdmmc; ++ }; ++}; ++ ++&binman { ++ simple-bin-spi { ++ filename = "u-boot-rockchip-spi-sata.bin"; ++ }; ++}; +\ No newline at end of file +diff --git a/configs/orangepi-5-sata-rk3588s_defconfig b/configs/orangepi-5-sata-rk3588s_defconfig +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null ++++ b/configs/orangepi-5-sata-rk3588s_defconfig +@@ -0,0 +1,93 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_COUNTER_FREQUENCY=24000000 ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_SF_DEFAULT_SPEED=24000000 ++CONFIG_SF_DEFAULT_MODE=0x2000 ++CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3588s-orangepi-5-sata" ++CONFIG_ROCKCHIP_RK3588=y ++CONFIG_ROCKCHIP_SPI_IMAGE=y ++CONFIG_SPL_SERIAL=y ++CONFIG_TARGET_EVB_RK3588=y ++CONFIG_SYS_LOAD_ADDR=0xc00800 ++CONFIG_SF_DEFAULT_BUS=5 ++CONFIG_DEBUG_UART_BASE=0xFEB50000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SPL_SPI_FLASH_SUPPORT=y ++CONFIG_SPL_SPI=y ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_AHCI=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588s-orangepi-5-sata.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_MAX_SIZE=0x40000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++CONFIG_SPL_SPI_LOAD=y ++CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 ++CONFIG_SPL_ATF=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++# CONFIG_CMD_SETEXPR is not set ++CONFIG_CMD_REGULATOR=y ++# CONFIG_SPL_DOS_PARTITION is not set ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SPL_SYSCON=y ++CONFIG_AHCI_PCI=y ++CONFIG_DWC_AHCI=y ++CONFIG_SPL_CLK=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=y ++CONFIG_SUPPORT_EMMC_RPMB=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_SPI_FLASH_SFDP_SUPPORT=y ++CONFIG_SPI_FLASH_XMC=y ++CONFIG_PHY_MOTORCOMM=y ++CONFIG_DWC_ETH_QOS=y ++CONFIG_DWC_ETH_QOS_ROCKCHIP=y ++CONFIG_NVME_PCI=y ++CONFIG_PCIE_DW_ROCKCHIP=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y ++CONFIG_PHY_ROCKCHIP_USBDP=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_SPL_RAM=y ++CONFIG_SCSI=y ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_ROCKCHIP_SFC=y ++CONFIG_SYSRESET=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_GENERIC=y ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_GENERIC=y ++CONFIG_ERRNO_STR=y ++CONFIG_AHCI=y ++CONFIG_CMD_SCSI=y ++CONFIG_DM_SCSI=y ++CONFIG_DWC_AHCI=y ++CONFIG_LIBATA=y ++CONFIG_SCSI_AHCI=y ++CONFIG_SCSI=y +diff --git a/dts/upstream/src/arm64/rockchip/rk3588s-orangepi-5-sata.dts b/dts/upstream/src/arm64/rockchip/rk3588s-orangepi-5-sata.dts +new file mode 100644 +index 000000000000..111111111111 +--- /dev/null ++++ b/dts/upstream/src/arm64/rockchip/rk3588s-orangepi-5-sata.dts +@@ -0,0 +1,33 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "rk3588s-orangepi-5.dtsi" ++#include ++#include ++ ++/ { ++ model = "Xunlong Orange Pi 5 (Sata)"; ++ compatible = "xunlong,orangepi-5", "rockchip,rk3588s"; ++}; ++ ++&sata0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sata_reset>; ++ status = "okay"; ++ ++ phys = <&combphy0_ps PHY_TYPE_SATA>; ++ phy-names = "sata-phy"; ++}; ++ ++&sfc { ++ status = "okay"; ++}; ++ ++&pinctrl { ++ sata { ++ sata_reset: sata-reset { ++ rockchip,pins = <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++}; +-- +Armbian +