This presents a newer version of the Sunxi-Cedrus driver, that supports the Video Engine found in most Allwinner SoCs, starting with the A10.
The first version of this driver[0] was originally written and submitted by Florent Revest using a previous version of the request API, that is necessary to provide coherency between controls and the buffers they apply to. The driver was since adapted to use the latest version of the request API[1], as submitted by Alexandre Courbot. It is a hard requirement for this driver. This series also contains fixes for issues encountered with the current version of the request API. If accepted, these should eventually be squashed into the request API series. The driver itself currently only supports MPEG2 and more codecs will be added to the driver eventually. The output frames provided by the Video Engine are in a multi-planar 32x32-tiled YUV format, with a plane for luminance (Y) and a plane for chrominance (UV). A specific format is introduced in the V4L2 API to describe it. This implementation is based on the significant work that was conducted by various members of the linux-sunxi community for understanding and documenting the Video Engine's innards. [0]: https://lkml.org/lkml/2016/8/25/246 [1]: https://lkml.org/lkml/2018/2/19/872 Florent Revest (5): v4l: Add sunxi Video Engine pixel format v4l: Add MPEG2 low-level decoder API control media: platform: Add Sunxi Cedrus decoder driver sunxi-cedrus: Add device tree binding document ARM: dts: sun5i: Use video-engine node Icenowy Zheng (1): ARM: dts: sun8i: add video engine support for A33 Paul Kocialkowski (2): media: vim2m: Try to schedule a m2m device run on request submission media: videobuf2-v4l2: Copy planes when needed in request qbuf Thomas van Kleef (1): ARM: dts: sun7i: Add video engine support for the A20 .../devicetree/bindings/media/sunxi-cedrus.txt | 44 ++ arch/arm/boot/dts/sun5i-a13.dtsi | 30 ++ arch/arm/boot/dts/sun7i-a20.dtsi | 47 ++ arch/arm/boot/dts/sun8i-a33.dtsi | 39 ++ drivers/media/common/videobuf2/videobuf2-v4l2.c | 19 + drivers/media/platform/Kconfig | 14 + drivers/media/platform/Makefile | 1 + drivers/media/platform/sunxi-cedrus/Makefile | 4 + drivers/media/platform/sunxi-cedrus/sunxi_cedrus.c | 313 ++++++++++++ .../platform/sunxi-cedrus/sunxi_cedrus_common.h | 106 ++++ .../media/platform/sunxi-cedrus/sunxi_cedrus_dec.c | 568 +++++++++++++++++++++ .../media/platform/sunxi-cedrus/sunxi_cedrus_dec.h | 33 ++ .../media/platform/sunxi-cedrus/sunxi_cedrus_hw.c | 185 +++++++ .../media/platform/sunxi-cedrus/sunxi_cedrus_hw.h | 36 ++ .../platform/sunxi-cedrus/sunxi_cedrus_mpeg2.c | 152 ++++++ .../platform/sunxi-cedrus/sunxi_cedrus_regs.h | 170 ++++++ drivers/media/platform/vim2m.c | 13 +- drivers/media/v4l2-core/v4l2-ctrls.c | 15 + drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/v4l2-controls.h | 26 + include/uapi/linux/videodev2.h | 6 + 21 files changed, 1821 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/media/sunxi-cedrus.txt create mode 100644 drivers/media/platform/sunxi-cedrus/Makefile create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus.c create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_common.h create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_dec.c create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_dec.h create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_hw.c create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_hw.h create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_mpeg2.c create mode 100644 drivers/media/platform/sunxi-cedrus/sunxi_cedrus_regs.h -- 2.16.2