mirror of
https://gitee.com/Vancouver2017/luban-lite.git
synced 2025-12-16 09:08:56 +00:00
243 lines
7.6 KiB
C
243 lines
7.6 KiB
C
/*
|
|
* Copyright (c) 2024, ArtInChip Technology Co., Ltd
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
*/
|
|
|
|
#ifndef __TP2825B_H__
|
|
#define __TP2825B_H__
|
|
|
|
#include "aic_common.h"
|
|
|
|
#define TP2825_VERSION_CODE 0x000008
|
|
|
|
enum {
|
|
TP2825B = 0x2825,
|
|
TP2850 = 0x2850,
|
|
TP2860 = 0x2860,
|
|
};
|
|
enum {
|
|
TP2802_1080P25 = 0x03,
|
|
TP2802_1080P30 = 0x02,
|
|
TP2802_720P25 = 0x05,
|
|
TP2802_720P30 = 0x04,
|
|
TP2802_720P50 = 0x01,
|
|
TP2802_720P60 = 0x00,
|
|
TP2802_SD = 0x06,
|
|
INVALID_FORMAT = 0x07,
|
|
TP2802_720P25V2 = 0x0D,
|
|
TP2802_720P30V2 = 0x0C,
|
|
TP2802_PAL = 0x08,
|
|
TP2802_NTSC = 0x09,
|
|
TP2802_3M18 = 0x20, //2048x1536@18.75 for TVI
|
|
TP2802_5M12 = 0x21, //2592x1944@12.5 for TVI
|
|
TP2802_4M15 = 0x22, //2688x1520@15 for TVI
|
|
TP2802_3M20 = 0x23, //2048x1536@20 for TVI
|
|
TP2802_4M12 = 0x24, //2688x1520@12.5 for TVI
|
|
TP2802_6M10 = 0x25, //3200x1800@10 for TVI
|
|
TP2802_QHD30 = 0x26, //2560x1440@30 for TVI/HDA/HDC
|
|
TP2802_QHD25 = 0x27, //2560x1440@25 for TVI/HDA/HDC
|
|
TP2802_QHD15 = 0x28, //2560x1440@15 for HDA
|
|
TP2802_QXGA18 = 0x29, //2048x1536@18 for HDA/TVI
|
|
TP2802_QXGA30 = 0x2A, //2048x1536@30 for HDA
|
|
TP2802_QXGA25 = 0x2B, //2048x1536@25 for HDA
|
|
TP2802_4M30 = 0x2C, //2688x1520@30 for TVI(for future)
|
|
TP2802_4M25 = 0x2D, //2688x1520@25 for TVI(for future)
|
|
TP2802_5M20 = 0x2E, //2592x1944@20 for TVI/HDA
|
|
TP2802_8M15 = 0x2f, //3840x2160@15 for TVI
|
|
TP2802_8M12 = 0x30, //3840x2160@12.5 for TVI
|
|
TP2802_1080P15 = 0x31, //1920x1080@15 for TVI
|
|
TP2802_1080P60 = 0x32, //1920x1080@60 for TVI
|
|
TP2802_960P30 = 0x33, //1280x960@30 for TVI
|
|
TP2802_1080P20 = 0x34, //1920x1080@20 for TVI
|
|
TP2802_1080P50 = 0x35, //1920x1080@50 for TVI
|
|
TP2802_720P14 = 0x36, //1280x720@14 for TVI
|
|
TP2802_720P30HDR = 0x37, //1280x720@30 for TVI
|
|
TP2802_6M20 = 0x38, //2960x1920@20 for CVI
|
|
TP2802_8M15V2 = 0x39, //3264x2448@15 for TVI
|
|
TP2802_5M20V2 = 0x3a, //2960x1664@20 for TVI
|
|
TP2802_8M7 = 0x3b, //3720x2160@7.5 for AHD
|
|
TP2802_3M20V2 = 0x3c, //2304x1296@20 for TVI
|
|
TP2802_1080P2750 = 0x3d, //1920x1080@27.5 for TVI
|
|
TP2802_1080P2700 = 0x3e, //1920x1080@27.5 for TVI
|
|
TP2802_1080P12 = 0x41, //1920x1080@12.5
|
|
TP2802_5M12V2 = 0x42, //2960x1664@12.5 for TVI
|
|
TP2802_960P25 = 0x43, //1280x960@25 for AHD
|
|
};
|
|
enum {
|
|
VIDEO_UNPLUG,
|
|
VIDEO_IN,
|
|
VIDEO_LOCKED,
|
|
VIDEO_UNLOCK
|
|
};
|
|
enum {
|
|
MUX656_8BIT, //Y/C-mux 4:2:2 8-bit with embedded sync
|
|
SEP656_8BIT, //Y/C-mux 4:2:2 8-bit with separate sync
|
|
EMB422_16BIT, //only TP2825B YCbCr 4:2:2 16-bit with embedded sync
|
|
SEP422_16BIT, //only TP2825B YCbCr 4:2:2 16-bit with separate sync
|
|
MIPI_2LANES, //only TP2850/TP2860
|
|
MIPI_1LANES, //only TP2860
|
|
};
|
|
enum {
|
|
VIDEO_PAGE = 0, //
|
|
MIPI_PAGE = 8
|
|
};
|
|
enum {
|
|
SCAN_DISABLE = 0,
|
|
SCAN_AUTO,
|
|
SCAN_TVI,
|
|
SCAN_HDA,
|
|
SCAN_HDC,
|
|
SCAN_MANUAL,
|
|
SCAN_TEST
|
|
};
|
|
enum {
|
|
STD_TVI,
|
|
STD_HDA,
|
|
STD_HDC,
|
|
STD_HDA_DEFAULT,
|
|
STD_HDC_DEFAULT
|
|
};
|
|
enum {
|
|
PTZ_TVI = 0,
|
|
PTZ_HDA_1080P = 1,
|
|
PTZ_HDA_720P = 2,
|
|
PTZ_HDA_CVBS = 3,
|
|
PTZ_HDC = 4,
|
|
PTZ_HDA_3M18 = 5, //HDA QXGA18
|
|
PTZ_HDA_3M25 = 6, //HDA QXGA25,QXGA30
|
|
PTZ_HDA_4M25 = 7, //HDA QHD25,QHD30,5M20
|
|
PTZ_HDA_4M15 = 8, //HDA QHD15,5M12.5
|
|
PTZ_HDC_QHD = 9, //HDC QHD25,QHD30
|
|
PTZ_HDC_FIFO = 10, //HDC 1080p,720p FIFO
|
|
PTZ_HDC_8M12 = 11, //HDC 8M12.5
|
|
PTZ_HDC_8M15 = 12, //HDC 8M15
|
|
PTZ_HDC_6M20 = 13 //HDC 6M20
|
|
};
|
|
enum {
|
|
PTZ_RX_TVI_CMD,
|
|
PTZ_RX_TVI_BURST,
|
|
PTZ_RX_ACP1,
|
|
PTZ_RX_ACP2,
|
|
PTZ_RX_ACP3,
|
|
PTZ_RX_TEST,
|
|
PTZ_RX_HDC1,
|
|
PTZ_RX_HDC2
|
|
};
|
|
enum {
|
|
PTZ_PIN_TXD = 0, //only for TP2825B
|
|
PTZ_PIN_PTZ1 = 1,
|
|
PTZ_PIN_PTZ2 = 2,
|
|
};
|
|
enum {
|
|
SINGLE_VIN1 = 0,
|
|
SINGLE_VIN2 = 1,
|
|
SINGLE_VIN3 = 2,
|
|
SINGLE_VIN4 = 3,
|
|
SINGLE_VIN5 = 4, //only for TP2825B
|
|
DIFF_VIN12 = 6,
|
|
DIFF_VIN34 = 7
|
|
};
|
|
|
|
#define FLAG_LOSS 0x80
|
|
#define FLAG_H_LOCKED 0x20
|
|
#define FLAG_HV_LOCKED 0x60
|
|
|
|
#define FLAG_HDC_MODE 0x80
|
|
#define FLAG_HALF_MODE 0x40
|
|
#define FLAG_MEGA_MODE 0x20
|
|
#define FLAG_HDA_MODE 0x10
|
|
|
|
#define CHANNELS_PER_CHIP 4
|
|
#define MAX_CHIPS 2
|
|
#define SUCCESS 0
|
|
#define FAILURE -1
|
|
|
|
#define BRIGHTNESS 0x10
|
|
#define CONTRAST 0x11
|
|
#define SATURATION 0x12
|
|
#define HUE 0x13
|
|
#define SHARPNESS 0x14
|
|
|
|
#define MAX_COUNT 0xffff
|
|
|
|
typedef struct _tp2802_register
|
|
{
|
|
unsigned char chip;
|
|
unsigned char ch;
|
|
unsigned int reg_addr;
|
|
unsigned int value;
|
|
} tp2802_register;
|
|
|
|
typedef struct _tp2802_work_mode
|
|
{
|
|
unsigned char chip;
|
|
unsigned char ch;
|
|
unsigned char mode;
|
|
} tp2802_work_mode;
|
|
|
|
typedef struct _tp2802_video_mode
|
|
{
|
|
unsigned char chip;
|
|
unsigned char ch;
|
|
unsigned char mode;
|
|
unsigned char std;
|
|
} tp2802_video_mode;
|
|
|
|
typedef struct _tp2802_video_loss
|
|
{
|
|
unsigned char chip;
|
|
unsigned char ch;
|
|
unsigned char is_lost;
|
|
} tp2802_video_loss;
|
|
|
|
typedef struct _tp2802_image_adjust
|
|
{
|
|
unsigned char chip;
|
|
unsigned char ch;
|
|
unsigned int hue;
|
|
unsigned int contrast;
|
|
unsigned int brightness;
|
|
unsigned int saturation;
|
|
unsigned int sharpness;
|
|
} tp2802_image_adjust;
|
|
|
|
typedef struct _tp2802_PTZ_data
|
|
{
|
|
unsigned char chip;
|
|
unsigned char ch;
|
|
unsigned char mode;
|
|
unsigned char data[128];
|
|
} tp2802_PTZ_data;
|
|
|
|
// IOCTL Definitions
|
|
#define TP2802_IOC_MAGIC 'v'
|
|
|
|
#define TP2802_READ_REG _IOWR(TP2802_IOC_MAGIC, 1, tp2802_register)
|
|
#define TP2802_WRITE_REG _IOW(TP2802_IOC_MAGIC, 2, tp2802_register)
|
|
#define TP2802_SET_VIDEO_MODE _IOW(TP2802_IOC_MAGIC, 3, tp2802_video_mode)
|
|
#define TP2802_GET_VIDEO_MODE _IOWR(TP2802_IOC_MAGIC, 4, tp2802_video_mode)
|
|
#define TP2802_GET_VIDEO_LOSS _IOWR(TP2802_IOC_MAGIC, 5, tp2802_video_loss)
|
|
#define TP2802_SET_IMAGE_ADJUST _IOW(TP2802_IOC_MAGIC, 6, tp2802_image_adjust)
|
|
#define TP2802_GET_IMAGE_ADJUST _IOWR(TP2802_IOC_MAGIC, 7, tp2802_image_adjust)
|
|
#define TP2802_SET_PTZ_DATA _IOW(TP2802_IOC_MAGIC, 8, tp2802_PTZ_data)
|
|
#define TP2802_GET_PTZ_DATA _IOWR(TP2802_IOC_MAGIC, 9, tp2802_PTZ_data)
|
|
#define TP2802_SET_SCAN_MODE _IOW(TP2802_IOC_MAGIC, 10, tp2802_work_mode)
|
|
#define TP2802_DUMP_REG _IOW(TP2802_IOC_MAGIC, 11, tp2802_register)
|
|
#define TP2802_FORCE_DETECT _IOW(TP2802_IOC_MAGIC, 12, tp2802_work_mode)
|
|
#define TP2802_SET_SAMPLE_RATE _IOW(TP2802_IOC_MAGIC, 13, tp2802_audio_samplerate)
|
|
#define TP2802_SET_AUDIO_PLAYBACK _IOW(TP2802_IOC_MAGIC, 14, tp2802_audio_playback)
|
|
#define TP2802_SET_AUDIO_DA_VOLUME _IOW(TP2802_IOC_MAGIC, 15, tp2802_audio_da_volume)
|
|
#define TP2802_SET_AUDIO_DA_MUTE _IOW(TP2802_IOC_MAGIC, 16, tp2802_audio_da_mute)
|
|
#define TP2802_SET_BURST_DATA _IOW(TP2802_IOC_MAGIC, 17, tp2802_PTZ_data)
|
|
#define TP2802_SET_VIDEO_INPUT _IOW(TP2802_IOC_MAGIC, 18, tp2802_register)
|
|
#define TP2802_GET_VIDEO_INPUT _IOW(TP2802_IOC_MAGIC, 19, tp2802_register)
|
|
#define TP2802_SET_PTZ_MODE _IOW(TP2802_IOC_MAGIC, 20, tp2802_PTZ_data)
|
|
#define TP2802_SET_RX_MODE _IOW(TP2802_IOC_MAGIC, 21, tp2802_PTZ_data)
|
|
|
|
#define TP2802_SET_FIFO_DATA _IOW(TP2802_IOC_MAGIC, 25, tp2802_PTZ_data)
|
|
#define TP2802_SET_FIFO_MODE _IOW(TP2802_IOC_MAGIC, 26, tp2802_PTZ_data)
|
|
|
|
#endif // end of __TP2825B_H__
|