On 20/10/2023 11:30, Shengjiu Wang wrote: > The Audio M2M class includes controls for audio memory-to-memory > use cases. The controls can be used for audio codecs, audio > preprocessing, audio postprocessing. > > Signed-off-by: Shengjiu Wang <shengjiu.wang@xxxxxxx> > --- > .../userspace-api/media/v4l/common.rst | 1 + > .../media/v4l/ext-ctrls-audio-m2m.rst | 21 +++++++++++++++++++ > .../media/v4l/vidioc-g-ext-ctrls.rst | 4 ++++ > drivers/media/v4l2-core/v4l2-ctrls-defs.c | 4 ++++ > include/uapi/linux/v4l2-controls.h | 4 ++++ > 5 files changed, 34 insertions(+) > create mode 100644 Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst > > diff --git a/Documentation/userspace-api/media/v4l/common.rst b/Documentation/userspace-api/media/v4l/common.rst > index ea0435182e44..d5366e96a596 100644 > --- a/Documentation/userspace-api/media/v4l/common.rst > +++ b/Documentation/userspace-api/media/v4l/common.rst > @@ -52,6 +52,7 @@ applicable to all devices. > ext-ctrls-fm-rx > ext-ctrls-detect > ext-ctrls-colorimetry > + ext-ctrls-audio-m2m > fourcc > format > planar-apis > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst > new file mode 100644 > index 000000000000..82d2ecedbfee > --- /dev/null > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst > @@ -0,0 +1,21 @@ > +.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later > + > +.. _audiom2m-controls: > + > +*************************** > +Audio M2M Control Reference > +*************************** > + > +The Audio M2M class includes controls for audio memory-to-memory > +use cases. The controls can be used for audio codecs, audio > +preprocessing, audio postprocessing. > + > +Audio M2M Control IDs > +----------------------- > + > +.. _audiom2m-control-id: > + > +``V4L2_CID_M2M_AUDIO_CLASS (class)`` > + The Audio M2M class descriptor. Calling > + :ref:`VIDIOC_QUERYCTRL` for this control will > + return a description of this control class. > diff --git a/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst b/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst > index f9f73530a6be..e8475f9fd2cf 100644 > --- a/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst > +++ b/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst > @@ -480,6 +480,10 @@ still cause this situation. > - 0xa50000 > - The class containing colorimetry controls. These controls are > described in :ref:`colorimetry-controls`. > + * - ``V4L2_CTRL_CLASS_M2M_AUDIO`` > + - 0xa60000 > + - The class containing audio m2m controls. These controls are > + described in :ref:`audiom2m-controls`. > > Return Value > ============ > diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c > index 8696eb1cdd61..2a85ea3dc92f 100644 > --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c > +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c > @@ -1242,6 +1242,9 @@ const char *v4l2_ctrl_get_name(u32 id) > case V4L2_CID_COLORIMETRY_CLASS: return "Colorimetry Controls"; > case V4L2_CID_COLORIMETRY_HDR10_CLL_INFO: return "HDR10 Content Light Info"; > case V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY: return "HDR10 Mastering Display"; > + > + /* Audio M2M controls */ > + case V4L2_CID_M2M_AUDIO_CLASS: return "Audio M2M Controls"; > default: > return NULL; > } > @@ -1451,6 +1454,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, > case V4L2_CID_DETECT_CLASS: > case V4L2_CID_CODEC_STATELESS_CLASS: > case V4L2_CID_COLORIMETRY_CLASS: > + case V4L2_CID_M2M_AUDIO_CLASS: > *type = V4L2_CTRL_TYPE_CTRL_CLASS; > /* You can neither read nor write these */ > *flags |= V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_WRITE_ONLY; > diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h > index 68db66d4aae8..eb0f0a76f867 100644 > --- a/include/uapi/linux/v4l2-controls.h > +++ b/include/uapi/linux/v4l2-controls.h > @@ -30,6 +30,7 @@ > #define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */ > #define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */ > #define V4L2_CTRL_CLASS_COLORIMETRY 0x00a50000 /* Colorimetry controls */ > +#define V4L2_CTRL_CLASS_M2M_AUDIO 0x00a60000 /* Audio M2M controls */ > > /* User-class control IDs */ > > @@ -3494,4 +3495,7 @@ struct v4l2_ctrl_av1_film_grain { > #define V4L2_CID_MPEG_MFC51_BASE V4L2_CID_CODEC_MFC51_BASE > #endif > > +#define V4L2_CID_M2M_AUDIO_CLASS_BASE (V4L2_CTRL_CLASS_M2M_AUDIO | 0x900) > +#define V4L2_CID_M2M_AUDIO_CLASS (V4L2_CTRL_CLASS_M2M_AUDIO | 1) > + This should be moved up to before the #ifndef __KERNEL__. Those backwards compatibility defines have to remain at the end of the header. Regards, Hans > #endif