Commit Graph

27 Commits

Author SHA1 Message Date
Quentin Schulz
91a694e250 enable HW VPU decoding for SoCs that have stateless VPUs
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>
2024-08-29 19:27:56 -04:00
Quentin Schulz
50fdb975cf add rockchip MACHINEOVERRIDES
Add "rockchip" to the MACHINEOVERRIDES so that it can be used to easily
identify things that apply only to Rockchip-based devices and keeping
other devices untouched.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
2024-06-06 13:20:19 -04:00
Quentin Schulz
5291187998 rk3288: fix MACHINEOVERRIDES order
The SOC_FAMILY OVERRIDES should come after the TUNE one, so it needs to
be defined before.

before:
MACHINEOVERRIDES="rk3288:armv7ve:vyasa-rk3288"
after:
MACHINEOVERRIDES="armv7ve:rk3288:vyasa-rk3288"

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
2024-06-06 13:20:18 -04:00
Anthony Davies
265e8c3df2 allow KERNEL_IMAGETYPE override
Update machine include files to allow overriding of KERNEL_IMAGETYPE.

[
with the following 2 tweaks by Trevor:
- remove the "v3" from the commit's subject
- extended patch to rk3308 and rk3588s, which were added in between this patch
  being submitted, and this patch being applied
]

Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2023-11-16 17:34:24 -05:00
Trevor Woerner
dd1fc4abcf linux-yocto: remove non-rockchip archs
Remove the non-rockchip architectures from the kernel build since these are
all a waste of build time, filesystem space, and runtime memory.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2023-09-16 07:38:36 -04:00
Trevor Woerner
6fed2791f1 override syntax fixup
The _virtual notation is not an override. These syntax "fixes" need to be
reverted.

In the case of the kernel override, when it was added, the rock-pi-e needed
the latest kernel (linux-yocto-dev) but now the default linux-yocto kernel
will suffice. So this mistake actually switched the rock-pi-e from
linux-yocto-dev back to linux-yocto inadvertently but at a time when
linux-yocto-dev was no longer required.

In the case of the bootloader overrides, u-boot was always the default, so
these overrides were always redundant.

Therefore, in the end, simply removing these overrides is the best way
forward (considering these aren't doing anything, and the builds are working
fine regardless).

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2021-12-13 17:32:36 -05:00
Khem Raj
4ed72a368a machines: Adjust for new location of tune files in core
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-08-19 10:14:35 -04:00
Trevor Woerner
335bfcbf8d switch to the new bitbake OVERRIDE syntax
With bitbake commit 7dcf317cc141dc980634f8c18bfa84f83e57206a
("bitbake: Switch to using new override syntax"), applied on
Aug 2, 2021, the OVERRIDE separator is now a colon instead of
an underscore. Therefore all builds performed with a bitbake
before this change must use a meta-rockchip commit before this
one, and any builds performed with a bitbake after this change
must use a meta-rockchip starting from this commit onwards.

Build-tested for all meta-rockchip MACHINEs.

Run tested on:
- tinker-board
- nanopi-m4-2gb
- rock64
- rock-pi-4b
- rock-pi-e

The tinker-board and rock-pi-e work fine. The rest of the boards
seem to have a, hopefully unrelated, issue running a
5.13-yocto-standard kernel. However, all boards work with the
5.10-yocto-standard kernel.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-08-04 21:59:14 -04:00
Trevor Woerner
2cf5a03eaa wic/wks cleanup
By exporting a couple more variables the wks file for every rockchip device
can be built from one template instead of having separate wks files for each
board and platform.

The following BSP variables were checked before and after this change to make
sure they remained valid/sensible:
- WKS_FILE
- UBOOT_SUFFIX
- SPL_BINARY
- IMAGE_FSTYPES

Built-tested for every MACHINE in this BSP.

Run-tested on the following devices to ensure they continue to boot correctly
to a cmdline (core-image-base):
- tinker-board
- rock-pi-e
- rock-pi-4b
- rock64
- nanopi-m4-2gb

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2021-06-30 12:11:52 -04:00
Trevor Woerner
8cd56cdcd8 console cleanup
Consolidate all the various console definitions to the common
conf/machine/include/rockchip-defaults.inc file and create
RK_CONSOLE_BAUD and RK_CONSOLE_DEVICE variables that can be
reused in the wks files.

The following variables were checked before and after this patch
to make sure they are sensible:
- SERIAL_CONSOLES
- RK_CONSOLE_DEVICE
- RK_CONSOLE_BAUD

