Hello, This patch series is an update to the first V4L2 request API RFC series for the VSP1 driver. The main change compared to v1 is the refactoring of the pipeline in patches 51 to 56. The patch that implements support for the request API in the VSP1 driver itself is missing from this RFC as it hasn't been properly tested yet after being rebased on top of v2. I'll fix it ASAP. The series isn't ready for merge yet. In particular it needs to be rebased on top of v4.5-rc1. This will likely cause issues due to the media controller framework rework that got merged in mainline. I can't estimate at this time how long an acceptable solution will take to be developed. Hans Verkuil (3): videodev2.h: Add request field to v4l2_buffer vb2: Add allow_requests flag vb2: Add helper function to queue request-specific buffer. Laurent Pinchart (50): v4l: vsp1: Use pipeline display list to decide how to write to modules v4l: vsp1: Always setup the display list v4l: vsp1: Simplify frame end processing v4l: vsp1: Split display list manager from display list v4l: vsp1: Store the display list manager in the WPF v4l: vsp1: bru: Don't program background color in control set handler v4l: vsp1: rwpf: Don't program alpha value in control set handler v4l: vsp1: sru: Don't program intensity in control set handler v4l: vsp1: Don't setup control handler when starting streaming v4l: vsp1: Enable display list support for the HS[IT], LUT, SRU and UDS v4l: vsp1: Don't configure RPF memory buffers before calculating offsets v4l: vsp1: Remove unneeded entity streaming flag v4l: vsp1: Document calling context of vsp1_pipeline_propagate_alpha() v4l: vsp1: Fix 80 characters per line violations v4l: vsp1: Add header display list support v4l: vsp1: Use display lists with the userspace API v4l: vsp1: Move subdev initialization code to vsp1_entity_init() v4l: vsp1: Consolidate entity ops in a struct vsp1_entity_operations v4l: vsp1: Fix BRU try compose rectangle storage v4l: vsp1: Add race condition FIXME comment media: Move media_device link_notify operation to an ops structure media: Add per-file-handle data support media: Add request API media: Add per-entity request data support videodev2.h: Add request field to v4l2_pix_format_mplane v4l2-subdev.h: Add request field to format and selection structures v4l: Support the request API in format operations v4l: subdev: Add pad config allocator and init v4l: subdev: Call pad init_cfg operation when opening subdevs v4l: subdev: Support the request API in format and selection operations vb2: Add helper function to check for request buffers DocBook: media: Document the media request API DocBook: media: Document the V4L2 request API DocBook: media: Document the subdev selection API DocBook: media: Document the V4L2 subdev request API v4l: vsp1: Implement and use the subdev pad::init_cfg configuration v4l: vsp1: Store active formats in a pad config structure v4l: vsp1: Store active selection rectangles in a pad config structure v4l: vsp1: Create a new configure operation to setup modules v4l: vsp1: Merge RPF and WPF pad ops structures v4l: vsp1: Pass a media request to the module configure operations v4l: vsp1: Use __vsp1_video_try_format to initialize format at init time v4l: vsp1: Support video device formats stored in requests v4l: vsp1: Pass display list explicitly to configure functions v4l: vsp1: Rename pipeline validate functions to pipeline build v4l: vsp1: Pass pipe pointer to entity configure functions v4l: vsp1: Store pipeline pointer in rwpf v4l: vsp1: Store pipeline-related state in pipeline structure v4l: vsp1: video: Reorder functions v4l: vsp1: Allocate pipelines on demand Sakari Ailus (3): media: Move graph mutex locking into media_device_setup_link() media: Add request field to struct media_link_desc media: Gather link configuration into media request Documentation/DocBook/media/v4l/common.xml | 2 + Documentation/DocBook/media/v4l/io.xml | 12 +- .../DocBook/media/v4l/media-controller.xml | 1 + .../DocBook/media/v4l/media-ioc-request-cmd.xml | 194 +++++++++ Documentation/DocBook/media/v4l/request-api.xml | 90 ++++ .../DocBook/media/v4l/vidioc-prepare-buf.xml | 9 + Documentation/DocBook/media/v4l/vidioc-qbuf.xml | 6 + .../DocBook/media/v4l/vidioc-subdev-g-fmt.xml | 33 +- .../media/v4l/vidioc-subdev-g-selection.xml | 65 ++- drivers/media/media-device.c | 346 ++++++++++++++- drivers/media/media-devnode.c | 19 +- drivers/media/media-entity.c | 11 +- drivers/media/platform/exynos4-is/media-dev.c | 6 +- drivers/media/platform/omap3isp/isp.c | 6 +- drivers/media/platform/vsp1/vsp1.h | 13 - drivers/media/platform/vsp1/vsp1_bru.c | 356 +++++++-------- drivers/media/platform/vsp1/vsp1_bru.h | 5 +- drivers/media/platform/vsp1/vsp1_dl.c | 341 +++++++++------ drivers/media/platform/vsp1/vsp1_dl.h | 41 +- drivers/media/platform/vsp1/vsp1_drm.c | 89 ++-- drivers/media/platform/vsp1/vsp1_drm.h | 5 +- drivers/media/platform/vsp1/vsp1_drv.c | 24 +- drivers/media/platform/vsp1/vsp1_entity.c | 199 +++++---- drivers/media/platform/vsp1/vsp1_entity.h | 54 ++- drivers/media/platform/vsp1/vsp1_hsit.c | 106 +++-- drivers/media/platform/vsp1/vsp1_lif.c | 149 ++++--- drivers/media/platform/vsp1/vsp1_lut.c | 115 ++--- drivers/media/platform/vsp1/vsp1_pipe.c | 74 +--- drivers/media/platform/vsp1/vsp1_pipe.h | 30 +- drivers/media/platform/vsp1/vsp1_rpf.c | 230 ++++------ drivers/media/platform/vsp1/vsp1_rwpf.c | 189 ++++++-- drivers/media/platform/vsp1/vsp1_rwpf.h | 68 +-- drivers/media/platform/vsp1/vsp1_sru.c | 207 +++++---- drivers/media/platform/vsp1/vsp1_sru.h | 2 + drivers/media/platform/vsp1/vsp1_uds.c | 211 ++++----- drivers/media/platform/vsp1/vsp1_uds.h | 3 +- drivers/media/platform/vsp1/vsp1_video.c | 483 ++++++++++++--------- drivers/media/platform/vsp1/vsp1_video.h | 2 - drivers/media/platform/vsp1/vsp1_wpf.c | 269 +++++------- drivers/media/usb/cpia2/cpia2_v4l.c | 1 + drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 4 +- drivers/media/v4l2-core/v4l2-ioctl.c | 125 +++++- drivers/media/v4l2-core/v4l2-subdev.c | 246 ++++++++--- drivers/media/v4l2-core/videobuf2-v4l2.c | 55 +++ drivers/staging/media/omap4iss/iss.c | 6 +- include/media/media-device.h | 65 ++- include/media/media-devnode.h | 18 +- include/media/media-entity.h | 24 + include/media/v4l2-dev.h | 13 + include/media/v4l2-subdev.h | 22 + include/media/videobuf2-core.h | 2 + include/media/videobuf2-v4l2.h | 6 + include/uapi/linux/media.h | 15 +- include/uapi/linux/v4l2-subdev.h | 11 +- include/uapi/linux/videodev2.h | 8 +- 55 files changed, 3021 insertions(+), 1665 deletions(-) create mode 100644 Documentation/DocBook/media/v4l/media-ioc-request-cmd.xml create mode 100644 Documentation/DocBook/media/v4l/request-api.xml -- Regards, Laurent Pinchart