public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] media: rockchip: Add rkvdec2 driver
@ 2025-03-25 21:22 Detlev Casanova
  2025-03-25 21:22 ` [PATCH v4 1/6] media: v4l2: Add NV15 and NV20 pixel formats Detlev Casanova
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Detlev Casanova @ 2025-03-25 21:22 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner,
	Greg Kroah-Hartman, Hans Verkuil, Nicolas Dufresne,
	Andrzej Pietrasiewicz, Jonas Karlman, Sebastian Reichel,
	Niklas Cassel, Alexey Charkov, Dragan Simic, Jianfeng Liu,
	Detlev Casanova, Jacopo Mondi, Sakari Ailus, Kieran Bingham,
	Laurent Pinchart, Umang Jain, Naushir Patuck,
	Jean-Michel Hautbois, Dmitry Perchanov, Tomi Valkeinen,
	linux-media, linux-rockchip, devicetree, linux-arm-kernel,
	linux-staging, kernel

Add a rkvdec2 driver for newer video decoder found on rk3588 based SoC.

It is also found on other hardware like the RK356x, but not tested yet,
so it will be added later.

It only supports h264 format only for now, hevc will come later.
Yuv420 and yuv422 are both supported. 8 and 10 bits format are also
supported.
The NV15 and NV20 pixel formats are supported in v4l2 with the first
patch of this series. It has been picked up from [1].

The driver supports using the IOMMU through the rockchip IOMMU driver.
Because the IOMMU HW will be resetted in case of a decoding error, the
IOMMU mappings are rewritten on the HW by switching to an empty IOMMU
domain, then switching back to the default one.
This is one of the ways that has been recommended in [2].

[1]: https://lore.kernel.org/linux-media/20250225-rkvdec_h264_high10_and_422_support-v7-2-7992a68a4910@collabora.com/
[2]: https://lore.kernel.org/all/9bd56bd6-ce7d-495f-9bb3-ce7f07975f62@arm.com/

Changes since v3:
- Add IOMMU support
- Add 4:2:2 and 10 bits support
- Move cabac to v4l2 header
- Imported improvements from [1]
- Improve timeout value computation
- Improve clocks handling
- Always write scanlist buffer address in register
- Rebased on latest master

Changes since v2:
- doc: Disable resets and sram for other platforms, add maxItems for
  clocks
- Fix h264 spec equation number in comment
- Remove superfluous status field in dtsi
- Add TODO item for IOMMU

Changes since v1:
- Add support for RCB in SRAM
- Move bindings to rockchip,vdec.yaml
- Add resets bindings
- Add second core and enable them from dtsi file
- Only expose one video device to userspace (but don't support multicore yet)
- Share CABAC table with rkvdec
- Fix iowrite32 call and add preliminary support for arm
- Remove unused code
- Improve registers naming and code style
- Remove DMA_ATTR_ALLOC_SINGLE_PAGES flag


Detlev Casanova (5):
  media: v4l2-ctrls-core: Set frame_mbs_only_flag by default in h264 SPS
  media: rockchip: Move H264 CABAC table to header file
  media: rockchip: Introduce the rkvdec2 driver
  media: dt-bindings: rockchip: Document RK3588 Video Decoder bindings
  arm64: dts: rockchip: Add rkvdec2 Video Decoder on rk3588(s)

Jonas Karlman (1):
  media: v4l2: Add NV15 and NV20 pixel formats

 .../bindings/media/rockchip,vdec.yaml         |   73 +-
 .../media/v4l/pixfmt-yuv-planar.rst           |  128 ++
 arch/arm64/boot/dts/rockchip/rk3588-base.dtsi |   74 +
 drivers/media/platform/rockchip/Kconfig       |    1 +
 drivers/media/platform/rockchip/Makefile      |    1 +
 .../media/platform/rockchip/rkvdec2/Kconfig   |   15 +
 .../media/platform/rockchip/rkvdec2/Makefile  |    3 +
 .../platform/rockchip/rkvdec2/rkvdec2-h264.c  |  778 +++++++++
 .../platform/rockchip/rkvdec2/rkvdec2-regs.h  |  347 ++++
 .../media/platform/rockchip/rkvdec2/rkvdec2.c | 1424 +++++++++++++++++
 .../media/platform/rockchip/rkvdec2/rkvdec2.h |  150 ++
 drivers/media/v4l2-core/v4l2-common.c         |    2 +
 drivers/media/v4l2-core/v4l2-ctrls-core.c     |   13 +
 drivers/media/v4l2-core/v4l2-ioctl.c          |    2 +
 drivers/staging/media/rkvdec/rkvdec-h264.c    |  500 +-----
 include/media/v4l2-cabac/rkvdec-cabac.h       |  509 ++++++
 include/uapi/linux/videodev2.h                |    2 +
 17 files changed, 3522 insertions(+), 500 deletions(-)
 create mode 100644 drivers/media/platform/rockchip/rkvdec2/Kconfig
 create mode 100644 drivers/media/platform/rockchip/rkvdec2/Makefile
 create mode 100644 drivers/media/platform/rockchip/rkvdec2/rkvdec2-h264.c
 create mode 100644 drivers/media/platform/rockchip/rkvdec2/rkvdec2-regs.h
 create mode 100644 drivers/media/platform/rockchip/rkvdec2/rkvdec2.c
 create mode 100644 drivers/media/platform/rockchip/rkvdec2/rkvdec2.h
 create mode 100644 include/media/v4l2-cabac/rkvdec-cabac.h

-- 
2.49.0


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-04-08 21:08 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-25 21:22 [PATCH v4 0/6] media: rockchip: Add rkvdec2 driver Detlev Casanova
2025-03-25 21:22 ` [PATCH v4 1/6] media: v4l2: Add NV15 and NV20 pixel formats Detlev Casanova
2025-03-28 23:09   ` Diederik de Haas
2025-04-08 21:08     ` Nicolas Dufresne
2025-03-25 21:22 ` [PATCH v4 2/6] media: v4l2-ctrls-core: Set frame_mbs_only_flag by default in h264 SPS Detlev Casanova
2025-03-25 21:22 ` [PATCH v4 3/6] media: rockchip: Move H264 CABAC table to header file Detlev Casanova
2025-03-25 21:22 ` [PATCH v4 4/6] media: rockchip: Introduce the rkvdec2 driver Detlev Casanova
2025-03-25 21:22 ` [PATCH v4 5/6] media: dt-bindings: rockchip: Document RK3588 Video Decoder bindings Detlev Casanova
2025-03-27  8:04   ` Krzysztof Kozlowski
2025-03-25 21:22 ` [PATCH v4 6/6] arm64: dts: rockchip: Add rkvdec2 Video Decoder on rk3588(s) Detlev Casanova
2025-04-08 13:16   ` Heiko Stübner
2025-04-08 18:34   ` Jonas Karlman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox