From e0b13fe834b52913f52fc233ad519492f56ced8c Mon Sep 17 00:00:00 2001 From: Trevor Woerner Date: Tue, 11 Jun 2024 13:48:35 -0400 Subject: [PATCH] radxa-zero-3{e|w}: add MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Radxa ZERO 3{e|w} are ultra-small, high-performance single board computers based on the Rockchip RK3566, with a compact form factor, and rich interfaces. http://radxa.com/products/zeros/zero3e/ http://radxa.com/products/zeros/zero3w/ common tech specs: - Rockchip RK3566 (4x Arm Cortex-A55 @ 1.6GHz) - Arm Mali-G52-2EE (OpenGL ES 1.1/2.0/3.0/3.1/3.2, Vulkan 1.1, OpenCL 2.0) - LPDDR4 RAM (1/2/3/8 GB) - µSD - 1x USB 2.0 Type C OTG, 1x USB 3.0 Type C Host - 1x µHDMI (1080p @ 60fps) - 1x MIPI CSI camera port - colour-coded 40-pin GPIO (uart, spi, i2c, pcm/i2s, pwm, gpio) - 72mm x 30mm Radxa ZERO 3e specific tech specs: - GbE Radxa ZERO 3w specific tech specs: - optional onboard eMMC (8/16/32/64 GB) - IEEE 802.11 b/g/n/ac/ax(WiFi6), BT5.4 with BLE NOTE: currently support for this board requires a U-Boot fork for the bootloader, and linux-next for the kernel. Support will probably come in linux kernel 6.11-ish, at which point U-Boot will then use that kernel's device tree which means U-Boot support will come after the release of whichever kernel includes support for this board. Signed-off-by: Trevor Woerner --- README | 2 ++ conf/machine/include/radxa-zero-3.inc | 8 ++++++ conf/machine/include/rk3566.inc | 21 ++++++++++++++++ conf/machine/radxa-zero-3e.conf | 7 ++++++ conf/machine/radxa-zero-3w.conf | 7 ++++++ recipes-bsp/rkbin/rockchip-rkbin_git.bb | 12 +++++++++ recipes-bsp/u-boot/u-boot_%.bbappend | 4 +++ .../linux/linux-torvalds-next_git.bb | 25 +++++++++++++++++++ 8 files changed, 86 insertions(+) create mode 100644 conf/machine/include/radxa-zero-3.inc create mode 100644 conf/machine/include/rk3566.inc create mode 100644 conf/machine/radxa-zero-3e.conf create mode 100644 conf/machine/radxa-zero-3w.conf create mode 100644 recipes-kernel/linux/linux-torvalds-next_git.bb diff --git a/README b/README index b21e923..909840d 100644 --- a/README +++ b/README @@ -40,6 +40,8 @@ Status of supported boards: orangepi-5-plus rock-3a rock-4c-plus + radxa-zero-3e + radxa-zero-3w builds: marsboard-rk3066 radxarock diff --git a/conf/machine/include/radxa-zero-3.inc b/conf/machine/include/radxa-zero-3.inc new file mode 100644 index 0000000..1c6f972 --- /dev/null +++ b/conf/machine/include/radxa-zero-3.inc @@ -0,0 +1,8 @@ +MACHINEOVERRIDES =. "radxa-zero-3:" + +require conf/machine/include/rk3566.inc + +PREFERRED_PROVIDER_virtual/kernel = "linux-torvalds-next" +MACHINE_EXTRA_RRECOMMENDS += "kernel-modules" + +UBOOT_MACHINE = "radxa-zero-3-rk3566_defconfig" diff --git a/conf/machine/include/rk3566.inc b/conf/machine/include/rk3566.inc new file mode 100644 index 0000000..586d688 --- /dev/null +++ b/conf/machine/include/rk3566.inc @@ -0,0 +1,21 @@ +SOC_FAMILY = "rk3566" + +DEFAULTTUNE ?= "cortexa55" + +ROCKCHIP_CLOSED_TPL ?= "1" + +require conf/machine/include/soc-family.inc +require conf/machine/include/rockchip-defaults.inc +require conf/machine/include/arm/armv8-2a/tune-cortexa55.inc +require conf/machine/include/rockchip-wic.inc + +KBUILD_DEFCONFIG ?= "defconfig" +KERNEL_FEATURES:append:rk3566 = " bsp/rockchip/remove-non-rockchip-arch-arm64.scc" +KERNEL_CLASSES = "kernel-fitimage" +KERNEL_IMAGETYPE ?= "fitImage" + +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin" +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin" + +UBOOT_SUFFIX ?= "itb" +UBOOT_ENTRYPOINT ?= "0x06000000" diff --git a/conf/machine/radxa-zero-3e.conf b/conf/machine/radxa-zero-3e.conf new file mode 100644 index 0000000..37792cb --- /dev/null +++ b/conf/machine/radxa-zero-3e.conf @@ -0,0 +1,7 @@ +#@TYPE: Machine +#@NAME: Radxa Zero 3E +#@DESCRIPTION: The Radxa ZERO 3e is an ultra-small, high-performance single board computer based on the Rockchip RK3566, with a compact form factor, and rich interfaces. +#http://radxa.com/products/zeros/zero3e/ + +require conf/machine/include/radxa-zero-3.inc +KERNEL_DEVICETREE = "rockchip/rk3566-radxa-zero-3e.dtb" diff --git a/conf/machine/radxa-zero-3w.conf b/conf/machine/radxa-zero-3w.conf new file mode 100644 index 0000000..5193d45 --- /dev/null +++ b/conf/machine/radxa-zero-3w.conf @@ -0,0 +1,7 @@ +#@TYPE: Machine +#@NAME: Radxa Zero 3W +#@DESCRIPTION: The Radxa ZERO 3w is an ultra-small, high-performance single board computer based on the Rockchip RK3566, with a compact form factor, and rich interfaces. +#http://radxa.com/products/zeros/zero3w/ + +require conf/machine/include/radxa-zero-3.inc +KERNEL_DEVICETREE = "rockchip/rk3566-radxa-zero-3w.dtb" diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb index f9724dd..1b71414 100644 --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb +++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb @@ -14,6 +14,7 @@ S = "${WORKDIR}/git" COMPATIBLE_MACHINE = "^$" COMPATIBLE_MACHINE:rk3308 = "rk3308" +COMPATIBLE_MACHINE:rk3566 = "rk3566" COMPATIBLE_MACHINE:rk3568 = "rk3568" COMPATIBLE_MACHINE:rk3588s = "rk3588s" @@ -36,6 +37,17 @@ do_deploy:rk3308() { install -m 644 ${S}/bin/rk33/rk3308_ddr_589MHz_uart?_m0_v*.bin ${DEPLOYDIR}/ddr-rk3308.bin } +# NOTE: the following are not typos +# the rk3566 uses the same bl31/2 as the rk3568 +do_deploy:rk3566() { + # Prebuilt TF-A + install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3566.elf + # Prebuilt OPTEE-OS + install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3566.bin + # Prebuilt U-Boot TPL (DDR init) + install -m 644 ${S}/bin/rk35/rk3566_ddr_1056MHz_v1.21.bin ${DEPLOYDIR}/ddr-rk3566.bin +} + do_deploy:rk3568() { # Prebuilt TF-A install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend index 862ca13..c939a48 100644 --- a/recipes-bsp/u-boot/u-boot_%.bbappend +++ b/recipes-bsp/u-boot/u-boot_%.bbappend @@ -2,6 +2,10 @@ require u-boot-rockchip.inc FILESEXTRAPATHS:prepend := "${THISDIR}/files:" +SRC_URI:radxa-zero-3 = "git://github.com/Kwiboo/u-boot-rockchip.git;protocol=https;branch=rk3xxx-2024.07;name=Kwiboo" +SRCREV:radxa-zero-3 = "8cdf606e616baa36751f3b4adcfaefc781126c8c" +SRCREV:radxa-zero-3:rk-u-boot-env = "8cdf606e616baa36751f3b4adcfaefc781126c8c" + SRC_URI:append:rk-u-boot-env = " file://rockchip-enable-environment-mmc.cfg" SRCREV:rk-u-boot-env = "cdfcc37428e06f4730ab9a17cc084eeb7676ea1a" diff --git a/recipes-kernel/linux/linux-torvalds-next_git.bb b/recipes-kernel/linux/linux-torvalds-next_git.bb new file mode 100644 index 0000000..6f3db7c --- /dev/null +++ b/recipes-kernel/linux/linux-torvalds-next_git.bb @@ -0,0 +1,25 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/linux-yocto-dev:" + +DESCRIPTION = "Linux Kernel" +SECTION = "kernel" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +ERROR_QA:remove = "buildpaths" +DEFAULT_PREFERENCE = "-1" +COMPATIBLE_MACHINE = "^$" +COMPATIBLE_MACHINE:radxa-zero-3 = "radxa-zero-3" + +LINUX_VERSION = "6.10-rc3" +KERNEL_VERSION_SANITY_SKIP = "1" +PV = "${LINUX_VERSION}+git${SRCPV}" +SRC_URI = " \ + git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git;protocol=https;nobranch=1 \ + file://rockchip-kmeta;type=kmeta;name=rockchip-kmeta;destsuffix=rockchip-kmeta \ + " +# this is tag 'next-20240611' +SRCREV = "a957267fa7e9159d3d2ee1421359ebf228570c68" + +inherit kernel +inherit kernel-yocto +require recipes-kernel/linux/linux-yocto.inc