1 //<MStar Software> 2 //****************************************************************************** 3 // MStar Software 4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5 // All software, firmware and related documentation herein ("MStar Software") are 6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7 // law, including, but not limited to, copyright law and international treaties. 8 // Any use, modification, reproduction, retransmission, or republication of all 9 // or part of MStar Software is expressly prohibited, unless prior written 10 // permission has been granted by MStar. 11 // 12 // By accessing, browsing and/or using MStar Software, you acknowledge that you 13 // have read, understood, and agree, to be bound by below terms ("Terms") and to 14 // comply with all applicable laws and regulations: 15 // 16 // 1. MStar shall retain any and all right, ownership and interest to MStar 17 // Software and any modification/derivatives thereof. 18 // No right, ownership, or interest to MStar Software and any 19 // modification/derivatives thereof is transferred to you under Terms. 20 // 21 // 2. You understand that MStar Software might include, incorporate or be 22 // supplied together with third party`s software and the use of MStar 23 // Software may require additional licenses from third parties. 24 // Therefore, you hereby agree it is your sole responsibility to separately 25 // obtain any and all third party right and license necessary for your use of 26 // such third party`s software. 27 // 28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29 // MStar`s confidential information and you agree to keep MStar`s 30 // confidential information in strictest confidence and not disclose to any 31 // third party. 32 // 33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34 // kind. Any warranties are hereby expressly disclaimed by MStar, including 35 // without limitation, any warranties of merchantability, non-infringement of 36 // intellectual property rights, fitness for a particular purpose, error free 37 // and in conformity with any international standard. You agree to waive any 38 // claim against MStar for any loss, damage, cost or expense that you may 39 // incur related to your use of MStar Software. 40 // In no event shall MStar be liable for any direct, indirect, incidental or 41 // consequential damages, including without limitation, lost of profit or 42 // revenues, lost or damage of data, and unauthorized system use. 43 // You agree that this Section 4 shall still apply without being affected 44 // even if MStar Software has been modified by MStar in accordance with your 45 // request or instruction for your use, except otherwise agreed by both 46 // parties in writing. 47 // 48 // 5. If requested, MStar may from time to time provide technical supports or 49 // services in relation with MStar Software to you for your use of 50 // MStar Software in conjunction with your or your customer`s product 51 // ("Services"). 52 // You understand and agree that, except otherwise agreed by both parties in 53 // writing, Services are provided on an "AS IS" basis and the warranty 54 // disclaimer set forth in Section 4 above shall apply. 55 // 56 // 6. Nothing contained herein shall be construed as by implication, estoppels 57 // or otherwise: 58 // (a) conferring any license or right to use MStar name, trademark, service 59 // mark, symbol or any other identification; 60 // (b) obligating MStar or any of its affiliates to furnish any person, 61 // including without limitation, you and your customers, any assistance 62 // of any kind whatsoever, or any information; or 63 // (c) conferring any license or right under any intellectual property right. 64 // 65 // 7. These terms shall be governed by and construed in accordance with the laws 66 // of Taiwan, R.O.C., excluding its conflict of law rules. 67 // Any and all dispute arising out hereof or related hereto shall be finally 68 // settled by arbitration referred to the Chinese Arbitration Association, 69 // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70 // Rules of the Association by three (3) arbitrators appointed in accordance 71 // with the said Rules. 72 // The place of arbitration shall be in Taipei, Taiwan and the language shall 73 // be English. 74 // The arbitration award shall be final and binding to both parties. 75 // 76 //****************************************************************************** 77 //<MStar Software> 78 //////////////////////////////////////////////////////////////////////////////// 79 // 80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81 // All rights reserved. 82 // 83 // Unless otherwise stipulated in writing, any and all information contained 84 // herein regardless in any format shall remain the sole proprietary of 85 // MStar Semiconductor Inc. and be kept in strict confidence 86 // ("MStar Confidential Information") by the recipient. 87 // Any unauthorized act including without limitation unauthorized disclosure, 88 // copying, use, reproduction, sale, distribution, modification, disassembling, 89 // reverse engineering and compiling of the contents of MStar Confidential 90 // Information is unlawful and strictly prohibited. MStar hereby reserves the 91 // rights to any and all damages, losses, costs and expenses resulting therefrom. 92 // 93 //////////////////////////////////////////////////////////////////////////////// 94 //============================================================================== 95 // [mhal_sc.h] 96 // Date: 20081203 97 // Descriptions: Add a new layer for HW setting 98 //============================================================================== 99 #ifndef MHAL_SC_H 100 #define MHAL_SC_H 101 102 #include "hwreg_sc.h" 103 #include "hwreg_mod.h" 104 105 //============================================================================== 106 // Scaling Ratio Macro 107 108 // H_PreScalingDownRatio() was refined to reduce the calculation error. 109 // Use round up (x+y/2)/y might reduce the scaling ratio and induce right vertical garbage line. 110 // So use un-conditional add by 1 (x+y)/y. 111 #define H_PreScalingDownRatio(Input, Output) ( (((MS_U32)(Output)) * 1048576ul)/ (Input) + 1 ) 112 #define H_PreScalingDownRatioAdv(Input, Output) ( (((MS_U32)(Input)-1) * 1048576ul)/ ((Output)-1) ) //Advance scaling 113 #define H_PreScalingDownRatioAdv_No_Minus1(Input, Output) ( (((MS_U32)(Input)) * 1048576ul)/ ((Output)) ) //Advance scaling without minus 1 114 #define V_PreScalingDownRatio(Input, Output) ( (((MS_U32)(Output)) * 1048576ul)/ (Input) + 1 ) // CB mode 115 #define V_PreScalingDownRatioBilinear(Input, Output) ( (((MS_U32)(Input)-1) * 1048576ul)/ ((Output) -1)) // Bilinear 116 117 #define H_PostScalingRatio(Input, Output) ( ((MS_U32)(Input)) * 1048576ul / (Output) + 1 ) 118 //#define H_PostScalingRatioAdv(Input, Output) ( ((MS_U32)(Input)-1) * 1048576ul / ((Output)-1) + 1 ) 119 #define V_PostScalingRatio(Input, Output) ( ((MS_U32)(Input)-1) * 1048576ul / ((Output)-1) + 1 ) 120 #define V_PostScalingRatio_P2I(Input, Output) ( ((MS_U32)(Input)) * 1048576ul / (Output)) 121 #define HW_CLK_CTRL FALSE 122 123 // In MDrv_SC_3D_Adjust_PreHorDstSize(), 124 // do a rough check after all, for 2 frame case. 125 #define ENABLE_2_FRAME_SIZE_PROTECTION TRUE 126 127 typedef struct 128 { 129 MS_U32 u32IPMBase0; 130 MS_U32 u32IPMBase1; 131 MS_U32 u32IPMBase2; 132 MS_U16 u16IPMOffset; 133 MS_U16 u16IPMFetch; 134 MS_U16 u16VLength; 135 MS_U32 u32WriteLimitBase; 136 137 MS_BOOL bLinearAddrMode; 138 MS_BOOL bYCSeparate; 139 140 MS_BOOL bMemFormat422; 141 MS_BOOL bInterlace; 142 MS_U8 u8BitPerPixel; 143 MS_U8 u8FBNum; 144 } SC_FRAMEBUF_INFO_t; 145 146 typedef struct 147 { 148 MS_U16 u16MiuG0Mask; 149 MS_U16 u16MiuG1Mask; 150 MS_U16 u16MiuG2Mask; 151 MS_U16 u16MiuG3Mask; 152 } SC_MIUMASK_t; 153 154 typedef struct 155 { 156 MS_U8 u8MainFBSel; 157 MS_U8 u8SubFBSel; 158 } SC_MIUSEL_t; 159 160 typedef enum 161 { 162 E_XC_FPLL_DIR_UNKNOWN, 163 E_XC_FPLL_DIR_UP, 164 E_XC_FPLL_DIR_DOWN, 165 } MS_XC_FPLL_DIRECTION; 166 167 typedef enum 168 { 169 E_XC_FPLL_RES_WAITING, 170 E_XC_FPLL_RES_TIMEOUT, 171 E_XC_FPLL_RES_FINISHED, 172 } MS_XC_FPLL_RESULT; 173 174 typedef struct 175 { 176 MS_U8 u8Debounce; 177 MS_U16 u16PhaseDiff; 178 MS_XC_FPLL_DIRECTION eFpllDir; 179 MS_XC_FPLL_RESULT eFpllResult; 180 } MS_XC_GET_FPLL_PHASEDIFF; 181 182 typedef enum 183 { 184 E_XC_OP1_PATTERN_TYPE_PURE = 0, 185 E_XC_OP1_PATTERN_TYPE_FADE, 186 E_XC_OP1_PATTERN_TYPE_LINEDOT, 187 E_XC_OP1_PATTERN_TYPE_CALIBRATION, 188 E_XC_OP1_PATTERN_TYPE_DOTFADE, 189 } E_XC_OP1_PATTERN_DTAT_TYPE; 190 191 typedef enum 192 { 193 E_HAL_SC_3D_LRCHGMODE_OFF = 0, 194 E_HAL_SC_3D_LRCHGMODE_FRAME = 1, 195 E_HAL_SC_3D_LRCHGMODE_BLOCK = 2, 196 E_HAL_SC_3D_LRCHGMODE_LINE = 3, 197 } HAL_SC_3D_LRCHGMODE; 198 199 typedef struct 200 { 201 void* pInstance; 202 MS_BOOL bEnable; 203 SCALER_WIN eWindow; 204 }SC_SET_FORCE_CURRENT_READ_BANK_t; 205 206 //============================================================================== 207 //============================================================================== 208 #ifdef MHAL_SC_C 209 #define INTERFACE 210 #else 211 #define INTERFACE extern 212 #endif 213 214 INTERFACE void Hal_SC_setfield(void *pInstance, MS_U16 reg_1D, MS_U16 reg_21, MS_U16 reg_23, SCALER_WIN eWindow); 215 216 INTERFACE void Hal_SC_set_ficlk(void *pInstance, MS_BOOL bPreDown, SCALER_WIN eWindow); 217 INTERFACE void Hal_SC_set_shiftline(void *pInstance, MS_U8 u8Val, SCALER_WIN eWindow); 218 INTERFACE void Hal_SC_set_422_cbcr_swap(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 219 INTERFACE void Hal_SC_set_pre_align_pixel(void *pInstance, MS_BOOL bEnable, MS_U16 pixels, SCALER_WIN eWindow); 220 INTERFACE void Hal_XC_Set_FreeFRCMD(void *pInstance, MS_BOOL bEnable); 221 INTERFACE void Hal_SC_force3fb(MS_BOOL bEnable, SCALER_WIN eWindow); 222 INTERFACE void Hal_SC_force4fb(MS_BOOL bEnable, SCALER_WIN eWindow); 223 INTERFACE void Hal_SC_force8fb(MS_BOOL bEnable, SCALER_WIN eWindow); 224 INTERFACE XC_FRAME_STORE_NUMBER Hal_SC_GetFrameStoreMode(void *pInstance, SCALER_WIN eWindow); 225 INTERFACE void Hal_SC_set_csc(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 226 INTERFACE void Hal_SC_set_wr_bank_mapping(void *pInstance, MS_U8 u8val, SCALER_WIN eWindow); 227 INTERFACE void Hal_SC_set_wr_bank_mapping_num(void *pInstance, MS_U8 u8val, SCALER_WIN eWindow); 228 INTERFACE MS_U8 Hal_SC_Get_WR_Bank_Mapping(void *pInstance, SCALER_WIN eWindow); 229 INTERFACE MS_U8 Hal_SC_Get_WR_Bank_Mapping_Num(void *pInstance, SCALER_WIN eWindow); 230 INTERFACE void Hal_SC_set_delayline(void *pInstance, MS_U8 u8DelayLines, SCALER_WIN eWindow); 231 INTERFACE void Hal_SC_set_write_limit(void *pInstance, MS_U32 u32WritelimitAddrBase, SCALER_WIN eWindow); 232 INTERFACE void Hal_SC_set_opm_write_limit(void *pInstance, MS_BOOL bEnable, MS_BOOL bFlag, MS_U32 u32OPWlimitAddr, SCALER_WIN eWindow); 233 INTERFACE void Hal_SC_sw_db(void *pInstance, P_SC_SWDB_INFO pDBreg, SCALER_WIN eWindow); 234 INTERFACE void Hal_SC_sw_db_burst(void *pInstance, P_SC_SWDB_INFO pDBreg, SCALER_WIN eWindow); 235 INTERFACE void Hal_SC_dual_sw_db_burst(void *pInstance, P_SC_SWDB_INFO pMainDBreg, P_SC_SWDB_INFO pSubDBreg); 236 INTERFACE E_APIXC_ReturnValue Hal_SC_VIP_Peaking_Setting(void *pInstance, SCALER_WIN eWindow); 237 INTERFACE E_APIXC_ReturnValue Hal_SC_support_source_to_ve(void *pInstance, MS_U16* OutputCapability); 238 INTERFACE E_APIXC_ReturnValue Hal_SC_set_output_capture_enable(void *pInstance, MS_BOOL bEnable,E_XC_SOURCE_TO_VE eSourceToVE); 239 INTERFACE void Hal_SC_set_de_window(void *pInstance, XC_PANEL_INFO *pPanel_Info); 240 INTERFACE void Hal_SC_get_disp_de_window(void *pInstance, MS_WINDOW_TYPE *pWin); 241 INTERFACE MS_U32 Hal_SC_Get_DNRBase0(void *pInstance, SCALER_WIN eWindow); 242 INTERFACE MS_U32 Hal_SC_Get_DNRBase1(void *pInstance, SCALER_WIN eWindow); 243 INTERFACE MS_U32 Hal_SC_Get_OPMBase0(void *pInstance, SCALER_WIN eWindow); 244 INTERFACE MS_U32 Hal_SC_Get_OPMBase1(void *pInstance, SCALER_WIN eWindow); 245 INTERFACE MS_U32 Hal_SC_Get_OPMBase2(SCALER_WIN eWindow); 246 INTERFACE MS_U8 Hal_SC_Get_LBOffset(SCALER_WIN eWindow); 247 INTERFACE void Hal_SC_Set_LBOffset(MS_U8 u8LBOffset, SCALER_WIN eWindow); 248 INTERFACE void Hal_SC_set_DNRBase0(void *pInstance, MS_U32 u32DNRBase0, SCALER_WIN eWindow); 249 INTERFACE void Hal_SC_set_DNRBase1(void *pInstance, MS_U32 u32DNRBase1, SCALER_WIN eWindow); 250 INTERFACE void Hal_SC_set_DNRBase2(void *pInstance, MS_U32 u32DNRBase2, SCALER_WIN eWindow); 251 INTERFACE void Hal_SC_set_OPMBase0(void *pInstance, MS_U32 u32OPMBase0, SCALER_WIN eWindow); 252 INTERFACE void Hal_SC_set_OPMBase1(void *pInstance, MS_U32 u32OPMBase1, SCALER_WIN eWindow); 253 INTERFACE void Hal_SC_set_OPMBase2(void *pInstance, MS_U32 u32OPMBase2, SCALER_WIN eWindow); 254 INTERFACE void Hal_SC_set_memoryaddress(void *pInstance, MS_U32 u32DNRBase0, MS_U32 u32DNRBase1, MS_U32 u32DNRBase2, MS_U32 u32OPMBase0, MS_U32 u32OPMBase1, MS_U32 u32OPMBase2, SCALER_WIN eWindow); 255 INTERFACE void Hal_SC_Enable_MiuMask(void *pInstance); 256 INTERFACE void Hal_SC_Disable_MiuMask(void *pInstance); 257 INTERFACE void Hal_SC_set_miusel(void *pInstance,MS_U8 u8MIUSel); 258 259 INTERFACE void Hal_SC_set_blsk(void *pInstance,MS_BOOL bEn); 260 INTERFACE void Hal_SC_set_blsk_burst(void *pInstance,MS_BOOL bEn); 261 262 INTERFACE void Hal_SC_set_main_black_screen_burst(void *pInstance,MS_BOOL bEn); 263 INTERFACE void Hal_SC_set_main_sub_black_screen_burst(void *pInstance,MS_BOOL bEn); 264 INTERFACE void Hal_SC_set_sub_blue_screen_burst(void *pInstance,MS_BOOL bEn, MS_BOOL bBlue); 265 INTERFACE void Hal_SC_set_main_black_screen(void *pInstance,MS_BOOL bEn); 266 INTERFACE void Hal_SC_set_main_sub_black_screen(void *pInstance,MS_BOOL bEn); 267 INTERFACE void Hal_SC_set_sub_blue_screen(void *pInstance,MS_BOOL bEn, MS_BOOL bBlue); 268 INTERFACE E_APIXC_ReturnValue Hal_SC_IP_Memory_Write_Request(void *pInstance,MS_BOOL bEnable, SCALER_WIN eWindow); 269 INTERFACE E_APIXC_ReturnValue Hal_SC_IP_Memory_Read_Request(void *pInstance,MS_BOOL bEnable, SCALER_WIN eWindow); 270 INTERFACE E_APIXC_ReturnValue Hal_SC_OP_Memory_Write_Request(void *pInstance,MS_BOOL bEnable, SCALER_WIN eWindow); 271 INTERFACE void Hal_SC_disable_inputsource_burst(void *pInstance,MS_BOOL bDisable, SCALER_WIN eWindow); 272 INTERFACE void Hal_SC_disable_inputsource(void *pInstance,MS_BOOL bDisable, SCALER_WIN eWindow); 273 INTERFACE MS_U16 Hal_SC_Is_InputSource_Disable(void *pInstance,SCALER_WIN eWindow); 274 INTERFACE void Hal_SC_set_nosignal_color(void *pInstance,MS_U8 u8Color,SCALER_WIN eWindow); 275 INTERFACE void Hal_SC_set_fbl(void *pInstance,MS_BOOL bEn); 276 INTERFACE MS_BOOL Hal_SC_get_fbl(void *pInstance); 277 INTERFACE void HAL_SC_Set_FB_Num(void *pInstance,SCALER_WIN eWindow, XC_FRAME_STORE_NUMBER eBestFBNum, MS_BOOL bInterlace); 278 INTERFACE void Hal_SC_set_freezeimg_burst(void *pInstance,MS_BOOL bEn, SCALER_WIN eWindow); 279 INTERFACE void Hal_SC_set_freezeimg(void *pInstance,MS_BOOL bEn, SCALER_WIN eWindow); 280 INTERFACE MS_BOOL Hal_SC_get_freezeimg(void *pInstance,SCALER_WIN eWindow); 281 INTERFACE void Hal_SC_ip_Init_for_internal_timing(void *pInstance,XC_Internal_TimingType timingtype, SCALER_WIN eWindow); 282 INTERFACE MS_U16 Hal_SC_rgb_average_info(void *pInstance,MS_U16 u16mask, SCALER_WIN eWindow); 283 INTERFACE void Hal_SC_autogain_enable(void *pInstance,MS_BOOL bEnable, SCALER_WIN eWindow); 284 INTERFACE MS_BOOL Hal_SC_autogain_status(void *pInstance,SCALER_WIN eWindow); 285 INTERFACE void Hal_SC_init_riu_base(MS_U32 u32riu_base, MS_U32 u32PMriu_base); 286 INTERFACE void Hal_SC_set_mirror(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 287 INTERFACE MS_U16 Hal_SC_GetAVDStatus(void); 288 INTERFACE void Hal_SC_set_rep_window(void *pInstance, MS_BOOL bEnable,MS_U16 x,MS_U16 y,MS_U16 w,MS_U16 h,MS_U8 u8Color); 289 INTERFACE void Hal_SC_set_disp_window(void *pInstance, SCALER_WIN eWindow, MS_WINDOW_TYPE *pdspwin); 290 INTERFACE void Hal_SC_get_disp_window(void *pInstance, SCALER_WIN eWindow, MS_WINDOW_TYPE *pdspwin); 291 INTERFACE void Hal_SC_set_Fclk(void *pInstance, EN_SET_FCLK_CASE enCase); 292 INTERFACE void Hal_SC_get_framebuf_Info(void *pInstance, SC_FRAMEBUF_INFO_t *pFrameBufInfo, SCALER_WIN eWindow); 293 INTERFACE void Hal_SC_set_framebuf_Info(void *pInstance, SC_FRAMEBUF_INFO_t pFrameBufInfo); 294 INTERFACE MS_U8 HAL_SC_get_dnr_setting(void *pInstance, SCALER_WIN eWindow); 295 INTERFACE void HAL_SC_enable_dnr(void *pInstance, MS_U8 u8Val, SCALER_WIN eWindow); 296 INTERFACE void HAL_SC_enable_field_avg_y(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 297 INTERFACE void HAL_SC_enable_field_avg_c(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 298 INTERFACE MS_U8 Hal_SC_get_cs_det_cnt(void *pInstance, SCALER_WIN eWindow); 299 INTERFACE void Hal_SC_set_linearmem_mode(MS_BOOL bEnable, SCALER_WIN eWindow); 300 INTERFACE void Hal_SC_set_cs_det_cnt(void *pInstance, MS_U8 u8val, SCALER_WIN eWindow); 301 INTERFACE MS_U8 Hal_SC_get_plus_width(void *pInstance, SCALER_WIN eWindow); 302 INTERFACE void Hal_SC_set_opm_fetch(void *pInstance, SCALER_WIN eWindow, MS_U16 u16OPMFetch); 303 INTERFACE MS_U16 Hal_SC_get_opm_fetch(void *pInstance, SCALER_WIN eWindow); 304 INTERFACE void Hal_SC_SWDS_AddCmd(void *pInstance, P_SC_SWDB_INFO pDBreg, SCALER_WIN eWindow); 305 INTERFACE void Hal_SC_SWDS_Fire(void *pInstance, P_SC_SWDB_INFO pDBreg, SCALER_WIN eWindow); 306 307 INTERFACE void HAL_SC_VOP_Set_Contrast_En(void *pInstance, MS_BOOL bEenable, SCALER_WIN eWindow); 308 INTERFACE void HAL_SC_VOP_Set_Contrast_Value(void *pInstance, MS_XC_VOP_CHANNEL_t eVop_Channel, MS_U16 u16Val, SCALER_WIN eWindow); 309 INTERFACE void HAL_SC_VOP_Set_Brightness_En(void *pInstance, MS_BOOL bEenable, SCALER_WIN eWindow); 310 INTERFACE void HAL_SC_VOP_Set_Brightness_Value(void *pInstance, MS_XC_VOP_CHANNEL_t eVop_Channel, MS_U16 u16Val, SCALER_WIN eWindow); 311 312 INTERFACE MS_BOOL HAL_SC_Set_DynamicScaling(void *pInstance,MS_U32 u32MemBaseAddr, MS_U8 u8MIU_Select, MS_U8 u8IdxDepth, MS_BOOL bOP_On, MS_BOOL bIPS_On, MS_BOOL bIPM_On); 313 INTERFACE MS_BOOL HAL_SC_Get_DynamicScaling_Status(void); 314 INTERFACE void HAL_SC_Enable_VInitFactor(void *pInstance,MS_BOOL bEnable,SCALER_WIN eWindow); 315 INTERFACE void HAL_SC_Set_VInitFactorOne(void *pInstance,MS_U32 u32Value,SCALER_WIN eWindow); 316 INTERFACE void HAL_SC_Set_VInitFactorTwo(void *pInstance,MS_U32 u32Value,SCALER_WIN eWindow); 317 INTERFACE void HAL_SC_Set_vsd_input_line_count(void *pInstance,MS_BOOL bEnable,MS_BOOL bUserMode,MS_U32 u32UserLineCount,SCALER_WIN eWindow); 318 INTERFACE void HAL_SC_Set_vsd_output_line_count(void *pInstance,MS_BOOL bEnable,MS_U32 u32LineCount,SCALER_WIN eWindow); 319 INTERFACE MS_U32 Hal_SC_CheckSubWinPreScaling(MS_U16 u16ScaleDst,MS_BOOL bInterlace); 320 INTERFACE void HAL_SC_EnableFPLL(void); 321 INTERFACE MS_BOOL HAL_SC_WaitFPLLDone(void *pInstance); 322 INTERFACE MS_U16 HAL_SC_GetOutputVFreqX100(MS_U32 u32XTAL_Clock); 323 INTERFACE MS_BOOL Hal_SC_get_csc(void *pInstance,SCALER_WIN eWindow); 324 325 //Add for T3 326 INTERFACE void HAL_SC_FilmMode_Patch1(void *pInstance); 327 328 INTERFACE void HAL_SC_SetMainLineBufferOffset(void *pInstance, MS_U16 u16Linebuffer); 329 INTERFACE void HAL_SC_SetSubLineBufferOffset(void *pInstance, MS_U16 u16Linebuffer); 330 INTERFACE void HAL_SC_SetDisplay_LineBuffer_Mode(void *pInstance, MS_BOOL bEnable); 331 INTERFACE void HAL_SC_SetDisplay_Start_Mode(void *pInstance, MS_BOOL bEnable); 332 INTERFACE void HAL_SC_FillLineBuffer(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 333 INTERFACE void Hal_SC_enable_window(void *pInstance, MS_BOOL bEn,SCALER_WIN eWindow); 334 INTERFACE void Hal_SC_enable_window_burst(void *pInstance, MS_BOOL bEn,SCALER_WIN eWindow); 335 INTERFACE void Hal_SC_set_trigger_signal(void); 336 INTERFACE void Hal_SC_Set_extra_fetch_line(void *pInstance, MS_U8 u8val); 337 INTERFACE void Hal_SC_Set_extra_adv_line(void *pInstance, MS_U8 u8val); 338 INTERFACE void Hal_SC_SetOPWriteOff(void *pInstance, MS_BOOL bEna); 339 INTERFACE MS_BOOL Hal_SC_GetOPWriteOff(void *pInstance); 340 INTERFACE MS_BOOL Hal_SC_get_pixel_rgb(void *pInstance, XC_Get_Pixel_RGB *pData); 341 342 // FPLL 343 void HAL_SC_Set_FPLL_Limit(void *pInstance, MS_U32 *u32PllSet, MS_U32 u32LowBound, MS_U32 u32UpBound, MS_BOOL _bInFPLLDbgMode, MS_U32 _U32LimitD5D6D7); 344 345 //Add for U4 346 INTERFACE void Hal_SC_Set_OSD2VE(void *pInstance, EN_VOP_SEL_OSD_XC2VE_MUX eVOPSelOSD_MUX); 347 //Add for T4/Janus 348 INTERFACE MS_BOOL Hal_SC_IsOPMFetchPatch_Enable(void); 349 INTERFACE MS_BOOL Hal_SC_Check_HNonLinearScaling(void *pInstance); 350 351 //Add for T8 H3D reg handle 352 INTERFACE void Hal_XC_H3D_Enable(void *pInstance, MS_BOOL bEn); 353 INTERFACE void Hal_XC_H3D_Input3DType(void *pInstance, E_XC_3D_INPUT_MODE e3DType); 354 INTERFACE void Hal_XC_H3D_Breakline_Enable(void *pInstance, MS_BOOL bEn); 355 INTERFACE void Hal_XC_H3D_HDE(void *pInstance, MS_U16 u16Hde); 356 INTERFACE void Hal_XC_H3D_LR_Toggle_Enable(void *pInstance, MS_BOOL bEn, MS_BOOL b2DTo3D, MS_BOOL bSkipDefaultLRFlag); 357 INTERFACE void HAL_XC_H3D_OPM_SBYS_PIP_Enable(void *pInstance, MS_BOOL bEn); 358 INTERFACE void Hal_XC_H3D_HDE(void *pInstance,MS_U16 u16Hde); 359 INTERFACE void Hal_XC_H3D_VDE_F0(void *pInstance,MS_U16 u16Vde); 360 INTERFACE void Hal_XC_H3D_VDE_F2(void *pInstance,MS_U16 u16Vde); 361 INTERFACE void Hal_XC_H3D_HBLANK(void *pInstance,MS_U16 u16Hblank); 362 INTERFACE void Hal_XC_H3D_INIT_VBLANK(void *pInstance,MS_U8 u8Vblank); 363 INTERFACE void Hal_XC_H3D_VBLANK0(void *pInstance,MS_U8 u8Vblank); 364 INTERFACE void Hal_XC_H3D_VBLANK1(void *pInstance,MS_U8 u8Vblank); 365 INTERFACE void Hal_XC_H3D_VBLANK2(void *pInstance,MS_U8 u8Vblank); 366 INTERFACE void Hal_XC_H3D_VSYNC_WIDTH(void *pInstance,MS_U8 u8Width); 367 INTERFACE void Hal_XC_H3D_VSYNC_POSITION(void *pInstance,MS_U16 u16Position); 368 369 INTERFACE MS_BOOL Hal_SC_Detect_RequestFBL_Mode(void *pInstance); 370 INTERFACE void Hal_XC_SetFrameColor(void *pInstance, MS_U32 u32aRGB); 371 INTERFACE MS_BOOL Hal_SC_is_extra_req_en(void *pInstance, MS_U16 *pu16MainHStart, MS_U16 *pu16MainHEnd, MS_U16 *pu16SubHStart, MS_U16 *pu16SubHEnd); 372 INTERFACE MS_U8 Hal_SC_getVSyncWidth(void *pInstance, SCALER_WIN eWindow); 373 INTERFACE void Hal_SC_enable_cursor_report(void *pInstance, MS_BOOL bEn); 374 375 //Add for K1, just a dummy function at this chip 376 INTERFACE E_APIXC_ReturnValue Hal_SC_Set_OSDLayer(void *pInstance, E_VOP_OSD_LAYER_SEL eVOPOSDLayer, SCALER_WIN eWindow); 377 INTERFACE E_VOP_OSD_LAYER_SEL Hal_SC_Get_OSDLayer(void *pInstance, SCALER_WIN eWindow); 378 INTERFACE E_APIXC_ReturnValue Hal_SC_Set_VideoAlpha(void *pInstance, MS_U8 u8Val, SCALER_WIN eWindow); 379 INTERFACE E_APIXC_ReturnValue Hal_SC_Get_VideoAlpha(void *pInstance, MS_U8 *pu8Val, SCALER_WIN eWindow); 380 INTERFACE void Hal_XC_ClearScalingFactorForInternalCalib(void *pInstance ); 381 INTERFACE MS_BOOL MHal_XC_SetFRCMBufAddress(void *pInstance, MS_U32 u32BaseAddr, SCALER_WIN eWindow); 382 383 INTERFACE MS_BOOL MHal_XC_SetFRCMBufSize(void *pInstance, MS_U32 u32BufSize, SCALER_WIN eWindow); 384 385 INTERFACE MS_U8 MHal_SC_cal_usedgain_to_reggain(MS_U32 u16UsedGain_x32); 386 INTERFACE E_APIXC_ReturnValue Hal_SC_OP2VOPDESel(void *pInstance,E_OP2VOP_DE_SEL eVopDESel); 387 INTERFACE MS_BOOL Hal_XC_SVOutput_GetCaps(void *pInstance); 388 389 #define _MHal_SC_Flock_Caculate_LPLLSet(args...) 390 #define _MHal_SC_Set_LPLL_Limit(args...) 391 #define _MHal_SC_Flock_Set_IGainPGain(args...) 392 #define _MHal_SC_Flock_Set_LPLL_Enable(args...) 393 394 #define MHal_CLKGEN_FRC_Bypass_Enable(args...) 395 396 #define Hal_XC_IsForcePrescaling_3D Hal_XC_IsForcePrescaling 397 INTERFACE E_APIXC_ReturnValue Hal_XC_IsForcePrescaling(void *pInstance,const XC_InternalStatus *pSrcInfo, MS_BOOL *pbForceV, MS_BOOL *pbForceH, SCALER_WIN eWindow); 398 INTERFACE MS_U32 MHal_SC_Get_LpllSet_Factor(void *pInstance,MS_U8 u8LPLL_Mode,MS_U8 u8LPLL_Type, MS_U32 u32DefaultDClk); 399 INTERFACE MS_U32 MHal_SC_Get_LpllSet_Factor_denominator(void *pInstance,MS_U8 u8LPLL_Mode,MS_U8 u8LPLL_Type, MS_U32 u32DefaultDClk); 400 INTERFACE E_APIXC_ReturnValue Hal_SC_Enable_AVMute(void *pInstance,SCALER_WIN eWindow); 401 INTERFACE MS_BOOL Hal_XC_ReportPixelInfo(void *pInstance,MS_XC_REPORT_PIXELINFO *pstRepPixInfo); 402 403 INTERFACE void MHal_XC_Calc_IGainPGain(void *pInstance, MS_U8 *u8GainI, MS_U8 *u8GainP, MS_U32 u32XTAL_Clock, MS_U8 u8LGain, MS_U8 u8Vco, MS_U16 u16HTotal, MS_U16 u16VTotal, MS_U8 u8FRC_Out); 404 405 #define Hal_SC_set_mrq_miusel(args...) 406 #define Hal_SC_set_mcdi_memoryaddress(args...) 407 #define Hal_SC_set_mcdi_write_limit(args...) 408 #define Hal_SC_enable_mcdi(args...); 409 410 INTERFACE void Hal_SC_set_bws_mode(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 411 INTERFACE void Hal_SC_sw_lcnt_en(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 412 INTERFACE void Hal_SC_set_sw_lcnt(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 413 INTERFACE void Hal_SC_set_ipmw_lcnt_inv(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 414 INTERFACE void Hal_SC_set_ipmr_lcnt_inv(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 415 INTERFACE void Hal_SC_set_opm_lcnt_inv(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 416 INTERFACE void Hal_SC_set_opm_lcnt_inv_pre(void *pInstance,MS_BOOL bEnable, SCALER_WIN eWindow); 417 INTERFACE void Hal_SC_3D_Adjust_PreHVscaling_SaveBW(void *pInstance, XC_InternalStatus *pSrcInfo, MS_BOOL *pb3DPreHScaling,MS_BOOL *pb3DPreVScaling,MS_BOOL bForcePreHScalingDown,MS_BOOL bForcePreVScalingDown,SCALER_WIN eWindow); 418 419 420 #define MHAL_SC_set_osdc_tgen_hsync_start(args...) 421 #define MHAL_SC_set_osdc_tgen_hsync_end(args...) 422 #define MHAL_SC_set_osdc_tgen_hframe_de_start(args...) 423 #define MHAL_SC_set_osdc_tgen_hframe_de_end(args...) 424 #define MHAL_SC_set_osdc_tgen_htotal(args...) 425 #define MHAL_SC_set_osdc_tgen_vtotal(args...) 426 #define MHAL_SC_set_osdc_tgen_vframe_de_start(args...) 427 #define MHAL_SC_set_osdc_tgen_vframe_de_end(args...) 428 #define MHAL_SC_set_osdc_tgen_vsync_start(args...) 429 #define MHAL_SC_set_osdc_tgen_vsync_end(args...) 430 #define MHAL_SC_set_osdc_tgen_reset_enable(args...) 431 #define MHAL_SC_set_osdc_swreset_enable(args...) 432 #define MHAL_SC_set_osdc_mixer_bypass_enable(args...) 433 #define MHAL_SC_set_osdc_mixer_inv_alpha_enable(args...) 434 #define MHAL_SC_set_osdc_mixer_hs_n_vfde_enable(args...) 435 #define MHAL_SC_set_osdc_mixer_hfde_n_vfde_enable(args...) 436 #define MHAL_SC_set_osdc_clk_mux(args...) 437 #define MHAL_SC_enable_osdc(args...) 438 439 #define MHAL_SC_get_osdc_tgen_hsync_start(args...) 0 440 #define MHAL_SC_get_osdc_tgen_hsync_end(args...) 0 441 #define MHAL_SC_get_osdc_tgen_hframe_de_start(args...) 0 442 #define MHAL_SC_get_osdc_tgen_hframe_de_end(args...) 0 443 #define MHAL_SC_get_osdc_tgen_htotal(args...) 0 444 #define MHAL_SC_get_osdc_tgen_vtotal(args...) 0 445 #define MHAL_SC_get_osdc_tgen_vframe_de_start(args...) 0 446 #define MHAL_SC_get_osdc_tgen_vframe_de_end(args...) 0 447 #define MHAL_SC_get_osdc_tgen_vsync_start(args...) 0 448 #define MHAL_SC_get_osdc_tgen_vsync_end(args...) 0 449 #define MHAL_SC_get_osdc_mixer_bypass_status(args...) 0 450 #define MHAL_SC_get_osdc_mixer_inv_alpha_status(args...) 0 451 #define MHAL_SC_get_osdc_mixer_hs_n_vfde_status(args...) 0 452 #define MHAL_SC_get_osdc_mixer_hfde_n_vfde_status(args...) 0 453 #define MHAL_SC_get_osdc_onoff_status(args...) 0 454 455 #define MHal_XC_ByPass_SetOSDVsyncPos(args...) 456 #define MHal_XC_Bypass_SetinputSrc(args...) 457 #define MHal_XC_BYPASS_Setinputclk(args...) 458 #define MHal_XC_BYPASS_SetCSC(args...) 459 460 INTERFACE void MHal_XC_SetForceReadBank(void *pInstance, MS_BOOL bEnable, MS_U8 u8Bank, SCALER_WIN eWindow); 461 INTERFACE void MHal_XC_SetForceCurrentReadBank(void *pInstance,MS_BOOL bEnable, SCALER_WIN eWindow); 462 INTERFACE void Hal_SC_SetPX2MemFormat(void *pInstance, SCALER_WIN eWindow); 463 INTERFACE MS_BOOL Hal_SC_IsPX2MemFormat(void *pInstance, SCALER_WIN eWindow); 464 //#define MHal_XC_Set_DSIndexSourceSelect(args...) 465 //#define MHal_XC_Set_DSForceIndex(args...) 466 INTERFACE MS_BOOL MHal_XC_SetDNRBufAddress(void *pInstance, MS_U32 u32DNRBaseAddr, SCALER_WIN eWindow); 467 INTERFACE MS_U32 MHal_XC_GetDNRBufAddress(void *pInstance, SCALER_WIN eWindow); 468 INTERFACE MS_BOOL MHal_XC_SetDNRBufSize(void *pInstance, MS_U32 u32DNRBufSize, SCALER_WIN eWindow); 469 INTERFACE MS_U32 MHal_XC_GetDNRBufSize(void *pInstance, SCALER_WIN eWindow); 470 #define MHal_XC_Init_Patch(args...) 0 471 INTERFACE E_APIXC_ReturnValue Hal_SC_SetOSDDetect(void *pInstance, MS_BOOL bEnable, MS_U32 Threhold); 472 INTERFACE E_APIXC_ReturnValue Hal_SC_GetOSDDetect(void *pInstance, MS_BOOL *pbOSD); 473 474 //Vtrack 475 #define MHal_XC_Vtrack_SetPayloadData(args...) 2 476 #define MHal_XC_Vtrack_SetUserDefindedSetting(args...)2 477 #define MHal_XC_Vtrack_Enable(args...) 2 478 479 // scaling without mute 480 INTERFACE void MHAL_SC_enable_vsd_shift(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 481 INTERFACE MS_BOOL MHal_XC_IsPNLYUVOutput(void *pInstance); 482 INTERFACE void MHal_SC_set_manual_rbank_switch_cnt(void *pInstance, MS_BOOL bEnable, MS_U16 u16SwitchCnt, SCALER_WIN eWindow); 483 #define HAL_SC_Set_LB_MergeAddress(args...) 484 INTERFACE MS_BOOL Hal_SC_Init(void *pInstance); 485 INTERFACE MS_U32 Hal_SC_Get_Device_Offset(MS_U8 deviceIdx); 486 487 INTERFACE void Hal_SC_set_ficlk2(void *pInstance, MS_U8 u8Clk_Mux, MS_BOOL bEnable, SCALER_WIN eWindow); 488 INTERFACE void HAL_SC_EnableLegacyMode(void *pInstance, MS_BOOL bEnable); 489 INTERFACE void HAL_SC_SwitchIPMWriteBank(void *pInstance, MS_BOOL bEnable, E_XC_IPM_CONNECT_ID eIPMConnect); 490 INTERFACE void HAL_SC_SwitchFRCMWriteBank(void *pInstance, MS_BOOL bEnable, E_XC_FRCMW_CONNECT_ID eFRCMConnect); 491 INTERFACE void HAL_SC_Enable_FEOP1(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 492 493 INTERFACE void Hal_SC_set_fmclk(void *pInstance, MS_BOOL bEnable); 494 INTERFACE MS_BOOL Hal_SC_3D_Is_LR_Sbs2Line(void *pInstance); 495 INTERFACE void Hal_SC_3D_SetLRChgMode(void *pInstance, HAL_SC_3D_LRCHGMODE eLRChgMode); 496 INTERFACE void Hal_SC_3D_SetInitialLRIndex(void *pInstance, MS_BOOL bRFirst); 497 INTERFACE void Hal_SC_3D_SetSplitHalf(void *pInstance, MS_BOOL bEnable); 498 INTERFACE void HAL_SC_Set_vsd_3D_autofactor_reset(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 499 INTERFACE MS_BOOL Hal_SC_CheckMuteStatusByRegister(void *pInstance, SCALER_WIN eWindow); 500 #define Hal_SC_set_frcm_freezeimg(args...) 501 #define Hal_SC_set_frcm_memoryaddress(args...) 502 #define Hal_SC_set_frcm_write_limit(args...) 503 #define Hal_SC_set_frcm_mirror(args...) 504 #define Hal_SC_set_edclk(args...) 505 #define Hal_SC_set_T3D_setting(args...) 506 #define Hal_SC_set_T3D_H_size(args...) 507 #define MHAL_SC_set_2p_mode(args...) 0 508 509 #define Hal_SC_set_frcm_to_FD_mask(args...) 510 #define Hal_SC_set_frcm_to_freeze(args...) 511 512 #define Hal_SC_3D_set_top_win_6Tap(args...) 513 INTERFACE MS_BOOL Hal_SC_get_ip2_csc(void *pInstance, SCALER_WIN eWindow); 514 INTERFACE void Hal_SC_get_miusel(void *pInstance, SC_MIUSEL_t* stMIUSel); 515 INTERFACE MS_U32 Hal_SC_get_HDMIpolicy(void *pInstance); 516 517 // HW internal pattern 518 INTERFACE void MHal_SC_OP1_Pattern_backup_setting(void); 519 INTERFACE void MHal_SC_OP1_Pattern_enable(MS_BOOL bEnable); 520 INTERFACE void MHal_SC_OP1_Pattern_init_setting(void); 521 INTERFACE void MHal_SC_OP1_Pattern_restore_setting(void); 522 INTERFACE void MHal_SC_OP1_Pattern_set_jump_threshold(MS_U16 u16Threshold); 523 INTERFACE void MHal_SC_OP1_Pattern_set_wraddr(MS_U16 u16Addr); 524 INTERFACE void MHal_SC_OP1_Pattern_sram_write_enable(MS_BOOL bEn); 525 INTERFACE void MHal_SC_OP1_Pattern_sram_write_fastmode(MS_BOOL bEn); 526 INTERFACE void MHal_SC_OP1_Pattern_sram_writestart(void); 527 INTERFACE void MHal_SC_OP1_Pattern_sram_writedone(void); 528 INTERFACE MS_BOOL MHal_SC_OP1_Pattern_set_patgen_mode(EN_XC_OP1_PATGEN_MODE mode); 529 INTERFACE void MHal_SC_OP1_PatGen_adjust_frame_size(MS_U16 u16HSize, MS_U16 u16VSize); 530 INTERFACE void MHal_SC_OP1_Pattern_set_frame_size(MS_U16 u16HSize, MS_U16 u16VSize); 531 INTERFACE void MHal_SC_OP1_Pattern_set_dotfade_value(MS_U8 RVal, MS_U8 GVal, MS_U8 BVal); 532 INTERFACE void MHal_SC_OP1_Pattern_set_dotfade_overfollow_protection(MS_BOOL REn, MS_BOOL GEn, MS_BOOL BEn); 533 INTERFACE void MHal_SC_OP1_Pattern_pure_color(MS_U8 u8Color); 534 INTERFACE void MHal_SC_OP1_Pattern_set_sram(MS_U16 u16Tbl0, MS_U16 u16Tbl1, MS_U16 u16Tbl2, MS_U16 u16Tbl3); 535 INTERFACE void MHal_SC_OP1_Pattern_define_tile(MS_U16 hTile, MS_U16 vTile); 536 INTERFACE void MHal_SC_OP1_Pattern_enable_border(MS_BOOL bEnable, MS_U16 RVal, MS_U16 GVal, MS_U16 BVal); 537 INTERFACE void MHal_SC_OP1_Pattern_customize_blcok(MS_U8 block_Size, MS_U8 repeat_Num, MS_BOOL isLineStart, MS_BOOL isLineEnd, MS_U16 RVal, MS_U16 GVal, MS_U16 BVal, E_XC_OP1_PATTERN_DTAT_TYPE eType); 538 INTERFACE void MHal_SC_OP1_Pattern_set_border_sram(XC_OP1_PatGen_Border tile1, XC_OP1_PatGen_Border tile2, XC_OP1_PatGen_Border tile3, XC_OP1_PatGen_Border tile4, XC_OP1_PatGen_Border tile5); 539 INTERFACE void MHAL_SC_set_r2y_en(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow); 540 INTERFACE void MHAL_SC_set_VOP(void *pInstance, MS_XC_VOP_Data *pstVOPData); 541 542 #ifdef ENABLE_SPREADMODE 543 //not implemnet 544 #define MHal_XC_IsSupportSpreadMode(args...) FALSE 545 #endif 546 547 #ifdef UFO_XC_HDR 548 INTERFACE E_APIXC_ReturnValue MHal_XC_HDR_GetCaps(void *pInstance, XC_HDR_SUPPORTED_CAPS *pstHDRCaps); 549 #endif 550 551 #undef INTERFACE 552 #endif /* MHAL_SC_H */ 553 554