xref: /utopia/UTPA2-700.0.x/modules/xc/drv/ace/drvACE.c (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 /// file    drv_ACE.c
94*53ee8cc1Swenshuai.xi /// @brief  Driver Interface
95*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
96*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
97*53ee8cc1Swenshuai.xi 
98*53ee8cc1Swenshuai.xi 
99*53ee8cc1Swenshuai.xi #define  _MDRV_ACE_C_
100*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
101*53ee8cc1Swenshuai.xi #include <linux/string.h>
102*53ee8cc1Swenshuai.xi #else
103*53ee8cc1Swenshuai.xi #include <string.h>
104*53ee8cc1Swenshuai.xi #endif
105*53ee8cc1Swenshuai.xi #include "MsCommon.h"
106*53ee8cc1Swenshuai.xi #include "apiXC_Ace.h"
107*53ee8cc1Swenshuai.xi #include "drvACE.h"
108*53ee8cc1Swenshuai.xi #include "mhal_ace.h"
109*53ee8cc1Swenshuai.xi #include "hwreg_ace.h"
110*53ee8cc1Swenshuai.xi #include "ace_hwreg_utility2.h"
111*53ee8cc1Swenshuai.xi #include "MsAce_LIB.h"
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
114*53ee8cc1Swenshuai.xi //
115*53ee8cc1Swenshuai.xi //  ACE library function start
116*53ee8cc1Swenshuai.xi //
117*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi MS_U8 ACE_VBuf[32] =  {
120*53ee8cc1Swenshuai.xi     'M','S','V','C','0','0',                //0,0 fixed
121*53ee8cc1Swenshuai.xi     'A','4',                                //LIB ID
122*53ee8cc1Swenshuai.xi     '0','0',                                //Interface
123*53ee8cc1Swenshuai.xi     '0','1','0','4',                        //Build number
124*53ee8cc1Swenshuai.xi     '0','0','0','8','9','9','8','3',        // Change List
125*53ee8cc1Swenshuai.xi     'A','E','0','0','0','0','0','0','0',    // AE:Saturn4LE  0: MStar Trunk
126*53ee8cc1Swenshuai.xi     'T'                                     // check sum
127*53ee8cc1Swenshuai.xi };
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
130*53ee8cc1Swenshuai.xi //  Local Defines
131*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
132*53ee8cc1Swenshuai.xi #define MAIN_WINDOW     0
133*53ee8cc1Swenshuai.xi #define SUB_WINDOW      1
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi // for Utopia 2.0 to Utopia 1.0 compatibility.
136*53ee8cc1Swenshuai.xi #include "ACE_private.h"
137*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
138*53ee8cc1Swenshuai.xi #include "utopia.h"
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi extern void* pu32ACEInst;
141*53ee8cc1Swenshuai.xi extern void* pu32ACERes[E_ACE_POOL_ID_MAX];
142*53ee8cc1Swenshuai.xi extern ACE_DRV_HDRinit g_ACEinitParameters;
143*53ee8cc1Swenshuai.xi #if 0
144*53ee8cc1Swenshuai.xi typedef struct
145*53ee8cc1Swenshuai.xi {
146*53ee8cc1Swenshuai.xi     MS_U16 u16RedGain;
147*53ee8cc1Swenshuai.xi     MS_U16 u16GreenGain;
148*53ee8cc1Swenshuai.xi     MS_U16 u16BlueGain;
149*53ee8cc1Swenshuai.xi } ACE_PostRGBGainSetting;
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi static ACE_PostRGBGainSetting stACEPostGainSetting[XC_ACE_EX_MAX_DEVICE_NUM][2];
152*53ee8cc1Swenshuai.xi #else
153*53ee8cc1Swenshuai.xi #define stACEPostGainSetting psACEResPri->stdrvACE.stACEPostGainSetting
154*53ee8cc1Swenshuai.xi #define MWEPanel psACEResPri->stdrvACE.MWEPanel
155*53ee8cc1Swenshuai.xi #endif
156*53ee8cc1Swenshuai.xi /******************************************************************************/
157*53ee8cc1Swenshuai.xi /*                   Function Prototypes                                      */
158*53ee8cc1Swenshuai.xi /******************************************************************************/
159*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
160*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_GetVersion()
161*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get version of ACE library
162*53ee8cc1Swenshuai.xi /// @param <IN>        \b None
163*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
164*53ee8cc1Swenshuai.xi /// @param <RET>       \b Version
165*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
166*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_GetVersion(void)167*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_GetVersion(void)
168*53ee8cc1Swenshuai.xi {
169*53ee8cc1Swenshuai.xi     return msACE_GetVersion();
170*53ee8cc1Swenshuai.xi }
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
173*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: void MDrv_ACE_Init(  MS_BOOL bScalerWin, MS_S16* psColorCorrectionTable, MS_S16* psPCsRGBTable )
174*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Initialize ACE varible
175*53ee8cc1Swenshuai.xi /// @param <IN>        \b None
176*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
177*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
178*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
179*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
180*53ee8cc1Swenshuai.xi 
MDrv_ACE_Init(void * pInstance,MS_BOOL bScalerWin,MS_S16 * psColorCorrectionTable,MS_S16 * psPCsRGBTable)181*53ee8cc1Swenshuai.xi void MDrv_ACE_Init(void* pInstance, MS_BOOL bScalerWin, MS_S16* psColorCorrectionTable, MS_S16* psPCsRGBTable )
182*53ee8cc1Swenshuai.xi {
183*53ee8cc1Swenshuai.xi     _ACE_GET_VARIABLE();
184*53ee8cc1Swenshuai.xi     memset(stACEPostGainSetting, 0, sizeof(stACEPostGainSetting));
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi     if(psACEResPri->stapiACE.g_bACEModuleInited[bScalerWin] == FALSE)
187*53ee8cc1Swenshuai.xi     {
188*53ee8cc1Swenshuai.xi         InitACEVar(pInstance);
189*53ee8cc1Swenshuai.xi         msACEPCForceYUVtoRGB(pInstance, bScalerWin, TRUE);
190*53ee8cc1Swenshuai.xi     }
191*53ee8cc1Swenshuai.xi     msACESetColorCorrectionTable(pInstance, bScalerWin, psColorCorrectionTable);
192*53ee8cc1Swenshuai.xi     msACESetPCsRGBTable(pInstance, bScalerWin, psPCsRGBTable);
193*53ee8cc1Swenshuai.xi     Hal_ACE_Set_Device_Bank_Offset();
194*53ee8cc1Swenshuai.xi }
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
197*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PCForceYUVtoRGB()
198*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Force transfer YUV to RGB
199*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
200*53ee8cc1Swenshuai.xi /// @param <IN>        \b bEnable
201*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
202*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
203*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
204*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PCForceYUVtoRGB(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bEnable)205*53ee8cc1Swenshuai.xi void MDrv_ACE_PCForceYUVtoRGB(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEnable )
206*53ee8cc1Swenshuai.xi {
207*53ee8cc1Swenshuai.xi     msACEPCForceYUVtoRGB(pInstance, bScalerWin, bEnable);
208*53ee8cc1Swenshuai.xi }
209*53ee8cc1Swenshuai.xi 
210*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
211*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetContrast()
212*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Contrast
213*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
214*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Contrast
215*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
216*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
217*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
218*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicSetContrast(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bUseYUVSpace,MS_U8 u8Contrast)219*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetContrast(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bUseYUVSpace, MS_U8 u8Contrast )
220*53ee8cc1Swenshuai.xi {
221*53ee8cc1Swenshuai.xi     msAdjustVideoContrast(pInstance, bScalerWin, u8Contrast);
222*53ee8cc1Swenshuai.xi }
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
225*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetRGB()
226*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust RGB
227*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
228*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Red
229*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Green
230*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Blue
231*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
232*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
233*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
234*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicSetRGB(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bUseYUVSpace,MS_U8 u8Red,MS_U8 u8Green,MS_U8 u8Blue)235*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetRGB(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bUseYUVSpace, MS_U8 u8Red, MS_U8 u8Green, MS_U8 u8Blue )
236*53ee8cc1Swenshuai.xi {
237*53ee8cc1Swenshuai.xi     if(bUseYUVSpace)
238*53ee8cc1Swenshuai.xi     {
239*53ee8cc1Swenshuai.xi         msAdjustVideoRGB(pInstance, bScalerWin, u8Red, u8Green, u8Blue);
240*53ee8cc1Swenshuai.xi     }
241*53ee8cc1Swenshuai.xi     else
242*53ee8cc1Swenshuai.xi     {
243*53ee8cc1Swenshuai.xi         msAdjustPCRGB(pInstance, bScalerWin, u8Red, u8Green, u8Blue);
244*53ee8cc1Swenshuai.xi     }
245*53ee8cc1Swenshuai.xi }
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
248*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetRGB_10Bits()
249*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust RGB
250*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
251*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16Red
252*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16Green
253*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16Blue
254*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
255*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
256*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
257*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicSetRGB_10Bits(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bUseYUVSpace,MS_U16 u16Red,MS_U16 u16Green,MS_U16 u16Blue)258*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetRGB_10Bits( void* pInstance, MS_BOOL bScalerWin, MS_BOOL bUseYUVSpace, MS_U16 u16Red, MS_U16 u16Green, MS_U16 u16Blue )
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi     if(bUseYUVSpace)
261*53ee8cc1Swenshuai.xi     {
262*53ee8cc1Swenshuai.xi         msAdjustVideoRGB_10Bits(pInstance, bScalerWin, u16Red, u16Green, u16Blue);
263*53ee8cc1Swenshuai.xi     }
264*53ee8cc1Swenshuai.xi     else
265*53ee8cc1Swenshuai.xi     {
266*53ee8cc1Swenshuai.xi         msAdjustPCRGB_10Bits(pInstance, bScalerWin, u16Red, u16Red, u16Red);
267*53ee8cc1Swenshuai.xi     }
268*53ee8cc1Swenshuai.xi }
269*53ee8cc1Swenshuai.xi 
270*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
271*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetPostRGBGainOffset()
272*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Post RGB Gain and Offset simultaneously
273*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
274*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8RedGain
275*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8GreenGain
276*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8BlueGain
277*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16RedOffset
278*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16GreenOffset
279*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16BlueOffset
280*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
281*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
282*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
283*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicSetPostRGBGainOffset(void * pInstance,MS_BOOL bScalerWin,MS_U16 u8RedGain,MS_U16 u8GreenGain,MS_U16 u8BlueGain,MS_U16 u16RedOffset,MS_U16 u16GreenOffset,MS_U16 u16BlueOffset,MS_U8 u8Step)284*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetPostRGBGainOffset(void* pInstance, MS_BOOL bScalerWin,
285*53ee8cc1Swenshuai.xi                                       MS_U16 u8RedGain,    MS_U16 u8GreenGain,    MS_U16 u8BlueGain,
286*53ee8cc1Swenshuai.xi                                       MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset, MS_U8 u8Step)
287*53ee8cc1Swenshuai.xi {
288*53ee8cc1Swenshuai.xi     MS_U8 u8Idx;
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi     u8Idx = (bScalerWin == TRUE) ? 1 : 0;
291*53ee8cc1Swenshuai.xi     _ACE_GET_VARIABLE();
292*53ee8cc1Swenshuai.xi 
293*53ee8cc1Swenshuai.xi     stACEPostGainSetting[u8Idx].u16RedGain = u8RedGain ;
294*53ee8cc1Swenshuai.xi     stACEPostGainSetting[u8Idx].u16GreenGain = u8GreenGain ;
295*53ee8cc1Swenshuai.xi     stACEPostGainSetting[u8Idx].u16BlueGain = u8BlueGain ;
296*53ee8cc1Swenshuai.xi 
297*53ee8cc1Swenshuai.xi     Hal_ACE_SetPostRGBGainOffsetTogether(pInstance, bScalerWin,
298*53ee8cc1Swenshuai.xi                                          stACEPostGainSetting[u8Idx].u16RedGain,
299*53ee8cc1Swenshuai.xi                                          stACEPostGainSetting[u8Idx].u16GreenGain,
300*53ee8cc1Swenshuai.xi                                          stACEPostGainSetting[u8Idx].u16BlueGain,
301*53ee8cc1Swenshuai.xi                                          u16RedOffset   << u8Step,
302*53ee8cc1Swenshuai.xi                                          u16GreenOffset << u8Step,
303*53ee8cc1Swenshuai.xi                                          u16BlueOffset  << u8Step);
304*53ee8cc1Swenshuai.xi }
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
307*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetPostRGBGain()
308*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Post RGB Gain
309*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
310*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8RedGain
311*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8GreenGain
312*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8BlueGain
313*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
314*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
315*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
316*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicSetPostRGBGain(void * pInstance,MS_BOOL bScalerWin,MS_U16 u8RedGain,MS_U16 u8GreenGain,MS_U16 u8BlueGain)317*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetPostRGBGain(void* pInstance, MS_BOOL bScalerWin, MS_U16 u8RedGain, MS_U16 u8GreenGain, MS_U16 u8BlueGain)
318*53ee8cc1Swenshuai.xi {
319*53ee8cc1Swenshuai.xi     MS_U8 u8Idx;
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi     u8Idx = (bScalerWin == TRUE) ? 1 : 0;
322*53ee8cc1Swenshuai.xi     _ACE_GET_VARIABLE();
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi     stACEPostGainSetting[u8Idx].u16RedGain = u8RedGain ;
325*53ee8cc1Swenshuai.xi     stACEPostGainSetting[u8Idx].u16GreenGain = u8GreenGain ;
326*53ee8cc1Swenshuai.xi     stACEPostGainSetting[u8Idx].u16BlueGain = u8BlueGain ;
327*53ee8cc1Swenshuai.xi 
328*53ee8cc1Swenshuai.xi     Hal_ACE_SetPostRGBGain(pInstance, bScalerWin,
329*53ee8cc1Swenshuai.xi         stACEPostGainSetting[u8Idx].u16RedGain,
330*53ee8cc1Swenshuai.xi         stACEPostGainSetting[u8Idx].u16GreenGain,
331*53ee8cc1Swenshuai.xi         stACEPostGainSetting[u8Idx].u16BlueGain);
332*53ee8cc1Swenshuai.xi }
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
335*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicGetPostRGBGain()
336*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get ACE Post RGB Gain Info
337*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
338*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucInfoType
339*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
340*53ee8cc1Swenshuai.xi /// @param <RET>       \b wReturnValue
341*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
342*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicGetPostRGBGain(void * pInstance,MS_BOOL bWindow,MS_U16 u16ACEinfo)343*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_PicGetPostRGBGain(void* pInstance, MS_BOOL bWindow, MS_U16 u16ACEinfo)
344*53ee8cc1Swenshuai.xi {
345*53ee8cc1Swenshuai.xi     EnuACEInfoType eACEInfoType   = (EnuACEInfoType) u16ACEinfo;
346*53ee8cc1Swenshuai.xi     MS_U16         u16ReturnValue = 0;
347*53ee8cc1Swenshuai.xi     MS_U8           u8Idx;
348*53ee8cc1Swenshuai.xi     _ACE_GET_VARIABLE();
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi     u8Idx = (bWindow == TRUE) ? 1 : 0;
351*53ee8cc1Swenshuai.xi 
352*53ee8cc1Swenshuai.xi     switch( eACEInfoType )
353*53ee8cc1Swenshuai.xi     {
354*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_R_GAIN:
355*53ee8cc1Swenshuai.xi             u16ReturnValue = stACEPostGainSetting[u8Idx].u16RedGain;
356*53ee8cc1Swenshuai.xi             break;
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_G_GAIN:
359*53ee8cc1Swenshuai.xi 	        u16ReturnValue = stACEPostGainSetting[u8Idx].u16GreenGain;
360*53ee8cc1Swenshuai.xi 	        break;
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_B_GAIN:
363*53ee8cc1Swenshuai.xi             u16ReturnValue = stACEPostGainSetting[u8Idx].u16BlueGain;
364*53ee8cc1Swenshuai.xi             break;
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi         default:
367*53ee8cc1Swenshuai.xi         {
368*53ee8cc1Swenshuai.xi             MS_DEBUG_MSG(printf("Get Post RGB Gain fails\n"));
369*53ee8cc1Swenshuai.xi             u16ReturnValue = 0;
370*53ee8cc1Swenshuai.xi             break;
371*53ee8cc1Swenshuai.xi         }
372*53ee8cc1Swenshuai.xi     }
373*53ee8cc1Swenshuai.xi     return u16ReturnValue;
374*53ee8cc1Swenshuai.xi }
375*53ee8cc1Swenshuai.xi 
376*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
377*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetPostRGBOffset()
378*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Post RGB Offset
379*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
380*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16RedOffset
381*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16GreenOffset
382*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16BlueOffset
383*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Step
384*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
385*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
386*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
387*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicSetPostRGBOffset(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16RedOffset,MS_U16 u16GreenOffset,MS_U16 u16BlueOffset,MS_U8 u8Step)388*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetPostRGBOffset(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset, MS_U8 u8Step)
389*53ee8cc1Swenshuai.xi {
390*53ee8cc1Swenshuai.xi     Hal_ACE_SetPostRGBOffset(pInstance, bScalerWin, u16RedOffset << u8Step, u16GreenOffset << u8Step, u16BlueOffset << u8Step);
391*53ee8cc1Swenshuai.xi }
392*53ee8cc1Swenshuai.xi 
393*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
394*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicGetPostRGBGain()
395*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get ACE Post RGB Gain Info
396*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
397*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucInfoType
398*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
399*53ee8cc1Swenshuai.xi /// @param <RET>       \b wReturnValue
400*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
401*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_PicGetPostRGBOffset(void * pInstance,MS_BOOL bWindow,MS_U16 u16ACEinfo)402*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_PicGetPostRGBOffset(void* pInstance, MS_BOOL bWindow, MS_U16 u16ACEinfo)
403*53ee8cc1Swenshuai.xi {
404*53ee8cc1Swenshuai.xi     EnuACEInfoType eACEInfoType   = (EnuACEInfoType) u16ACEinfo;
405*53ee8cc1Swenshuai.xi     MS_U16         u16ReturnValue = 0;
406*53ee8cc1Swenshuai.xi     _ACE_GET_INST_PRIVATE();
407*53ee8cc1Swenshuai.xi 
408*53ee8cc1Swenshuai.xi     switch( eACEInfoType )
409*53ee8cc1Swenshuai.xi     {
410*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_R:
411*53ee8cc1Swenshuai.xi 	 	{
412*53ee8cc1Swenshuai.xi              if(MAIN_WINDOW == bWindow)
413*53ee8cc1Swenshuai.xi 			{
414*53ee8cc1Swenshuai.xi 				u16ReturnValue = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_21_L, 0x07FF);
415*53ee8cc1Swenshuai.xi 			}
416*53ee8cc1Swenshuai.xi 			else
417*53ee8cc1Swenshuai.xi 			{
418*53ee8cc1Swenshuai.xi 				u16ReturnValue = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_27_L, 0x07FF);
419*53ee8cc1Swenshuai.xi 			}
420*53ee8cc1Swenshuai.xi 			break;
421*53ee8cc1Swenshuai.xi 		}
422*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_G:
423*53ee8cc1Swenshuai.xi 		{
424*53ee8cc1Swenshuai.xi 			if(MAIN_WINDOW == bWindow)
425*53ee8cc1Swenshuai.xi 			{
426*53ee8cc1Swenshuai.xi 				u16ReturnValue = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_22_L, 0x07FF);
427*53ee8cc1Swenshuai.xi 			}
428*53ee8cc1Swenshuai.xi 			else
429*53ee8cc1Swenshuai.xi 			{
430*53ee8cc1Swenshuai.xi 				u16ReturnValue = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_28_L, 0x07FF);
431*53ee8cc1Swenshuai.xi 			}
432*53ee8cc1Swenshuai.xi 			break;
433*53ee8cc1Swenshuai.xi         }
434*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_B:
435*53ee8cc1Swenshuai.xi 		{
436*53ee8cc1Swenshuai.xi 			if(MAIN_WINDOW == bWindow)
437*53ee8cc1Swenshuai.xi 			{
438*53ee8cc1Swenshuai.xi 				u16ReturnValue = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_23_L, 0x07FF);
439*53ee8cc1Swenshuai.xi 			}
440*53ee8cc1Swenshuai.xi 			else
441*53ee8cc1Swenshuai.xi 			{
442*53ee8cc1Swenshuai.xi 				u16ReturnValue = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_29_L, 0x07FF);
443*53ee8cc1Swenshuai.xi 			}
444*53ee8cc1Swenshuai.xi 			break;
445*53ee8cc1Swenshuai.xi         }
446*53ee8cc1Swenshuai.xi         default:
447*53ee8cc1Swenshuai.xi         {
448*53ee8cc1Swenshuai.xi             MS_DEBUG_MSG(printf("Get Post RGB Offset fails\n"));
449*53ee8cc1Swenshuai.xi             u16ReturnValue = 0;
450*53ee8cc1Swenshuai.xi             break;
451*53ee8cc1Swenshuai.xi         }
452*53ee8cc1Swenshuai.xi     }
453*53ee8cc1Swenshuai.xi     return u16ReturnValue;
454*53ee8cc1Swenshuai.xi }
455*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetPostRGBGain(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16ACEinfo)456*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_GetPostRGBGain(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16ACEinfo)
457*53ee8cc1Swenshuai.xi {
458*53ee8cc1Swenshuai.xi     EnuACEInfoType eACEInfoType;
459*53ee8cc1Swenshuai.xi     eACEInfoType = (EnuACEInfoType) u16ACEinfo;
460*53ee8cc1Swenshuai.xi     MS_U8 ret = 0;
461*53ee8cc1Swenshuai.xi     _ACE_GET_INST_PRIVATE();
462*53ee8cc1Swenshuai.xi 
463*53ee8cc1Swenshuai.xi     if(MAIN_WINDOW == bScalerWin)
464*53ee8cc1Swenshuai.xi     {
465*53ee8cc1Swenshuai.xi         switch(eACEInfoType)
466*53ee8cc1Swenshuai.xi         {
467*53ee8cc1Swenshuai.xi             case ACE_INFO_TYPE_R_GAIN:
468*53ee8cc1Swenshuai.xi                 ret = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, POST_R_CHANNEL_GAIN_MAIN, POST_R_CHANNEL_GAIN_MASK)>> 3);
469*53ee8cc1Swenshuai.xi                 break;
470*53ee8cc1Swenshuai.xi             case ACE_INFO_TYPE_G_GAIN:
471*53ee8cc1Swenshuai.xi                 ret = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, POST_G_CHANNEL_GAIN_MAIN, POST_G_CHANNEL_GAIN_MASK)>> 3);
472*53ee8cc1Swenshuai.xi                 break;
473*53ee8cc1Swenshuai.xi             case ACE_INFO_TYPE_B_GAIN:
474*53ee8cc1Swenshuai.xi                 ret = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, POST_B_CHANNEL_GAIN_MAIN, POST_B_CHANNEL_GAIN_MASK)>> 3);
475*53ee8cc1Swenshuai.xi                 break;
476*53ee8cc1Swenshuai.xi             default:
477*53ee8cc1Swenshuai.xi                 ret = 0;
478*53ee8cc1Swenshuai.xi                 break;
479*53ee8cc1Swenshuai.xi         }
480*53ee8cc1Swenshuai.xi     }
481*53ee8cc1Swenshuai.xi     else
482*53ee8cc1Swenshuai.xi #if (MAX_WINDOW_NUM > 1)
483*53ee8cc1Swenshuai.xi     {
484*53ee8cc1Swenshuai.xi         switch(eACEInfoType)
485*53ee8cc1Swenshuai.xi         {
486*53ee8cc1Swenshuai.xi             case ACE_INFO_TYPE_R_GAIN:
487*53ee8cc1Swenshuai.xi                 ret = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, POST_R_CHANNEL_GAIN_SUB, POST_R_CHANNEL_GAIN_MASK)>>3);
488*53ee8cc1Swenshuai.xi                 break;
489*53ee8cc1Swenshuai.xi             case ACE_INFO_TYPE_G_GAIN:
490*53ee8cc1Swenshuai.xi                 ret = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, POST_G_CHANNEL_GAIN_SUB, POST_G_CHANNEL_GAIN_MASK)>>3);
491*53ee8cc1Swenshuai.xi                 break;
492*53ee8cc1Swenshuai.xi             case ACE_INFO_TYPE_B_GAIN:
493*53ee8cc1Swenshuai.xi                 ret = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, POST_B_CHANNEL_GAIN_SUB, POST_B_CHANNEL_GAIN_MASK)>>3);
494*53ee8cc1Swenshuai.xi                 break;
495*53ee8cc1Swenshuai.xi             default:
496*53ee8cc1Swenshuai.xi                 ret = 0;
497*53ee8cc1Swenshuai.xi                 break;
498*53ee8cc1Swenshuai.xi         }
499*53ee8cc1Swenshuai.xi     }
500*53ee8cc1Swenshuai.xi #else
501*53ee8cc1Swenshuai.xi     {
502*53ee8cc1Swenshuai.xi         ret = 0;
503*53ee8cc1Swenshuai.xi     }
504*53ee8cc1Swenshuai.xi #endif
505*53ee8cc1Swenshuai.xi     MS_DEBUG_MSG(printf("[MDrv_ACE_GetPostRGBGain] ret = %d\n", ret));
506*53ee8cc1Swenshuai.xi     return ret;
507*53ee8cc1Swenshuai.xi }
508*53ee8cc1Swenshuai.xi 
509*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
510*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SelectYUVtoRGBMatrix()
511*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Select YUV to RGB Matrix
512*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
513*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucMatrix
514*53ee8cc1Swenshuai.xi /// @param <IN>        \b psUserYUVtoRGBMatrix
515*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
516*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
517*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
518*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_SelectYUVtoRGBMatrix(void * pInstance,MS_BOOL bScalerWin,MS_U8 ucMatrix,MS_S16 * psUserYUVtoRGBMatrix)519*53ee8cc1Swenshuai.xi void MDrv_ACE_SelectYUVtoRGBMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U8 ucMatrix, MS_S16* psUserYUVtoRGBMatrix )
520*53ee8cc1Swenshuai.xi {
521*53ee8cc1Swenshuai.xi     msACESelectYUVtoRGBMatrix(pInstance, bScalerWin, ucMatrix, psUserYUVtoRGBMatrix);
522*53ee8cc1Swenshuai.xi }
523*53ee8cc1Swenshuai.xi 
524*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
525*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetColorCorrectionTable()
526*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Set Color Correction Table
527*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
528*53ee8cc1Swenshuai.xi /// @param <IN>        \b psColorCorrectionTable
529*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
530*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
531*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
532*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_SetColorCorrectionTable(void * pInstance,MS_BOOL bScalerWin)533*53ee8cc1Swenshuai.xi void MDrv_ACE_SetColorCorrectionTable(void* pInstance, MS_BOOL bScalerWin)
534*53ee8cc1Swenshuai.xi {
535*53ee8cc1Swenshuai.xi     msSetVideoColorMatrix(pInstance, bScalerWin );
536*53ee8cc1Swenshuai.xi }
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
539*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetPCsRGBTable()
540*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Set PCs RGB Table
541*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
542*53ee8cc1Swenshuai.xi /// @param <IN>        \b psPCsRGBTable
543*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
544*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
545*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
546*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_SetPCsRGBTable(void * pInstance,MS_BOOL bScalerWin)547*53ee8cc1Swenshuai.xi void MDrv_ACE_SetPCsRGBTable(void* pInstance, MS_BOOL bScalerWin)
548*53ee8cc1Swenshuai.xi {
549*53ee8cc1Swenshuai.xi     msSetPCColorMatrix(pInstance, bScalerWin);
550*53ee8cc1Swenshuai.xi }
551*53ee8cc1Swenshuai.xi 
552*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
553*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetSaturation()
554*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video Saturation
555*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
556*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Saturation
557*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
558*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
559*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
560*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_SetSaturation(void * pInstance,MS_BOOL bScalerWin,MS_U8 u8Saturation)561*53ee8cc1Swenshuai.xi void MDrv_ACE_SetSaturation(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Saturation )
562*53ee8cc1Swenshuai.xi {
563*53ee8cc1Swenshuai.xi     msAdjustVideoSaturation(pInstance, bScalerWin, u8Saturation);
564*53ee8cc1Swenshuai.xi }
565*53ee8cc1Swenshuai.xi 
566*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
567*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetHue()
568*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video Hue
569*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
570*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Hue
571*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
572*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
573*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
574*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_SetHue(void * pInstance,MS_BOOL bScalerWin,MS_U8 u8Hue)575*53ee8cc1Swenshuai.xi void MDrv_ACE_SetHue(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Hue )
576*53ee8cc1Swenshuai.xi {
577*53ee8cc1Swenshuai.xi     msAdjustVideoHue(pInstance, bScalerWin, u8Hue);
578*53ee8cc1Swenshuai.xi }
579*53ee8cc1Swenshuai.xi 
MDrv_ACE_IsPostRGBGain(void * pInstance,MS_BOOL bWindow)580*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_IsPostRGBGain(void* pInstance, MS_BOOL bWindow)
581*53ee8cc1Swenshuai.xi {
582*53ee8cc1Swenshuai.xi     MS_BOOL bRet;
583*53ee8cc1Swenshuai.xi     _ACE_GET_INST_PRIVATE();
584*53ee8cc1Swenshuai.xi 
585*53ee8cc1Swenshuai.xi     if (MAIN_WINDOW == bWindow)
586*53ee8cc1Swenshuai.xi     {
587*53ee8cc1Swenshuai.xi         bRet = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_01_L, BIT(5)) ? TRUE: FALSE;
588*53ee8cc1Swenshuai.xi     }
589*53ee8cc1Swenshuai.xi     else
590*53ee8cc1Swenshuai.xi     {
591*53ee8cc1Swenshuai.xi         bRet = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_11_L, BIT(5)) ? TRUE: FALSE;
592*53ee8cc1Swenshuai.xi     }
593*53ee8cc1Swenshuai.xi     return bRet;
594*53ee8cc1Swenshuai.xi }
595*53ee8cc1Swenshuai.xi 
MDrv_ACE_IsPostRGBOffset(void * pInstance,MS_BOOL bWindow)596*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_IsPostRGBOffset(void* pInstance, MS_BOOL bWindow)
597*53ee8cc1Swenshuai.xi {
598*53ee8cc1Swenshuai.xi     MS_BOOL bRet = FALSE;
599*53ee8cc1Swenshuai.xi     _ACE_GET_INST_PRIVATE();
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi     if (MAIN_WINDOW == bWindow)
602*53ee8cc1Swenshuai.xi     {
603*53ee8cc1Swenshuai.xi         bRet = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_01_L, BIT(4)) ? TRUE: FALSE;
604*53ee8cc1Swenshuai.xi     }
605*53ee8cc1Swenshuai.xi     else
606*53ee8cc1Swenshuai.xi     {
607*53ee8cc1Swenshuai.xi         bRet = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_11_L, BIT(4)) ? TRUE: FALSE;
608*53ee8cc1Swenshuai.xi     }
609*53ee8cc1Swenshuai.xi     return bRet;
610*53ee8cc1Swenshuai.xi }
611*53ee8cc1Swenshuai.xi 
612*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
613*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_GetInfo()
614*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get ACE Info
615*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
616*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucInfoType
617*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
618*53ee8cc1Swenshuai.xi /// @param <RET>       \b wReturnValue
619*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
620*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_GetACEInfo(void * pInstance,MS_BOOL bWindow,MS_U16 u16ACEinfo)621*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_GetACEInfo(void* pInstance, MS_BOOL bWindow, MS_U16 u16ACEinfo )
622*53ee8cc1Swenshuai.xi {
623*53ee8cc1Swenshuai.xi     EnuACEInfoType eACEInfoType;
624*53ee8cc1Swenshuai.xi     eACEInfoType = (EnuACEInfoType) u16ACEinfo;
625*53ee8cc1Swenshuai.xi     _ACE_GET_INST_PRIVATE();
626*53ee8cc1Swenshuai.xi 
627*53ee8cc1Swenshuai.xi     if(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK25_01_L, BIT(5)) && ((eACEInfoType == ACE_INFO_TYPE_R_GAIN) || (eACEInfoType == ACE_INFO_TYPE_G_GAIN) || (eACEInfoType == ACE_INFO_TYPE_B_GAIN)))
628*53ee8cc1Swenshuai.xi     {
629*53ee8cc1Swenshuai.xi         return MDrv_ACE_PicGetPostRGBGain(pInstance, bWindow, u16ACEinfo);
630*53ee8cc1Swenshuai.xi     }
631*53ee8cc1Swenshuai.xi     else if ((eACEInfoType == ACE_INFO_TYPE_BRIGHTNESS_R) || (eACEInfoType == ACE_INFO_TYPE_BRIGHTNESS_G) || (eACEInfoType == ACE_INFO_TYPE_BRIGHTNESS_B))
632*53ee8cc1Swenshuai.xi     {
633*53ee8cc1Swenshuai.xi         return MDrv_ACE_GetBrightness(pInstance, bWindow, eACEInfoType);
634*53ee8cc1Swenshuai.xi     }
635*53ee8cc1Swenshuai.xi     else
636*53ee8cc1Swenshuai.xi         return msACE_GetInfo(pInstance, bWindow, eACEInfoType);
637*53ee8cc1Swenshuai.xi }
638*53ee8cc1Swenshuai.xi 
639*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
640*53ee8cc1Swenshuai.xi //
641*53ee8cc1Swenshuai.xi //  ACE library function end
642*53ee8cc1Swenshuai.xi //
643*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
644*53ee8cc1Swenshuai.xi 
645*53ee8cc1Swenshuai.xi 
646*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
647*53ee8cc1Swenshuai.xi //
648*53ee8cc1Swenshuai.xi //  DrvACE.c start
649*53ee8cc1Swenshuai.xi //
650*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MDrv_ACE_DMS(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bisATV)651*53ee8cc1Swenshuai.xi void MDrv_ACE_DMS(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bisATV )
652*53ee8cc1Swenshuai.xi {
653*53ee8cc1Swenshuai.xi     Hal_ACE_DMS(pInstance, bScalerWin, bisATV);
654*53ee8cc1Swenshuai.xi }
655*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetColorMatrix(void * pInstance,MS_BOOL bScalerWin,MS_U16 * pu16Matrix)656*53ee8cc1Swenshuai.xi void MDrv_ACE_GetColorMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U16* pu16Matrix )
657*53ee8cc1Swenshuai.xi {
658*53ee8cc1Swenshuai.xi     Hal_ACE_GetColorMatrix(pInstance, bScalerWin, pu16Matrix);
659*53ee8cc1Swenshuai.xi }
660*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetColorMatrix(void * pInstance,MS_BOOL bScalerWin,MS_U16 * pu16Matrix)661*53ee8cc1Swenshuai.xi void MDrv_ACE_SetColorMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U16* pu16Matrix )
662*53ee8cc1Swenshuai.xi {
663*53ee8cc1Swenshuai.xi     Hal_ACE_SetColorMatrix(pInstance, bScalerWin, pu16Matrix);
664*53ee8cc1Swenshuai.xi }
665*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetBypassColorMatrix(void * pInstance,MS_BOOL bEnable)666*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetBypassColorMatrix(void* pInstance, MS_BOOL bEnable )
667*53ee8cc1Swenshuai.xi {
668*53ee8cc1Swenshuai.xi     msACESetBypassColorMatrix(pInstance, bEnable);
669*53ee8cc1Swenshuai.xi     return TRUE;
670*53ee8cc1Swenshuai.xi }
671*53ee8cc1Swenshuai.xi 
MDrv_ACE_PatchDTGColorChecker(void * pInstance,MS_U8 u8Mode)672*53ee8cc1Swenshuai.xi void MDrv_ACE_PatchDTGColorChecker(void* pInstance, MS_U8 u8Mode)
673*53ee8cc1Swenshuai.xi {
674*53ee8cc1Swenshuai.xi     Hal_ACE_PatchDTGColorChecker(pInstance, u8Mode);
675*53ee8cc1Swenshuai.xi }
676*53ee8cc1Swenshuai.xi 
677*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetFleshTone(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bEn,MS_U8 u8FleshTone)678*53ee8cc1Swenshuai.xi void MDrv_ACE_SetFleshTone(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEn, MS_U8 u8FleshTone)
679*53ee8cc1Swenshuai.xi {
680*53ee8cc1Swenshuai.xi     Hal_ACE_SetFCC_En(pInstance, bScalerWin, 0, bEn);
681*53ee8cc1Swenshuai.xi     Hal_ACE_SetFCC_Cb(pInstance, 0, u8FleshTone);
682*53ee8cc1Swenshuai.xi }
683*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetBlackAdjust(void * pInstance,MS_BOOL bScalerWin,MS_U8 u8BlackAdjust)684*53ee8cc1Swenshuai.xi void MDrv_ACE_SetBlackAdjust(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8BlackAdjust)
685*53ee8cc1Swenshuai.xi {
686*53ee8cc1Swenshuai.xi     Hal_ACE_SetSlopValue(pInstance, bScalerWin, u8BlackAdjust);
687*53ee8cc1Swenshuai.xi }
688*53ee8cc1Swenshuai.xi 
MDrv_ACE_init_riu_base(MS_VIRT ptr_riu_base)689*53ee8cc1Swenshuai.xi void MDrv_ACE_init_riu_base(MS_VIRT ptr_riu_base )
690*53ee8cc1Swenshuai.xi {
691*53ee8cc1Swenshuai.xi     Hal_ACE_init_riu_base(ptr_riu_base);
692*53ee8cc1Swenshuai.xi }
693*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetSharpness(void * pInstance,MS_BOOL bScalerWin,MS_U8 u8Sharpness)694*53ee8cc1Swenshuai.xi void MDrv_ACE_SetSharpness(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Sharpness )
695*53ee8cc1Swenshuai.xi {
696*53ee8cc1Swenshuai.xi     Hal_ACE_SetSharpness(pInstance, bScalerWin, u8Sharpness);
697*53ee8cc1Swenshuai.xi }
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi /******************************************************************************/
700*53ee8cc1Swenshuai.xi ///Set brightness
701*53ee8cc1Swenshuai.xi ///@param u8Brightness \b IN
702*53ee8cc1Swenshuai.xi ///- brightness value from 0 -0xff
703*53ee8cc1Swenshuai.xi /******************************************************************************/
MDrv_ACE_SetBrightness(void * pInstance,MS_BOOL bScalerWin,MS_U8 u8RedBrightness,MS_U8 u8GreenBrightness,MS_U8 u8BlueBrightness)704*53ee8cc1Swenshuai.xi void MDrv_ACE_SetBrightness (void* pInstance, MS_BOOL bScalerWin, MS_U8 u8RedBrightness, MS_U8 u8GreenBrightness, MS_U8 u8BlueBrightness )
705*53ee8cc1Swenshuai.xi {
706*53ee8cc1Swenshuai.xi     Hal_ACE_SetBrightness(pInstance, bScalerWin, u8RedBrightness, u8GreenBrightness, u8BlueBrightness);
707*53ee8cc1Swenshuai.xi }
708*53ee8cc1Swenshuai.xi 
709*53ee8cc1Swenshuai.xi /******************************************************************************/
710*53ee8cc1Swenshuai.xi ///Set brightness
711*53ee8cc1Swenshuai.xi ///@param u16Brightness \b IN
712*53ee8cc1Swenshuai.xi ///- brightness value from 0-0x7ff
713*53ee8cc1Swenshuai.xi /******************************************************************************/
MDrv_ACE_SetBrightnessPrecise(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16RedBrightness,MS_U16 u16GreenBrightness,MS_U16 u16BlueBrightness)714*53ee8cc1Swenshuai.xi void MDrv_ACE_SetBrightnessPrecise(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16RedBrightness, MS_U16 u16GreenBrightness, MS_U16 u16BlueBrightness)
715*53ee8cc1Swenshuai.xi {
716*53ee8cc1Swenshuai.xi     Hal_ACE_SetBrightnessPrecise(pInstance, bScalerWin, u16RedBrightness, u16GreenBrightness, u16BlueBrightness);
717*53ee8cc1Swenshuai.xi }
718*53ee8cc1Swenshuai.xi 
719*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
720*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_GetBrightness()
721*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get ACE brightness
722*53ee8cc1Swenshuai.xi /// @param <IN>        \b pInstance  pInstance
723*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin  bScalerWin
724*53ee8cc1Swenshuai.xi /// @param <IN>        \b eACEInfoType
725*53ee8cc1Swenshuai.xi /// @param <OUT>      \b None
726*53ee8cc1Swenshuai.xi /// @param <RET>       \b u16Val Brightness value from 0-0xff
727*53ee8cc1Swenshuai.xi /// @param <GLOBAL>  \b None
728*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
729*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetBrightness(void * pInstance,MS_BOOL bScalerWin,EnuACEInfoType eACEInfoType)730*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_GetBrightness(void* pInstance, MS_BOOL bScalerWin, EnuACEInfoType eACEInfoType)
731*53ee8cc1Swenshuai.xi {
732*53ee8cc1Swenshuai.xi     MS_U16 u16Val = 0;
733*53ee8cc1Swenshuai.xi     MS_U8 u8RedBrightness = 0;
734*53ee8cc1Swenshuai.xi     MS_U8 u8GreenBrightness = 0;
735*53ee8cc1Swenshuai.xi     MS_U8 u8BlueBrightness = 0;
736*53ee8cc1Swenshuai.xi 
737*53ee8cc1Swenshuai.xi     Hal_ACE_GetBrightness(pInstance, bScalerWin, &u8RedBrightness, &u8GreenBrightness, &u8BlueBrightness);
738*53ee8cc1Swenshuai.xi 
739*53ee8cc1Swenshuai.xi     switch(eACEInfoType)
740*53ee8cc1Swenshuai.xi     {
741*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_BRIGHTNESS_R:
742*53ee8cc1Swenshuai.xi             u16Val = (MS_U16) u8RedBrightness;
743*53ee8cc1Swenshuai.xi             break;
744*53ee8cc1Swenshuai.xi 
745*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_BRIGHTNESS_G:
746*53ee8cc1Swenshuai.xi             u16Val = (MS_U16) u8GreenBrightness;
747*53ee8cc1Swenshuai.xi             break;
748*53ee8cc1Swenshuai.xi 
749*53ee8cc1Swenshuai.xi         case ACE_INFO_TYPE_BRIGHTNESS_B:
750*53ee8cc1Swenshuai.xi             u16Val = (MS_U16) u8BlueBrightness;
751*53ee8cc1Swenshuai.xi             break;
752*53ee8cc1Swenshuai.xi 
753*53ee8cc1Swenshuai.xi         default:
754*53ee8cc1Swenshuai.xi             u16Val = 0;
755*53ee8cc1Swenshuai.xi             break;
756*53ee8cc1Swenshuai.xi     }
757*53ee8cc1Swenshuai.xi 
758*53ee8cc1Swenshuai.xi     return u16Val;
759*53ee8cc1Swenshuai.xi }
760*53ee8cc1Swenshuai.xi 
761*53ee8cc1Swenshuai.xi 
762*53ee8cc1Swenshuai.xi #ifdef ENABLE_SET_PRE_Y_OFFSET
763*53ee8cc1Swenshuai.xi extern void* pu32ACE_XCInst;
764*53ee8cc1Swenshuai.xi extern MLOAD_TYPE MApi_XC_MLoad_GetStatus_U2(void *pInstance);
765*53ee8cc1Swenshuai.xi extern MS_BOOL MApi_XC_MLoad_Fire(void *pInstance, MS_BOOL bImmediate);
766*53ee8cc1Swenshuai.xi extern MS_BOOL MApi_XC_MLoad_WriteCmd(void *pInstance, MS_U32 u32Addr, MS_U16 u16Data, MS_U16 u16Mask);
767*53ee8cc1Swenshuai.xi #endif
768*53ee8cc1Swenshuai.xi /******************************************************************************/
769*53ee8cc1Swenshuai.xi ///Set Pre Y offset
770*53ee8cc1Swenshuai.xi ///@param bScalerMainWin \b IN
771*53ee8cc1Swenshuai.xi ///@param u8PreYOffset \b IN
772*53ee8cc1Swenshuai.xi ///- u16PreYOffset value from 0 -0xff
773*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
774*53ee8cc1Swenshuai.xi /******************************************************************************/
MDrv_ACE_SetPreYOffset(void * pInstance,MS_BOOL bScalerWin,MS_U8 u8PreYOffset)775*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetPreYOffset(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8PreYOffset)
776*53ee8cc1Swenshuai.xi {
777*53ee8cc1Swenshuai.xi #ifdef ENABLE_SET_PRE_Y_OFFSET
778*53ee8cc1Swenshuai.xi     ACE_INSTANCE_PRIVATE *psACEInstPri = NULL;
779*53ee8cc1Swenshuai.xi     UtopiaInstanceGetPrivate(pInstance, (void**)&psACEInstPri);
780*53ee8cc1Swenshuai.xi     if((MApi_XC_MLoad_GetStatus_U2(pu32ACE_XCInst) == E_MLOAD_ENABLED) && (!Hal_ACE_GetSkipWaitVsync(pInstance, bScalerWin)))
781*53ee8cc1Swenshuai.xi     {
782*53ee8cc1Swenshuai.xi         if (bScalerWin == MAIN_WINDOW)
783*53ee8cc1Swenshuai.xi         {
784*53ee8cc1Swenshuai.xi             MApi_XC_MLoad_WriteCmd(pu32ACE_XCInst, REG_SC_BK1A_0F_L, ((MS_U16)u8PreYOffset), 0xFF);
785*53ee8cc1Swenshuai.xi         }
786*53ee8cc1Swenshuai.xi         else
787*53ee8cc1Swenshuai.xi         {
788*53ee8cc1Swenshuai.xi             MApi_XC_MLoad_WriteCmd(pu32ACE_XCInst, REG_SC_BK1A_0F_L, ((MS_U16)u8PreYOffset<<8), 0xFF00);
789*53ee8cc1Swenshuai.xi         }
790*53ee8cc1Swenshuai.xi 
791*53ee8cc1Swenshuai.xi         MApi_XC_MLoad_Fire(pInstance, TRUE);
792*53ee8cc1Swenshuai.xi 
793*53ee8cc1Swenshuai.xi     }
794*53ee8cc1Swenshuai.xi     else
795*53ee8cc1Swenshuai.xi     {
796*53ee8cc1Swenshuai.xi         if (bScalerWin == MAIN_WINDOW)
797*53ee8cc1Swenshuai.xi         {
798*53ee8cc1Swenshuai.xi             SC_W2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK1A_0F_L, ((MS_U16)u8PreYOffset), 0xFF);
799*53ee8cc1Swenshuai.xi         }
800*53ee8cc1Swenshuai.xi         else
801*53ee8cc1Swenshuai.xi         {
802*53ee8cc1Swenshuai.xi             SC_W2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK1A_0F_L, ((MS_U16)u8PreYOffset<<8), 0xFF00);
803*53ee8cc1Swenshuai.xi         }
804*53ee8cc1Swenshuai.xi     }
805*53ee8cc1Swenshuai.xi     return TRUE;
806*53ee8cc1Swenshuai.xi #else
807*53ee8cc1Swenshuai.xi     return FALSE;
808*53ee8cc1Swenshuai.xi #endif
809*53ee8cc1Swenshuai.xi }
810*53ee8cc1Swenshuai.xi 
811*53ee8cc1Swenshuai.xi /******************************************************************************/
812*53ee8cc1Swenshuai.xi ///Get Pre Y offset
813*53ee8cc1Swenshuai.xi ///@param bScalerMainWin \b IN
814*53ee8cc1Swenshuai.xi ///@param pu8PreYOffset \b OUT
815*53ee8cc1Swenshuai.xi ///- pu8PreYOffset value from 0 -0xff
816*53ee8cc1Swenshuai.xi /// @return @ref MS_U8
817*53ee8cc1Swenshuai.xi /******************************************************************************/
MDrv_ACE_GetPreYOffset(void * pInstance,MS_BOOL bScalerWin)818*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_GetPreYOffset(void* pInstance, MS_BOOL bScalerWin)
819*53ee8cc1Swenshuai.xi {
820*53ee8cc1Swenshuai.xi     MS_U8 u8PreYOffset= 0;
821*53ee8cc1Swenshuai.xi #ifdef ENABLE_SET_PRE_Y_OFFSET
822*53ee8cc1Swenshuai.xi     ACE_INSTANCE_PRIVATE *psACEInstPri = NULL;
823*53ee8cc1Swenshuai.xi     UtopiaInstanceGetPrivate(pInstance, (void**)&psACEInstPri);
824*53ee8cc1Swenshuai.xi     if (bScalerWin == MAIN_WINDOW)
825*53ee8cc1Swenshuai.xi     {
826*53ee8cc1Swenshuai.xi         u8PreYOffset = SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK1A_0F_L, 0xFF);
827*53ee8cc1Swenshuai.xi     }
828*53ee8cc1Swenshuai.xi     else
829*53ee8cc1Swenshuai.xi     {
830*53ee8cc1Swenshuai.xi         u8PreYOffset = (MS_U8)(SC_R2BYTEMSK(psACEInstPri->u32DeviceID, REG_SC_BK1A_0F_L, 0xFF00) >> 8);
831*53ee8cc1Swenshuai.xi     }
832*53ee8cc1Swenshuai.xi #endif
833*53ee8cc1Swenshuai.xi     return u8PreYOffset;
834*53ee8cc1Swenshuai.xi }
835*53ee8cc1Swenshuai.xi 
836*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
837*53ee8cc1Swenshuai.xi //
838*53ee8cc1Swenshuai.xi //  MWE start
839*53ee8cc1Swenshuai.xi //
840*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
841*53ee8cc1Swenshuai.xi 
842*53ee8cc1Swenshuai.xi 
843*53ee8cc1Swenshuai.xi MS_U8 MWE_Border_Color[] =
844*53ee8cc1Swenshuai.xi {
845*53ee8cc1Swenshuai.xi     0x00, // E_XC_FREE_RUN_COLOR_BLACK
846*53ee8cc1Swenshuai.xi     0xFF, // E_XC_FREE_RUN_COLOR_WHITE
847*53ee8cc1Swenshuai.xi     0x03, // E_XC_FREE_RUN_COLOR_BLUE
848*53ee8cc1Swenshuai.xi     0xE0, // E_XC_FREE_RUN_COLOR_RED
849*53ee8cc1Swenshuai.xi     0x1C, // E_XC_FREE_RUN_COLOR_GREEN
850*53ee8cc1Swenshuai.xi };
851*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_MWEinit(void * pInstance,MS_U16 u16MWEHstart,MS_U16 u16MWEVstart,MS_U16 u16MWEWidth,MS_U16 u16MWEHeight)852*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWEinit(void* pInstance, MS_U16 u16MWEHstart, MS_U16 u16MWEVstart, MS_U16 u16MWEWidth, MS_U16 u16MWEHeight)
853*53ee8cc1Swenshuai.xi {
854*53ee8cc1Swenshuai.xi     _ACE_GET_VARIABLE();
855*53ee8cc1Swenshuai.xi     MWEPanel.u16Pnl_Height = u16MWEHeight;
856*53ee8cc1Swenshuai.xi     MWEPanel.u16Pnl_Width  = u16MWEWidth;
857*53ee8cc1Swenshuai.xi     MWEPanel.u16Pnl_Hstart = u16MWEHstart;
858*53ee8cc1Swenshuai.xi     MWEPanel.u16Pnl_Vstart = u16MWEVstart;
859*53ee8cc1Swenshuai.xi }
860*53ee8cc1Swenshuai.xi 
861*53ee8cc1Swenshuai.xi //===============================================================================
862*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_MWESetWin(void * pInstance,MWE_RECT * pRect)863*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWESetWin(void* pInstance, MWE_RECT *pRect)
864*53ee8cc1Swenshuai.xi {
865*53ee8cc1Swenshuai.xi     MS_U16 u16hstart, u16hend, u16vstart, u16vend;
866*53ee8cc1Swenshuai.xi     _ACE_GET_VARIABLE();
867*53ee8cc1Swenshuai.xi 
868*53ee8cc1Swenshuai.xi     u16hstart = pRect->Xpos + MWEPanel.u16Pnl_Hstart;
869*53ee8cc1Swenshuai.xi     u16hend   = u16hstart + pRect->Xsize - 1;
870*53ee8cc1Swenshuai.xi     u16vstart = pRect->Ypos + MWEPanel.u16Pnl_Vstart;
871*53ee8cc1Swenshuai.xi     u16vend   = u16vstart + pRect->Ysize - 1;
872*53ee8cc1Swenshuai.xi 
873*53ee8cc1Swenshuai.xi     if(u16hend > MWEPanel.u16Pnl_Hstart + MWEPanel.u16Pnl_Width - 1)
874*53ee8cc1Swenshuai.xi         u16hend = MWEPanel.u16Pnl_Hstart + MWEPanel.u16Pnl_Width - 1;
875*53ee8cc1Swenshuai.xi 
876*53ee8cc1Swenshuai.xi     if(u16vend > MWEPanel.u16Pnl_Vstart + MWEPanel.u16Pnl_Height - 1)
877*53ee8cc1Swenshuai.xi         u16vend = MWEPanel.u16Pnl_Vstart + MWEPanel.u16Pnl_Height - 1;
878*53ee8cc1Swenshuai.xi     MS_DEBUG_MSG(printf("[MWE] Hstart %4x  Hend %4x  Vstart %4x Vend %4x \n",
879*53ee8cc1Swenshuai.xi             u16hstart, u16hend, u16vstart, u16vend));
880*53ee8cc1Swenshuai.xi     Hal_ACE_MWESetWin(pInstance, u16hstart, u16hend, u16vstart, u16vend);
881*53ee8cc1Swenshuai.xi }
882*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_MWECloneVisualEffect(void * pInstance)883*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWECloneVisualEffect(void* pInstance)
884*53ee8cc1Swenshuai.xi {
885*53ee8cc1Swenshuai.xi     Hal_ACE_MWECloneVisualEffect(pInstance);
886*53ee8cc1Swenshuai.xi }
887*53ee8cc1Swenshuai.xi 
MDrv_ACE_3DClonePQMap(void * pInstance,XC_ACE_WEAVETYPE enWeaveType)888*53ee8cc1Swenshuai.xi void MDrv_ACE_3DClonePQMap(void* pInstance, XC_ACE_WEAVETYPE enWeaveType)
889*53ee8cc1Swenshuai.xi {
890*53ee8cc1Swenshuai.xi     Hal_ACE_3DClonePQMap(pInstance, enWeaveType);
891*53ee8cc1Swenshuai.xi }
892*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_MWESetRegRow(void * pInstance,MS_U32 u32Addr,MS_U8 u8Value,MS_U8 u8Mask)893*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWESetRegRow(void* pInstance, MS_U32 u32Addr, MS_U8 u8Value, MS_U8 u8Mask)
894*53ee8cc1Swenshuai.xi {
895*53ee8cc1Swenshuai.xi     _ACE_GET_INST_PRIVATE();
896*53ee8cc1Swenshuai.xi     if(u32Addr & 0x1)
897*53ee8cc1Swenshuai.xi     {
898*53ee8cc1Swenshuai.xi         SC_W2BYTEMSK(psACEInstPri->u32DeviceID, (MS_U32)(u32Addr & 0xFFFFFE), (MS_U16)u8Value << 8, (MS_U16)u8Mask << 8);
899*53ee8cc1Swenshuai.xi     }
900*53ee8cc1Swenshuai.xi     else
901*53ee8cc1Swenshuai.xi     {
902*53ee8cc1Swenshuai.xi         SC_W2BYTEMSK(psACEInstPri->u32DeviceID, (MS_U32)u32Addr, (MS_U16)u8Value, (MS_U16)u8Mask);
903*53ee8cc1Swenshuai.xi     }
904*53ee8cc1Swenshuai.xi }
905*53ee8cc1Swenshuai.xi 
906*53ee8cc1Swenshuai.xi //===============================================================================
907*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_MWESetBorder(void * pInstance,MS_BOOL bScalerWin,MS_BOOL ben,MS_U8 u8color,MS_U16 u16_l,MS_U16 u16_r,MS_U16 u16_t,MS_U16 u16_d)908*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWESetBorder(void* pInstance, MS_BOOL bScalerWin, MS_BOOL ben, MS_U8 u8color, MS_U16 u16_l, MS_U16 u16_r, MS_U16 u16_t, MS_U16 u16_d)
909*53ee8cc1Swenshuai.xi {
910*53ee8cc1Swenshuai.xi     MS_U16 u16color =  (u8color >= MWE_BORDER_COLOR_MAX)
911*53ee8cc1Swenshuai.xi                     ? MWE_Border_Color[MWE_BORDER_COLOR_BLACK]
912*53ee8cc1Swenshuai.xi                     : MWE_Border_Color[u8color];
913*53ee8cc1Swenshuai.xi 
914*53ee8cc1Swenshuai.xi     if(ben)
915*53ee8cc1Swenshuai.xi     {
916*53ee8cc1Swenshuai.xi         Hal_ACE_MWESetBorder(pInstance, bScalerWin, u16color, u16_l, u16_r, u16_t, u16_d);
917*53ee8cc1Swenshuai.xi     }
918*53ee8cc1Swenshuai.xi 
919*53ee8cc1Swenshuai.xi }
920*53ee8cc1Swenshuai.xi 
921*53ee8cc1Swenshuai.xi //===============================================================================
922*53ee8cc1Swenshuai.xi 
923*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_MWEEnable(void * pInstance,MS_BOOL bEnable,MS_BOOL bLoadFromTable)924*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWEEnable(void* pInstance, MS_BOOL bEnable, MS_BOOL bLoadFromTable)
925*53ee8cc1Swenshuai.xi {
926*53ee8cc1Swenshuai.xi      Hal_ACE_MWEEnable(pInstance, bEnable, bLoadFromTable);
927*53ee8cc1Swenshuai.xi }
928*53ee8cc1Swenshuai.xi 
929*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
930*53ee8cc1Swenshuai.xi //
931*53ee8cc1Swenshuai.xi //  MWE end
932*53ee8cc1Swenshuai.xi //
933*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
934*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_Set_ICC_SRAM(void * pInstance,MS_U16 * pBuf,MS_U16 u16ByteSize)935*53ee8cc1Swenshuai.xi MS_BOOL MDrv_XC_ACE_Set_ICC_SRAM(void* pInstance, MS_U16 *pBuf, MS_U16 u16ByteSize)
936*53ee8cc1Swenshuai.xi {
937*53ee8cc1Swenshuai.xi     if(u16ByteSize > 256*2)
938*53ee8cc1Swenshuai.xi         return FALSE;
939*53ee8cc1Swenshuai.xi 
940*53ee8cc1Swenshuai.xi     Hal_ACE_Set_ICC_SRAM(pInstance, pBuf, u16ByteSize/2);
941*53ee8cc1Swenshuai.xi     return TRUE;
942*53ee8cc1Swenshuai.xi }
943*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_Set_IHC_SRAM(void * pInstance,MS_U16 * pBuf,MS_U16 u16ByteSize)944*53ee8cc1Swenshuai.xi MS_BOOL MDrv_XC_ACE_Set_IHC_SRAM(void* pInstance, MS_U16 *pBuf, MS_U16 u16ByteSize)
945*53ee8cc1Swenshuai.xi {
946*53ee8cc1Swenshuai.xi     #define H_SIZE  17
947*53ee8cc1Swenshuai.xi     #define V_SIZE  17
948*53ee8cc1Swenshuai.xi     #define MAX_SRAM_SIZE 0x100
949*53ee8cc1Swenshuai.xi     #define BUF_BYTE_SIZE 17*17
950*53ee8cc1Swenshuai.xi 
951*53ee8cc1Swenshuai.xi     MS_U8 v_idx, h_idx;
952*53ee8cc1Swenshuai.xi     MS_U8 row, col;
953*53ee8cc1Swenshuai.xi     MS_U16 data;
954*53ee8cc1Swenshuai.xi     MS_U16 cont1, cont2, cont3, cont4;
955*53ee8cc1Swenshuai.xi     MS_U16 SRAM1_IHC[MAX_SRAM_SIZE];
956*53ee8cc1Swenshuai.xi     MS_U16 SRAM2_IHC[MAX_SRAM_SIZE];
957*53ee8cc1Swenshuai.xi     MS_U16 SRAM3_IHC[MAX_SRAM_SIZE];
958*53ee8cc1Swenshuai.xi     MS_U16 SRAM4_IHC[MAX_SRAM_SIZE];
959*53ee8cc1Swenshuai.xi 
960*53ee8cc1Swenshuai.xi     memset(SRAM1_IHC, 0, sizeof(SRAM1_IHC));
961*53ee8cc1Swenshuai.xi     memset(SRAM2_IHC, 0, sizeof(SRAM2_IHC));
962*53ee8cc1Swenshuai.xi     memset(SRAM3_IHC, 0, sizeof(SRAM3_IHC));
963*53ee8cc1Swenshuai.xi     memset(SRAM4_IHC, 0, sizeof(SRAM4_IHC));
964*53ee8cc1Swenshuai.xi 
965*53ee8cc1Swenshuai.xi     if(u16ByteSize > BUF_BYTE_SIZE)
966*53ee8cc1Swenshuai.xi         return FALSE;
967*53ee8cc1Swenshuai.xi 
968*53ee8cc1Swenshuai.xi     cont1 = cont2 = cont3 = cont4 = 0;
969*53ee8cc1Swenshuai.xi 
970*53ee8cc1Swenshuai.xi     for (v_idx=1; v_idx <= V_SIZE; v_idx++)
971*53ee8cc1Swenshuai.xi         for (h_idx=1; h_idx <= H_SIZE-1; h_idx++)
972*53ee8cc1Swenshuai.xi         {
973*53ee8cc1Swenshuai.xi             data = pBuf[(v_idx-1)*H_SIZE + h_idx-1]; //pBuf[v_idx-1][h_idx-1]
974*53ee8cc1Swenshuai.xi 
975*53ee8cc1Swenshuai.xi             row = (int)(v_idx-(v_idx/2)*2);
976*53ee8cc1Swenshuai.xi             col = (int)(h_idx-(h_idx/2)*2);
977*53ee8cc1Swenshuai.xi 
978*53ee8cc1Swenshuai.xi             if ( (row==1) & (col==1) )
979*53ee8cc1Swenshuai.xi             {
980*53ee8cc1Swenshuai.xi                 SRAM1_IHC[cont1]=data;
981*53ee8cc1Swenshuai.xi                 cont1 = cont1 < MAX_SRAM_SIZE-1 ? cont1+1 :  MAX_SRAM_SIZE-1;
982*53ee8cc1Swenshuai.xi             }
983*53ee8cc1Swenshuai.xi 
984*53ee8cc1Swenshuai.xi             if ( (row==1) & (col==0) )
985*53ee8cc1Swenshuai.xi             {
986*53ee8cc1Swenshuai.xi                 SRAM2_IHC[cont2]=data;
987*53ee8cc1Swenshuai.xi                 cont2 = cont2 < MAX_SRAM_SIZE-1 ? cont2+1 :  MAX_SRAM_SIZE-1;
988*53ee8cc1Swenshuai.xi             }
989*53ee8cc1Swenshuai.xi 
990*53ee8cc1Swenshuai.xi             if ( (row==0) & (col==1) )
991*53ee8cc1Swenshuai.xi             {
992*53ee8cc1Swenshuai.xi                 SRAM3_IHC[cont3]=data;
993*53ee8cc1Swenshuai.xi                 cont3 = cont3 < MAX_SRAM_SIZE-1 ? cont3+1 :  MAX_SRAM_SIZE-1;
994*53ee8cc1Swenshuai.xi             }
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi             if ( (row==0) & (col==0) )
997*53ee8cc1Swenshuai.xi             {
998*53ee8cc1Swenshuai.xi                 SRAM4_IHC[cont4]=data;
999*53ee8cc1Swenshuai.xi                 cont4 = cont4 < MAX_SRAM_SIZE-1 ? cont4+1 :  MAX_SRAM_SIZE-1;
1000*53ee8cc1Swenshuai.xi             }
1001*53ee8cc1Swenshuai.xi 
1002*53ee8cc1Swenshuai.xi         }
1003*53ee8cc1Swenshuai.xi 
1004*53ee8cc1Swenshuai.xi     for (v_idx=1; v_idx <= V_SIZE; v_idx++)
1005*53ee8cc1Swenshuai.xi     {
1006*53ee8cc1Swenshuai.xi         row = (v_idx-(v_idx/2)*2);
1007*53ee8cc1Swenshuai.xi 
1008*53ee8cc1Swenshuai.xi         data = pBuf[(v_idx-1)*H_SIZE+16];
1009*53ee8cc1Swenshuai.xi 
1010*53ee8cc1Swenshuai.xi         if (row==1)
1011*53ee8cc1Swenshuai.xi         {
1012*53ee8cc1Swenshuai.xi             SRAM1_IHC[cont1]=data;
1013*53ee8cc1Swenshuai.xi             cont1 = cont1 < MAX_SRAM_SIZE-1 ? cont1+1 :  MAX_SRAM_SIZE-1;
1014*53ee8cc1Swenshuai.xi         }
1015*53ee8cc1Swenshuai.xi         else
1016*53ee8cc1Swenshuai.xi         {
1017*53ee8cc1Swenshuai.xi             SRAM3_IHC[cont3]=data;
1018*53ee8cc1Swenshuai.xi             cont3 = cont3 < MAX_SRAM_SIZE-1 ? cont3+1 :  MAX_SRAM_SIZE-1;
1019*53ee8cc1Swenshuai.xi         }
1020*53ee8cc1Swenshuai.xi     }
1021*53ee8cc1Swenshuai.xi 
1022*53ee8cc1Swenshuai.xi     Hal_ACE_Set_IHC_SRAM(pInstance, &SRAM1_IHC[0], 0, cont1);
1023*53ee8cc1Swenshuai.xi     Hal_ACE_Set_IHC_SRAM(pInstance, &SRAM2_IHC[0], 1, cont2);
1024*53ee8cc1Swenshuai.xi     Hal_ACE_Set_IHC_SRAM(pInstance, &SRAM3_IHC[0], 2, cont3);
1025*53ee8cc1Swenshuai.xi     Hal_ACE_Set_IHC_SRAM(pInstance, &SRAM4_IHC[0], 3, cont4);
1026*53ee8cc1Swenshuai.xi 
1027*53ee8cc1Swenshuai.xi     return TRUE;
1028*53ee8cc1Swenshuai.xi }
1029*53ee8cc1Swenshuai.xi 
MDrv_XC_ACE_DNR_GetMotion(void * pInstance)1030*53ee8cc1Swenshuai.xi MS_U8 MDrv_XC_ACE_DNR_GetMotion(void* pInstance)
1031*53ee8cc1Swenshuai.xi {
1032*53ee8cc1Swenshuai.xi     MS_U8 u8Ret;
1033*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1034*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1035*53ee8cc1Swenshuai.xi 
1036*53ee8cc1Swenshuai.xi     u8Ret = Hal_ACE_DNR_GetMotion(pInstance);
1037*53ee8cc1Swenshuai.xi 
1038*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1039*53ee8cc1Swenshuai.xi 
1040*53ee8cc1Swenshuai.xi     return u8Ret;
1041*53ee8cc1Swenshuai.xi }
1042*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_GetCoringThreshold(void * pInstance,MS_BOOL bScalerWin)1043*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_DNR_GetCoringThreshold(void* pInstance, MS_BOOL bScalerWin)
1044*53ee8cc1Swenshuai.xi {
1045*53ee8cc1Swenshuai.xi     return Hal_ACE_DNR_GetCoringThreshold(pInstance, bScalerWin);
1046*53ee8cc1Swenshuai.xi }
1047*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_GetSharpnessAdjust(void * pInstance,MS_BOOL bScalerWin)1048*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_DNR_GetSharpnessAdjust(void* pInstance, MS_BOOL bScalerWin)
1049*53ee8cc1Swenshuai.xi {
1050*53ee8cc1Swenshuai.xi     return Hal_ACE_DNR_GetSharpnessAdjust(pInstance, bScalerWin);
1051*53ee8cc1Swenshuai.xi }
1052*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_GetGuassin_SNR_Threshold(void * pInstance,MS_BOOL bScalerWin)1053*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_DNR_GetGuassin_SNR_Threshold(void* pInstance, MS_BOOL bScalerWin)
1054*53ee8cc1Swenshuai.xi {
1055*53ee8cc1Swenshuai.xi     return Hal_ACE_DNR_GetGuassin_SNR_Threshold(pInstance, bScalerWin);
1056*53ee8cc1Swenshuai.xi }
1057*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetCoringThreshold(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1058*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetCoringThreshold(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1059*53ee8cc1Swenshuai.xi {
1060*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1061*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1062*53ee8cc1Swenshuai.xi 
1063*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetCoringThreshold(pInstance, bScalerWin, u16val);
1064*53ee8cc1Swenshuai.xi 
1065*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1066*53ee8cc1Swenshuai.xi }
1067*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetSharpnessAdjust(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1068*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSharpnessAdjust(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1069*53ee8cc1Swenshuai.xi {
1070*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1071*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1072*53ee8cc1Swenshuai.xi 
1073*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetSharpnessAdjust(pInstance, bScalerWin, u16val);
1074*53ee8cc1Swenshuai.xi 
1075*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1076*53ee8cc1Swenshuai.xi 
1077*53ee8cc1Swenshuai.xi }
1078*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetNM_V(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1079*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNM_V(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1080*53ee8cc1Swenshuai.xi {
1081*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1082*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1083*53ee8cc1Swenshuai.xi 
1084*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetNM_V(pInstance, bScalerWin, u16val);
1085*53ee8cc1Swenshuai.xi 
1086*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1087*53ee8cc1Swenshuai.xi }
1088*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetGNR_0(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1089*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGNR_0(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1090*53ee8cc1Swenshuai.xi {
1091*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1092*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1093*53ee8cc1Swenshuai.xi 
1094*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetGNR_0(pInstance, bScalerWin, u16val);
1095*53ee8cc1Swenshuai.xi 
1096*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1097*53ee8cc1Swenshuai.xi }
1098*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetGNR_1(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1099*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGNR_1(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1100*53ee8cc1Swenshuai.xi {
1101*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1102*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1103*53ee8cc1Swenshuai.xi 
1104*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetGNR_1(pInstance, bScalerWin, u16val);
1105*53ee8cc1Swenshuai.xi 
1106*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1107*53ee8cc1Swenshuai.xi }
1108*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetCP(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1109*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetCP(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1110*53ee8cc1Swenshuai.xi {
1111*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1112*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1113*53ee8cc1Swenshuai.xi 
1114*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetCP(pInstance, bScalerWin, u16val);
1115*53ee8cc1Swenshuai.xi 
1116*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1117*53ee8cc1Swenshuai.xi }
1118*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetDP(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1119*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetDP(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1120*53ee8cc1Swenshuai.xi {
1121*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1122*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1123*53ee8cc1Swenshuai.xi 
1124*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetDP(pInstance, bScalerWin, u16val);
1125*53ee8cc1Swenshuai.xi 
1126*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1127*53ee8cc1Swenshuai.xi }
1128*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetNM_H_0(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1129*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNM_H_0(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1130*53ee8cc1Swenshuai.xi {
1131*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1132*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1133*53ee8cc1Swenshuai.xi 
1134*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetNM_H_0(pInstance, bScalerWin, u16val);
1135*53ee8cc1Swenshuai.xi }
1136*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetNM_H_1(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1137*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNM_H_1(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1138*53ee8cc1Swenshuai.xi {
1139*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1140*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1141*53ee8cc1Swenshuai.xi 
1142*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetNM_H_1(pInstance, bScalerWin, u16val);
1143*53ee8cc1Swenshuai.xi 
1144*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1145*53ee8cc1Swenshuai.xi }
1146*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetGray_Ground_Gain(void * pInstance,MS_U16 u16val)1147*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGray_Ground_Gain(void* pInstance, MS_U16 u16val)
1148*53ee8cc1Swenshuai.xi {
1149*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1150*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1151*53ee8cc1Swenshuai.xi 
1152*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetGray_Ground_Gain(pInstance, u16val);
1153*53ee8cc1Swenshuai.xi 
1154*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1155*53ee8cc1Swenshuai.xi }
1156*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetGray_Ground_En(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1157*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGray_Ground_En(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1158*53ee8cc1Swenshuai.xi {
1159*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1160*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1161*53ee8cc1Swenshuai.xi 
1162*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetGray_Ground_En(pInstance, bScalerWin, u16val);
1163*53ee8cc1Swenshuai.xi 
1164*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1165*53ee8cc1Swenshuai.xi }
1166*53ee8cc1Swenshuai.xi 
1167*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetSC_Coring(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1168*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSC_Coring(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1169*53ee8cc1Swenshuai.xi {
1170*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1171*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1172*53ee8cc1Swenshuai.xi 
1173*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetSC_Coring(pInstance, bScalerWin, u16val);
1174*53ee8cc1Swenshuai.xi 
1175*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1176*53ee8cc1Swenshuai.xi }
1177*53ee8cc1Swenshuai.xi 
1178*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetSpikeNR_0(void * pInstance,MS_U16 u16val)1179*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSpikeNR_0(void* pInstance, MS_U16 u16val)
1180*53ee8cc1Swenshuai.xi {
1181*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1182*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1183*53ee8cc1Swenshuai.xi 
1184*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetSpikeNR_0(pInstance, u16val);
1185*53ee8cc1Swenshuai.xi }
1186*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetSpikeNR_1(void * pInstance,MS_U16 u16val)1187*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSpikeNR_1(void* pInstance, MS_U16 u16val)
1188*53ee8cc1Swenshuai.xi {
1189*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1190*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1191*53ee8cc1Swenshuai.xi 
1192*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetSpikeNR_1(pInstance, u16val);
1193*53ee8cc1Swenshuai.xi 
1194*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1195*53ee8cc1Swenshuai.xi }
1196*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetSNR_NM(void * pInstance,MS_U16 u16val)1197*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSNR_NM(void* pInstance, MS_U16 u16val)
1198*53ee8cc1Swenshuai.xi {
1199*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1200*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1201*53ee8cc1Swenshuai.xi 
1202*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetSNR_NM(pInstance, u16val);
1203*53ee8cc1Swenshuai.xi 
1204*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1205*53ee8cc1Swenshuai.xi }
1206*53ee8cc1Swenshuai.xi 
1207*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetBank_Coring(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1208*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetBank_Coring(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1209*53ee8cc1Swenshuai.xi {
1210*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1211*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1212*53ee8cc1Swenshuai.xi 
1213*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetBank_Coring(pInstance, bScalerWin, u16val);
1214*53ee8cc1Swenshuai.xi 
1215*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1216*53ee8cc1Swenshuai.xi }
1217*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetGuassin_SNR_Threshold(void * pInstance,MS_BOOL bScalerWin,MS_U16 u16val)1218*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGuassin_SNR_Threshold(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val)
1219*53ee8cc1Swenshuai.xi {
1220*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1221*53ee8cc1Swenshuai.xi     BACKUP_SC_BANK
1222*53ee8cc1Swenshuai.xi 
1223*53ee8cc1Swenshuai.xi     Hal_ACE_DNR_SetGuassin_SNR_Threshold(pInstance, bScalerWin, u16val);
1224*53ee8cc1Swenshuai.xi 
1225*53ee8cc1Swenshuai.xi     RECOVER_SC_BANK
1226*53ee8cc1Swenshuai.xi 
1227*53ee8cc1Swenshuai.xi }
1228*53ee8cc1Swenshuai.xi 
MDrv_ACE_DNR_SetNRTable(void * pInstance,MS_U8 * pTbl)1229*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNRTable(void* pInstance, MS_U8 *pTbl)
1230*53ee8cc1Swenshuai.xi {
1231*53ee8cc1Swenshuai.xi     MS_U8 i;
1232*53ee8cc1Swenshuai.xi     MS_U16 u16val;
1233*53ee8cc1Swenshuai.xi 
1234*53ee8cc1Swenshuai.xi     DECLARA_BANK_VARIABLE
1235*53ee8cc1Swenshuai.xi 
1236*53ee8cc1Swenshuai.xi     for(i=0; i<8; i=i+2)
1237*53ee8cc1Swenshuai.xi     {
1238*53ee8cc1Swenshuai.xi         u16val = ((MS_U16)pTbl[i+1]<<8) | (MS_U16) pTbl[i];
1239*53ee8cc1Swenshuai.xi 
1240*53ee8cc1Swenshuai.xi         BACKUP_SC_BANK
1241*53ee8cc1Swenshuai.xi 
1242*53ee8cc1Swenshuai.xi         Hal_ACE_DNR_SetNRTbl_Y(pInstance, i, u16val);
1243*53ee8cc1Swenshuai.xi         Hal_ACE_DNR_SetNRTbl_C(pInstance, i, u16val);
1244*53ee8cc1Swenshuai.xi 
1245*53ee8cc1Swenshuai.xi         RECOVER_SC_BANK
1246*53ee8cc1Swenshuai.xi 
1247*53ee8cc1Swenshuai.xi     }
1248*53ee8cc1Swenshuai.xi }
1249*53ee8cc1Swenshuai.xi 
MDrv_ACE_ColorCorrectionTable(void * pInstance,MS_BOOL bScalerWin,MS_S16 * psColorCorrectionTable)1250*53ee8cc1Swenshuai.xi void MDrv_ACE_ColorCorrectionTable(void* pInstance, MS_BOOL bScalerWin, MS_S16 *psColorCorrectionTable )
1251*53ee8cc1Swenshuai.xi {
1252*53ee8cc1Swenshuai.xi     msACESetColorCorrectionTable(pInstance, bScalerWin, psColorCorrectionTable);
1253*53ee8cc1Swenshuai.xi }
1254*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetColorMatrixControl(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bEnable)1255*53ee8cc1Swenshuai.xi void MDrv_ACE_SetColorMatrixControl(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEnable )
1256*53ee8cc1Swenshuai.xi {
1257*53ee8cc1Swenshuai.xi     msACE_SetColorMatrixControl(pInstance, bScalerWin, bEnable);
1258*53ee8cc1Swenshuai.xi }
1259*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetRBChannelRange(void * pInstance,MS_BOOL bScalerWin,MS_BOOL bRange)1260*53ee8cc1Swenshuai.xi void MDrv_ACE_SetRBChannelRange(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bRange)
1261*53ee8cc1Swenshuai.xi {
1262*53ee8cc1Swenshuai.xi     msACE_SetRBChannelRange(pInstance, bScalerWin, bRange);
1263*53ee8cc1Swenshuai.xi     HAL_ACE_Set_RBChannelOffset(pInstance, bScalerWin, bRange);
1264*53ee8cc1Swenshuai.xi }
1265*53ee8cc1Swenshuai.xi 
MDrv_ACE_WriteColorMatrixBurst(void * pInstance,MS_BOOL bWindow,MS_U16 * psMatrix)1266*53ee8cc1Swenshuai.xi void MDrv_ACE_WriteColorMatrixBurst(void* pInstance, MS_BOOL bWindow, MS_U16* psMatrix )
1267*53ee8cc1Swenshuai.xi {
1268*53ee8cc1Swenshuai.xi     Hal_ACE_Write_Color_Matrix_Burst(pInstance, bWindow,psMatrix);
1269*53ee8cc1Swenshuai.xi }
1270*53ee8cc1Swenshuai.xi 
MDrv_ACE_IsSupportMLoad(void * pInstance)1271*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_IsSupportMLoad(void* pInstance)
1272*53ee8cc1Swenshuai.xi {
1273*53ee8cc1Swenshuai.xi     return Hal_ACE_Is_Support_MLoad(pInstance);
1274*53ee8cc1Swenshuai.xi }
1275*53ee8cc1Swenshuai.xi 
1276*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1277*53ee8cc1Swenshuai.xi ///Set HDR Init
1278*53ee8cc1Swenshuai.xi /// @param  pstDLC_HDRInitData       \b IN: the HDR Init Data
1279*53ee8cc1Swenshuai.xi /// @return TRUE: DDI call success
1280*53ee8cc1Swenshuai.xi /// @attention
1281*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MDrv_ACE_SetHDRInit(void * pInstance,ACE_DRV_HDRinit * pstACE_HDRInitData)1282*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetHDRInit(void* pInstance,ACE_DRV_HDRinit * pstACE_HDRInitData)
1283*53ee8cc1Swenshuai.xi {
1284*53ee8cc1Swenshuai.xi     memset(&g_ACEinitParameters, 0 , sizeof(ACE_DRV_HDRinit));
1285*53ee8cc1Swenshuai.xi     memcpy(&g_ACEinitParameters, pstACE_HDRInitData, sizeof(ACE_DRV_HDRinit));
1286*53ee8cc1Swenshuai.xi 
1287*53ee8cc1Swenshuai.xi     msACE_HDR_Main(pInstance);
1288*53ee8cc1Swenshuai.xi 
1289*53ee8cc1Swenshuai.xi     return TRUE;
1290*53ee8cc1Swenshuai.xi }
1291*53ee8cc1Swenshuai.xi 
1292*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1293*53ee8cc1Swenshuai.xi /// Skip Wait Vsync
1294*53ee8cc1Swenshuai.xi /// @param eWindow               \b IN: Enable
1295*53ee8cc1Swenshuai.xi /// @param Skip wait Vsync      \b IN: Disable wait Vsync
1296*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MDrv_ACE_SetSkipWaitVsync(void * pInstance,MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn)1297*53ee8cc1Swenshuai.xi void MDrv_ACE_SetSkipWaitVsync(void* pInstance, MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn)
1298*53ee8cc1Swenshuai.xi {
1299*53ee8cc1Swenshuai.xi    Hal_ACE_SetSkipWaitVsync(pInstance, eWindow, bIsSkipWaitVsyn);
1300*53ee8cc1Swenshuai.xi }
1301*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetSkipWaitVsync(void * pInstance,MS_BOOL bScalerWin)1302*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetSkipWaitVsync(void* pInstance, MS_BOOL bScalerWin)
1303*53ee8cc1Swenshuai.xi {
1304*53ee8cc1Swenshuai.xi    return Hal_ACE_GetSkipWaitVsync(pInstance, bScalerWin);
1305*53ee8cc1Swenshuai.xi }
1306*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetIHC(void * pInstance,MS_BOOL bScalerWin,XC_ACE_IHC_COLOR_TYPE eIHC,MS_U8 u8Val)1307*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetIHC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IHC_COLOR_TYPE eIHC, MS_U8 u8Val)
1308*53ee8cc1Swenshuai.xi {
1309*53ee8cc1Swenshuai.xi     return Hal_ACE_SetIHC(pInstance, bScalerWin, eIHC, u8Val);
1310*53ee8cc1Swenshuai.xi }
1311*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetIHC(void * pInstance,MS_BOOL bScalerWin,XC_ACE_IHC_COLOR_TYPE eIHC,MS_U8 * pu8Val)1312*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetIHC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IHC_COLOR_TYPE eIHC, MS_U8* pu8Val)
1313*53ee8cc1Swenshuai.xi {
1314*53ee8cc1Swenshuai.xi     return Hal_ACE_GetIHC(pInstance, bScalerWin, eIHC, pu8Val);
1315*53ee8cc1Swenshuai.xi }
1316*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetICC(void * pInstance,MS_BOOL bScalerWin,XC_ACE_ICC_COLOR_TYPE eICC,MS_U8 u8Val)1317*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetICC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_ICC_COLOR_TYPE eICC, MS_U8 u8Val)
1318*53ee8cc1Swenshuai.xi {
1319*53ee8cc1Swenshuai.xi     return Hal_ACE_SetICC(pInstance, bScalerWin, eICC, u8Val);
1320*53ee8cc1Swenshuai.xi }
1321*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetICC(void * pInstance,MS_BOOL bScalerWin,XC_ACE_ICC_COLOR_TYPE eICC,MS_U8 * pu8Val)1322*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetICC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_ICC_COLOR_TYPE eICC, MS_U8* pu8Val)
1323*53ee8cc1Swenshuai.xi {
1324*53ee8cc1Swenshuai.xi     return Hal_ACE_GetICC(pInstance, bScalerWin, eICC, pu8Val);
1325*53ee8cc1Swenshuai.xi }
1326*53ee8cc1Swenshuai.xi 
MDrv_ACE_SetIBC(void * pInstance,MS_BOOL bScalerWin,XC_ACE_IBC_COLOR_TYPE eIBC,MS_U8 u8Val)1327*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetIBC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IBC_COLOR_TYPE eIBC, MS_U8 u8Val)
1328*53ee8cc1Swenshuai.xi {
1329*53ee8cc1Swenshuai.xi     return Hal_ACE_SetIBC(pInstance, bScalerWin, eIBC, u8Val);
1330*53ee8cc1Swenshuai.xi }
1331*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetIBC(void * pInstance,MS_BOOL bScalerWin,XC_ACE_IBC_COLOR_TYPE eIBC,MS_U8 * pu8Val)1332*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetIBC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IBC_COLOR_TYPE eIBC, MS_U8* pu8Val)
1333*53ee8cc1Swenshuai.xi {
1334*53ee8cc1Swenshuai.xi     return Hal_ACE_GetIBC(pInstance, bScalerWin, eIBC, pu8Val);
1335*53ee8cc1Swenshuai.xi }
1336*53ee8cc1Swenshuai.xi 
MDrv_ACE_GetDeviceNum(void)1337*53ee8cc1Swenshuai.xi MS_U32 MDrv_ACE_GetDeviceNum(void)
1338*53ee8cc1Swenshuai.xi {
1339*53ee8cc1Swenshuai.xi     return XC_ACE_SUPPORT_DEVICE_NUM;
1340*53ee8cc1Swenshuai.xi }
1341*53ee8cc1Swenshuai.xi 
1342*53ee8cc1Swenshuai.xi #undef  _MDRV_ACE_C_
1343*53ee8cc1Swenshuai.xi 
1344