/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef __LINUX_UVCVIDEO_H_ #define __LINUX_UVCVIDEO_H_ #include <linux/ioctl.h> #include <linux/types.h> /* * Dynamic controls */ /* Data types for UVC control data */ #define UVC_CTRL_DATA_TYPE_RAW … #define UVC_CTRL_DATA_TYPE_SIGNED … #define UVC_CTRL_DATA_TYPE_UNSIGNED … #define UVC_CTRL_DATA_TYPE_BOOLEAN … #define UVC_CTRL_DATA_TYPE_ENUM … #define UVC_CTRL_DATA_TYPE_BITMASK … /* Control flags */ #define UVC_CTRL_FLAG_SET_CUR … #define UVC_CTRL_FLAG_GET_CUR … #define UVC_CTRL_FLAG_GET_MIN … #define UVC_CTRL_FLAG_GET_MAX … #define UVC_CTRL_FLAG_GET_RES … #define UVC_CTRL_FLAG_GET_DEF … /* Control should be saved at suspend and restored at resume. */ #define UVC_CTRL_FLAG_RESTORE … /* Control can be updated by the camera. */ #define UVC_CTRL_FLAG_AUTO_UPDATE … /* Control supports asynchronous reporting */ #define UVC_CTRL_FLAG_ASYNCHRONOUS … #define UVC_CTRL_FLAG_GET_RANGE … #define UVC_MENU_NAME_LEN … struct uvc_menu_info { … }; struct uvc_xu_control_mapping { … }; struct uvc_xu_control_query { … }; #define UVCIOC_CTRL_MAP … #define UVCIOC_CTRL_QUERY … /* * Metadata node */ /** * struct uvc_meta_buf - metadata buffer building block * @ns: system timestamp of the payload in nanoseconds * @sof: USB Frame Number * @length: length of the payload header * @flags: payload header flags * @buf: optional device-specific header data * * UVC metadata nodes fill buffers with possibly multiple instances of this * struct. The first two fields are added by the driver, they can be used for * clock synchronisation. The rest is an exact copy of a UVC payload header. * Only complete objects with complete buffers are included. Therefore it's * always sizeof(meta->ns) + sizeof(meta->sof) + meta->length bytes large. */ struct uvc_meta_buf { … } __packed; #endif