android13/external/uvc-gadget/include/uvc-ctrl.h

104 lines
2.0 KiB
C
Executable File

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* uvc-gadget control API
*
* Copyright (C) 2020 Rockchip Electronics Co., Ltd.
*
* Author: Bin Yang <yangbin@rock-chips.com>
*/
#ifndef __UVC_CTRL_H__
#define __UVC_CTRL_H__
#include <stdint.h>
#include <linux/usb/video.h>
#ifdef __cplusplus
extern "C" {
#endif
#define UVC_UNIT_ID_ERR 0
#define UVC_UNIT_ID_CT 1
#define UVC_UNIT_ID_PU 2
#define UVC_UNIT_ID_XU 6
#define U_CUR 0
#define U_MIN 1
#define U_MAX 2
#define U_DEF 3
#define U_RES 4
#define U_SIZE 5
struct uvc_request_ct {
__u8 scan_mode[U_SIZE];
__u8 ae_mode[U_SIZE];
__u8 ae_priority[U_SIZE];
__u32 exposure_abs[U_SIZE];
__u8 exposure_rel[U_SIZE];
__u16 focus_abs[U_SIZE];
__u16 focus_rel[U_SIZE];
__u8 focus_auto[U_SIZE];
__u16 iris_abs[U_SIZE];
__u16 iris_rel[U_SIZE];
__u16 zoom_abs[U_SIZE];
__u8 zoom_rel[U_SIZE][3];
__u8 pantilt_abs[U_SIZE][8];
__u8 pantilt_rel[U_SIZE][4];
__u16 roll_abs[U_SIZE];
__u16 roll_rel[U_SIZE];
__u8 privacy[U_SIZE];
};
struct uvc_request_pu {
__u16 backlight[U_SIZE];
__u16 brightness[U_SIZE];
__u16 contrast[U_SIZE];
__u16 gain[U_SIZE];
__u8 pl_freq[U_SIZE];
__u16 hue[U_SIZE];
__u16 saturation[U_SIZE];
__u16 sharpness[U_SIZE];
__u16 gamma[U_SIZE];
__u16 wb_temp[U_SIZE];
__u8 wb_temp_auto[U_SIZE];
__u32 wb_component[U_SIZE];
__u8 wb_component_auto[U_SIZE];
__u16 digital_mult[U_SIZE];
__u16 digital_mult_limit[U_SIZE];
__u8 hue_auto[U_SIZE];
__u8 analog_video[U_SIZE];
__u8 analog_lock[U_SIZE];
};
struct uvc_request_xu {
__u8 data[60];
};
enum uvc_req_dir {
USB_TRAN_IN = 0,
USB_TRAN_OUT,
USB_TRAN_INFO
};
struct uvc_request_param {
__u8 entity;
__u8 req;
__u8 cs;
__u8 len;
__u8 get_len;
enum uvc_req_dir dir;
};
typedef int(*uvc_ctrl_func_t)(struct uvc_source *,
struct uvc_request_param *, void *);
int uvc_control_func_register(struct uvc_source *src, uint8_t entity_id,
uvc_ctrl_func_t func);
void uvc_control_func_unregister(struct uvc_source *src);
#ifdef __cplusplus
}
#endif
#endif /* __UVC_CTRL_H__ */