Files
刘可亮 803cac77d5 V1.0.6
2024-09-03 11:16:08 +08:00

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__