All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/10] Sunxi-Cedrus driver for the Allwinner Video Engine, using media requests
@ 2018-04-19 15:41 ` Paul Kocialkowski
  0 siblings, 0 replies; 142+ messages in thread
From: Paul Kocialkowski @ 2018-04-19 15:41 UTC (permalink / raw)
  To: linux-media, devicetree, linux-arm-kernel, linux-kernel, linux-sunxi
  Cc: Mauro Carvalho Chehab, Rob Herring, Mark Rutland, Maxime Ripard,
	Chen-Yu Tsai, Pawel Osciak, Marek Szyprowski, Kyungmin Park,
	Hans Verkuil, Sakari Ailus, Philipp Zabel, Arnd Bergmann,
	Alexandre Courbot, Tomasz Figa, Paul Kocialkowski

This presents a second iteration of the updated Sunxi-Cedrus driver,
that supports the Video Engine found in most Allwinner SoCs, starting
with the A10. It was tested on both the A20 and the A33.

The initial 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 adapted to use the latest version of the media request
API[1], as submitted by Hand Verkuil. Media request API support is a
hard requirement for the Sunxi-Cedrus 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.

Changes since v1:
* use the latest version of the request API for Hans Verkuil;
* added media controller support and dependency
* renamed v4l2 format to the more explicit V4L2_PIX_FMT_MB32_NV12;
* reworked bindings documentation;
* moved driver to drivers/media/platforms/sunxi/cedrus to pair with
  incoming CSI support ;
* added a workqueue and lists to schedule buffer completion, since it
  cannot be done in interrupt context;
* split mpeg2 support into a setup and a trigger function to avoid race
  condition;
* split video-related ops to a dedicated sunxi_cedrus_video file;
* cleaned up the included headers for each file;
* used device PFN offset instead of subtracting PHYS_BASE;
* used reset_control_reset instead of assert+deassert;
* put the device in reset when removing driver;
* changed dt bindings to use the last 96 Mib of the first 256 MiB of
  DRAM;
* made it clear in the mpeg frame header structure that forward and
  backward indexes are used as reference frames for motion vectors;
* lots of small cosmetic and consistency changes, including naming
  harmonization and headers text rework.

Remaining tasks:
* using the dedicated SRAM controller driver;
* cleaning up registers description and documenting the fields used;
* removing the assigned-clocks property and setting the clock rate
  in the driver directly;
* testing on more platforms.

Cheers!

Paul Kocialkowski (10):
  media: v4l2-ctrls: Add missing v4l2 ctrl unlock
  media-request: Add a request complete operation to allow m2m
    scheduling
  videobuf2-core: Add helper to get buffer private data from media
    request
  media: vim2m: Implement media request complete op to schedule m2m run
  media: v4l: Add definitions for MPEG2 frame format and header metadata
  media: v4l: Add definition for Allwinner's MB32-tiled NV12 format
  media: platform: Add Sunxi-Cedrus VPU decoder driver
  dt-bindings: media: Document bindings for the Sunxi-Cedrus VPU driver
  ARM: dts: sun7i-a20: Add Video Engine and reserved memory nodes
  ARM: dts: sun8i-a33: Add Video Engine and reserved memory nodes

 .../devicetree/bindings/media/sunxi-cedrus.txt     |  50 +++
 arch/arm/boot/dts/sun7i-a20.dtsi                   |  31 ++
 arch/arm/boot/dts/sun8i-a33.dtsi                   |  38 ++
 drivers/media/common/videobuf2/videobuf2-core.c    |  15 +
 drivers/media/media-request.c                      |   3 +
 drivers/media/platform/Kconfig                     |  15 +
 drivers/media/platform/Makefile                    |   1 +
 drivers/media/platform/sunxi/cedrus/Makefile       |   4 +
 drivers/media/platform/sunxi/cedrus/sunxi_cedrus.c | 292 ++++++++++++
 .../platform/sunxi/cedrus/sunxi_cedrus_common.h    | 105 +++++
 .../media/platform/sunxi/cedrus/sunxi_cedrus_dec.c | 228 ++++++++++
 .../media/platform/sunxi/cedrus/sunxi_cedrus_dec.h |  36 ++
 .../media/platform/sunxi/cedrus/sunxi_cedrus_hw.c  | 201 +++++++++
 .../media/platform/sunxi/cedrus/sunxi_cedrus_hw.h  |  29 ++
 .../platform/sunxi/cedrus/sunxi_cedrus_mpeg2.c     | 157 +++++++
 .../platform/sunxi/cedrus/sunxi_cedrus_mpeg2.h     |  33 ++
 .../platform/sunxi/cedrus/sunxi_cedrus_regs.h      | 172 +++++++
 .../platform/sunxi/cedrus/sunxi_cedrus_video.c     | 497 +++++++++++++++++++++
 .../platform/sunxi/cedrus/sunxi_cedrus_video.h     |  31 ++
 drivers/media/platform/vim2m.c                     |  12 +
 drivers/media/v4l2-core/v4l2-ctrls.c               |  17 +-
 drivers/media/v4l2-core/v4l2-ioctl.c               |   1 +
 include/media/media-device.h                       |   2 +
 include/media/videobuf2-core.h                     |   1 +
 include/uapi/linux/v4l2-controls.h                 |  26 ++
 include/uapi/linux/videodev2.h                     |   4 +
 26 files changed, 2000 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_mpeg2.h
 create mode 100644 drivers/media/platform/sunxi/cedrus/sunxi_cedrus_regs.h
 create mode 100644 drivers/media/platform/sunxi/cedrus/sunxi_cedrus_video.c
 create mode 100644 drivers/media/platform/sunxi/cedrus/sunxi_cedrus_video.h

-- 
2.16.3

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

end of thread, other threads:[~2018-05-04 15:44 UTC | newest]

Thread overview: 142+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-19 15:41 [PATCH v2 00/10] Sunxi-Cedrus driver for the Allwinner Video Engine, using media requests Paul Kocialkowski
2018-04-19 15:41 ` Paul Kocialkowski
2018-04-19 15:41 ` Paul Kocialkowski
2018-04-19 15:41 ` [PATCH v2 01/10] media: v4l2-ctrls: Add missing v4l2 ctrl unlock Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-20  7:23   ` Maxime Ripard
2018-04-20  7:23     ` Maxime Ripard
2018-04-20  7:23     ` Maxime Ripard
2018-04-20 13:38   ` Hans Verkuil
2018-04-20 13:38     ` Hans Verkuil
2018-04-20 13:38     ` Hans Verkuil
2018-04-19 15:41 ` [PATCH v2 02/10] media-request: Add a request complete operation to allow m2m scheduling Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-20  7:38   ` Alexandre Courbot
2018-04-20  7:38     ` Alexandre Courbot
2018-04-20 13:48   ` Hans Verkuil
2018-04-20 13:48     ` Hans Verkuil
2018-04-20 13:48     ` Hans Verkuil
2018-04-24  8:28   ` Sakari Ailus
2018-04-24  8:28     ` Sakari Ailus
2018-05-04  8:03   ` Paul Kocialkowski
2018-05-04  8:03     ` Paul Kocialkowski
2018-05-04  8:03     ` Paul Kocialkowski
2018-04-19 15:41 ` [PATCH v2 03/10] videobuf2-core: Add helper to get buffer private data from media request Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-20 13:43   ` Hans Verkuil
2018-04-20 13:43     ` Hans Verkuil
2018-04-20 13:43     ` Hans Verkuil
2018-04-24  8:37   ` Sakari Ailus
2018-04-24  8:37     ` Sakari Ailus
2018-05-04  8:03   ` Paul Kocialkowski
2018-05-04  8:03     ` Paul Kocialkowski
2018-05-04  8:03     ` Paul Kocialkowski
2018-04-19 15:41 ` [PATCH v2 04/10] media: vim2m: Implement media request complete op to schedule m2m run Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-19 15:41   ` Paul Kocialkowski
2018-04-19 15:45 ` [PATCH v2 05/10] media: v4l: Add definitions for MPEG2 frame format and header metadata Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-20  9:51   ` Tomasz Figa
2018-04-20  9:51     ` Tomasz Figa
2018-04-20  9:51     ` Tomasz Figa
2018-05-04  8:24     ` Paul Kocialkowski
2018-05-04  8:24       ` Paul Kocialkowski
2018-05-04  8:24       ` Paul Kocialkowski
2018-04-20 13:57   ` Hans Verkuil
2018-04-20 13:57     ` Hans Verkuil
2018-04-20 13:57     ` Hans Verkuil
2018-05-04  8:22     ` Paul Kocialkowski
2018-05-04  8:22       ` Paul Kocialkowski
2018-05-04  8:22       ` Paul Kocialkowski
2018-04-20 14:00   ` Hans Verkuil
2018-04-20 14:00     ` Hans Verkuil
2018-04-20 14:00     ` Hans Verkuil
2018-04-24  9:01   ` Sakari Ailus
2018-04-24  9:01     ` Sakari Ailus
2018-05-04  8:21     ` Paul Kocialkowski
2018-05-04  8:21       ` Paul Kocialkowski
2018-05-04  8:21       ` Paul Kocialkowski
2018-05-04  8:48   ` Paul Kocialkowski
2018-05-04  8:48     ` Paul Kocialkowski
2018-05-04  8:48     ` Paul Kocialkowski
2018-04-19 15:45 ` [PATCH v2 06/10] media: v4l: Add definition for Allwinner's MB32-tiled NV12 format Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-20 13:59   ` Hans Verkuil
2018-04-20 13:59     ` Hans Verkuil
2018-04-20 13:59     ` Hans Verkuil
2018-05-04  7:58     ` Paul Kocialkowski
2018-05-04  7:58       ` Paul Kocialkowski
2018-05-04  7:58       ` Paul Kocialkowski
2018-04-19 15:45 ` [PATCH v2 07/10] media: platform: Add Sunxi-Cedrus VPU decoder driver Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-24  9:13   ` Sakari Ailus
2018-04-24  9:13     ` Sakari Ailus
2018-05-04  7:57     ` Paul Kocialkowski
2018-05-04  7:57       ` Paul Kocialkowski
2018-05-04  7:57       ` Paul Kocialkowski
2018-04-19 15:45 ` [PATCH v2 08/10] dt-bindings: media: Document bindings for the Sunxi-Cedrus VPU driver Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 16:04   ` Philipp Zabel
2018-04-19 16:04     ` Philipp Zabel
2018-04-19 16:04     ` Philipp Zabel
2018-04-20  1:31     ` Tomasz Figa
2018-04-20  1:31       ` Tomasz Figa
2018-04-20  1:31       ` Tomasz Figa
2018-04-20  7:22       ` Paul Kocialkowski
2018-04-20  7:22         ` Paul Kocialkowski
2018-04-20  7:22         ` Paul Kocialkowski
2018-04-27  3:04         ` Rob Herring
2018-04-27  3:04           ` Rob Herring
2018-04-27  3:04           ` Rob Herring
2018-05-04  7:56           ` Paul Kocialkowski
2018-05-04  7:56             ` Paul Kocialkowski
2018-05-04  7:56             ` Paul Kocialkowski
2018-05-04  8:12             ` Maxime Ripard
2018-05-04  8:12               ` Maxime Ripard
2018-05-04  8:12               ` Maxime Ripard
2018-04-27  3:06   ` Rob Herring
2018-04-27  3:06     ` Rob Herring
2018-04-27  3:06     ` Rob Herring
2018-04-19 15:45 ` [PATCH v2 09/10] ARM: dts: sun7i-a20: Add Video Engine and reserved memory nodes Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-20  7:39   ` Maxime Ripard
2018-04-20  7:39     ` Maxime Ripard
2018-04-20  7:39     ` Maxime Ripard
2018-05-04  7:49     ` Paul Kocialkowski
2018-05-04  7:49       ` Paul Kocialkowski
2018-05-04  7:49       ` Paul Kocialkowski
2018-05-04  8:40       ` Maxime Ripard
2018-05-04  8:40         ` Maxime Ripard
2018-05-04  8:40         ` Maxime Ripard
2018-05-04  8:47         ` Paul Kocialkowski
2018-05-04  8:47           ` Paul Kocialkowski
2018-05-04  8:47           ` Paul Kocialkowski
2018-05-04  8:54           ` Paul Kocialkowski
2018-05-04  8:54             ` Paul Kocialkowski
2018-05-04  8:54             ` Paul Kocialkowski
2018-05-04  9:15           ` Maxime Ripard
2018-05-04  9:15             ` Maxime Ripard
2018-05-04  9:15             ` Maxime Ripard
2018-05-04 12:04             ` Paul Kocialkowski
2018-05-04 12:04               ` Paul Kocialkowski
2018-05-04 12:04               ` Paul Kocialkowski
2018-05-04 13:40               ` Maxime Ripard
2018-05-04 13:40                 ` Maxime Ripard
2018-05-04 13:40                 ` Maxime Ripard
2018-05-04 13:57                 ` Paul Kocialkowski
2018-05-04 13:57                   ` Paul Kocialkowski
2018-05-04 13:57                   ` Paul Kocialkowski
2018-05-04 15:44                   ` Maxime Ripard
2018-05-04 15:44                     ` Maxime Ripard
2018-05-04 15:44                     ` Maxime Ripard
2018-04-19 15:45 ` [PATCH v2 10/10] ARM: dts: sun8i-a33: " Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski
2018-04-19 15:45   ` Paul Kocialkowski

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.