]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
media: rkvdec: Switch to using structs instead of writel
authorDetlev Casanova <detlev.casanova@collabora.com>
Fri, 9 Jan 2026 16:15:20 +0000 (11:15 -0500)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Wed, 21 Jan 2026 13:43:09 +0000 (14:43 +0100)
commitdc6898981f744cf54c29313f5a399260933cdf66
treec1a67021c9d821007125691741544a25ff2b887a
parent4cb9cd80b36ea977c468415eb2730ae4435505cc
media: rkvdec: Switch to using structs instead of writel

In an effort to merge the rkvdec2 driver [1] with this one, switch from
writel() calls to using structs to represent the register mappings.

This is done in order to have all supported decoders use the same format
in the future and ease reading of the code.

Using structs also improves stability as the hardware is tested and
validated downstream using a similar method.
It was noticed, on decoders, that:
 - Some registers require to be writen in increasing order [2]
 - Some registers, even if unrelated, need to be written to their reset
   values (it was the case here for axi_ddr_[rw]data).

Using structs can also help improving performance later when, e.g.
multicore support is added on RK3588.

Performance seems to be slightly improved, but at least, not made worse.
Running fluster's JVT-AVC_V1 test suite with GStreamer on the Radxa ROCK
PI 4 SE gives the following times:

Before this patch:

- --jobs 1: Ran 129/135 tests successfully               in 77.167 secs
- --jobs 6: Ran 129/135 tests successfully               in 23.046 secs

With this patch:
- --jobs 1: Ran 129/135 tests successfully               in 70.698 secs
- --jobs 6: Ran 129/135 tests successfully               in 22.917 secs

This also shows that the fluster score hasn't changed.

[1]: https://lore.kernel.org/all/20250325213303.826925-1-detlev.casanova@collabora.com/
[2]: https://lore.kernel.org/all/20200127143009.15677-5-andrzej.p@collabora.com/

Tested-by: Diederik de Haas <didi.debian@cknow.org> # Rock 5B
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/rockchip/rkvdec/rkvdec-h264.c
drivers/media/platform/rockchip/rkvdec/rkvdec-hevc.c
drivers/media/platform/rockchip/rkvdec/rkvdec-regs.h
drivers/media/platform/rockchip/rkvdec/rkvdec-vp9.c
drivers/media/platform/rockchip/rkvdec/rkvdec.c
drivers/media/platform/rockchip/rkvdec/rkvdec.h