linux/include/uapi/linux/uvcvideo.h

/* 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