mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 16:44:10 +08:00
10905d70d7
Add initial media request support: 1) Add MEDIA_IOC_REQUEST_ALLOC ioctl support to media-device.c 2) Add struct media_request to store request objects. 3) Add struct media_request_object to represent a request object. 4) Add MEDIA_REQUEST_IOC_QUEUE/REINIT ioctl support. Basic lifecycle: the application allocates a request, adds objects to it, queues the request, polls until it is completed and can then read the final values of the objects at the time of completion. When it closes the file descriptor the request memory will be freed (actually, when the last user of that request releases the request). Drivers will bind an object to a request (the 'adds objects to it' phase), when MEDIA_REQUEST_IOC_QUEUE is called the request is validated (req_validate op), then queued (the req_queue op). When done with an object it can either be unbound from the request (e.g. when the driver has finished with a vb2 buffer) or marked as completed (e.g. for controls associated with a buffer). When all objects in the request are completed (or unbound), then the request fd will signal an exception (poll). Co-developed-by: Sakari Ailus <sakari.ailus@linux.intel.com> Co-developed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Co-developed-by: Alexandre Courbot <acourbot@chromium.org> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
38 lines
817 B
Makefile
38 lines
817 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for the kernel multimedia device drivers.
|
|
#
|
|
|
|
media-objs := media-device.o media-devnode.o media-entity.o \
|
|
media-request.o
|
|
|
|
#
|
|
# I2C drivers should come before other drivers, otherwise they'll fail
|
|
# when compiled as builtin drivers
|
|
#
|
|
obj-y += i2c/ tuners/
|
|
obj-$(CONFIG_DVB_CORE) += dvb-frontends/
|
|
|
|
#
|
|
# Now, let's link-in the media core
|
|
#
|
|
ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
|
|
obj-$(CONFIG_MEDIA_SUPPORT) += media.o
|
|
endif
|
|
|
|
obj-$(CONFIG_VIDEO_DEV) += v4l2-core/
|
|
obj-$(CONFIG_DVB_CORE) += dvb-core/
|
|
|
|
# There are both core and drivers at RC subtree - merge before drivers
|
|
obj-y += rc/
|
|
|
|
obj-$(CONFIG_CEC_CORE) += cec/
|
|
|
|
#
|
|
# Finally, merge the drivers that require the core
|
|
#
|
|
|
|
obj-y += common/ platform/ pci/ usb/ mmc/ firewire/ spi/
|
|
obj-$(CONFIG_VIDEO_DEV) += radio/
|
|
|