104 lines
2.0 KiB
C
Executable File
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__ */
|