media: Add a Kconfig option for the Request API
Subsystems (5)
PATCH v2 1/1 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.
---
since v1:
- Write out the #ifdef's in request creation
- The option's functionality was reversed in request creation, fixed that
drivers/media/Kconfig | 13 +++++++++++++ drivers/media/common/videobuf2/videobuf2-v4l2.c | 2 ++ drivers/media/media-device.c | 4 ++++ drivers/staging/media/sunxi/cedrus/Kconfig | 1 + 4 files changed, 20 insertions(+)
drivers/media/Kconfig +13 -0
@@ -110,6 +110,19 @@ config MEDIA_CONTROLLER_DVB 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 # Only enables if one of the V4L2 types (ATV, webcam, radio) is selected
drivers/media/common/videobuf2/videobuf2-v4l2.c +2 -0
@@ -630,8 +630,10 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps) *caps |=V4L2_BUF_CAP_SUPPORTS_USERPTR ;if (q->io_modes &VB2_DMABUF ) *caps |=V4L2_BUF_CAP_SUPPORTS_DMABUF ; +#ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API if (q->supports_requests) *caps |=V4L2_BUF_CAP_SUPPORTS_REQUESTS ; +#endif }int vb2_reqbufs (struct vb2_queue *q,struct v4l2_requestbuffers *req)
drivers/media/media-device.c +4 -0
@@ -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,int *alloc_fd) { +#ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API if (!mdev->ops || !mdev->ops->req_validate || !mdev->ops->req_queue)return -ENOTTY ;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)
drivers/staging/media/sunxi/cedrus/Kconfig +1 -0
@@ -3,6 +3,7 @@ config VIDEO_SUNXI_CEDRUS depends on VIDEO_DEV && VIDEO_V4L2 && MEDIA_CONTROLLER depends on HAS_DMA depends on OF + depends on MEDIA_CONTROLLER_REQUEST_API select SUNXI_SRAM select VIDEOBUF2_DMA_CONTIG select V4L2_MEM2MEM_DEV
Signature · 1 line
2.11.0
Mauro Carvalho Chehab
maintainerEm Wed, 5 Dec 2018 19:23:54 +0200
Sakari Ailus <[email protected]> escreveu:
Quoted 4 lines
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.
Quoted 8 lines
Add a
Kconfigoption 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
Kconfigoption as well.Signed-off-by Sakari Ailus <[email protected]>Acked-by Hans Verkuil <[email protected]>
Looks good to me. I'll apply it.
Quoted 76 lines
---
since v1:- Write out the #ifdef's in request creation
- The option's functionality was reversed in request creation, fixed that
drivers/media/Kconfig | 13 +++++++++++++ drivers/media/common/videobuf2/videobuf2-v4l2.c | 2 ++ drivers/media/media-device.c | 4 ++++ drivers/staging/media/sunxi/cedrus/Kconfig | 1 + 4 files changed, 20 insertions(+)drivers/media/Kconfig +13
-0@@ -110,6 +110,19 @@ config MEDIA_CONTROLLER_DVB 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 # Only enables if one of the V4L2 types (ATV, webcam, radio) is selecteddrivers/media/common/videobuf2/videobuf2-v4l2.c +2
-0@@ -630,8 +630,10 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps) *caps |=V4L2_BUF_CAP_SUPPORTS_USERPTR ;if (q->io_modes &VB2_DMABUF ) *caps |=V4L2_BUF_CAP_SUPPORTS_DMABUF ; +#ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API if (q->supports_requests) *caps |=V4L2_BUF_CAP_SUPPORTS_REQUESTS ; +#endif }int vb2_reqbufs (struct vb2_queue *q,struct v4l2_requestbuffers *req)drivers/media/media-device.c +4
-0@@ -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,int *alloc_fd) { +#ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API if (!mdev->ops || !mdev->ops->req_validate || !mdev->ops->req_queue)return -ENOTTY ;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)drivers/staging/media/sunxi/cedrus/Kconfig +0
-0
drivers/staging/media/sunxi/cedrus/Kconfig config VIDEO_SUNXI_CEDRUS · line 9
Quoted 7 lines
drivers/staging/media/sunxi/cedrus/Kconfig +1
-0@@ -3,6 +3,7 @@ config VIDEO_SUNXI_CEDRUS depends on VIDEO_DEV && VIDEO_V4L2 && MEDIA_CONTROLLER depends on HAS_DMA depends on OF + depends on MEDIA_CONTROLLER_REQUEST_API select SUNXI_SRAM select VIDEOBUF2_DMA_CONTIG select V4L2_MEM2MEM_DEV
Thanks,
Mauro