Commit 078ab3ea authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab

media: Add a Kconfig option for the Request API

The Request API is now merged to the kernel but the confidence on the
stability of that API is not great, especially regarding the interaction
with V4L2.

Add a Kconfig option for the API, with a scary-looking warning.

The patch itself disables request creation as well as does not advertise
them as buffer flags. The driver requiring requests (cedrus) now depends
on the Kconfig option as well.
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent cd9fd6f1
...@@ -110,6 +110,19 @@ config MEDIA_CONTROLLER_DVB ...@@ -110,6 +110,19 @@ config MEDIA_CONTROLLER_DVB
This is currently experimental. This is currently experimental.
config MEDIA_CONTROLLER_REQUEST_API
bool "Enable Media controller Request API (EXPERIMENTAL)"
depends on MEDIA_CONTROLLER && STAGING_MEDIA
default n
---help---
DO NOT ENABLE THIS OPTION UNLESS YOU KNOW WHAT YOU'RE DOING.
This option enables the Request API for the Media controller and V4L2
interfaces. It is currently needed by a few stateless codec drivers.
There is currently no intention to provide API or ABI stability for
this new API as of yet.
# #
# Video4Linux support # Video4Linux support
# Only enables if one of the V4L2 types (ATV, webcam, radio) is selected # Only enables if one of the V4L2 types (ATV, webcam, radio) is selected
......
...@@ -634,8 +634,10 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps) ...@@ -634,8 +634,10 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps)
*caps |= V4L2_BUF_CAP_SUPPORTS_USERPTR; *caps |= V4L2_BUF_CAP_SUPPORTS_USERPTR;
if (q->io_modes & VB2_DMABUF) if (q->io_modes & VB2_DMABUF)
*caps |= V4L2_BUF_CAP_SUPPORTS_DMABUF; *caps |= V4L2_BUF_CAP_SUPPORTS_DMABUF;
#ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API
if (q->supports_requests) if (q->supports_requests)
*caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS; *caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS;
#endif
} }
int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req) int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
......
...@@ -381,10 +381,14 @@ static long media_device_get_topology(struct media_device *mdev, void *arg) ...@@ -381,10 +381,14 @@ static long media_device_get_topology(struct media_device *mdev, void *arg)
static long media_device_request_alloc(struct media_device *mdev, static long media_device_request_alloc(struct media_device *mdev,
int *alloc_fd) int *alloc_fd)
{ {
#ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API
if (!mdev->ops || !mdev->ops->req_validate || !mdev->ops->req_queue) if (!mdev->ops || !mdev->ops->req_validate || !mdev->ops->req_queue)
return -ENOTTY; return -ENOTTY;
return media_request_alloc(mdev, alloc_fd); return media_request_alloc(mdev, alloc_fd);
#else
return -ENOTTY;
#endif
} }
static long copy_arg_from_user(void *karg, void __user *uarg, unsigned int cmd) static long copy_arg_from_user(void *karg, void __user *uarg, unsigned int cmd)
......
...@@ -3,6 +3,7 @@ config VIDEO_SUNXI_CEDRUS ...@@ -3,6 +3,7 @@ config VIDEO_SUNXI_CEDRUS
depends on VIDEO_DEV && VIDEO_V4L2 && MEDIA_CONTROLLER depends on VIDEO_DEV && VIDEO_V4L2 && MEDIA_CONTROLLER
depends on HAS_DMA depends on HAS_DMA
depends on OF depends on OF
depends on MEDIA_CONTROLLER_REQUEST_API
select SUNXI_SRAM select SUNXI_SRAM
select VIDEOBUF2_DMA_CONTIG select VIDEOBUF2_DMA_CONTIG
select V4L2_MEM2MEM_DEV select V4L2_MEM2MEM_DEV
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment