229 lines
7.8 KiB
C
229 lines
7.8 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/********************************************************************************
|
|
*
|
|
* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved.
|
|
* Module : video_eq.h
|
|
* Description :
|
|
* Author :
|
|
* Date :
|
|
* Version : Version 1.0
|
|
*
|
|
********************************************************************************
|
|
* History :
|
|
*
|
|
*
|
|
********************************************************************************/
|
|
#ifndef _RAPTOR3_VIDEO_EQ_H_
|
|
#define _RAPTOR3_VIDEO_EQ_H_
|
|
|
|
#include "nvp6158_common.h"
|
|
#include "nvp6158_video_auto_detect.h"
|
|
///////////////////////////////
|
|
typedef enum ACC_DEBUG
|
|
{
|
|
ACC_GAIN_NORMAL,
|
|
ACC_GAIN_DEBUG,
|
|
|
|
}ACC_DEBUG;
|
|
|
|
typedef enum DISTANCE
|
|
{
|
|
SHORT_2M,
|
|
LONG_100M,
|
|
LONG_200M,
|
|
LONG_300M,
|
|
LONG_400M,
|
|
LONG_500M,
|
|
}CABLE_DISTANCE;
|
|
|
|
typedef struct _NC_VD_AUTO_HSYNC_STR{ // 170207 Hsync Accumulation
|
|
unsigned char Ch;
|
|
unsigned char dev_addr;
|
|
unsigned char h_lock; // Bank 0 0xE2 [3:0] [Ch3:Ch0]
|
|
unsigned int Hsync_Accum_Val1; // Value 1 // 170210 Add
|
|
unsigned int Hsync_Accum_Val2; // Value 2 // 170210 Add
|
|
unsigned int Hsync_Accum_Result; // Value 1 - Value 2 // 170210 Fix
|
|
}NC_VD_AUTO_HSYNC_STR;
|
|
|
|
typedef struct _NC_VD_AUTO_SAM_STR{ // 170207 SAM Value 항목 추가
|
|
unsigned char Ch;
|
|
unsigned char dev_addr;
|
|
/*
|
|
unsigned char SAMval_CD; // B13 0xCD [7:0]
|
|
unsigned char SAMval_CC; // B13 0xCC [9:8]
|
|
*/
|
|
unsigned int SAMval;
|
|
}NC_VD_AUTO_SAM_STR;
|
|
|
|
typedef struct _NC_VD_AUTO_AGC_STR{ // 170207 AGC Value 항목 추가
|
|
unsigned char Ch;
|
|
unsigned char devnum;
|
|
unsigned char agc_lock; // Bank 0 0xE0 [3:0] [Ch3:Ch0]
|
|
unsigned char AGCval; // B13 0xB8
|
|
}NC_VD_AUTO_AGC_STR;
|
|
|
|
typedef struct _NC_VD_AUTO_DIST_STR{ // 170207 Cable Distance 항목 추가
|
|
unsigned char Ch;
|
|
unsigned char devnum;
|
|
unsigned char Dist; // B13 0xA0
|
|
}NC_VD_AUTO_CABLE_DIST_STR;
|
|
|
|
typedef struct _NC_VD_MANUAL_DIST_STR{
|
|
unsigned char Ch;
|
|
unsigned char dev_addr;
|
|
unsigned char Dist;
|
|
unsigned char FmtDef;
|
|
unsigned char cabletype; // 0:coax, 1:utp, 2:reserved1, 3:reserved2
|
|
}NC_VD_MANUAL_CABLE_DIST_STR;
|
|
|
|
///////////////////////////////////
|
|
typedef struct _video_equalizer_hsync_stage_s{
|
|
unsigned int hsync_stage[9];
|
|
}video_equalizer_hsync_stage_s;
|
|
|
|
typedef struct _video_equalizer_agc_stage_s{
|
|
unsigned int agc_stage[9];
|
|
}video_equalizer_agc_stage_s;
|
|
|
|
typedef struct _video_equalizer_distance_table_s{
|
|
video_equalizer_hsync_stage_s hsync_stage;
|
|
video_equalizer_agc_stage_s agc_stage;
|
|
} nvp6158_video_equalizer_distance_table_s;
|
|
|
|
|
|
typedef struct _video_equalizer_base_s{
|
|
unsigned char eq_bypass[11]; // B5x01
|
|
unsigned char eq_band_sel[11]; // B5x58
|
|
unsigned char eq_gain_sel[11]; // B5x5C
|
|
|
|
unsigned char deq_a_on[11]; // BAx3d
|
|
unsigned char deq_a_sel[11]; // BAx3C
|
|
unsigned char deq_b_sel[11]; // B9x80
|
|
|
|
} video_equalizer_base_s;
|
|
|
|
typedef struct _video_equalizer_coeff_s{
|
|
|
|
unsigned char deqA_01[11]; // BankA 0x30
|
|
unsigned char deqA_02[11]; // BankA 0x31
|
|
unsigned char deqA_03[11]; // BankA 0x32
|
|
unsigned char deqA_04[11]; // BankA 0x33
|
|
unsigned char deqA_05[11]; // BankA 0x34
|
|
unsigned char deqA_06[11]; // BankA 0x35
|
|
unsigned char deqA_07[11]; // BankA 0x36
|
|
unsigned char deqA_08[11]; // BankA 0x37
|
|
unsigned char deqA_09[11]; // BankA 0x38
|
|
unsigned char deqA_10[11]; // BankA 0x39
|
|
unsigned char deqA_11[11]; // BankA 0x3A
|
|
unsigned char deqA_12[11]; // BankA 0x3B
|
|
|
|
} video_equalizer_coeff_s;
|
|
|
|
typedef struct _video_equalizer_color_s{
|
|
unsigned char contrast[11]; // Bank0 0x10
|
|
unsigned char h_peaking[11]; // Bank0 0x18
|
|
unsigned char c_filter[11]; // Bank0 0x21
|
|
unsigned char hue[11]; // Bank0 0x40
|
|
unsigned char u_gain[11]; // Bank0 0x44
|
|
unsigned char v_gain[11]; // Bank0 0x48
|
|
unsigned char u_offset[11]; // Bank0 0x4c
|
|
unsigned char v_offset[11]; // Bank0 0x50
|
|
|
|
unsigned char black_level[11]; // Bank5 0x20
|
|
unsigned char acc_ref[11]; // Bank5 0x27
|
|
|
|
unsigned char cti_delay[11]; // Bank5 0x28
|
|
unsigned char sub_saturation[11]; // Bank5 0x2B
|
|
unsigned char burst_dec_a[11]; // Bank5 0x24
|
|
unsigned char burst_dec_b[11]; // Bank5 0x5F
|
|
unsigned char burst_dec_c[11]; // Bank5 0xD1
|
|
unsigned char c_option[11]; // Bank5 0xD5
|
|
|
|
unsigned char y_filter_b[11]; // BankA 0x25
|
|
unsigned char y_filter_b_sel[11]; // BankA 0x27
|
|
|
|
} video_equalizer_color_s;
|
|
|
|
typedef struct _video_equalizer_timing_a_s{
|
|
unsigned char h_delay_a[11]; // Bank0 0x58
|
|
unsigned char h_delay_b[11]; // Bank0 0x89
|
|
unsigned char h_delay_c[11]; // Bank0 0x8E
|
|
unsigned char y_delay[11]; // Bank0 0xA0
|
|
|
|
} video_equalizer_timing_a_s;
|
|
|
|
typedef struct _video_equalizer_clk_s{
|
|
unsigned char clk_adc[11]; // Bank1 0x84
|
|
unsigned char clk_dec[11]; // Bank1 0x8C
|
|
|
|
} video_equalizer_clk_s;
|
|
|
|
typedef struct _video_equalizer_timing_b_s{
|
|
unsigned char h_scaler1[11]; // B9x96 + ch*0x20
|
|
unsigned char h_scaler2[11]; // B9x97 + ch*0x20
|
|
unsigned char h_scaler3[11]; // B9x98 + ch*0x20
|
|
unsigned char h_scaler4[11]; // B9x99 + ch*0x20
|
|
unsigned char h_scaler5[11]; // B9x9a + ch*0x20
|
|
unsigned char h_scaler6[11]; // B9x9b + ch*0x20
|
|
unsigned char h_scaler7[11]; // B9x9c + ch*0x20
|
|
unsigned char h_scaler8[11]; // B9x9d + ch*0x20
|
|
unsigned char h_scaler9[11]; // B9x9e + ch*0x20
|
|
|
|
unsigned char pn_auto[11]; // B9x40 + ch
|
|
|
|
unsigned char comb_mode[11]; // B5x90
|
|
unsigned char h_pll_op_a[11]; // B5xB9
|
|
unsigned char mem_path[11]; // B5x57
|
|
unsigned char fsc_lock_speed[11]; //B5x25
|
|
|
|
unsigned char format_set1[11]; // B0x81
|
|
unsigned char format_set2[11]; // B0x85
|
|
|
|
unsigned char v_delay[11]; // B0x64
|
|
} video_equalizer_timing_b_s;
|
|
|
|
|
|
typedef struct _video_equalizer_value_table_s{
|
|
video_equalizer_base_s eq_base;
|
|
video_equalizer_coeff_s eq_coeff;
|
|
video_equalizer_color_s eq_color;
|
|
|
|
video_equalizer_timing_a_s eq_timing_a;
|
|
video_equalizer_clk_s eq_clk;
|
|
video_equalizer_timing_b_s eq_timing_b;
|
|
|
|
} video_equalizer_value_table_s;
|
|
|
|
typedef struct _video_equalizer_info{
|
|
unsigned char Ch;
|
|
unsigned char devnum;
|
|
unsigned char distance;
|
|
unsigned char FmtDef;
|
|
} video_equalizer_info_s;
|
|
|
|
CABLE_DISTANCE NVP6158_NC_VD_MANUAL_CABLE_DISTANCE_Get (unsigned char Ch, video_input_cable_dist *pDistance);
|
|
CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info);
|
|
unsigned char __nvp6158_video_cable_manualdistance( unsigned char cabletype, video_input_hsync_accum *pvin_hsync_accum,
|
|
video_input_acc_gain_val *pvin_acc_val, nvp6158_video_equalizer_distance_table_s *pdistance_value );
|
|
void __nvp6158_eq_base_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_base_s *pbase );
|
|
void __nvp6158_eq_coeff_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_coeff_s *pcoeff );
|
|
void __nvp6158_eq_color_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_color_s *pcolor );
|
|
void __nvp6158_eq_timing_a_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_a_s *ptiming_a );
|
|
void __nvp6158_eq_clk_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_clk_s *pclk );
|
|
void __nvp6158_eq_timing_b_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_b_s *ptiming_b );
|
|
unsigned int __nvp6158_get_acc_gain(unsigned char ch, unsigned char devnum);
|
|
unsigned int __nvp6158_get_yplus_slope(unsigned char ch, unsigned char devnum);
|
|
unsigned int __nvp6158_get_yminus_slope(unsigned char ch, unsigned char devnum);
|
|
unsigned int __nvp6158_get_sync_width( unsigned char ch, unsigned char devnum );
|
|
void __nvp6168_set_eq_ext_val(video_equalizer_info_s *pvin_eq_set);
|
|
|
|
void nvp6158_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist );
|
|
void nvp6168_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist );
|
|
|
|
int nvp6158_set_equalizer(video_equalizer_info_s *pvin_eq_set);
|
|
int nvp6168_set_equalizer(video_equalizer_info_s *pvin_eq_set);
|
|
int nvp6158_video_input_cable_measure_way( unsigned char ch, unsigned char devnum );
|
|
CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info);
|
|
|
|
#endif /* _RAPTOR3_VIDEO_EQ_H_ */
|