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