1 // SPDX-License-Identifier: GPL-2.0 2 /******************************************************************************** 3 * 4 * Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. 5 * Module : video_eq.h 6 * Description : 7 * Author : 8 * Date : 9 * Version : Version 1.0 10 * 11 ******************************************************************************** 12 * History : 13 * 14 * 15 ********************************************************************************/ 16 #ifndef _RAPTOR3_VIDEO_EQ_H_ 17 #define _RAPTOR3_VIDEO_EQ_H_ 18 19 #include "nvp6158_common.h" 20 #include "nvp6158_video_auto_detect.h" 21 /////////////////////////////// 22 typedef enum ACC_DEBUG 23 { 24 ACC_GAIN_NORMAL, 25 ACC_GAIN_DEBUG, 26 27 }ACC_DEBUG; 28 29 typedef enum DISTANCE 30 { 31 SHORT_2M, 32 LONG_100M, 33 LONG_200M, 34 LONG_300M, 35 LONG_400M, 36 LONG_500M, 37 }CABLE_DISTANCE; 38 39 typedef struct _NC_VD_AUTO_HSYNC_STR{ // 170207 Hsync Accumulation 40 unsigned char Ch; 41 unsigned char dev_addr; 42 unsigned char h_lock; // Bank 0 0xE2 [3:0] [Ch3:Ch0] 43 unsigned int Hsync_Accum_Val1; // Value 1 // 170210 Add 44 unsigned int Hsync_Accum_Val2; // Value 2 // 170210 Add 45 unsigned int Hsync_Accum_Result; // Value 1 - Value 2 // 170210 Fix 46 }NC_VD_AUTO_HSYNC_STR; 47 48 typedef struct _NC_VD_AUTO_SAM_STR{ // 170207 SAM Value 항목 추가 49 unsigned char Ch; 50 unsigned char dev_addr; 51 /* 52 unsigned char SAMval_CD; // B13 0xCD [7:0] 53 unsigned char SAMval_CC; // B13 0xCC [9:8] 54 */ 55 unsigned int SAMval; 56 }NC_VD_AUTO_SAM_STR; 57 58 typedef struct _NC_VD_AUTO_AGC_STR{ // 170207 AGC Value 항목 추가 59 unsigned char Ch; 60 unsigned char devnum; 61 unsigned char agc_lock; // Bank 0 0xE0 [3:0] [Ch3:Ch0] 62 unsigned char AGCval; // B13 0xB8 63 }NC_VD_AUTO_AGC_STR; 64 65 typedef struct _NC_VD_AUTO_DIST_STR{ // 170207 Cable Distance 항목 추가 66 unsigned char Ch; 67 unsigned char devnum; 68 unsigned char Dist; // B13 0xA0 69 }NC_VD_AUTO_CABLE_DIST_STR; 70 71 typedef struct _NC_VD_MANUAL_DIST_STR{ 72 unsigned char Ch; 73 unsigned char dev_addr; 74 unsigned char Dist; 75 unsigned char FmtDef; 76 unsigned char cabletype; // 0:coax, 1:utp, 2:reserved1, 3:reserved2 77 }NC_VD_MANUAL_CABLE_DIST_STR; 78 79 /////////////////////////////////// 80 typedef struct _video_equalizer_hsync_stage_s{ 81 unsigned int hsync_stage[9]; 82 }video_equalizer_hsync_stage_s; 83 84 typedef struct _video_equalizer_agc_stage_s{ 85 unsigned int agc_stage[9]; 86 }video_equalizer_agc_stage_s; 87 88 typedef struct _video_equalizer_distance_table_s{ 89 video_equalizer_hsync_stage_s hsync_stage; 90 video_equalizer_agc_stage_s agc_stage; 91 } nvp6158_video_equalizer_distance_table_s; 92 93 94 typedef struct _video_equalizer_base_s{ 95 unsigned char eq_bypass[11]; // B5x01 96 unsigned char eq_band_sel[11]; // B5x58 97 unsigned char eq_gain_sel[11]; // B5x5C 98 99 unsigned char deq_a_on[11]; // BAx3d 100 unsigned char deq_a_sel[11]; // BAx3C 101 unsigned char deq_b_sel[11]; // B9x80 102 103 } video_equalizer_base_s; 104 105 typedef struct _video_equalizer_coeff_s{ 106 107 unsigned char deqA_01[11]; // BankA 0x30 108 unsigned char deqA_02[11]; // BankA 0x31 109 unsigned char deqA_03[11]; // BankA 0x32 110 unsigned char deqA_04[11]; // BankA 0x33 111 unsigned char deqA_05[11]; // BankA 0x34 112 unsigned char deqA_06[11]; // BankA 0x35 113 unsigned char deqA_07[11]; // BankA 0x36 114 unsigned char deqA_08[11]; // BankA 0x37 115 unsigned char deqA_09[11]; // BankA 0x38 116 unsigned char deqA_10[11]; // BankA 0x39 117 unsigned char deqA_11[11]; // BankA 0x3A 118 unsigned char deqA_12[11]; // BankA 0x3B 119 120 } video_equalizer_coeff_s; 121 122 typedef struct _video_equalizer_color_s{ 123 unsigned char contrast[11]; // Bank0 0x10 124 unsigned char h_peaking[11]; // Bank0 0x18 125 unsigned char c_filter[11]; // Bank0 0x21 126 unsigned char hue[11]; // Bank0 0x40 127 unsigned char u_gain[11]; // Bank0 0x44 128 unsigned char v_gain[11]; // Bank0 0x48 129 unsigned char u_offset[11]; // Bank0 0x4c 130 unsigned char v_offset[11]; // Bank0 0x50 131 132 unsigned char black_level[11]; // Bank5 0x20 133 unsigned char acc_ref[11]; // Bank5 0x27 134 135 unsigned char cti_delay[11]; // Bank5 0x28 136 unsigned char sub_saturation[11]; // Bank5 0x2B 137 unsigned char burst_dec_a[11]; // Bank5 0x24 138 unsigned char burst_dec_b[11]; // Bank5 0x5F 139 unsigned char burst_dec_c[11]; // Bank5 0xD1 140 unsigned char c_option[11]; // Bank5 0xD5 141 142 unsigned char y_filter_b[11]; // BankA 0x25 143 unsigned char y_filter_b_sel[11]; // BankA 0x27 144 145 } video_equalizer_color_s; 146 147 typedef struct _video_equalizer_timing_a_s{ 148 unsigned char h_delay_a[11]; // Bank0 0x58 149 unsigned char h_delay_b[11]; // Bank0 0x89 150 unsigned char h_delay_c[11]; // Bank0 0x8E 151 unsigned char y_delay[11]; // Bank0 0xA0 152 153 } video_equalizer_timing_a_s; 154 155 typedef struct _video_equalizer_clk_s{ 156 unsigned char clk_adc[11]; // Bank1 0x84 157 unsigned char clk_dec[11]; // Bank1 0x8C 158 159 } video_equalizer_clk_s; 160 161 typedef struct _video_equalizer_timing_b_s{ 162 unsigned char h_scaler1[11]; // B9x96 + ch*0x20 163 unsigned char h_scaler2[11]; // B9x97 + ch*0x20 164 unsigned char h_scaler3[11]; // B9x98 + ch*0x20 165 unsigned char h_scaler4[11]; // B9x99 + ch*0x20 166 unsigned char h_scaler5[11]; // B9x9a + ch*0x20 167 unsigned char h_scaler6[11]; // B9x9b + ch*0x20 168 unsigned char h_scaler7[11]; // B9x9c + ch*0x20 169 unsigned char h_scaler8[11]; // B9x9d + ch*0x20 170 unsigned char h_scaler9[11]; // B9x9e + ch*0x20 171 172 unsigned char pn_auto[11]; // B9x40 + ch 173 174 unsigned char comb_mode[11]; // B5x90 175 unsigned char h_pll_op_a[11]; // B5xB9 176 unsigned char mem_path[11]; // B5x57 177 unsigned char fsc_lock_speed[11]; //B5x25 178 179 unsigned char format_set1[11]; // B0x81 180 unsigned char format_set2[11]; // B0x85 181 182 unsigned char v_delay[11]; // B0x64 183 } video_equalizer_timing_b_s; 184 185 186 typedef struct _video_equalizer_value_table_s{ 187 video_equalizer_base_s eq_base; 188 video_equalizer_coeff_s eq_coeff; 189 video_equalizer_color_s eq_color; 190 191 video_equalizer_timing_a_s eq_timing_a; 192 video_equalizer_clk_s eq_clk; 193 video_equalizer_timing_b_s eq_timing_b; 194 195 } video_equalizer_value_table_s; 196 197 typedef struct _video_equalizer_info{ 198 unsigned char Ch; 199 unsigned char devnum; 200 unsigned char distance; 201 unsigned char FmtDef; 202 } video_equalizer_info_s; 203 204 CABLE_DISTANCE NVP6158_NC_VD_MANUAL_CABLE_DISTANCE_Get (unsigned char Ch, video_input_cable_dist *pDistance); 205 CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info); 206 unsigned char __nvp6158_video_cable_manualdistance( unsigned char cabletype, video_input_hsync_accum *pvin_hsync_accum, 207 video_input_acc_gain_val *pvin_acc_val, nvp6158_video_equalizer_distance_table_s *pdistance_value ); 208 void __nvp6158_eq_base_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_base_s *pbase ); 209 void __nvp6158_eq_coeff_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_coeff_s *pcoeff ); 210 void __nvp6158_eq_color_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_color_s *pcolor ); 211 void __nvp6158_eq_timing_a_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_a_s *ptiming_a ); 212 void __nvp6158_eq_clk_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_clk_s *pclk ); 213 void __nvp6158_eq_timing_b_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_b_s *ptiming_b ); 214 unsigned int __nvp6158_get_acc_gain(unsigned char ch, unsigned char devnum); 215 unsigned int __nvp6158_get_yplus_slope(unsigned char ch, unsigned char devnum); 216 unsigned int __nvp6158_get_yminus_slope(unsigned char ch, unsigned char devnum); 217 unsigned int __nvp6158_get_sync_width( unsigned char ch, unsigned char devnum ); 218 void __nvp6168_set_eq_ext_val(video_equalizer_info_s *pvin_eq_set); 219 220 void nvp6158_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist ); 221 void nvp6168_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist ); 222 223 int nvp6158_set_equalizer(video_equalizer_info_s *pvin_eq_set); 224 int nvp6168_set_equalizer(video_equalizer_info_s *pvin_eq_set); 225 int nvp6158_video_input_cable_measure_way( unsigned char ch, unsigned char devnum ); 226 CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info); 227 228 #endif /* _RAPTOR3_VIDEO_EQ_H_ */ 229