A boot test was performed on the following boards to make sure
they all continue to boot to a cmdline:
- tinker-board
- rock-pi-e
- nanopi-m4-2gb
- rock64
- rock-pi-4b

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2021-06-27 14:43:56 -04:00
Joshua Watt
18b5329e2c Use linux-yocto kernel from OE-core
Updates all machines to use the linux-yocto kernel from OE-core instead
of maintaining distinct kernels in this repository.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2020-04-19 00:39:54 -04:00
Joshua Watt
01467664da rk3399: Add generic rk3399 support
Adds support for the rk3399 SoC. Notably:
 *) Split out the default kernel config and image type from
    rockchip-defaults.inc now that not all support chips are ARMv7
 *) Apply a patch to Arm Trusted Firmware to fix a compile issue
 *) Arm Trusted Firmware requires the arm-none-eabi-native compiler to
    compile the M0 firmware.
 *) Modify u-boot to pull in the ATF files when compiling
 *) The rk3399 is support by the panfrost driver in mesa, so enable it

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2020-01-27 16:32:19 -05:00
Joshua Watt
5e96349999 rk3288: Convert to using wic
Coverts the firefly-rk3288, tinker-rk3288, and vyasa-rk3288 machines to
use wic instead of the rockchip-gpt-img class. The rock2-squared machine
has to keep the older image class because u-boot doesn't provided a
combined idbloader for it.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2019-12-12 01:20:26 -05:00
Joshua Watt
e8fd1f92ed rk3288: Append GPT image type
Appends the GPT image type to IMAGE_FSTYPES instead of overriding. This
allows additional types to be preserved if they are specified in
local.conf

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2019-12-10 23:00:58 -05:00
Joshua Watt
295b58facf Fix rk3288 bootloader
Recent versions of u-boot use a combined SPL/TPL (called idbloader.img)
in the loader1 partition, which then loads the full u-boot from the
loader2 partition. Update the GPT partition class to reflect this
change. Additionally, remove the u-boot bbappend since it is no longer
needed.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2019-12-09 21:32:23 -05:00
Trevor Woerner
f0e2287af9 bootloader: set to upstream u-boot for rk3288
The upstream u-boot bootloader seems to work fine for both the tinker-rk3288
and the firefly-rk3288, so switch to it by default for rk3288 boards.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2018-04-30 17:16:08 -04:00
Trevor Woerner
02f601cfee machine: cleanup
Create a conf/machine/include/rockchip-defaults.inc that includes
rockchip-wide defaults, then organize the conf/machine/include/rk*.inc and
individual machine files accordingly.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2018-04-25 23:00:39 -04:00
Trevor Woerner
9771de6331 machine: rk3288: don't hard-code kernel choice
Allow the user to ultimately choose the kernel. Make 'linux' the _preferred_,
not the _required_.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Reviewed-by: Eddie Cai <eddie.cai.linux@gmail.com>
2017-03-18 12:52:15 -04:00
Trevor Woerner
ae1f699851 machine: rk3288: GPT image support
Configure any rk3288 build to generate the new GPT image which is then either
flashed to eMMC or dd'ed to an SDcard.

Reviewed-by Eddie Cai <eddie.cai.linux@gmail.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2017-02-26 01:26:46 -05:00
Trevor Woerner
1a36604417 machine: firefly-rk3288: specify bootloader
Set the default preferred bootloader for firefly-rk3288 to be u-boot-rockchip
and set the default name of the SPL binary.

Reviewed-by Eddie Cai <eddie.cai.linux@gmail.com>
Reviewed-by: Jacob Chen <jacob-chen@iotwrt.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2017-02-26 01:24:07 -05:00
Trevor Woerner
b8349d906e machine: rk3288: enable SoC-specific assignments
Enable machine overrides for RK3288.

Signed-off-by: Eddie Cai <eddie.cai.linux@gmail.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2017-02-26 01:13:48 -05:00
Trevor Woerner
2fae057dfc machine: remove DEFAULTTUNEs
The DEFAULTTUNE configuration should not be set at the BSP layer but in a
DISTRO layer (or a user's conf/local.conf). Remove the two DEFAULTTUNEs that
are currently in the layer and add a note in the README to inform users of
this issue and potential settings.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Reviewed-by: Romain Perier <romain.perier@collabora.com>
2017-02-18 18:05:44 +01:00
Romain Perier
561f2a80b9 machine: Replace KERNEL_DEFCONFIG by KBUILD_DEFCONFIG
KBUILD_DEFCONFIG already existed in the yocto project. When it is used
with the kernel-yocto bbclass, it specifies an "in-tree" kernel
configuration file for use during a kernel build. So instead of use our
own variable we use the standard variable designed for that purpose

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
2016-08-25 19:51:48 +02:00
Romain Perier
8e1caba550 machine: Introduce a new variable KERNEL_DEFCONFIG
This variable will hold the name of the in-tree defconfig to use
to configure the kernel before compile it. This is better to use
in-tree config file now, is we don't plan to maintain a defconfig
file per board and it is also synced with upstream.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
2016-08-08 07:58:46 -04:00
Trevor Woerner
cba4c8779a rk3288.inc: gcc 5.2 is default on master
As of the 2015/09/04 commit 039211f0d8fe79d07b65f2f02e299b9656034214 on
openembedded-core, gcc 5.2 (5.%) is now the default on master. Therefore there
is no need to request it explicitly.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2015-09-07 03:14:24 -04:00
Romain Perier
0088534919 machine: Use cortexa17-neon as default tune for rk3288.inc
Support for this tune is now supported in yocto 1.9. As it comes
with gcc 5, we also need to require gcc 5.2 and minimal compiler
version.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
2015-08-31 07:47:52 +02:00
Romain Perier
a505d0a3ef machine: Move rk3288.conf to include directory
As rk3288 itself is not a machine nor a generic one that we plan to support,
and as this file was created to factorize code between rk3288-based platforms,
that's better to move it into the include directory.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
2015-08-06 13:15:02 +02:00