xref: /utopia/UTPA2-700.0.x/modules/xc/hal/mustang/xc/include/mhal_sc.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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