455 lines
8.5 KiB
C
455 lines
8.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/********************************************************************************
|
|
*
|
|
* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved.
|
|
* Module : Jaguar1 Device Driver
|
|
* Description : common.h
|
|
* Author :
|
|
* Date :
|
|
* Version : Version 1.0
|
|
*
|
|
********************************************************************************
|
|
* History :
|
|
*
|
|
*
|
|
********************************************************************************/
|
|
#ifndef __COMMON_H__
|
|
#define __COMMON_H__
|
|
|
|
unsigned char jaguar1_I2CReadByte8(unsigned char devaddress, unsigned char address);
|
|
void jaguar1_I2CWriteByte8(unsigned char devaddress, unsigned char address, unsigned char data);
|
|
#define gpio_i2c_read jaguar1_I2CReadByte8
|
|
#define gpio_i2c_write jaguar1_I2CWriteByte8
|
|
|
|
#define DRIVER_VER "1.1.7"
|
|
|
|
#define JAGUAR1_MAX_CHAN_CNT 4
|
|
|
|
extern unsigned int jaguar1_i2c_addr[4];
|
|
|
|
#define HI_CHIPID_BASE 0x12050000
|
|
#define HI_CHIPID0 IO_ADDRESS(HI_CHIPID_BASE + 0xEEC)
|
|
#define HI_CHIPID1 IO_ADDRESS(HI_CHIPID_BASE + 0xEE8)
|
|
#define HI_CHIPID2 IO_ADDRESS(HI_CHIPID_BASE + 0xEE4)
|
|
#define HI_CHIPID3 IO_ADDRESS(HI_CHIPID_BASE + 0xEE0)
|
|
#define HW_REG(reg) *((volatile unsigned int *)(reg))
|
|
|
|
#define _SET_BIT(data,bit) ((data)|=(1<<(bit)))
|
|
#define _CLE_BIT(data,bit) ((data)&=(~(1<<(bit))))
|
|
|
|
#define JAGUAR1_BANK_CHANGE(bank) gpio_i2c_write(jaguar1_i2c_addr[0], 0xFF, bank );
|
|
|
|
#define PORTA 0x00
|
|
#define PORTB 0x01
|
|
#define PORTC 0x02
|
|
#define PORTD 0x03
|
|
#define PORTAB 0x04
|
|
#define PORTCD 0x05
|
|
|
|
#define FUNC_ON 0x01
|
|
#define FUNC_OFF 0x00
|
|
|
|
#define BANK_0 0x00
|
|
#define BANK_1 0x01
|
|
#define BANK_2 0x02
|
|
#define BANK_3 0x03
|
|
#define BANK_4 0x04
|
|
#define BANK_5 0x05
|
|
#define BANK_A 0x0A
|
|
#define BANK_B 0x0B
|
|
#define BANK_11 0x11
|
|
#define BANK_13 0x13
|
|
#define BANK_20 0x20
|
|
#define BANK_21 0x21
|
|
#define BANK_22 0x22
|
|
|
|
|
|
typedef struct _decoder_get_information_str
|
|
{
|
|
unsigned char chip_id[4];
|
|
unsigned char chip_rev[4];
|
|
unsigned char chip_addr[4];
|
|
|
|
unsigned char Total_Port_Num;
|
|
unsigned char Total_Chip_Cnt;
|
|
|
|
}decoder_get_information_str;
|
|
|
|
typedef struct _decoder_dev_ch_info_s
|
|
{
|
|
unsigned char ch;
|
|
unsigned char devnum;
|
|
unsigned char fmt_def;
|
|
}decoder_dev_ch_info_s;
|
|
|
|
|
|
typedef enum NC_FORMAT_FPS
|
|
{
|
|
FMT_FPS_UNKNOWN = 0,
|
|
FMT_NT = 1,
|
|
FMT_PAL,
|
|
FMT_12_5P,
|
|
FMT_7_5P,
|
|
FMT_30P,
|
|
FMT_25P,
|
|
FMT_50P,
|
|
FMT_60P,
|
|
FMT_15P,
|
|
FMT_18P,
|
|
FMT_18_75P,
|
|
FMT_20P,
|
|
|
|
FMT_FPS_MAX,
|
|
|
|
} NC_FORMAT_FPS;
|
|
|
|
//#define FMT_AUTO (-1)
|
|
|
|
typedef enum NC_FORMAT_STANDARD
|
|
{
|
|
FMT_STD_UNKNOWN = 0,
|
|
FMT_SD,
|
|
FMT_AHD20,
|
|
FMT_AHD30,
|
|
FMT_TVI,
|
|
FMT_CVI,
|
|
|
|
FMT_AUTO, // FIXME
|
|
|
|
FMT_STD_MAX,
|
|
|
|
} NC_FORMAT_STANDARD;
|
|
|
|
|
|
typedef enum NC_FORMAT_RESOLUTION
|
|
{
|
|
FMT_RESOL_UNKNOWN = 0,
|
|
FMT_SH720,
|
|
FMT_H960,
|
|
FMT_H1280,
|
|
FMT_H1440,
|
|
FMT_H960_EX,
|
|
FMT_H960_2EX,
|
|
FMT_H960_Btype_2EX,
|
|
FMT_720P,
|
|
FMT_720P_EX,
|
|
FMT_720P_Btype,
|
|
FMT_720P_Btype_EX,
|
|
FMT_1080P,
|
|
FMT_3M,
|
|
FMT_4M,
|
|
FMT_5M,
|
|
FMT_5_3M,
|
|
FMT_6M,
|
|
FMT_8M_X,
|
|
FMT_8M,
|
|
FMT_960P,
|
|
|
|
FMT_H960_Btype_2EX_SP,
|
|
FMT_720P_Btype_EX_SP,
|
|
|
|
FMT_RESOL_MAX,
|
|
} NC_FORMAT_RESOLUTION;
|
|
|
|
|
|
typedef enum NC_VIVO_CH_FORMATDEF
|
|
{
|
|
NC_VIVO_CH_FORMATDEF_UNKNOWN = 0,
|
|
NC_VIVO_CH_FORMATDEF_AUTO,
|
|
|
|
AHD20_SD_H960_NT,
|
|
AHD20_SD_H960_PAL,
|
|
AHD20_SD_SH720_NT,
|
|
AHD20_SD_SH720_PAL,
|
|
AHD20_SD_H1280_NT,
|
|
AHD20_SD_H1280_PAL,
|
|
AHD20_SD_H1440_NT,
|
|
AHD20_SD_H1440_PAL,
|
|
AHD20_SD_H960_EX_NT,
|
|
AHD20_SD_H960_EX_PAL,
|
|
AHD20_SD_H960_2EX_NT,
|
|
AHD20_SD_H960_2EX_PAL,
|
|
AHD20_SD_H960_2EX_Btype_NT,
|
|
AHD20_SD_H960_2EX_Btype_PAL,
|
|
AHD20_1080P_60P, // For Test
|
|
AHD20_1080P_50P, // For Test
|
|
AHD20_1080P_30P,
|
|
AHD20_1080P_25P,
|
|
AHD20_720P_60P,
|
|
AHD20_720P_50P,
|
|
AHD20_720P_30P,
|
|
AHD20_720P_25P,
|
|
AHD20_720P_30P_EX,
|
|
AHD20_720P_25P_EX,
|
|
AHD20_720P_30P_EX_Btype,
|
|
AHD20_720P_25P_EX_Btype,
|
|
AHD20_720P_960P_30P,
|
|
AHD20_720P_960P_25P,
|
|
|
|
AHD30_4M_30P,
|
|
AHD30_4M_25P,
|
|
AHD30_4M_15P,
|
|
AHD30_3M_30P,
|
|
AHD30_3M_25P,
|
|
AHD30_3M_18P,
|
|
AHD30_5M_12_5P,
|
|
AHD30_5M_20P,
|
|
AHD30_5_3M_20P,
|
|
AHD30_6M_18P,
|
|
AHD30_6M_20P,
|
|
AHD30_8M_X_30P,
|
|
AHD30_8M_X_25P,
|
|
AHD30_8M_7_5P,
|
|
AHD30_8M_12_5P,
|
|
AHD30_8M_15P,
|
|
|
|
TVI_FHD_30P,
|
|
TVI_FHD_25P,
|
|
TVI_HD_60P,
|
|
TVI_HD_50P,
|
|
TVI_HD_30P,
|
|
TVI_HD_25P,
|
|
TVI_HD_30P_EX,
|
|
TVI_HD_25P_EX,
|
|
TVI_HD_B_30P,
|
|
TVI_HD_B_25P,
|
|
TVI_HD_B_30P_EX,
|
|
TVI_HD_B_25P_EX,
|
|
TVI_3M_18P,
|
|
TVI_5M_12_5P,
|
|
TVI_4M_30P,
|
|
TVI_4M_25P,
|
|
TVI_4M_15P,
|
|
|
|
CVI_FHD_30P,
|
|
CVI_FHD_25P,
|
|
CVI_HD_60P,
|
|
CVI_HD_50P,
|
|
CVI_HD_30P,
|
|
CVI_HD_25P,
|
|
CVI_HD_30P_EX,
|
|
CVI_HD_25P_EX,
|
|
CVI_4M_30P,
|
|
CVI_4M_25P,
|
|
CVI_8M_15P,
|
|
CVI_8M_12_5P,
|
|
|
|
AHD20_SD_H960_2EX_Btype_SP_NT,
|
|
AHD20_SD_H960_2EX_Btype_SP_PAL,
|
|
|
|
AHD20_720P_30P_EX_Btype_SP,
|
|
AHD20_720P_25P_EX_Btype_SP,
|
|
|
|
NC_VIVO_CH_FORMATDEF_MAX,
|
|
|
|
} NC_VIVO_CH_FORMATDEF;
|
|
|
|
typedef enum NC_OUTPUT_MUX_MODE
|
|
{
|
|
NC_MX_MUX1 = 0,
|
|
NC_MX_MUX2,
|
|
NC_MX_MUX4,
|
|
} NC_OUTPUT_MUX_MODE;
|
|
|
|
typedef enum NC_OUTPUT_INTERFACE
|
|
{
|
|
NC_OI_BT656 = 0, /* ITU-R BT.656 YUV4:2:2 */
|
|
NC_OI_BT601, /* ITU-R BT.601 YUV4:2:2 */
|
|
NC_OI_DIGITAL_CAMERA, /* digatal camera mode */
|
|
NC_OI_BT1120_STANDARD, /* BT.1120 progressive mode */
|
|
NC_OI_BT1120_INTERLEAVED, /* BT.1120 interstage mode */
|
|
} NC_OUTPUT_INTERFACE;
|
|
|
|
typedef enum NC_OUTPUT_EDGE
|
|
{
|
|
NC_OE_SINGLE_UP = 0, /* single-edge mode and in rising edge */
|
|
NC_OE_SINGLE_DOWN, /* single-edge mode and in falling edge */
|
|
NC_OE_DOUBLE ,
|
|
} NC_OUTPUT_EDGE;
|
|
|
|
|
|
|
|
typedef enum NC_ANALOG_INPUT
|
|
{
|
|
SINGLE_ENDED = 0,
|
|
DIFFERENTIAL,
|
|
} NC_ANALOG_INPUT;
|
|
|
|
typedef enum NC_CABLE
|
|
{
|
|
CABLE_A = 0,
|
|
CABLE_B,
|
|
CABLE_C,
|
|
CABLE_D,
|
|
} NC_CABLE;
|
|
|
|
typedef enum NC_STAGE
|
|
{
|
|
STAGE_0 = 0,
|
|
STAGE_1,
|
|
STAGE_2,
|
|
STAGE_3,
|
|
STAGE_4,
|
|
STAGE_5,
|
|
} NC_STAGE;
|
|
|
|
typedef enum NC_JAGUAR1_EQ
|
|
{
|
|
NC_EQ_SETTING_FMT_UNKNOWN = 0,
|
|
|
|
AHD20_SD_H720_NT_SINGLE_ENDED,
|
|
AHD20_SD_H720_NT_DIFFERENTIAL,
|
|
AHD20_SD_H720_PAL_SINGLE_ENDED,
|
|
AHD20_SD_H720_PAL_DIFFERENTIAL,
|
|
|
|
AHD20_SD_H960_2EX_Btype_NT_SINGLE_ENDED,
|
|
AHD20_SD_H960_2EX_Btype_NT_DIFFERENTIAL,
|
|
AHD20_SD_H960_2EX_Btype_PAL_SINGLE_ENDED,
|
|
AHD20_SD_H960_2EX_Btype_PAL_DIFFERENTIAL,
|
|
|
|
AHD20_SD_H1440_NT_SINGLE_ENDED,
|
|
AHD20_SD_H1440_NT_DIFFERENTIAL,
|
|
AHD20_SD_H1440_PAL_SINGLE_ENDED,
|
|
AHD20_SD_H1440_PAL_DIFFERENTIAL,
|
|
|
|
AHD20_1080P_30P_SINGLE_ENDED,
|
|
AHD20_1080P_30P_DIFFERENTIAL,
|
|
AHD20_1080P_25P_SINGLE_ENDED,
|
|
AHD20_1080P_25P_DIFFERENTIAL,
|
|
|
|
AHD20_720P_60P_SINGLE_ENDED,
|
|
AHD20_720P_60P_DIFFERENTIAL,
|
|
AHD20_720P_50P_SINGLE_ENDED,
|
|
AHD20_720P_50P_DIFFERENTIAL,
|
|
|
|
AHD20_720P_30P_SINGLE_ENDED,
|
|
AHD20_720P_30P_DIFFERENTIAL,
|
|
AHD20_720P_25P_SINGLE_ENDED,
|
|
AHD20_720P_25P_DIFFERENTIAL,
|
|
|
|
AHD20_720P_30P_EX_SINGLE_ENDED,
|
|
AHD20_720P_30P_EX_DIFFERENTIAL,
|
|
AHD20_720P_25P_EX_SINGLE_ENDED,
|
|
AHD20_720P_25P_EX_DIFFERENTIAL,
|
|
|
|
AHD20_720P_30P_EX_Btype_SINGLE_ENDED,
|
|
AHD20_720P_30P_EX_Btype_DIFFERENTIAL,
|
|
AHD20_720P_25P_EX_Btype_SINGLE_ENDED,
|
|
AHD20_720P_25P_EX_Btype_DIFFERENTIAL,
|
|
|
|
AHD20_960P_30P_SINGLE_ENDED,
|
|
AHD20_960P_30P_DIFFERENTIAL,
|
|
AHD20_960P_25P_SINGLE_ENDED,
|
|
AHD20_960P_25P_DIFFERENTIAL,
|
|
|
|
TVI_FHD_30P_SINGLE_ENDED,
|
|
TVI_FHD_30P_DIFFERENTIAL,
|
|
TVI_FHD_25P_SINGLE_ENDED,
|
|
TVI_FHD_25P_DIFFERENTIAL,
|
|
|
|
TVI_HD_60P_SINGLE_ENDED,
|
|
TVI_HD_60P_DIFFERENTIAL,
|
|
TVI_HD_50P_SINGLE_ENDED,
|
|
TVI_HD_50P_DIFFERENTIAL,
|
|
|
|
TVI_HD_30P_SINGLE_ENDED,
|
|
TVI_HD_30P_DIFFERENTIAL,
|
|
TVI_HD_25P_SINGLE_ENDED,
|
|
TVI_HD_25P_DIFFERENTIAL,
|
|
|
|
TVI_HD_30P_EX_SINGLE_ENDED,
|
|
TVI_HD_30P_EX_DIFFERENTIAL,
|
|
TVI_HD_25P_EX_SINGLE_ENDED,
|
|
TVI_HD_25P_EX_DIFFERENTIAL,
|
|
|
|
TVI_HD_B_30P_SINGLE_ENDED,
|
|
TVI_HD_B_30P_DIFFERENTIAL,
|
|
TVI_HD_B_25P_SINGLE_ENDED,
|
|
TVI_HD_B_25P_DIFFERENTIAL,
|
|
|
|
TVI_HD_B_30P_EX_SINGLE_ENDED,
|
|
TVI_HD_B_30P_EX_DIFFERENTIAL,
|
|
TVI_HD_B_25P_EX_SINGLE_ENDED,
|
|
TVI_HD_B_25P_EX_DIFFERENTIAL,
|
|
|
|
CVI_FHD_30P_SINGLE_ENDED,
|
|
CVI_FHD_30P_DIFFERENTIAL,
|
|
CVI_FHD_25P_SINGLE_ENDED,
|
|
CVI_FHD_25P_DIFFERENTIAL,
|
|
|
|
CVI_HD_60P_SINGLE_ENDED,
|
|
CVI_HD_60P_DIFFERENTIAL,
|
|
CVI_HD_50P_SINGLE_ENDED,
|
|
CVI_HD_50P_DIFFERENTIAL,
|
|
|
|
CVI_HD_30P_SINGLE_ENDED,
|
|
CVI_HD_30P_DIFFERENTIAL,
|
|
CVI_HD_25P_SINGLE_ENDED,
|
|
CVI_HD_25P_DIFFERENTIAL,
|
|
|
|
CVI_HD_30P_EX_SINGLE_ENDED,
|
|
CVI_HD_30P_EX_DIFFERENTIAL,
|
|
CVI_HD_25P_EX_SINGLE_ENDED,
|
|
CVI_HD_25P_EX_DIFFERENTIAL,
|
|
|
|
NC_EQ_SETTING_FMT_MAX,
|
|
|
|
|
|
}NC_JAGUAR1_EQ;
|
|
|
|
typedef enum NC_D2S_OUTPUT_INTERFACE
|
|
{
|
|
DISABLE = 0,
|
|
YUV_422,
|
|
YUV_420,
|
|
YUV_420_LEGACY,
|
|
} NC_D2S_OUTPUT_INTERFACE;
|
|
|
|
typedef struct _NC_DEOCDER_SET_STR
|
|
{
|
|
NC_VIVO_CH_FORMATDEF FmtDef;
|
|
NC_FORMAT_STANDARD fmt_std;
|
|
NC_FORMAT_RESOLUTION fmt_res;
|
|
NC_FORMAT_FPS fmt_fps;
|
|
NC_ANALOG_INPUT input;
|
|
NC_D2S_OUTPUT_INTERFACE interface;
|
|
}NC_DEOCDER_SET_STR;
|
|
|
|
#define UNUSED(x) ((void)(x))
|
|
|
|
#if 0
|
|
#define dbg_printk(...) _kernel_dbg_printk( __VA_ARGS__)
|
|
|
|
static void _kernel_dbg_printk(const char* s, ...)
|
|
{
|
|
unsigned char buffer[128];
|
|
char *pS = buffer;
|
|
|
|
va_list args;
|
|
va_start(args, s);
|
|
vsprintf(buffer, s, args);
|
|
va_end(args);
|
|
|
|
|
|
while(*pS) { if( *pS == '\n' ) *pS= ' '; pS++; }
|
|
|
|
printk("\033[33m\033[1m [KERNEL] \033[0m:\033[32m\033[1m %s \033[0m\n", buffer);
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|