* [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update
@ 2024-09-09 14:55 Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 01/10] mesa: enable lima on all rk3328 boards Trevor Woerner
` (10 more replies)
0 siblings, 11 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Trevor Woerner
From: Trevor Woerner <trevor.woerner@amd.com>
Update the scarthgap branch with all the relevant patches from master.
The scarthgap branch did not get the UNPACKDIR changes that went into
master/styhead, therefore any patches that addressed that change were not
picked, and any patches that added features with UNPACKDIR were modified to
revert back to WORKDIR.
On master, it took a couple patches to get the radxa-zero-3{e|w} machine
added and working fully (i.e. with the kernel tag). All these patches were
squashed together into one "add radxa zero 3" patch.
The rename of the mesa bbappend patch is not required on scarthgap for
reasons similar to the UNPACKDIR feature.
Boot tested with:
- nanopi-r2s
- radxa-zero-3e
- rock-3a
- rock-5a
- rock-pi-4b
- rock-pi-s
Marcin Bober (1):
mesa: build panfrost for RK3566 boards
Quentin Schulz (3):
mesa: enable lima on all rk3328 boards
mesa: build panfrost for RK3568 boards
enable HW VPU decoding for SoCs that have stateless VPUs
Trevor Woerner (6):
user-selectable wic compression
rockchip-rkbin: bump SRCREV
radxa-zero-3{e|w}: add
README: sort MACHINE names
rauc demo: add
linux-torvalds-next: bump to next-20240904
README | 108 ++++++++++++++----
.../rk-rauc-demo-features-check.bbclass | 4 +
conf/layer.conf | 4 +
conf/machine/include/px30.inc | 2 +
conf/machine/include/radxa-zero-3.inc | 8 ++
conf/machine/include/rk3066.inc | 2 +
conf/machine/include/rk3188.inc | 2 +
conf/machine/include/rk3288.inc | 2 +
conf/machine/include/rk3328.inc | 2 +
conf/machine/include/rk3399.inc | 2 +
conf/machine/include/rk3566.inc | 23 ++++
conf/machine/include/rk3568.inc | 2 +
conf/machine/include/rk3588s.inc | 2 +
conf/machine/include/rockchip-rauc.inc | 4 +
conf/machine/include/rockchip-wic.inc | 7 +-
conf/machine/radxa-zero-3e.conf | 7 ++
conf/machine/radxa-zero-3w.conf | 7 ++
.../recipes-bsp/u-boot/files/boot.cmd.in | 51 +++++++++
.../recipes-bsp/u-boot/files/uboot-rauc.cfg | 8 ++
.../recipes-bsp/u-boot/u-boot_%.bbappend | 26 +++++
.../base-files/base-files_%.bbappend | 2 +
.../recipes-core/base-files/files/fstab | 5 +
.../rauc-bundles/files/development-1.cert.pem | 80 +++++++++++++
.../rauc-bundles/files/development-1.key.pem | 28 +++++
.../rauc-bundles/rockchip-rauc-bundle.bb | 14 +++
.../recipes-core/rauc/files/ca.cert.pem | 80 +++++++++++++
.../recipes-core/rauc/files/system.conf | 17 +++
.../recipes-core/rauc/rauc-conf.bbappend | 7 ++
.../recipes-core/systemd/abd-partition.bb | 26 +++++
.../systemd/files/25-rootfsA.conf | 4 +
.../systemd/files/35-rootfsB.conf | 7 ++
.../recipes-core/systemd/files/45-data.conf | 6 +
.../recipes-core/systemd/files/data.mount | 10 ++
.../recipes-core/systemd/systemd_%.bbappend | 3 +
.../linux/linux-torvalds-next_%.bbappend | 1 +
recipes-bsp/rkbin/rockchip-rkbin_git.bb | 18 ++-
recipes-bsp/u-boot/u-boot_%.bbappend | 4 +
recipes-graphics/mesa/mesa_%.bbappend | 4 +-
.../linux/linux-torvalds-next_git.bb | 25 ++++
.../gstreamer1.0-plugins-bad_%.bbappend | 1 +
40 files changed, 585 insertions(+), 30 deletions(-)
create mode 100644 classes-recipe/rk-rauc-demo-features-check.bbclass
create mode 100644 conf/machine/include/radxa-zero-3.inc
create mode 100644 conf/machine/include/rk3566.inc
create mode 100644 conf/machine/include/rockchip-rauc.inc
create mode 100644 conf/machine/radxa-zero-3e.conf
create mode 100644 conf/machine/radxa-zero-3w.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/boot.cmd.in
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/uboot-rauc.cfg
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/u-boot_%.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/base-files/base-files_%.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/base-files/files/fstab
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.cert.pem
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.key.pem
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/rockchip-rauc-bundle.bb
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/ca.cert.pem
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/system.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/abd-partition.bb
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/25-rootfsA.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/35-rootfsB.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/45-data.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/data.mount
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/systemd_%.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-kernel/linux/linux-torvalds-next_%.bbappend
create mode 100644 recipes-kernel/linux/linux-torvalds-next_git.bb
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
--
2.44.0.478.g7774cfed6261
^ permalink raw reply [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 01/10] mesa: enable lima on all rk3328 boards
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 02/10] mesa: build panfrost for RK3568 boards Trevor Woerner
` (9 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
From: Quentin Schulz <quentin.schulz@cherry.de>
lima is the open-source implementation for the GPU found on RK3328, it
is therefore not specific to the Rock64 but all boards based on the
RK3328.
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
recipes-graphics/mesa/mesa_%.bbappend | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/recipes-graphics/mesa/mesa_%.bbappend b/recipes-graphics/mesa/mesa_%.bbappend
index 58c25e7d61bf..a31d99b5c65b 100644
--- a/recipes-graphics/mesa/mesa_%.bbappend
+++ b/recipes-graphics/mesa/mesa_%.bbappend
@@ -1,4 +1,4 @@
PACKAGECONFIG:append:rk3288 = " kmsro panfrost"
+PACKAGECONFIG:append:rk3328 = " kmsro lima"
PACKAGECONFIG:append:rk3399 = " kmsro panfrost"
-PACKAGECONFIG:append:rock64 = " kmsro lima"
PACKAGECONFIG:append:px30 = " kmsro panfrost"
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 02/10] mesa: build panfrost for RK3568 boards
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 01/10] mesa: enable lima on all rk3328 boards Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 03/10] user-selectable wic compression Trevor Woerner
` (8 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
From: Quentin Schulz <quentin.schulz@cherry.de>
The RK356x SoC family (of which we currently only support RK3568) has a
Bifrost GPU that is supported by open-source Panfrost Linux kernel and
Mesa drivers, therefore let's build mesa with Panfrost support for
RK3568.
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
recipes-graphics/mesa/mesa_%.bbappend | 1 +
1 file changed, 1 insertion(+)
diff --git a/recipes-graphics/mesa/mesa_%.bbappend b/recipes-graphics/mesa/mesa_%.bbappend
index a31d99b5c65b..2d9ec2e676f7 100644
--- a/recipes-graphics/mesa/mesa_%.bbappend
+++ b/recipes-graphics/mesa/mesa_%.bbappend
@@ -1,4 +1,5 @@
PACKAGECONFIG:append:rk3288 = " kmsro panfrost"
PACKAGECONFIG:append:rk3328 = " kmsro lima"
PACKAGECONFIG:append:rk3399 = " kmsro panfrost"
+PACKAGECONFIG:append:rk3568 = " kmsro panfrost"
PACKAGECONFIG:append:px30 = " kmsro panfrost"
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 03/10] user-selectable wic compression
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 01/10] mesa: enable lima on all rk3328 boards Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 02/10] mesa: build panfrost for RK3568 boards Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 04/10] rockchip-rkbin: bump SRCREV Trevor Woerner
` (7 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
For boards which build and boot wic images, the user can optionally specify
a compression using the WIC_COMPRESSION_EXTENSION variable. By default "wic"
images are built, but if the user would prefer, say "wic.xz" images, simply
specify:
WIC_COMPRESSION_EXTENSION = ".xz"
in the configuration (e.g. conf/local.conf).
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
README | 11 +++++++++++
conf/machine/include/rockchip-wic.inc | 5 ++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/README b/README
index 605773d4ecd3..b21e92360dcc 100644
--- a/README
+++ b/README
@@ -47,6 +47,7 @@ Status of supported boards:
Notes:
-----
+ rk3308 rkbin:
The latest ddr initializer for the rk3308 platform does not output
diagnostic messages to uart0. This causes a bunch of gibberish to
be printed to the console window which only becomes legible once
@@ -67,6 +68,16 @@ Notes:
in the configuration (e.g. conf/local.conf).
+ wic compression:
+ For boards which build and boot wic images, the user can optionally specify
+ a compression using the WIC_COMPRESSION_EXTENSION variable. By default "wic"
+ images are built, but if the user would prefer, say "wic.xz" images, simply
+ specify:
+
+ WIC_COMPRESSION_EXTENSION = ".xz"
+
+ in the configuration (e.g. conf/local.conf).
+
U-Boot Environment:
------------------
In order to configure U-Boot to be able to store its environment into the
diff --git a/conf/machine/include/rockchip-wic.inc b/conf/machine/include/rockchip-wic.inc
index dab61d83ed2c..ebfc0cb96507 100644
--- a/conf/machine/include/rockchip-wic.inc
+++ b/conf/machine/include/rockchip-wic.inc
@@ -5,7 +5,10 @@ require conf/machine/include/rockchip-rk-u-boot-env.inc
SPL_BINARY ?= "idbloader.img"
-IMAGE_FSTYPES += "wic wic.bmap"
+# if you use the following variable, make sure to add the '.' e.g.
+# WIC_COMPRESSION_EXTENSION = ".xz"
+WIC_COMPRESSION_EXTENSION ?= ""
+IMAGE_FSTYPES += "wic${WIC_COMPRESSION_EXTENSION} wic.bmap"
WKS_FILE ?= "rockchip.wks"
WKS_FILE_DEPENDS ?= " \
e2fsprogs-native \
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 04/10] rockchip-rkbin: bump SRCREV
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (2 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 03/10] user-selectable wic compression Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 05/10] radxa-zero-3{e|w}: add Trevor Woerner
` (6 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
Update to a newer release.
rk3568:
- update DDR init from version 1.18 → 1.21
rk3588/s:
- the name of the DDR init changed due to upstream adjusting
the frequency of the LPDDR5 to 2400MHz to "improve stability" [1]
- reference an exact version instead of using an '*'
- update DDR init from version 1.12 → 1.16
Boot tested on:
- rock-3a
- rock-5a
- rock-5b
Link [1]: https://github.com/rockchip-linux/rkbin/commit/f02d10e468d8c783c45137d230ff33d42ca670b4
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Tested-by: Quentin Schulz <quentin.schulz@cherry.de> #RK3588 Jaguar, manual U-Boot compilation
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
recipes-bsp/rkbin/rockchip-rkbin_git.bb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
index 7929c6ac3a10..f9724ddd5cd5 100644
--- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb
+++ b/recipes-bsp/rkbin/rockchip-rkbin_git.bb
@@ -3,7 +3,7 @@ LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://LICENSE;md5=15faa4a01e7eb0f5d33f9f2bcc7bff62"
SRC_URI = "git://github.com/rockchip-linux/rkbin;protocol=https;branch=master"
-SRCREV = "b4558da0860ca48bf1a571dd33ccba580b9abe23"
+SRCREV = "a2a0b89b6c8c612dca5ed9ed8a68db8a07f68bc0"
PROVIDES += "trusted-firmware-a"
PROVIDES += "optee-os"
@@ -42,7 +42,7 @@ do_deploy:rk3568() {
# Prebuilt OPTEE-OS
install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin
# Prebuilt U-Boot TPL (DDR init)
- install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.18.bin ${DEPLOYDIR}/ddr-rk3568.bin
+ install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.21.bin ${DEPLOYDIR}/ddr-rk3568.bin
}
do_deploy:rk3588s() {
@@ -51,7 +51,7 @@ do_deploy:rk3588s() {
# Prebuilt OPTEE-OS
install -m 644 ${S}/bin/rk35/rk3588_bl32_v*.bin ${DEPLOYDIR}/tee-rk3588.bin
# Prebuilt U-Boot TPL (DDR init)
- install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v*.bin ${DEPLOYDIR}/ddr-rk3588.bin
+ install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin ${DEPLOYDIR}/ddr-rk3588.bin
}
do_deploy() {
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 05/10] radxa-zero-3{e|w}: add
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (3 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 04/10] rockchip-rkbin: bump SRCREV Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 06/10] README: sort MACHINE names Trevor Woerner
` (5 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches
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 <twoerner@gmail.com>
---
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 b21e92360dcc..909840de2c0d 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 000000000000..1c6f972c1e31
--- /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 000000000000..586d68806df6
--- /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 000000000000..37792cbf36a5
--- /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 000000000000..5193d45e1f69
--- /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 f9724ddd5cd5..1b71414e27ca 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 862ca1377692..c939a487d294 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 000000000000..6f3db7c61bdf
--- /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
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 06/10] README: sort MACHINE names
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (4 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 05/10] radxa-zero-3{e|w}: add Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 07/10] mesa: build panfrost for RK3566 boards Trevor Woerner
` (4 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
Previously the MACHINEs were listed in the order in which they were added to
the layer. Going forward, separate the list into 32 vs 64 bit, sort each of
those groups, while distinguishing between which boards support wic and which
don't.
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
README | 59 +++++++++++++++++++++++++++++++---------------------------
1 file changed, 32 insertions(+), 27 deletions(-)
diff --git a/README b/README
index 909840de2c0d..6003e7c652fe 100644
--- a/README
+++ b/README
@@ -18,34 +18,39 @@ Dependencies:
Status of supported boards:
--------------------------
builds and boots wic image:
- nanopi-m4
- nanopi-m4-2gb
- rock-pi-e
- rock-pi-4a
- rock-pi-4b
- rock-pi-4c
- rock64
- tinker-board
- tinker-board-s
- vyasa-rk3288
- firefly-rk3288
- nanopi-r4s
- rock-5b
- nanopi-r2s
- nanopi-m4b
- rock-pi-s
- rock-5a
- roc-rk3328-cc
- roc-rk3308-cc
- orangepi-5-plus
- rock-3a
- rock-4c-plus
- radxa-zero-3e
- radxa-zero-3w
+ 32-bit:
+ firefly-rk3288
+ tinker-board
+ tinker-board-s
+ vyasa-rk3288
+
+ 64-bit:
+ nanopi-m4
+ nanopi-m4-2gb
+ nanopi-m4b
+ nanopi-r2s
+ nanopi-r4s
+ orangepi-5-plus
+ radxa-zero-3e
+ radxa-zero-3w
+ roc-rk3308-cc
+ roc-rk3328-cc
+ rock-3a
+ rock-4c-plus
+ rock-5a
+ rock-5b
+ rock-pi-4a
+ rock-pi-4b
+ rock-pi-4c
+ rock-pi-e
+ rock-pi-s
+ rock64
+
builds:
- marsboard-rk3066
- radxarock
- rock2-square
+ 32-bit:
+ marsboard-rk3066
+ radxarock
+ rock2-square
Notes:
-----
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 07/10] mesa: build panfrost for RK3566 boards
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (5 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 06/10] README: sort MACHINE names Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 08/10] rauc demo: add Trevor Woerner
` (3 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Marcin Bober
From: Marcin Bober <mbober1@gmail.com>
The RK356x SoC family (of which we currently only support RK3568) has a
Bifrost GPU that is supported by open-source Panfrost Linux kernel and
Mesa drivers, therefore let's build mesa with Panfrost support for
RK3566.
Signed-off-by: Marcin Bober <mbober1@gmail.com>
---
recipes-graphics/mesa/mesa_%.bbappend | 1 +
1 file changed, 1 insertion(+)
diff --git a/recipes-graphics/mesa/mesa_%.bbappend b/recipes-graphics/mesa/mesa_%.bbappend
index 2d9ec2e676f7..00cc15c6221c 100644
--- a/recipes-graphics/mesa/mesa_%.bbappend
+++ b/recipes-graphics/mesa/mesa_%.bbappend
@@ -1,5 +1,6 @@
PACKAGECONFIG:append:rk3288 = " kmsro panfrost"
PACKAGECONFIG:append:rk3328 = " kmsro lima"
PACKAGECONFIG:append:rk3399 = " kmsro panfrost"
+PACKAGECONFIG:append:rk3566 = " kmsro panfrost"
PACKAGECONFIG:append:rk3568 = " kmsro panfrost"
PACKAGECONFIG:append:px30 = " kmsro panfrost"
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 08/10] rauc demo: add
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (6 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 07/10] mesa: build panfrost for RK3566 boards Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs Trevor Woerner
` (2 subsequent siblings)
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
Add an example of implementing rauc on a rockchip board. Adding the meta-rauc
layer, adding 'rauc' to DISTRO_FEATURES, and enabling RK_RAUC_DEMO will build
an image using the example provided in dynamic-layers/rk-rauc-demo.
This example uses a simple A/B + D scheme (i.e. two root partitions and a
non-updated /data partition). Repartitioning occurs automatically on first
boot thanks to systemd's 'repart' mechanism.
NOTE:
- this example only works with systemd
If you wish to provide your own implementation, simply add the meta-rauc
layer, add 'rauc' to DISTRO_FEATURES, don't enable RK_RAUC_DEMO, and provide
your own implementation in a separate layer.
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
README | 18 +++++
.../rk-rauc-demo-features-check.bbclass | 4 +
conf/layer.conf | 4 +
conf/machine/include/rockchip-rauc.inc | 4 +
conf/machine/include/rockchip-wic.inc | 2 +
.../recipes-bsp/u-boot/files/boot.cmd.in | 51 ++++++++++++
.../recipes-bsp/u-boot/files/uboot-rauc.cfg | 8 ++
.../recipes-bsp/u-boot/u-boot_%.bbappend | 26 ++++++
.../base-files/base-files_%.bbappend | 2 +
.../recipes-core/base-files/files/fstab | 5 ++
.../rauc-bundles/files/development-1.cert.pem | 80 +++++++++++++++++++
.../rauc-bundles/files/development-1.key.pem | 28 +++++++
.../rauc-bundles/rockchip-rauc-bundle.bb | 14 ++++
.../recipes-core/rauc/files/ca.cert.pem | 80 +++++++++++++++++++
.../recipes-core/rauc/files/system.conf | 17 ++++
.../recipes-core/rauc/rauc-conf.bbappend | 7 ++
.../recipes-core/systemd/abd-partition.bb | 26 ++++++
.../systemd/files/25-rootfsA.conf | 4 +
.../systemd/files/35-rootfsB.conf | 7 ++
.../recipes-core/systemd/files/45-data.conf | 6 ++
.../recipes-core/systemd/files/data.mount | 10 +++
.../recipes-core/systemd/systemd_%.bbappend | 3 +
.../linux/linux-torvalds-next_%.bbappend | 1 +
23 files changed, 407 insertions(+)
create mode 100644 classes-recipe/rk-rauc-demo-features-check.bbclass
create mode 100644 conf/machine/include/rockchip-rauc.inc
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/boot.cmd.in
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/uboot-rauc.cfg
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/u-boot_%.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/base-files/base-files_%.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/base-files/files/fstab
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.cert.pem
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.key.pem
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/rockchip-rauc-bundle.bb
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/ca.cert.pem
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/system.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/abd-partition.bb
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/25-rootfsA.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/35-rootfsB.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/45-data.conf
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/data.mount
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-core/systemd/systemd_%.bbappend
create mode 100644 dynamic-layers/rk-rauc-demo/recipes-kernel/linux/linux-torvalds-next_%.bbappend
diff --git a/README b/README
index 6003e7c652fe..8ff006e942b9 100644
--- a/README
+++ b/README
@@ -85,6 +85,24 @@ Notes:
in the configuration (e.g. conf/local.conf).
+ A/B updates with RAUC
+ This layer now contains one example of building an A/B update using RAUC.
+ Users are free to use/test this example, to optionally enable it, to build
+ their own update strategies based on this one, or to ignore it completely.
+ This example only works with
+
+ INIT_MANAGER = "systemd"
+
+ If you wish to use this example in your builds:
+ - enable 'systemd' as your init system
+ - add the meta-rauc layer to your build (with the corresponding branch)
+ - add 'rauc' to your DISTRO_FEATURES
+ - enable RK_RAUC_DEMO in your config
+
+ If you wish to implement your own RAUC update without using the example from
+ this layer, perform the same steps as above except for the step enabling
+ RK_RAUC_DEMO.
+
U-Boot Environment:
------------------
In order to configure U-Boot to be able to store its environment into the
diff --git a/classes-recipe/rk-rauc-demo-features-check.bbclass b/classes-recipe/rk-rauc-demo-features-check.bbclass
new file mode 100644
index 000000000000..f6bc4ebffbc1
--- /dev/null
+++ b/classes-recipe/rk-rauc-demo-features-check.bbclass
@@ -0,0 +1,4 @@
+inherit features_check
+
+REQUIRED_DISTRO_FEATURES:append:rk-rauc-demo = " systemd rauc"
+REQUIRED_MACHINE_FEATURES:append:rk-rauc-demo = " rk-u-boot-env"
diff --git a/conf/layer.conf b/conf/layer.conf
index 68205dd7ea4c..03914d2952e1 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -21,3 +21,7 @@ BBFILES_DYNAMIC += " \
qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bb \
qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bbappend \
"
+BBFILES_DYNAMIC += " \
+ rauc:${LAYERDIR}/dynamic-layers/rk-rauc-demo/*/*/*.bb \
+ rauc:${LAYERDIR}/dynamic-layers/rk-rauc-demo/*/*/*.bbappend \
+"
diff --git a/conf/machine/include/rockchip-rauc.inc b/conf/machine/include/rockchip-rauc.inc
new file mode 100644
index 000000000000..a6f79503076b
--- /dev/null
+++ b/conf/machine/include/rockchip-rauc.inc
@@ -0,0 +1,4 @@
+# 'RK_RAUC_DEMO' indicates the user wants to use the
+# rauc demo configuration from this layer
+OVERRIDES .= "${@ ':rk-rauc-demo' if bb.utils.to_boolean(d.getVar('RK_RAUC_DEMO'), False) else ''}"
+IMAGE_INSTALL:append:rk-rauc-demo = " abd-partition"
diff --git a/conf/machine/include/rockchip-wic.inc b/conf/machine/include/rockchip-wic.inc
index ebfc0cb96507..0e0aa5d9b340 100644
--- a/conf/machine/include/rockchip-wic.inc
+++ b/conf/machine/include/rockchip-wic.inc
@@ -2,6 +2,7 @@
require conf/machine/include/rockchip-extlinux.inc
require conf/machine/include/rockchip-rk-u-boot-env.inc
+require conf/machine/include/rockchip-rauc.inc
SPL_BINARY ?= "idbloader.img"
@@ -9,6 +10,7 @@ SPL_BINARY ?= "idbloader.img"
# WIC_COMPRESSION_EXTENSION = ".xz"
WIC_COMPRESSION_EXTENSION ?= ""
IMAGE_FSTYPES += "wic${WIC_COMPRESSION_EXTENSION} wic.bmap"
+IMAGE_FSTYPES:append:rk-rauc-demo = " ext4"
WKS_FILE ?= "rockchip.wks"
WKS_FILE_DEPENDS ?= " \
e2fsprogs-native \
diff --git a/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/boot.cmd.in b/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/boot.cmd.in
new file mode 100644
index 000000000000..0887d2b5b812
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/boot.cmd.in
@@ -0,0 +1,51 @@
+echo "devtype: ${devtype}"
+echo "devnum: ${devnum}"
+echo "distro_bootpart: ${distro_bootpart}"
+
+test -n "${BOOT_ORDER}" || env set BOOT_ORDER "A B"
+test -n "${BOOT_A_LEFT}" || env set BOOT_A_LEFT 3
+test -n "${BOOT_B_LEFT}" || env set BOOT_B_LEFT 3
+test -n "${RAUC_BOOTDEV}" || env set RAUC_BOOTDEV "${devtype} ${devnum}:${distro_bootpart}"
+
+env set RAUC_BOOTPART
+env set RAUC_SLOT
+
+echo "BOOT_ORDER: ${BOOT_ORDER}"
+for RAUC_BOOTSLOT in "${BOOT_ORDER}"; do
+ if test "x${RAUC_BOOTPART}" != "x"; then
+ # skip remaining slots
+ elif test "x${RAUC_BOOTSLOT}" = "xA"; then
+ if test ${BOOT_A_LEFT} -gt 0; then
+ echo "using RAUC slot A"
+ setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
+ env set RAUC_BOOTPART "PARTLABEL=rootfsA"
+ env set RAUC_SLOT "A"
+ env set RAUC_BOOTDEV "${devtype} ${devnum}:${distro_bootpart}"
+ echo "RAUC_BOOTDEV: ${RAUC_BOOTDEV}"
+ fi
+ elif test "x${RAUC_BOOTSLOT}" = "xB"; then
+ if test ${BOOT_B_LEFT} -gt 0; then
+ echo "using RAUC slot B"
+ setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
+ env set RAUC_BOOTPART "PARTLABEL=rootfsB"
+ env set RAUC_SLOT "B"
+ setexpr BOOTPART1 ${distro_bootpart} + 1
+ env set RAUC_BOOTDEV "${devtype} ${devnum}:${BOOTPART1}"
+ echo "RAUC_BOOTDEV: ${RAUC_BOOTDEV}"
+ fi
+ fi
+done
+
+if test -n "${RAUC_BOOTPART}"; then
+ env set bootargs "${bootargsbase} root=${RAUC_BOOTPART} rauc.slot=${RAUC_SLOT}"
+ env save
+else
+ echo "No valid RAUC slot found. Resetting tries to 3"
+ env set BOOT_A_LEFT 3
+ env set BOOT_B_LEFT 3
+ env save
+ reset
+fi
+
+ext4load ${RAUC_BOOTDEV} ${kernel_addr_r} @@KERNEL_BOOTFILE@@
+bootm ${kernel_addr_r}
diff --git a/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/uboot-rauc.cfg b/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/uboot-rauc.cfg
new file mode 100644
index 000000000000..77b7164e0192
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/files/uboot-rauc.cfg
@@ -0,0 +1,8 @@
+CONFIG_CMD_BOOTDEV=y
+CONFIG_CMD_BOOTMETH=y
+CONFIG_CMD_SETEXPR=y
+CONFIG_CMD_SETEXPR_FMT=y
+CONFIG_BOOTSTD_DEFAULTS=n
+CONFIG_BOOTMETH_EXTLINUX=n
+CONFIG_BOOTMETH_EXTLINUX_PXE=n
+CONFIG_BOOTMETH_VBE=n
diff --git a/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/u-boot_%.bbappend b/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/u-boot_%.bbappend
new file mode 100644
index 000000000000..7c77d595473d
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-bsp/u-boot/u-boot_%.bbappend
@@ -0,0 +1,26 @@
+inherit rk-rauc-demo-features-check
+
+FILESEXTRAPATHS:prepend:rk-rauc-demo := "${THISDIR}/files:"
+
+DEPENDS:append:rk-rauc-demo = " u-boot-mkimage-native"
+SRC_URI:append:rk-rauc-demo = " \
+ file://uboot-rauc.cfg \
+ file://boot.cmd.in \
+ "
+
+do_compile:append:rk-rauc-demo() {
+ # create boot script
+ sed -e 's|@@KERNEL_BOOTFILE@@|${UBOOT_EXTLINUX_KERNEL_IMAGE}|' \
+ "${WORKDIR}/boot.cmd.in" > "${WORKDIR}/boot.cmd"
+ mkimage -A ${UBOOT_ARCH} -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" ${WORKDIR}/boot.scr
+
+ # tweak environment
+ echo "bootmeths=script extlinux" >> ${B}/u-boot-initial-env
+ echo "bootargsbase=${UBOOT_EXTLINUX_KERNEL_ARGS} ${UBOOT_EXTLINUX_CONSOLE}" >> ${B}/u-boot-initial-env
+}
+
+do_install:append:rk-rauc-demo() {
+ install -d ${D}/boot
+ install -m 0644 ${WORKDIR}/boot.scr ${D}/boot
+}
+FILES:${PN}-extlinux += "/boot/boot.scr"
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/base-files/base-files_%.bbappend b/dynamic-layers/rk-rauc-demo/recipes-core/base-files/base-files_%.bbappend
new file mode 100644
index 000000000000..705979a17c3e
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/base-files/base-files_%.bbappend
@@ -0,0 +1,2 @@
+inherit rk-rauc-demo-features-check
+FILESEXTRAPATHS:prepend:rk-rauc-demo := "${THISDIR}/files:"
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/base-files/files/fstab b/dynamic-layers/rk-rauc-demo/recipes-core/base-files/files/fstab
new file mode 100644
index 000000000000..3be093e457e9
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/base-files/files/fstab
@@ -0,0 +1,5 @@
+/dev/root / auto x-systemd.growfs 1 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0
+tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
+tmpfs /var/volatile tmpfs defaults 0 0
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.cert.pem b/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.cert.pem
new file mode 100644
index 000000000000..92e71125d22f
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.cert.pem
@@ -0,0 +1,80 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 2 (0x2)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: O=Test Org, CN=Test Org rauc CA Development
+ Validity
+ Not Before: Jan 1 00:00:00 1970 GMT
+ Not After : Dec 31 23:59:59 9999 GMT
+ Subject: O=Test Org, CN=Test Org Development-1
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public-Key: (2048 bit)
+ Modulus:
+ 00:ac:2b:0f:05:02:d0:bb:b0:47:05:36:71:3c:20:
+ 0e:a7:76:8d:75:c1:23:5e:6c:7a:2d:94:ff:3c:17:
+ d8:0b:44:48:2a:82:03:92:c5:fd:33:76:0c:42:cf:
+ 4d:8a:c9:47:7f:af:52:7c:15:6c:3b:e7:60:d1:04:
+ 97:24:7b:07:1f:56:7d:6c:3f:31:e8:f9:36:7b:33:
+ 5b:cf:54:ea:37:98:a6:b1:9a:1d:da:96:a1:07:14:
+ 9c:15:80:4d:db:0c:03:86:ce:c7:3d:72:57:a2:da:
+ a0:c0:8c:b2:9a:a0:6a:e5:b8:5f:52:d2:f6:27:ca:
+ 48:f4:e3:86:eb:be:24:93:6a:af:60:68:7f:09:3b:
+ 81:96:ce:85:0c:63:93:d8:fa:91:dc:50:2e:77:bb:
+ bc:38:42:e9:86:d8:ac:33:dd:e6:d4:37:69:e3:01:
+ 8d:21:8f:a9:4a:7f:15:a5:aa:a9:be:fc:36:93:a4:
+ 10:0c:18:33:30:06:7f:1c:13:b3:a9:c6:57:d7:6b:
+ 96:45:15:e7:f5:8f:3d:48:e0:08:46:4f:7f:ef:14:
+ 77:95:25:25:9b:14:21:84:25:eb:37:0b:01:48:e6:
+ f5:c1:8b:61:c6:cb:8c:6b:a7:d8:d2:f9:31:e3:80:
+ 3f:78:ea:6a:41:6c:5d:4d:83:a6:54:0d:5b:c2:0e:
+ f6:ef
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Subject Key Identifier:
+ 89:4C:FE:8A:60:4D:C9:6D:F7:A8:C0:04:49:7F:AA:05:92:29:17:FB
+ X509v3 Authority Key Identifier:
+ keyid:44:0C:AF:4A:74:B4:C7:65:02:B2:95:F1:91:7C:A3:CC:E6:3E:99:E8
+ DirName:/O=Test Org/CN=Test Org rauc CA Development
+ serial:01
+
+ X509v3 Basic Constraints:
+ CA:FALSE
+ Signature Algorithm: sha256WithRSAEncryption
+ 2c:d2:30:68:f5:84:52:1e:cf:ed:0d:fc:e7:02:69:0b:3b:f6:
+ c3:77:00:12:1d:2d:d0:8f:49:9e:5c:f1:00:7b:1d:4f:d5:a9:
+ 46:a5:df:54:90:50:b4:8f:8e:ba:4b:2d:82:74:eb:5b:a8:f5:
+ 45:7b:77:73:b1:9b:32:93:15:c0:5c:02:2a:ed:b0:1e:bb:d8:
+ 4e:41:17:20:af:04:46:21:20:7b:86:9f:32:ab:54:71:26:e8:
+ 0b:75:12:9c:63:53:4f:54:db:a7:f9:b2:fa:e9:ee:4a:9d:80:
+ ba:ae:3f:eb:ef:10:11:2d:4f:5a:34:fb:8b:45:10:63:0b:f8:
+ af:f3:8b:24:21:2a:e0:0b:44:38:44:b5:9d:6e:8a:ff:1f:bf:
+ 6e:44:21:22:ec:8a:8d:73:63:e5:df:1a:ec:2a:64:1f:97:f9:
+ 5c:3a:25:7f:03:80:4c:db:99:5e:f9:7d:2b:f1:d0:97:4d:95:
+ 6f:29:47:7b:3f:29:e3:96:25:b0:1c:f1:0b:8b:8b:ba:de:3b:
+ 3f:40:2e:bd:31:68:ea:a9:8f:dc:c9:09:22:df:76:69:08:5d:
+ 5d:a4:09:62:80:20:83:9e:bd:d4:a6:35:ee:97:50:66:39:62:
+ 66:1b:2e:75:f2:6d:e7:06:ae:67:5f:4b:63:5c:52:e7:5d:dd:
+ c9:0c:86:2b
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA6MREwDwYDVQQKDAhUZXN0
+IE9yZzElMCMGA1UEAwwcVGVzdCBPcmcgcmF1YyBDQSBEZXZlbG9wbWVudDAgFw03
+MDAxMDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowNDERMA8GA1UECgwIVGVzdCBP
+cmcxHzAdBgNVBAMMFlRlc3QgT3JnIERldmVsb3BtZW50LTEwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCsKw8FAtC7sEcFNnE8IA6ndo11wSNebHotlP88
+F9gLREgqggOSxf0zdgxCz02KyUd/r1J8FWw752DRBJckewcfVn1sPzHo+TZ7M1vP
+VOo3mKaxmh3alqEHFJwVgE3bDAOGzsc9clei2qDAjLKaoGrluF9S0vYnykj044br
+viSTaq9gaH8JO4GWzoUMY5PY+pHcUC53u7w4QumG2Kwz3ebUN2njAY0hj6lKfxWl
+qqm+/DaTpBAMGDMwBn8cE7OpxlfXa5ZFFef1jz1I4AhGT3/vFHeVJSWbFCGEJes3
+CwFI5vXBi2HGy4xrp9jS+THjgD946mpBbF1Ng6ZUDVvCDvbvAgMBAAGjgZEwgY4w
+HQYDVR0OBBYEFIlM/opgTclt96jABEl/qgWSKRf7MGIGA1UdIwRbMFmAFEQMr0p0
+tMdlArKV8ZF8o8zmPpnooT6kPDA6MREwDwYDVQQKDAhUZXN0IE9yZzElMCMGA1UE
+AwwcVGVzdCBPcmcgcmF1YyBDQSBEZXZlbG9wbWVudIIBATAJBgNVHRMEAjAAMA0G
+CSqGSIb3DQEBCwUAA4IBAQAs0jBo9YRSHs/tDfznAmkLO/bDdwASHS3Qj0meXPEA
+ex1P1alGpd9UkFC0j466Sy2CdOtbqPVFe3dzsZsykxXAXAIq7bAeu9hOQRcgrwRG
+ISB7hp8yq1RxJugLdRKcY1NPVNun+bL66e5KnYC6rj/r7xARLU9aNPuLRRBjC/iv
+84skISrgC0Q4RLWdbor/H79uRCEi7IqNc2Pl3xrsKmQfl/lcOiV/A4BM25le+X0r
+8dCXTZVvKUd7PynjliWwHPELi4u63js/QC69MWjqqY/cyQki33ZpCF1dpAligCCD
+nr3UpjXul1BmOWJmGy518m3nBq5nX0tjXFLnXd3JDIYr
+-----END CERTIFICATE-----
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.key.pem b/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.key.pem
new file mode 100644
index 000000000000..80305f8291b1
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/files/development-1.key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsKw8FAtC7sEcF
+NnE8IA6ndo11wSNebHotlP88F9gLREgqggOSxf0zdgxCz02KyUd/r1J8FWw752DR
+BJckewcfVn1sPzHo+TZ7M1vPVOo3mKaxmh3alqEHFJwVgE3bDAOGzsc9clei2qDA
+jLKaoGrluF9S0vYnykj044brviSTaq9gaH8JO4GWzoUMY5PY+pHcUC53u7w4QumG
+2Kwz3ebUN2njAY0hj6lKfxWlqqm+/DaTpBAMGDMwBn8cE7OpxlfXa5ZFFef1jz1I
+4AhGT3/vFHeVJSWbFCGEJes3CwFI5vXBi2HGy4xrp9jS+THjgD946mpBbF1Ng6ZU
+DVvCDvbvAgMBAAECggEASphBYq9sltVyf/ytpRpSnxYLhmiPFXs0mIlE6Nl/3qnQ
+BrLcL3yfDuvntg6xjx9UXistNtvlUDMYzJcLkV/InzhPEVZ0HnfTth9zeOpWrI30
+M2EN7EZ1MGcqlVpI4U5cPM1cn+/proLBQYv0WnCEwFFY477JrkXDxG7MZ1mz6TaL
+IGcCCIUu1BxECngQ344eaKrSR5F2MtlxAl19Pt5QSPfmuMdmElrK6RtBjnKrDu1K
+fe6DCfObZ3nbG2fhFV4uTxhlTC9lUmfTQMKR79rLmHNKnbMx74kFNvy3XlT2l35I
+ZVfRMLPWph7yMom9v/Im3Q70uhJ1lxyqbbl/DFZVmQKBgQDVo19SqR/QeDIxPIPn
+XvVWzo5ml3KO/dVxA8sok6twr+G7yUeIUnuauYFA/tX/FS32azFRa/7GjUfoTx3q
+GHK43TBCMyEt0we6WwZb+FkWa/b/RBoyD/audrpmgDDi1+fXPs8bBvoO8/oju20D
+I6wOjSovcIMaeLo/+u3U6ShNQwKBgQDOTpoGMsQzXchZfDmxL61h3j4Gtjrl4BpU
+WhAkJ9U2BRpL8NSZLErn5ik8MwgK2ut+YdU7aogI0D6Gc+4zZoJDEbhhmPD9cprv
+LMyfAKoisR01OyU57mMSGQq0dfjmK6PfYJdX5sQJGkMFptNAJLTDoYtmXItSICoY
+1j5KTvwe5QKBgGytxmErjfakHoxzh3pdERuOylwgMPPS5xCt6FyE+pLBtmisFQqh
+QyXLtpgUy1IPOSmBED6mXJ4u4uSn0sTymPG3+8PBdOB12RmREqQYq2E/nQ/wWg8b
+ldbcqShZkATl5pfV6M+L9gtDS/1/bA5LyExCvbISX29I+R5xDSnhTlI3AoGBAJRK
+VVXtOa/+UhtYOpPMxGCbgZQLemxvWB2XmxCR/SRWKJ+7XOU4vCLSAoO93qMG1szB
+/6Y0ndFP9hFo1SfnH+ybmR+18ksLDKisV+xWavSCwI7Zk5l/a4C/tT0fqyeu6JyQ
+bliFjBVK5i/yyNfLSo9v16ZdENuYOQofPSjmezytAoGBALhwvtzgqvqGSXID2w5N
+ullK8ny3WRa1o5DLXuMV19CvknmrN/zmmjQLblKkdp9VBb7uo8czon+qL1ZZyywC
+W2BmHfGMPUyQHux4btsdJhlWcS7z7aYXM9QWiKlI+EKLHLILYk+LPIEf85sUcOZV
+eCBpViT7fv2iv/0L+mzjWtLA
+-----END PRIVATE KEY-----
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/rockchip-rauc-bundle.bb b/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/rockchip-rauc-bundle.bb
new file mode 100644
index 000000000000..5a42f59b821e
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc-bundles/rockchip-rauc-bundle.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Rockchip RAUC bundle generator"
+
+inherit bundle
+
+RAUC_BUNDLE_COMPATIBLE = "${MACHINE}"
+RAUC_BUNDLE_VERSION = "v20240512"
+RAUC_BUNDLE_DESCRIPTION = "RAUC Demo Bundle"
+RAUC_BUNDLE_FORMAT = "verity"
+RAUC_BUNDLE_SLOTS = "rootfs"
+RAUC_SLOT_rootfs = "core-image-base"
+RAUC_SLOT_rootfs[fstype] = "ext4"
+
+RAUC_KEY_FILE := "${THISDIR}/files/development-1.key.pem"
+RAUC_CERT_FILE := "${THISDIR}/files/development-1.cert.pem"
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/ca.cert.pem b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/ca.cert.pem
new file mode 100644
index 000000000000..46944a99df22
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/ca.cert.pem
@@ -0,0 +1,80 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1 (0x1)
+ Signature Algorithm: sha256WithRSAEncryption
+ Issuer: O=Test Org, CN=Test Org rauc CA Development
+ Validity
+ Not Before: Jan 1 00:00:00 1970 GMT
+ Not After : Dec 31 23:59:59 9999 GMT
+ Subject: O=Test Org, CN=Test Org rauc CA Development
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public-Key: (2048 bit)
+ Modulus:
+ 00:c0:fe:7b:6c:c3:e3:47:cc:d4:15:e1:0c:b2:1c:
+ c9:f7:61:3e:42:d7:f1:a4:30:f2:db:0e:49:95:49:
+ 70:ee:97:6d:fe:48:5d:b9:22:63:47:e0:be:63:d7:
+ 68:9b:38:04:7d:7f:d9:65:ef:1d:6c:26:cb:05:7f:
+ 59:45:15:9d:76:59:c4:8d:59:a0:38:a0:25:fa:86:
+ 1b:f4:85:ff:cf:7c:c7:57:a3:7e:56:71:7d:69:c3:
+ 69:a7:fb:e6:8e:bc:f9:49:e2:f5:9a:97:e5:2d:75:
+ ef:f9:76:29:5f:76:11:1b:70:6f:4d:26:4f:e0:06:
+ 9b:8c:e3:76:91:81:4a:4e:98:5d:2e:f4:bd:23:4d:
+ e7:5d:9b:ea:68:4d:03:9e:35:90:c5:f2:8d:ae:ed:
+ 44:4f:f3:50:dc:2b:ef:ae:44:35:79:78:3d:65:4b:
+ d9:16:98:aa:be:08:47:25:af:68:1c:0b:8e:c1:aa:
+ 02:a7:61:4f:4d:15:1b:07:3c:4e:60:b3:9a:d5:c1:
+ 39:34:4e:8e:e7:93:46:f1:75:95:aa:16:9a:1d:e6:
+ 49:15:a5:ae:06:8a:45:16:a9:af:59:60:9b:c6:6d:
+ 3d:19:57:5d:de:31:d5:dc:96:0e:a4:25:fe:7a:07:
+ 71:c5:40:c0:a3:d0:d5:84:47:14:7a:5a:f1:07:75:
+ 79:35
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Subject Key Identifier:
+ 44:0C:AF:4A:74:B4:C7:65:02:B2:95:F1:91:7C:A3:CC:E6:3E:99:E8
+ X509v3 Authority Key Identifier:
+ keyid:44:0C:AF:4A:74:B4:C7:65:02:B2:95:F1:91:7C:A3:CC:E6:3E:99:E8
+ DirName:/O=Test Org/CN=Test Org rauc CA Development
+ serial:01
+
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Signature Algorithm: sha256WithRSAEncryption
+ 30:07:51:4d:d6:2c:0c:2f:3e:6c:5c:34:1f:07:21:8d:50:77:
+ 9a:a6:81:75:62:f0:fe:ff:3b:5b:d0:7c:d1:45:e7:e2:67:d4:
+ 23:cb:af:9a:8b:f4:2b:d2:33:3d:45:bb:a7:7d:b4:9b:41:db:
+ fb:62:ac:83:fc:41:ae:e5:dc:2d:df:7d:72:7e:df:34:01:60:
+ 94:7f:15:78:84:87:f0:23:e4:8e:b8:dc:71:cb:84:4b:25:bb:
+ 62:8f:fd:7f:d3:3c:1d:85:45:fb:03:7c:a2:bc:c4:a8:fa:2b:
+ ec:79:67:8d:f4:5f:37:a8:5a:54:bc:b3:78:11:0b:8b:29:90:
+ 8b:48:4a:d7:87:93:96:97:72:10:1d:70:29:f8:e4:c3:81:6d:
+ 7d:c3:6e:d4:c8:1b:0b:0d:f9:c0:b9:7b:11:54:e2:af:8b:a0:
+ 45:de:c2:67:81:8c:0c:9d:ba:a1:31:8b:f2:cc:da:c7:cc:6d:
+ 21:92:2a:57:29:9c:48:92:75:d9:1a:6e:d3:ee:53:66:83:2e:
+ 08:74:09:5d:78:13:99:34:7d:16:8c:ba:29:75:80:20:8b:ca:
+ 91:19:29:64:ef:64:37:de:5b:22:18:99:5b:63:69:9a:a2:44:
+ 21:70:30:41:f2:58:27:ab:4f:5c:d0:e1:94:5d:d1:5b:8d:fd:
+ bf:8f:a9:99
+-----BEGIN CERTIFICATE-----
+MIIDhjCCAm6gAwIBAgIBATANBgkqhkiG9w0BAQsFADA6MREwDwYDVQQKDAhUZXN0
+IE9yZzElMCMGA1UEAwwcVGVzdCBPcmcgcmF1YyBDQSBEZXZlbG9wbWVudDAgFw03
+MDAxMDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowOjERMA8GA1UECgwIVGVzdCBP
+cmcxJTAjBgNVBAMMHFRlc3QgT3JnIHJhdWMgQ0EgRGV2ZWxvcG1lbnQwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA/ntsw+NHzNQV4QyyHMn3YT5C1/Gk
+MPLbDkmVSXDul23+SF25ImNH4L5j12ibOAR9f9ll7x1sJssFf1lFFZ12WcSNWaA4
+oCX6hhv0hf/PfMdXo35WcX1pw2mn++aOvPlJ4vWal+Utde/5dilfdhEbcG9NJk/g
+BpuM43aRgUpOmF0u9L0jTeddm+poTQOeNZDF8o2u7URP81DcK++uRDV5eD1lS9kW
+mKq+CEclr2gcC47BqgKnYU9NFRsHPE5gs5rVwTk0To7nk0bxdZWqFpod5kkVpa4G
+ikUWqa9ZYJvGbT0ZV13eMdXclg6kJf56B3HFQMCj0NWERxR6WvEHdXk1AgMBAAGj
+gZQwgZEwHQYDVR0OBBYEFEQMr0p0tMdlArKV8ZF8o8zmPpnoMGIGA1UdIwRbMFmA
+FEQMr0p0tMdlArKV8ZF8o8zmPpnooT6kPDA6MREwDwYDVQQKDAhUZXN0IE9yZzEl
+MCMGA1UEAwwcVGVzdCBPcmcgcmF1YyBDQSBEZXZlbG9wbWVudIIBATAMBgNVHRME
+BTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAwB1FN1iwMLz5sXDQfByGNUHeapoF1
+YvD+/ztb0HzRRefiZ9Qjy6+ai/Qr0jM9RbunfbSbQdv7YqyD/EGu5dwt331yft80
+AWCUfxV4hIfwI+SOuNxxy4RLJbtij/1/0zwdhUX7A3yivMSo+ivseWeN9F83qFpU
+vLN4EQuLKZCLSErXh5OWl3IQHXAp+OTDgW19w27UyBsLDfnAuXsRVOKvi6BF3sJn
+gYwMnbqhMYvyzNrHzG0hkipXKZxIknXZGm7T7lNmgy4IdAldeBOZNH0WjLopdYAg
+i8qRGSlk72Q33lsiGJlbY2maokQhcDBB8lgnq09c0OGUXdFbjf2/j6mZ
+-----END CERTIFICATE-----
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/system.conf b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/system.conf
new file mode 100644
index 000000000000..4945c67345c4
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/files/system.conf
@@ -0,0 +1,17 @@
+[system]
+compatible=@MACHINE@
+bootloader=uboot
+data-directory=/data/
+
+[keyring]
+path=/etc/rauc/ca.cert.pem
+
+[slot.rootfs.0]
+device=/dev/disk/by-partlabel/rootfsA
+type=ext4
+bootname=A
+
+[slot.rootfs.1]
+device=/dev/disk/by-partlabel/rootfsB
+type=ext4
+bootname=B
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend
new file mode 100644
index 000000000000..5ff9de681f6c
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend
@@ -0,0 +1,7 @@
+inherit rk-rauc-demo-features-check
+
+FILESEXTRAPATHS:prepend:rk-rauc-demo := "${THISDIR}/files:"
+
+do_install:prepend:rk-rauc-demo() {
+ sed -ie 's!@MACHINE@!${MACHINE}!g' ${WORKDIR}/system.conf
+}
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/systemd/abd-partition.bb b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/abd-partition.bb
new file mode 100644
index 000000000000..35037e9408de
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/abd-partition.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A/B+D partition definition for systemd's repart mechanism"
+LICENSE = "OSL-3.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/OSL-3.0;md5=438ec6d864bbb958a49df939a56511cf"
+
+inherit rk-rauc-demo-features-check systemd
+
+SYSTEMD_SERVICE:${PN} = "data.mount"
+
+S = "${WORKDIR}"
+
+SRC_URI = " \
+ file://data.mount \
+ file://25-rootfsA.conf \
+ file://35-rootfsB.conf \
+ file://45-data.conf \
+ "
+
+do_install() {
+ install -d ${D}${sysconfdir}/repart.d/
+ install -m 0644 ${WORKDIR}/25-rootfsA.conf ${D}${sysconfdir}/repart.d/
+ install -m 0644 ${WORKDIR}/35-rootfsB.conf ${D}${sysconfdir}/repart.d/
+ install -m 0644 ${WORKDIR}/45-data.conf ${D}${sysconfdir}/repart.d/
+
+ install -d ${D}${sysconfdir}/systemd/system
+ install -m 0644 ${WORKDIR}/data.mount ${D}${sysconfdir}/systemd/system/
+}
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/25-rootfsA.conf b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/25-rootfsA.conf
new file mode 100644
index 000000000000..dba01e1ff863
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/25-rootfsA.conf
@@ -0,0 +1,4 @@
+[Partition]
+Type=root
+Weight=250
+SizeMaxBytes=5G
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/35-rootfsB.conf b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/35-rootfsB.conf
new file mode 100644
index 000000000000..31a7c06c17ff
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/35-rootfsB.conf
@@ -0,0 +1,7 @@
+[Partition]
+Type=root
+Label=rootfsB
+Weight=250
+SizeMaxBytes=5G
+Format=ext4
+GrowFileSystem=yes
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/45-data.conf b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/45-data.conf
new file mode 100644
index 000000000000..1aac59addc26
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/45-data.conf
@@ -0,0 +1,6 @@
+[Partition]
+Type=root-secondary
+Label=data
+Weight=500
+Format=ext4
+GrowFileSystem=yes
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/data.mount b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/data.mount
new file mode 100644
index 000000000000..c81a55be1d1a
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/files/data.mount
@@ -0,0 +1,10 @@
+[Unit]
+Description=data partition
+
+[Mount]
+What=/dev/disk/by-partlabel/data
+Where=/data
+Type=ext4
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/systemd/systemd_%.bbappend b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/systemd_%.bbappend
new file mode 100644
index 000000000000..cf6c188277db
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-core/systemd/systemd_%.bbappend
@@ -0,0 +1,3 @@
+inherit rk-rauc-demo-features-check
+
+PACKAGECONFIG:append:rk-rauc-demo = " repart openssl"
diff --git a/dynamic-layers/rk-rauc-demo/recipes-kernel/linux/linux-torvalds-next_%.bbappend b/dynamic-layers/rk-rauc-demo/recipes-kernel/linux/linux-torvalds-next_%.bbappend
new file mode 100644
index 000000000000..1a51380f0db1
--- /dev/null
+++ b/dynamic-layers/rk-rauc-demo/recipes-kernel/linux/linux-torvalds-next_%.bbappend
@@ -0,0 +1 @@
+require ${@ 'recipes-kernel/linux/linux-yocto_rauc.inc' if bb.utils.to_boolean(d.getVar('RK_RAUC_DEMO'), False) else ''}
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (7 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 08/10] rauc demo: add Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-09 16:01 ` [yocto-patches] " Quentin Schulz
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 10/10] linux-torvalds-next: bump to next-20240904 Trevor Woerner
2024-09-13 2:57 ` [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
10 siblings, 1 reply; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches; +Cc: Quentin Schulz
From: Quentin Schulz <quentin.schulz@cherry.de>
v4l2codecs is the gstreamer plugin for V4L2 stateless video hardware
decoding. The Rockchip SoCs that have a VPU all seems to be based on
Hantro, RKVDEC or RKVDECv2, all stateless encoding/decoding VPUs.
Therefore, let's enable VPU decoding in Gstreamer whenever possible,
when the SoC supports it.
PX30, RK3066, RK3188, RK3288, RK3328, RK3399, RK356x and RK3588(s) all
have at least one Hantro VPU.
RK3328, RK3399, RK356x and RK3588(s) all have at least one
RKVDEC/RKVDECv2 VPU (though not necessarily supported in the upstream
kernel just yet).
=== PX30
Tested on PX30 Ringneck with with Haikou+Haikou Video Demo adapter:
$ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
with FILE storing the path to any h264 file, e.g.
https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov
https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
Needed packages are:
- weston
- gstreamer1.0-plugins-bad (for waylandsink and v4l2slh264dec)
- gstreamer1.0-plugins-base (for parsebin)
A few frames are dropped every other second for 1080p but otherwise
smooth.
=== RK3399
Tested on RK3399 Puma with Haikou:
$ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
with FILE storing the path to any h264 file, e.g.
https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_30fps_normal.mp4.zip
Needed packages are:
- weston
- gstreamer1.0-plugins-bad (for waylandsink and v4l2codecs)
- gstreamer1.0-plugins-base (for parsebin)
=== RK3588
Tested on a RK3588 Tiger with Haikou+Haikou Video Demo adapter - on a
downstream v6.6 (upstream-based, not Rockchip BSP-based) with DSI
patches - :
$ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slav1dec ! fakesink
with FILE storing the path to any AV1 file, e.g.
http://download.opencontent.netflix.com.s3.amazonaws.com/AV1/cmaf/spark-8b-59.94fps/spark_606kbps_432p.mp4
https://woolyss.com/f/av1-nosound-chimera.mp4
https://woolyss.com/f/av1-opus-sita.webm
Needed packages are:
- gstreamer1.0-plugins-bad (for fakesink and v4l2slav1dec)
- gstreamer1.0-plugins-base (for parsebin)
For some reason though, waylandsink is very choppy. Combining
fpsdisplaysink with fakesink shows a ~60fps when decoding the 432p file,
~24fps for the two others.
Note that 10b-depth isn't supported (at least in my setup).
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
---
README | 22 +++++++++++++++++++
conf/machine/include/px30.inc | 2 ++
conf/machine/include/rk3066.inc | 2 ++
conf/machine/include/rk3188.inc | 2 ++
conf/machine/include/rk3288.inc | 2 ++
conf/machine/include/rk3328.inc | 2 ++
conf/machine/include/rk3399.inc | 2 ++
conf/machine/include/rk3566.inc | 2 ++
conf/machine/include/rk3568.inc | 2 ++
conf/machine/include/rk3588s.inc | 2 ++
.../gstreamer1.0-plugins-bad_%.bbappend | 1 +
11 files changed, 41 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
diff --git a/README b/README
index 8ff006e942b9..09f8691300f4 100644
--- a/README
+++ b/README
@@ -103,6 +103,28 @@ Notes:
this layer, perform the same steps as above except for the step enabling
RK_RAUC_DEMO.
+ HW video decoding with gstreamer
+
+ Most Rockchip SoCs have some integrated VPU, either Hantro, RKVDEC or
+ RKVDECv2. Those are called stateless VPUs and they require tools to be
+ adapted so they can be used. Upstream ffmpeg doesn't support them (yet)
+ but gstreamer does, via the v4l2sl* plugins. However, by default those
+ aren't built in OE-Core. This layer enables these plugins by default for
+ all SoCs that have at least one VPU (at the time of writing, all SoCs
+ supported by this layer to the exception of RK3308).
+
+ If you wish to NOT build those plugins anymore, you can set
+
+ ENABLE_STATELESS_VPU_GST = "0"
+
+ in any appropriate conf file (or in a
+ gstreamer1.0-plugins-bad_%.bbappend in your own layer).
+
+ Note that this is only relevant for upstream-based Linux kernels as
+ Rockchip have developed their own ABI for their own kernel that isn't
+ compatible (see Rockchip Media Process Platform (MPP) and
+ downstream gstreamer-rockchip plugin for those kernels).
+
U-Boot Environment:
------------------
In order to configure U-Boot to be able to store its environment into the
diff --git a/conf/machine/include/px30.inc b/conf/machine/include/px30.inc
index d78409ee5c7e..8173cb19be2c 100644
--- a/conf/machine/include/px30.inc
+++ b/conf/machine/include/px30.inc
@@ -19,3 +19,5 @@ TFA_BUILD_TARGET = "bl31"
UBOOT_SUFFIX ?= "itb"
UBOOT_ENTRYPOINT ?= "0x06000000"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3066.inc b/conf/machine/include/rk3066.inc
index 026d5b556db7..a898309bbf88 100644
--- a/conf/machine/include/rk3066.inc
+++ b/conf/machine/include/rk3066.inc
@@ -12,3 +12,5 @@ SERIAL_CONSOLES = "115200;ttyS2"
KBUILD_DEFCONFIG = "multi_v7_defconfig"
KERNEL_FEATURES:append:rk3066 = " bsp/rockchip/remove-non-rockchip-arch-arm.scc"
KERNEL_IMAGETYPE ?= "zImage"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3188.inc b/conf/machine/include/rk3188.inc
index 0120e2fd585f..554d4f1c904d 100644
--- a/conf/machine/include/rk3188.inc
+++ b/conf/machine/include/rk3188.inc
@@ -12,3 +12,5 @@ SERIAL_CONSOLES = "115200;ttyFIQ0"
KBUILD_DEFCONFIG = "multi_v7_defconfig"
KERNEL_FEATURES:append:rk3188 = " bsp/rockchip/remove-non-rockchip-arch-arm.scc"
KERNEL_IMAGETYPE ?= "zImage"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3288.inc b/conf/machine/include/rk3288.inc
index 684e8645d176..06fda69a3eb7 100644
--- a/conf/machine/include/rk3288.inc
+++ b/conf/machine/include/rk3288.inc
@@ -14,3 +14,5 @@ KERNEL_FEATURES:append:rk3288 = " bsp/rockchip/remove-non-rockchip-arch-arm.scc"
KERNEL_IMAGETYPE ?= "zImage"
UBOOT_SUFFIX ?= "bin"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3328.inc b/conf/machine/include/rk3328.inc
index 4ecd6814f9ba..e6f810dcd2ca 100644
--- a/conf/machine/include/rk3328.inc
+++ b/conf/machine/include/rk3328.inc
@@ -20,3 +20,5 @@ TFA_BUILD_TARGET = "bl31"
UBOOT_SUFFIX ?= "itb"
UBOOT_ENTRYPOINT ?= "0x06000000"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3399.inc b/conf/machine/include/rk3399.inc
index 47f0560d1578..cd1be49064ed 100644
--- a/conf/machine/include/rk3399.inc
+++ b/conf/machine/include/rk3399.inc
@@ -20,3 +20,5 @@ TFA_BUILD_TARGET = "bl31"
UBOOT_SUFFIX ?= "itb"
UBOOT_ENTRYPOINT ?= "0x06000000"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3566.inc b/conf/machine/include/rk3566.inc
index 586d68806df6..2522851fa392 100644
--- a/conf/machine/include/rk3566.inc
+++ b/conf/machine/include/rk3566.inc
@@ -19,3 +19,5 @@ PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
UBOOT_SUFFIX ?= "itb"
UBOOT_ENTRYPOINT ?= "0x06000000"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc
index 1da212a1530c..db188a311297 100644
--- a/conf/machine/include/rk3568.inc
+++ b/conf/machine/include/rk3568.inc
@@ -19,3 +19,5 @@ PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
UBOOT_SUFFIX ?= "itb"
UBOOT_ENTRYPOINT ?= "0x06000000"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/conf/machine/include/rk3588s.inc b/conf/machine/include/rk3588s.inc
index cd84461dab41..d349108fb973 100644
--- a/conf/machine/include/rk3588s.inc
+++ b/conf/machine/include/rk3588s.inc
@@ -18,3 +18,5 @@ PREFERRED_PROVIDER_optee-os = "rockchip-rkbin"
UBOOT_SUFFIX ?= "itb"
UBOOT_ENTRYPOINT ?= "0x06000000"
+
+ENABLE_STATELESS_VPU_GST ?= "1"
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
new file mode 100644
index 000000000000..276230411e9c
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
@@ -0,0 +1 @@
+PACKAGECONFIG:append:rockchip = "${@' v4l2codecs' if bb.utils.to_boolean(d.getVar('ENABLE_STATELESS_VPU_GST'), False) else ''}"
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-rockchip][scarthgap][PATCH 10/10] linux-torvalds-next: bump to next-20240904
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (8 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs Trevor Woerner
@ 2024-09-09 14:55 ` Trevor Woerner
2024-09-13 2:57 ` [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-09 14:55 UTC (permalink / raw)
To: yocto-patches
Bump kernel to tag "next-20240904".
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
recipes-kernel/linux/linux-torvalds-next_git.bb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/recipes-kernel/linux/linux-torvalds-next_git.bb b/recipes-kernel/linux/linux-torvalds-next_git.bb
index 6f3db7c61bdf..b961b1408f09 100644
--- a/recipes-kernel/linux/linux-torvalds-next_git.bb
+++ b/recipes-kernel/linux/linux-torvalds-next_git.bb
@@ -10,15 +10,15 @@ DEFAULT_PREFERENCE = "-1"
COMPATIBLE_MACHINE = "^$"
COMPATIBLE_MACHINE:radxa-zero-3 = "radxa-zero-3"
-LINUX_VERSION = "6.10-rc3"
+LINUX_VERSION = "6.11-rc6"
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"
+# this is tag 'next-20240904'
+SRCREV = "fdadd93817f124fd0ea6ef251d4a1068b7feceba"
inherit kernel
inherit kernel-yocto
--
2.44.0.478.g7774cfed6261
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [yocto-patches] [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs Trevor Woerner
@ 2024-09-09 16:01 ` Quentin Schulz
2024-09-10 4:52 ` Trevor Woerner
0 siblings, 1 reply; 15+ messages in thread
From: Quentin Schulz @ 2024-09-09 16:01 UTC (permalink / raw)
To: yocto-patches
Hi Trevor,
On 9/9/24 4:55 PM, Trevor Woerner via lists.yoctoproject.org wrote:
> From: Quentin Schulz <quentin.schulz@cherry.de>
>
> v4l2codecs is the gstreamer plugin for V4L2 stateless video hardware
> decoding. The Rockchip SoCs that have a VPU all seems to be based on
> Hantro, RKVDEC or RKVDECv2, all stateless encoding/decoding VPUs.
>
> Therefore, let's enable VPU decoding in Gstreamer whenever possible,
> when the SoC supports it.
>
> PX30, RK3066, RK3188, RK3288, RK3328, RK3399, RK356x and RK3588(s) all
> have at least one Hantro VPU.
>
> RK3328, RK3399, RK356x and RK3588(s) all have at least one
> RKVDEC/RKVDECv2 VPU (though not necessarily supported in the upstream
> kernel just yet).
>
> === PX30
> Tested on PX30 Ringneck with with Haikou+Haikou Video Demo adapter:
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
>
> with FILE storing the path to any h264 file, e.g.
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
>
> Needed packages are:
> - weston
> - gstreamer1.0-plugins-bad (for waylandsink and v4l2slh264dec)
> - gstreamer1.0-plugins-base (for parsebin)
>
Weston output is broken on Scarthgap. c.f.
https://lore.kernel.org/all/1f84dd9c-bdef-4099-9dba-04b445a7ee0a@cherry.de/
> A few frames are dropped every other second for 1080p but otherwise
> smooth.
>
> === RK3399
> Tested on RK3399 Puma with Haikou:
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
>
> with FILE storing the path to any h264 file, e.g.
> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
> https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_30fps_normal.mp4.zip
>
> Needed packages are:
> - weston
> - gstreamer1.0-plugins-bad (for waylandsink and v4l2codecs)
> - gstreamer1.0-plugins-base (for parsebin)
>
Weston output is broken on Scarthgap. c.f.
https://lore.kernel.org/all/1f84dd9c-bdef-4099-9dba-04b445a7ee0a@cherry.de/
> === RK3588
>
> Tested on a RK3588 Tiger with Haikou+Haikou Video Demo adapter - on a
> downstream v6.6 (upstream-based, not Rockchip BSP-based) with DSI
> patches - :
>
> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slav1dec ! fakesink
>
> with FILE storing the path to any AV1 file, e.g.
> http://download.opencontent.netflix.com.s3.amazonaws.com/AV1/cmaf/spark-8b-59.94fps/spark_606kbps_432p.mp4
> https://woolyss.com/f/av1-nosound-chimera.mp4
> https://woolyss.com/f/av1-opus-sita.webm
>
> Needed packages are:
> - gstreamer1.0-plugins-bad (for fakesink and v4l2slav1dec)
> - gstreamer1.0-plugins-base (for parsebin)
>
Stateless AV1 decoding is not available in the mesa release used on
Scarthgap.
So...
RK3588 seems to have gained upstream support for VDPU121 which should
allow h264, mpeg2 and vp8 decoding. Building a linux-next kernel after
tag next-20240829 should have the support AFAICT.
So, I would retest RK3588 support for those video formats and drop the
AV1 mention from the commit log as it for sure doesn't work because of
the version of mesa in Scarthgap. We could backport later releases into
meta-rockchip to gain support for it. I think this **may** be an idea
once there's support for 24.1 and later merged into OE-Core because it
brings Panthor (open-source GPU drivers) support to RK3588 which would
be a shame not to have in an LTS. But let's see when that happens.
As for the issues with display on PX30 and RK3399, it seems those are
supposed to be patched in newer releases of gstreamer, c.f.
https://gitlab.freedesktop.org/wayland/weston/-/issues/839. Note that
Robert said it would be fixed in gstreamer 1.22 but the linked patch
only made it to 1.23 (Scarthgap has 1.22, Styhead 1.24).
Considering what Robert said in the link above, I assume people using
another compositor than weston may be fine on Scarthgap, so I would
suggest to backport the patches I submitted in this series to scarthgap
anyway? One is not forced to use weston to do VPU decoding.
FYI, I gave ~30min at backporting the gstreamer patches to 1.22.11 but
this is above my skill set today.
For those, I would just mention the issue in the README and commit log
and maybe switch to fakesink in the commit log instead of waylandsink
(and drop weston from the needed packages).
What do you think?
Cheers,
Quentin
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [yocto-patches] [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs
2024-09-09 16:01 ` [yocto-patches] " Quentin Schulz
@ 2024-09-10 4:52 ` Trevor Woerner
2024-09-10 9:12 ` Quentin Schulz
0 siblings, 1 reply; 15+ messages in thread
From: Trevor Woerner @ 2024-09-10 4:52 UTC (permalink / raw)
To: yocto-patches
On Mon 2024-09-09 @ 06:01:30 PM, Quentin Schulz via lists.yoctoproject.org wrote:
> Hi Trevor,
>
> On 9/9/24 4:55 PM, Trevor Woerner via lists.yoctoproject.org wrote:
> > From: Quentin Schulz <quentin.schulz@cherry.de>
> >
> > v4l2codecs is the gstreamer plugin for V4L2 stateless video hardware
> > decoding. The Rockchip SoCs that have a VPU all seems to be based on
> > Hantro, RKVDEC or RKVDECv2, all stateless encoding/decoding VPUs.
> >
> > Therefore, let's enable VPU decoding in Gstreamer whenever possible,
> > when the SoC supports it.
> >
> > PX30, RK3066, RK3188, RK3288, RK3328, RK3399, RK356x and RK3588(s) all
> > have at least one Hantro VPU.
> >
> > RK3328, RK3399, RK356x and RK3588(s) all have at least one
> > RKVDEC/RKVDECv2 VPU (though not necessarily supported in the upstream
> > kernel just yet).
> >
> > === PX30
> > Tested on PX30 Ringneck with with Haikou+Haikou Video Demo adapter:
> >
> > $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
> >
> > with FILE storing the path to any h264 file, e.g.
> > https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov
> > https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
> >
> > Needed packages are:
> > - weston
> > - gstreamer1.0-plugins-bad (for waylandsink and v4l2slh264dec)
> > - gstreamer1.0-plugins-base (for parsebin)
> >
>
> Weston output is broken on Scarthgap. c.f.
> https://lore.kernel.org/all/1f84dd9c-bdef-4099-9dba-04b445a7ee0a@cherry.de/
>
> > A few frames are dropped every other second for 1080p but otherwise
> > smooth.
> >
> > === RK3399
> > Tested on RK3399 Puma with Haikou:
> >
> > $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
> >
> > with FILE storing the path to any h264 file, e.g.
> > https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
> > https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_30fps_normal.mp4.zip
> >
> > Needed packages are:
> > - weston
> > - gstreamer1.0-plugins-bad (for waylandsink and v4l2codecs)
> > - gstreamer1.0-plugins-base (for parsebin)
> >
>
> Weston output is broken on Scarthgap. c.f.
> https://lore.kernel.org/all/1f84dd9c-bdef-4099-9dba-04b445a7ee0a@cherry.de/
>
> > === RK3588
> >
> > Tested on a RK3588 Tiger with Haikou+Haikou Video Demo adapter - on a
> > downstream v6.6 (upstream-based, not Rockchip BSP-based) with DSI
> > patches - :
> >
> > $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slav1dec ! fakesink
> >
> > with FILE storing the path to any AV1 file, e.g.
> > http://download.opencontent.netflix.com.s3.amazonaws.com/AV1/cmaf/spark-8b-59.94fps/spark_606kbps_432p.mp4
> > https://woolyss.com/f/av1-nosound-chimera.mp4
> > https://woolyss.com/f/av1-opus-sita.webm
> >
> > Needed packages are:
> > - gstreamer1.0-plugins-bad (for fakesink and v4l2slav1dec)
> > - gstreamer1.0-plugins-base (for parsebin)
> >
>
> Stateless AV1 decoding is not available in the mesa release used on
> Scarthgap.
>
> So...
>
> RK3588 seems to have gained upstream support for VDPU121 which should allow
> h264, mpeg2 and vp8 decoding. Building a linux-next kernel after tag
> next-20240829 should have the support AFAICT.
>
> So, I would retest RK3588 support for those video formats and drop the AV1
> mention from the commit log as it for sure doesn't work because of the
> version of mesa in Scarthgap. We could backport later releases into
> meta-rockchip to gain support for it. I think this **may** be an idea once
> there's support for 24.1 and later merged into OE-Core because it brings
> Panthor (open-source GPU drivers) support to RK3588 which would be a shame
> not to have in an LTS. But let's see when that happens.
>
>
>
> As for the issues with display on PX30 and RK3399, it seems those are
> supposed to be patched in newer releases of gstreamer, c.f.
> https://gitlab.freedesktop.org/wayland/weston/-/issues/839. Note that
> Robert said it would be fixed in gstreamer 1.22 but the linked patch
> only made it to 1.23 (Scarthgap has 1.22, Styhead 1.24).
>
> Considering what Robert said in the link above, I assume people using
> another compositor than weston may be fine on Scarthgap, so I would suggest
> to backport the patches I submitted in this series to scarthgap anyway? One
> is not forced to use weston to do VPU decoding.
> FYI, I gave ~30min at backporting the gstreamer patches to 1.22.11 but this
> is above my skill set today.
>
> For those, I would just mention the issue in the README and commit log and
> maybe switch to fakesink in the commit log instead of waylandsink (and drop
> weston from the needed packages).
>
> What do you think?
To be clear, when I say I've run-tested this build I'm not implying I've
tested every aspect, feature, and functionality of each chip. I've simply
flashed an SD card, applied power, watched it boot to a prompt, log in, and
run something simple like "uname -a" to verify it's using the scarthgap kernel
and not the latest master. I'm not really in a position to test stateless VPU
decoding or anything fancy like that :-)
If there aren't any issues or objections, perhaps I could start by applying
the other patches in this series while considering what to do about this one?
Maybe after the others are applied you'd like to have a go at making a
scarthgap version of this patch (with all the proper commit messages etc)?
Best regards,
Trevor
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [yocto-patches] [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs
2024-09-10 4:52 ` Trevor Woerner
@ 2024-09-10 9:12 ` Quentin Schulz
0 siblings, 0 replies; 15+ messages in thread
From: Quentin Schulz @ 2024-09-10 9:12 UTC (permalink / raw)
To: yocto-patches
Hi Trevor,
On 9/10/24 6:52 AM, Trevor Woerner via lists.yoctoproject.org wrote:
> On Mon 2024-09-09 @ 06:01:30 PM, Quentin Schulz via lists.yoctoproject.org wrote:
>> Hi Trevor,
>>
>> On 9/9/24 4:55 PM, Trevor Woerner via lists.yoctoproject.org wrote:
>>> From: Quentin Schulz <quentin.schulz@cherry.de>
>>>
>>> v4l2codecs is the gstreamer plugin for V4L2 stateless video hardware
>>> decoding. The Rockchip SoCs that have a VPU all seems to be based on
>>> Hantro, RKVDEC or RKVDECv2, all stateless encoding/decoding VPUs.
>>>
>>> Therefore, let's enable VPU decoding in Gstreamer whenever possible,
>>> when the SoC supports it.
>>>
>>> PX30, RK3066, RK3188, RK3288, RK3328, RK3399, RK356x and RK3588(s) all
>>> have at least one Hantro VPU.
>>>
>>> RK3328, RK3399, RK356x and RK3588(s) all have at least one
>>> RKVDEC/RKVDECv2 VPU (though not necessarily supported in the upstream
>>> kernel just yet).
>>>
>>> === PX30
>>> Tested on PX30 Ringneck with with Haikou+Haikou Video Demo adapter:
>>>
>>> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
>>>
>>> with FILE storing the path to any h264 file, e.g.
>>> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov
>>> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
>>>
>>> Needed packages are:
>>> - weston
>>> - gstreamer1.0-plugins-bad (for waylandsink and v4l2slh264dec)
>>> - gstreamer1.0-plugins-base (for parsebin)
>>>
>>
>> Weston output is broken on Scarthgap. c.f.
>> https://lore.kernel.org/all/1f84dd9c-bdef-4099-9dba-04b445a7ee0a@cherry.de/
>>
>>> A few frames are dropped every other second for 1080p but otherwise
>>> smooth.
>>>
>>> === RK3399
>>> Tested on RK3399 Puma with Haikou:
>>>
>>> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink
>>>
>>> with FILE storing the path to any h264 file, e.g.
>>> https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
>>> https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_30fps_normal.mp4.zip
>>>
>>> Needed packages are:
>>> - weston
>>> - gstreamer1.0-plugins-bad (for waylandsink and v4l2codecs)
>>> - gstreamer1.0-plugins-base (for parsebin)
>>>
>>
>> Weston output is broken on Scarthgap. c.f.
>> https://lore.kernel.org/all/1f84dd9c-bdef-4099-9dba-04b445a7ee0a@cherry.de/
>>
>>> === RK3588
>>>
>>> Tested on a RK3588 Tiger with Haikou+Haikou Video Demo adapter - on a
>>> downstream v6.6 (upstream-based, not Rockchip BSP-based) with DSI
>>> patches - :
>>>
>>> $ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slav1dec ! fakesink
>>>
>>> with FILE storing the path to any AV1 file, e.g.
>>> http://download.opencontent.netflix.com.s3.amazonaws.com/AV1/cmaf/spark-8b-59.94fps/spark_606kbps_432p.mp4
>>> https://woolyss.com/f/av1-nosound-chimera.mp4
>>> https://woolyss.com/f/av1-opus-sita.webm
>>>
>>> Needed packages are:
>>> - gstreamer1.0-plugins-bad (for fakesink and v4l2slav1dec)
>>> - gstreamer1.0-plugins-base (for parsebin)
>>>
>>
>> Stateless AV1 decoding is not available in the mesa release used on
>> Scarthgap.
>>
>> So...
>>
>> RK3588 seems to have gained upstream support for VDPU121 which should allow
>> h264, mpeg2 and vp8 decoding. Building a linux-next kernel after tag
>> next-20240829 should have the support AFAICT.
>>
>> So, I would retest RK3588 support for those video formats and drop the AV1
>> mention from the commit log as it for sure doesn't work because of the
>> version of mesa in Scarthgap. We could backport later releases into
>> meta-rockchip to gain support for it. I think this **may** be an idea once
>> there's support for 24.1 and later merged into OE-Core because it brings
>> Panthor (open-source GPU drivers) support to RK3588 which would be a shame
>> not to have in an LTS. But let's see when that happens.
>>
>>
>>
>> As for the issues with display on PX30 and RK3399, it seems those are
>> supposed to be patched in newer releases of gstreamer, c.f.
>> https://gitlab.freedesktop.org/wayland/weston/-/issues/839. Note that
>> Robert said it would be fixed in gstreamer 1.22 but the linked patch
>> only made it to 1.23 (Scarthgap has 1.22, Styhead 1.24).
>>
>> Considering what Robert said in the link above, I assume people using
>> another compositor than weston may be fine on Scarthgap, so I would suggest
>> to backport the patches I submitted in this series to scarthgap anyway? One
>> is not forced to use weston to do VPU decoding.
>> FYI, I gave ~30min at backporting the gstreamer patches to 1.22.11 but this
>> is above my skill set today.
>>
>> For those, I would just mention the issue in the README and commit log and
>> maybe switch to fakesink in the commit log instead of waylandsink (and drop
>> weston from the needed packages).
>>
>> What do you think?
>
> To be clear, when I say I've run-tested this build I'm not implying I've
> tested every aspect, feature, and functionality of each chip. I've simply
> flashed an SD card, applied power, watched it boot to a prompt, log in, and
> run something simple like "uname -a" to verify it's using the scarthgap kernel
> and not the latest master. I'm not really in a position to test stateless VPU
> decoding or anything fancy like that :-)
>
> If there aren't any issues or objections, perhaps I could start by applying
> the other patches in this series while considering what to do about this one?
I haven't had the time to look at the other patches in depth just yet.
But I agree with the suggestion of putting this one patch on hold.
I currently have this enabled in our vendor layer:
https://git.embedded.cherry.de/yocto-layers/meta-cherry-es.git/commit/?id=37422a2f8d2553701dfa80de2bde5537ffffa770
https://git.embedded.cherry.de/yocto-layers/meta-cherry-es.git/commit/?id=a72a8bbabd5721f25ccef369ac470ea5d27b864c
https://git.embedded.cherry.de/yocto-layers/meta-cherry-es.git/commit/?id=7c575990a66490e8907376a75c784b15c484b0c7
So I clearly am interested in having this work with meta-rockchip in the
Scarthgap branch. It's on my TODO list. I also would like to test h264,
mpeg2 and vp8 on RK3588 on Scarthgap too :)
So basically, I'm volunteering for this as I have professional interest
in this, but if someone does this before I have time to handle it, I'll
just review it whenever I have time :)
> Maybe after the others are applied you'd like to have a go at making a
> scarthgap version of this patch (with all the proper commit messages etc)?
>
Sounds good to me.
I'll try to find time to review the other backports ASAP.
Cheers,
Quentin
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
` (9 preceding siblings ...)
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 10/10] linux-torvalds-next: bump to next-20240904 Trevor Woerner
@ 2024-09-13 2:57 ` Trevor Woerner
10 siblings, 0 replies; 15+ messages in thread
From: Trevor Woerner @ 2024-09-13 2:57 UTC (permalink / raw)
To: yocto-patches; +Cc: Trevor Woerner
On Mon 2024-09-09 @ 10:55:20 AM, Trevor Woerner wrote:
> From: Trevor Woerner <trevor.woerner@amd.com>
>
> Update the scarthgap branch with all the relevant patches from master.
>
> The scarthgap branch did not get the UNPACKDIR changes that went into
> master/styhead, therefore any patches that addressed that change were not
> picked, and any patches that added features with UNPACKDIR were modified to
> revert back to WORKDIR.
>
> On master, it took a couple patches to get the radxa-zero-3{e|w} machine
> added and working fully (i.e. with the kernel tag). All these patches were
> squashed together into one "add radxa zero 3" patch.
>
> The rename of the mesa bbappend patch is not required on scarthgap for
> reasons similar to the UNPACKDIR feature.
>
> Boot tested with:
> - nanopi-r2s
> - radxa-zero-3e
> - rock-3a
> - rock-5a
> - rock-pi-4b
> - rock-pi-s
>
>
> Marcin Bober (1):
> mesa: build panfrost for RK3566 boards
>
> Quentin Schulz (3):
> mesa: enable lima on all rk3328 boards
> mesa: build panfrost for RK3568 boards
> enable HW VPU decoding for SoCs that have stateless VPUs
>
> Trevor Woerner (6):
> user-selectable wic compression
> rockchip-rkbin: bump SRCREV
> radxa-zero-3{e|w}: add
> README: sort MACHINE names
> rauc demo: add
> linux-torvalds-next: bump to next-20240904
All of these patches, except for 09/10, applied to meta-rockchip, scarthgap
branch.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2024-09-13 2:58 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-09 14:55 [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 01/10] mesa: enable lima on all rk3328 boards Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 02/10] mesa: build panfrost for RK3568 boards Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 03/10] user-selectable wic compression Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 04/10] rockchip-rkbin: bump SRCREV Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 05/10] radxa-zero-3{e|w}: add Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 06/10] README: sort MACHINE names Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 07/10] mesa: build panfrost for RK3566 boards Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 08/10] rauc demo: add Trevor Woerner
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 09/10] enable HW VPU decoding for SoCs that have stateless VPUs Trevor Woerner
2024-09-09 16:01 ` [yocto-patches] " Quentin Schulz
2024-09-10 4:52 ` Trevor Woerner
2024-09-10 9:12 ` Quentin Schulz
2024-09-09 14:55 ` [meta-rockchip][scarthgap][PATCH 10/10] linux-torvalds-next: bump to next-20240904 Trevor Woerner
2024-09-13 2:57 ` [meta-rockchip][scarthgap][PATCH 00/10] scarthgap update Trevor Woerner
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.