105 lines
5.8 KiB
Plaintext
105 lines
5.8 KiB
Plaintext
# Rockchip RK3588 SoC octa core Jetson SoM
|
|
declare -g BOARD_NAME="Mixtile Core3588E"
|
|
declare -g BOARD_VENDOR="mixtile"
|
|
declare -g BOARDFAMILY="rockchip-rk3588"
|
|
declare -g BOARD_MAINTAINER="rpardini"
|
|
declare -g KERNEL_TARGET="edge,vendor"
|
|
declare -g BOOT_FDT_FILE="rockchip/rk3588-mixtile-core3588e.dtb" # same name vendor and edge
|
|
declare -g BOOT_SCENARIO="spl-blobs"
|
|
declare -g BOOT_SOC="rk3588"
|
|
declare -g BOOTCONFIG="mixtile-core3588e-rk3588_defconfig" # edge/mainline
|
|
declare -g IMAGE_PARTITION_TABLE="gpt"
|
|
# Does NOT have a UEFI_EDK2_BOARD_ID
|
|
|
|
# Vendor kernel:
|
|
# - https://github.com/armbian/linux-rockchip/blob/rk-6.1-rkr5.1/arch/arm64/boot/dts/rockchip/rk3588-mixtile-core3588e.dts
|
|
# - mostly works, still sucks as it's vendor kernel
|
|
# - mainline u-boot can boot the vendor kernel just fine
|
|
# Mainline kernel:
|
|
# - https://github.com/Joshua-Riek/linux/blob/v6.7-rk3588/arch/arm64/boot/dts/rockchip/rk3588-mixtile-core3588e.dts
|
|
# - a _lot_ of fixes and additions done on top; gpu/npu/i2c/thermals/etc
|
|
|
|
# Hardware notes:
|
|
# - With the LEETOP carrier board (as shipped by Mixtile)
|
|
# - Recovery "button" (NOT real "Maskrom"): "jumper cap to connect the FCREC and GND pins"; this depends on u-boot actually working (not bricked)
|
|
# - OTG/Maskrom port is micro-USB port
|
|
# - The "real" maskrom is to short two tiny solder-joints near the SoC on the SoM; see https://dh19rycdk230a.cloudfront.net/app/uploads/2023/11/solder-joints.png
|
|
# - Pinout of the LEETOP carrier board: https://www.cnx-software.com/wp-content/uploads/2023/12/Leetop-A206-40-pin-GPIO-header-pintout.png
|
|
# - pin 1 is 3.3v; pin 6 and 9 and 25 are GND;
|
|
# - pin 3 is SDA; pin 5 is SCL --> i2c-5 confirmed (mainline kernel) // i2c-1 confirmed (vendor kernel)
|
|
# - pin 27 is SDA; pin 28 is SCL --> unconfirmed
|
|
# - pin 8 is UART TX; pin 10 is UART RX --> uart1 unconfirmed
|
|
|
|
function post_family_config__core3588e_use_mainline_uboot() {
|
|
display_alert "$BOARD" "mainline u-boot overrides for $BOARD / $BRANCH" "info"
|
|
|
|
declare -g BOOTDELAY=1
|
|
declare -g BOOTSOURCE="https://github.com/u-boot/u-boot.git"
|
|
declare -g BOOTBRANCH="tag:v2026.01"
|
|
declare -g BOOTPATCHDIR="v2026.01"
|
|
declare -g BOOTDIR="u-boot-${BOARD}"
|
|
|
|
declare -g UBOOT_TARGET_MAP="BL31=${RKBIN_DIR}/${BL31_BLOB} ROCKCHIP_TPL=${RKBIN_DIR}/${DDR_BLOB};;u-boot-rockchip.bin u-boot-rockchip-usb471.bin u-boot-rockchip-usb472.bin"
|
|
unset uboot_custom_postprocess write_uboot_platform write_uboot_platform_mtd
|
|
|
|
function write_uboot_platform() {
|
|
dd "if=$1/u-boot-rockchip.bin" "of=$2" bs=32k seek=1 conv=notrunc status=none
|
|
}
|
|
|
|
declare -g PLYMOUTH="no" # Disable plymouth as that only causes more confusion
|
|
}
|
|
|
|
# "rockchip-common: boot SD card first, then NVMe, then mmc"
|
|
# include/configs/rockchip-common.h
|
|
# On the mixtile-core3588e: mmc0 is eMMC; mmc1 is microSD (which doesn't really exist/work)
|
|
function pre_config_uboot_target__core3588e_patch_rockchip_common_boot_order() {
|
|
declare -a rockchip_uboot_targets=("mmc1" "nvme" "scsi" "usb" "mmc0" "pxe" "dhcp" "spi") # for future make-this-generic delight
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: adjust boot order to '${rockchip_uboot_targets[*]}'" "info"
|
|
sed -i -e "s/#define BOOT_TARGETS.*/#define BOOT_TARGETS \"${rockchip_uboot_targets[*]}\"/" include/configs/rockchip-common.h
|
|
regular_git diff -u include/configs/rockchip-common.h || true
|
|
}
|
|
|
|
function post_config_uboot_target__extra_configs_for_core3588e_mainline_environment_in_spi() {
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable board-specific configs" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_CMD_MISC
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable RAMBoot images" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_ROCKCHIP_MASKROM_IMAGE
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable preboot & flash user LED in preboot" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_USE_PREBOOT
|
|
run_host_command_logged scripts/config --set-str CONFIG_PREBOOT "'led sys_led on; sleep 0.1; led sys_led off'" # double quotes required due to run_host_command_logged's quirks
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable EFI debugging commands" "info"
|
|
run_host_command_logged scripts/config --enable CMD_EFIDEBUG
|
|
run_host_command_logged scripts/config --enable CMD_NVEDIT_EFI
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable more filesystems support" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_CMD_BTRFS
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable more compression support" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_LZO
|
|
run_host_command_logged scripts/config --enable CONFIG_BZIP2
|
|
run_host_command_logged scripts/config --enable CONFIG_ZSTD
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable gpio LED support" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_LED
|
|
run_host_command_logged scripts/config --enable CONFIG_LED_GPIO
|
|
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable networking cmds" "info"
|
|
run_host_command_logged scripts/config --enable CONFIG_CMD_NFS
|
|
run_host_command_logged scripts/config --enable CONFIG_CMD_WGET
|
|
run_host_command_logged scripts/config --enable CONFIG_CMD_DNS
|
|
run_host_command_logged scripts/config --enable CONFIG_PROT_TCP
|
|
run_host_command_logged scripts/config --enable CONFIG_PROT_TCP_SACK
|
|
|
|
# UMS, RockUSB, gadget stuff
|
|
display_alert "u-boot for ${BOARD}/${BRANCH}" "u-boot: enable UMS/RockUSB gadget" "info"
|
|
declare -a enable_configs=("CONFIG_CMD_USB_MASS_STORAGE" "CONFIG_USB_GADGET" "USB_GADGET_DOWNLOAD" "CONFIG_USB_FUNCTION_ROCKUSB" "CONFIG_USB_FUNCTION_ACM" "CONFIG_CMD_ROCKUSB" "CONFIG_CMD_USB_MASS_STORAGE")
|
|
for config in "${enable_configs[@]}"; do
|
|
run_host_command_logged scripts/config --enable "${config}"
|
|
done
|
|
# Auto-enabled by the above, force off...
|
|
run_host_command_logged scripts/config --disable USB_FUNCTION_FASTBOOT
|
|
}
|