xref: /utopia/UTPA2-700.0.x/modules/xc/drv/xc/mvideo_context.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ///////////////////////////////////////////////////////////////////////////////////////////////////
96 /// file    Mvideo_context.c
97 /// @brief  TEMP Driver Interface
98 /// @author MStar Semiconductor Inc.
99 ///////////////////////////////////////////////////////////////////////////////////////////////////
100 #define  MVIDEO_CONTEXT_C
101 //-------------------------------------------------------------------------------------------------
102 //  Include Files
103 //-------------------------------------------------------------------------------------------------
104 // Common Definition
105 #include "MsCommon.h"
106 #include "MsOS.h"
107 #include "mhal_xc_chip_config.h"
108 #include "utopia.h"
109 #include "utopia_dapi.h"
110 
111 // Internal Definition
112 #ifdef MSOS_TYPE_LINUX_KERNEL
113 #include <linux/string.h>
114 #else
115 #include <string.h>
116 #endif
117 
118 #ifndef MSOS_TYPE_NOS
119 #define _GNU_SOURCE // need this _GNU_SOURCE because we need to check tid by "syscall"
120 //#include <unistd.h>
121 //#include <sys/syscall.h>  // remove for ecos project
122 //#include <sys/types.h>
123 #endif
124 
125 #include "drvXC_IOPort.h"
126 #include "apiXC.h"
127 #include "apiXC_Adc.h"
128 #include "apiXC_Auto.h"
129 #include "drv_sc_display.h"
130 #include "drv_sc_isr.h"
131 #include "apiXC_PCMonitor.h"
132 #include "apiXC_ModeParse.h"
133 #include "drvXC_HDMI_if.h"
134 #include "mvideo_context.h"
135 #include "drv_sc_ip.h"
136 #if (LD_ENABLE==1)
137 #include "mdrv_ld.h"
138 #include "mdrv_ldalgo.h"
139 #endif
140 #include "mdrv_sc_3d.h"
141 #include "drv_sc_menuload.h"
142 #include "drvXC_ADC_Internal.h"
143 #include "mhal_sc.h"
144 #if FRC_INSIDE
145 #include "mdrv_frc.h"
146 #include "mhal_frc.h"
147 #endif
148 #include "XC_private.h"
149 #include "apiXC_v2.h"
150 #include "apiXC_DWIN.h"
151 #include "drv_sc_scaling.h"
152 #include "drv_sc_DIP_scaling.h"
153 #include "xc_hwreg_utility2.h"
154 #include "xc_Analog_Reg.h"
155 #include "mhal_hdmi.h"
156 #include "mhal_ip.h"
157 #include "mhal_dip.h"
158 #include "drvXC_HDMI_Internal.h"
159 #include "mhal_dynamicscaling.h"
160 #include "drvMVOP.h"
161 //-------------------------------------------------------------------------------------------------
162 //  Driver Compiler Options
163 //-------------------------------------------------------------------------------------------------
164 #define MSXC_WR_DBG(x)  //x
165 #define SC_3D_DBG(x)    //x
166 #define SeamlessZapping_DBG 0
167 
168 //-------------------------------------------------------------------------------------------------
169 //  Local Defines
170 //-------------------------------------------------------------------------------------------------
171 
172 
173 //-------------------------------------------------------------------------------------------------
174 //  Local Structurs
175 //-------------------------------------------------------------------------------------------------
176 
177 
178 //-------------------------------------------------------------------------------------------------
179 //  Global Variables
180 //-------------------------------------------------------------------------------------------------
181 
182 
183 //-------------------------------------------------------------------------------------------------
184 //  Local Variables
185 //-------------------------------------------------------------------------------------------------
186 MS_U8 SC_VBuf[32] =  {
187     'M','S','V','C','0','0',                //0,0 fixed
188     'S','3',                                //LIB ID
189     '0','0',                                //Interface
190     '0','0','0','0',                        //Build number
191     '0','0','0','0','0','0','0','0',        // Change List
192     'A','E','0','0','0','0','0','0','0',    // AE:Saturn4LE  0: MStar Trunk
193     'T'                                     // check sum
194 };
195 
196 //-------------------------------------------------------------------------------------------------
197 //  Debug Functions
198 //-------------------------------------------------------------------------------------------------
199 
200 
201 //-------------------------------------------------------------------------------------------------
202 //  Local Functions
203 //-------------------------------------------------------------------------------------------------
204 
205 //-------------------------------------------------------------------------------------------------
206 //  Global Functions
207 //-------------------------------------------------------------------------------------------------
208 MS_U16 MDrv_SC_Cal_FRC_Output_Vfreq(void *pInsatnce, MS_U16 u16InputVFreq,
209                              MS_U16 u16DefaultVFreq,
210                              MS_BOOL bFBL,
211                              MS_U8 *u8FrcIn,
212                              MS_U8 *u8FrcOut,
213                              MS_BOOL *bSetFrameLock,
214                              MS_U8 u8Lpll_bank,
215                              SCALER_WIN eWin);
216 
217 
218 extern PQ_Function_Info    s_PQ_Function_Info[MAX_XC_DEVICE_NUM];
219 void MApi_PNL_CalExtLPLLSETbyDClk(MS_U32 ldHz);
220 void MApi_PNL_SetExt_LPLL_Type(MS_U16 u16Ext_lpll_type);
221 MS_BOOL MApi_PNL_GetOSDHWTraining_Status(void *pInstance);
222 //==============================================================================
223 //==============================================================================
MDrv_XC_SetDeviceOffset(void * pInstance)224 void MDrv_XC_SetDeviceOffset(void *pInstance)
225 {
226     MS_U8 i;
227     MS_U32 u32Offset;
228     _XC_ENTRY(pInstance);
229 
230     for(i = 0; i < MAX_XC_DEVICE_NUM; i++)
231     {
232         u32Offset = Hal_SC_Get_Device_Offset(i);
233         _XC_Device_Offset[i] = u32Offset;
234     }
235 
236     _XC_RETURN(pInstance);
237 }
238 
mvideo_sc_variable_init(void * pInstance,MS_BOOL bFirstInstance,XC_INITDATA * pXC_InitData)239 void mvideo_sc_variable_init(void *pInstance, MS_BOOL bFirstInstance, XC_INITDATA *pXC_InitData)
240 {
241     MS_U8 i, j;
242     XC_PANEL_INFO_EX stPanelInfoEx;
243     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
244     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
245     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
246     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
247     // context
248 #ifndef MSOS_TYPE_OPTEE
249 #ifndef DONT_USE_CMA
250 #if (XC_SUPPORT_CMA ==TRUE)
251         MS_BOOL ret= FALSE;
252         if(pXCResourcePrivate->stdrvXC_MVideo._bSkipSWReset == FALSE)
253         {
254             if (
255 #if (HW_DESIGN_4K2K_VER == 7)
256                 (psXCInstPri->u32DeviceID == 0) &&
257 #endif
258                 pXCResourcePrivate->stdrvXC_MVideo._enPrevPowerState != E_POWER_SUSPEND)
259             {
260 #ifdef UFO_XC_SUPPORT_SUB_CMA
261 #ifndef UFO_SET_XC_CMA_INFORMATION
262     if(psXCInstPri->u32DeviceID==0)
263     {
264 #ifndef UFO_SET_XC_CMA_INFORMATION
265 #if (HW_DESIGN_4K2K_VER == 6)
266         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u32HeapID = ION_XC_HEAP_ID;
267 #if defined(CHIP_MONET)
268         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID = XC_DUAL_MIU_HID;
269 #else
270         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID = XC_INVALID_HEAP_ID;
271 #endif
272         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u64AddrHeapOffset = 0;
273         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u64AddrHeapOffset = 0;
274 #endif
275 #endif
276     }
277     else
278     {
279 #ifndef UFO_SET_XC_CMA_INFORMATION
280 #if (HW_DESIGN_4K2K_VER == 6)
281         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u32HeapID = 20;//temp use vdec heap id
282         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID = XC_INVALID_HEAP_ID;
283         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u64AddrHeapOffset = 0;
284         gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u64AddrHeapOffset = 0;
285 #endif
286 #endif
287     }
288 #endif
289 
290 
291 #if PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB
292                 SCALER_WIN eCma_Win = MAX_WINDOW;
293                 if(psXCInstPri->u32DeviceID==0)
294                 {
295                     eCma_Win = MAIN_WINDOW;
296                 }
297                 else
298                 {
299                     eCma_Win  = SUB_WINDOW;
300                 }
301 #else
302                 eCma_Win = MAIN_WINDOW;
303 #endif
304                 /* 1. do CMA_POOL_INIT */
305                 CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].heap_id     = gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u32HeapID;
306                 CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].flags       = CMA_FLAG_MAP_VMA;
307                 MsOS_DelayTaskUs(1);
308                 XC_LOG_TRACE(XC_DBGLEVEL_SETWINDOW,"[%s,%5d][CMA], CMA self heapid = %d!\n",__func__, __LINE__,CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].heap_id);
309                 if (CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].heap_id != XC_INVALID_HEAP_ID)
310                 {
311                     ret = MApi_CMA_Pool_Init(&CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM]);
312 
313                     if(ret == FALSE)
314                     {
315                         printf("\033[35m   Function = %s, Line = %d, CMA_POOL_INIT ERROR!!\033[m\n", __PRETTY_FUNCTION__, __LINE__);
316                         MS_ASSERT(0);
317                     }
318                     else
319                     {
320                         //printf("\033[35m  Function = %s, Line = %d, get pool_handle_id is %u\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].pool_handle_id);
321                         //printf("\033[35m  Function = %s, Line = %d, get miu is %u\033[m\n", __PRETTY_FUNCTION__,__LINE__, CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].miu);
322                         //printf("\033[35m  Function = %s, Line = %d, get heap_miu_start_offset is 0x%lx\033[m\n", __PRETTY_FUNCTION__, __LINE__, (MS_U32)CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].heap_miu_start_offset);
323                         //printf("\033[35m  Function = %s, Line = %d, get heap_length is 0x%X\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].heap_length);
324                     }
325                 }
326 
327                 if (gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID != XC_INVALID_HEAP_ID)
328                 {
329                     /* 1. do CMA_POOL_INIT */
330                     CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM][eCma_Win].heap_id     = gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID;
331                     CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM][eCma_Win].flags       = CMA_FLAG_MAP_VMA;
332                     MsOS_DelayTaskUs(1);
333                     XC_LOG_TRACE(XC_DBGLEVEL_SETWINDOW,"[%s,%5d][CMA], CMA cobuff heapid = %d!\n",__func__, __LINE__,CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_COBUFF_MEM].heap_id);
334                     if (CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_COBUFF_MEM].heap_id != XC_INVALID_HEAP_ID)
335                     {
336                         ret = MApi_CMA_Pool_Init(&CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_COBUFF_MEM]);
337 
338                         if(ret == FALSE)
339                         {
340                             printf("\033[35m   Function = %s, Line = %d, CMA_POOL_INIT ERROR!!\033[m\n", __PRETTY_FUNCTION__, __LINE__);
341                             MS_ASSERT(0);
342                         }
343                         else
344                         {
345                             //printf("\033[35m  Function = %s, Line = %d, get pool_handle_id is %u\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM][eCma_Win].pool_handle_id);
346                             //printf("\033[35m  Function = %s, Line = %d, get miu is %u\033[m\n", __PRETTY_FUNCTION__,__LINE__, CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].miu);
347                             //printf("\033[35m  Function = %s, Line = %d, get heap_miu_start_offset is 0x%lx\033[m\n", __PRETTY_FUNCTION__, __LINE__, (MS_U32)CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM][eCma_Win].heap_miu_start_offset);
348                             //printf("\033[35m  Function = %s, Line = %d, get heap_length is 0x%X\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[eCma_Win][CMA_XC_SELF_MEM].heap_length);
349                         }
350                     }
351                 }
352 #else
353 #ifndef UFO_SET_XC_CMA_INFORMATION
354 #if (HW_DESIGN_4K2K_VER == 6)
355                 gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u32HeapID = ION_XC_HEAP_ID;
356 #if defined(CHIP_MONET)
357                 gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID = XC_DUAL_MIU_HID;
358 #else
359                 gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID = XC_INVALID_HEAP_ID;
360 #endif
361                 gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u64AddrHeapOffset = 0;
362                 gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u64AddrHeapOffset = 0;
363 #endif
364 #endif
365                 /* 1. do CMA_POOL_INIT */
366                 CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_id     = gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_SELF_MEM].u32HeapID;
367                 CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].flags       = CMA_FLAG_MAP_VMA;
368                 MsOS_DelayTaskUs(1);
369                 XC_LOG_TRACE(XC_DBGLEVEL_SETWINDOW,"[%s,%5d][CMA], CMA self heapid = %d!\n",__func__, __LINE__,CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_id);
370                 if (CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_id != XC_INVALID_HEAP_ID)
371                 {
372                     ret = MApi_CMA_Pool_Init(&CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM]);
373 
374                     if(ret == FALSE)
375                     {
376                         printf("\033[35m   Function = %s, Line = %d, CMA_POOL_INIT ERROR!!\033[m\n", __PRETTY_FUNCTION__, __LINE__);
377                         MS_ASSERT(0);
378                     }
379                     else
380                     {
381                         //printf("\033[35m  Function = %s, Line = %d, get pool_handle_id is %u\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].pool_handle_id);
382                         //printf("\033[35m  Function = %s, Line = %d, get miu is %u\033[m\n", __PRETTY_FUNCTION__,__LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].miu);
383                         //printf("\033[35m  Function = %s, Line = %d, get heap_miu_start_offset is 0x%lx\033[m\n", __PRETTY_FUNCTION__, __LINE__, (MS_U32)CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_miu_start_offset);
384                         //printf("\033[35m  Function = %s, Line = %d, get heap_length is 0x%X\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_length);
385                     }
386                 }
387 
388                 if (gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID != XC_INVALID_HEAP_ID)
389                 {
390                     /* 1. do CMA_POOL_INIT */
391                     CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM].heap_id     = gSrcInfo[MAIN_WINDOW].Status2.stXCConfigCMA[CMA_XC_COBUFF_MEM].u32HeapID;
392                     CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM].flags       = CMA_FLAG_MAP_VMA;
393                     MsOS_DelayTaskUs(1);
394                     XC_LOG_TRACE(XC_DBGLEVEL_SETWINDOW,"[%s,%5d][CMA], CMA cobuff heapid = %d!\n",__func__, __LINE__,CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM].heap_id);
395                     if (CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM].heap_id != XC_INVALID_HEAP_ID)
396                     {
397                         ret = MApi_CMA_Pool_Init(&CMA_Pool_Init_PARAM[CMA_XC_COBUFF_MEM]);
398 
399                         if(ret == FALSE)
400                         {
401                             printf("\033[35m   Function = %s, Line = %d, CMA_POOL_INIT ERROR!!\033[m\n", __PRETTY_FUNCTION__, __LINE__);
402                             MS_ASSERT(0);
403                         }
404                         else
405                         {
406                             //printf("\033[35m  Function = %s, Line = %d, get pool_handle_id is %u\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].pool_handle_id);
407                             //printf("\033[35m  Function = %s, Line = %d, get miu is %u\033[m\n", __PRETTY_FUNCTION__,__LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].miu);
408                             //printf("\033[35m  Function = %s, Line = %d, get heap_miu_start_offset is 0x%lx\033[m\n", __PRETTY_FUNCTION__, __LINE__, (MS_U32)CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_miu_start_offset);
409                             //printf("\033[35m  Function = %s, Line = %d, get heap_length is 0x%X\033[m\n", __PRETTY_FUNCTION__, __LINE__, CMA_Pool_Init_PARAM[CMA_XC_SELF_MEM].heap_length);
410                         }
411                     }
412                 }
413 #endif
414             }
415          }
416 #endif
417 #endif
418 #endif
419 
420 #if(XC_CONTEXT_ENABLE)
421     pXCResourcePrivate->stdrvXC_MVideo._SContext.bEnableFPLLManualDebug = FALSE;
422     if (bFirstInstance)
423     {
424         gSrcInfo[MAIN_WINDOW].stDispWin.x       = 0;
425         gSrcInfo[MAIN_WINDOW].stDispWin.y       = 0;
426         gSrcInfo[MAIN_WINDOW].stDispWin.width   = 0;
427         gSrcInfo[MAIN_WINDOW].stDispWin.height  = 0;
428 
429         gSrcInfo[MAIN_WINDOW].bEn3DNR = FALSE;
430         gSrcInfo[MAIN_WINDOW].bUseYUVSpace = FALSE;
431         gSrcInfo[MAIN_WINDOW].bMemYUVFmt = FALSE;
432         gSrcInfo[MAIN_WINDOW].bForceNRoff = FALSE;
433         gSrcInfo[MAIN_WINDOW].bFBL = FALSE;
434         gSrcInfo[MAIN_WINDOW].bR_FBL = FALSE;
435         gSrcInfo[MAIN_WINDOW].bForceRGBin = FALSE;
436         gSrcInfo[MAIN_WINDOW].bFastFrameLock = FALSE;//mvideo_sc_set_fastframelock(FALSE);
437         gSrcInfo[MAIN_WINDOW].bRWBankAuto= TRUE;
438 
439         gSrcInfo[MAIN_WINDOW].u16BytePerWord   = BYTE_PER_WORD;
440         gSrcInfo[MAIN_WINDOW].u16OffsetPixelAlignment = OFFSET_PIXEL_ALIGNMENT;
441         gSrcInfo[MAIN_WINDOW].Status2.bAutoBestPreScaling = FALSE;
442         gSrcInfo[MAIN_WINDOW].bInterlace = FALSE;
443         gSrcInfo[MAIN_WINDOW].Status2.u8IP_PixelRep = INVALID_IP_PIXELREPTITION;
444         gSrcInfo[MAIN_WINDOW].Status2.bMVOPHSKMode =  FALSE;
445 #ifdef UFO_XC_SET_DSINFO_V0
446         gSrcInfo[MAIN_WINDOW].Status2.bUpdate_DS_CMD = FALSE;
447         gSrcInfo[MAIN_WINDOW].Status2.bEnableDNR = FALSE;
448 #endif
449 #ifdef UFO_XC_FB_LEVEL
450         gSrcInfo[MAIN_WINDOW].eFBLevel =  E_XC_FB_LEVEL_FB;
451 #endif
452 
453 
454         gSrcInfo[SUB_WINDOW].stDispWin.x       = 0;
455         gSrcInfo[SUB_WINDOW].stDispWin.y       = 0;
456         gSrcInfo[SUB_WINDOW].stDispWin.width   = 0;
457         gSrcInfo[SUB_WINDOW].stDispWin.height  = 0;
458 
459         gSrcInfo[SUB_WINDOW].bEn3DNR = FALSE;
460         gSrcInfo[SUB_WINDOW].bUseYUVSpace = FALSE;
461         gSrcInfo[SUB_WINDOW].bForceNRoff = FALSE;
462         gSrcInfo[SUB_WINDOW].bMemYUVFmt = FALSE;
463         gSrcInfo[SUB_WINDOW].bFBL = FALSE;
464         gSrcInfo[SUB_WINDOW].bForceRGBin = FALSE;
465         gSrcInfo[SUB_WINDOW].bFastFrameLock = FALSE;
466         gSrcInfo[SUB_WINDOW].bRWBankAuto= TRUE;
467 
468         gSrcInfo[SUB_WINDOW].u16BytePerWord   = BYTE_PER_WORD;
469         gSrcInfo[SUB_WINDOW].u16OffsetPixelAlignment = OFFSET_PIXEL_ALIGNMENT;
470         gSrcInfo[SUB_WINDOW].Status2.bAutoBestPreScaling = FALSE;
471         gSrcInfo[SUB_WINDOW].bInterlace = FALSE;
472 #ifdef UFO_XC_FB_LEVEL
473         gSrcInfo[SUB_WINDOW].eFBLevel =  E_XC_FB_LEVEL_FB;
474 #endif
475 
476         memset(&stPanelInfoEx, 0, sizeof(XC_PANEL_INFO_EX));
477         stPanelInfoEx.u16VFreq = PANEL_INFO_EX_INVALID_ALL;
478         stPanelInfoEx.u32PanelInfoEx_Version = PANEL_INFO_EX_VERSION;
479         stPanelInfoEx.u16PanelInfoEX_Length = sizeof(XC_PANEL_INFO_EX);
480         MDrv_XC_SetExPanelInfo(pInstance, FALSE, &stPanelInfoEx);
481         gSrcInfo[SUB_WINDOW].Status2.u8IP_PixelRep = INVALID_IP_PIXELREPTITION;
482         gSrcInfo[SUB_WINDOW].Status2.bMVOPHSKMode =  FALSE;
483 #ifdef UFO_XC_SET_DSINFO_V0
484         gSrcInfo[SUB_WINDOW].Status2.bUpdate_DS_CMD = FALSE;
485         gSrcInfo[SUB_WINDOW].Status2.bEnableDNR = FALSE;
486 #endif
487 
488         pXCResourcePrivate->stdrvXC_MVideo.bNeedInitShared = FALSE;
489         for(i = 0; i < E_XC_MCDI_MAX; i++)
490         {
491             pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32MCDIFBAddress_Suspend[i] = 0xFFFFFFFF;
492             pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32MCDIFBSize_Suspend[i] = 0;
493             pXCResourcePrivate->stdrvXC_MVideo_Context.g_bEnableMCDI_Suspend[i] = FALSE;
494             pXCResourcePrivate->stdrvXC_Display._u32MCDIFBAddress[i] = 0xFFFFFFFF;
495             pXCResourcePrivate->stdrvXC_Display._u32MCDIFBSize[i]=0x0;
496         }
497         memset(&s_PQ_Function_Info[psXCInstPri->u32DeviceID],0,sizeof(s_PQ_Function_Info[psXCInstPri->u32DeviceID]));
498         //dc on should do menuload init
499         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32MLoadPhyAddr_Suspend = 0;
500         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32MLoadBufByteLen_Suspend = 0;
501     }
502 #endif
503 
504     if(pXC_InitData != NULL)//only valid pointer can init the following variable
505     {
506         if(gSrcInfo[MAIN_WINDOW].Status2.u16OutputVFreqAfterFRC == 0)//only assign significant value for one time
507         {
508             gSrcInfo[MAIN_WINDOW].Status2.u16OutputVFreqAfterFRC = pXC_InitData->stPanelInfo.u16DefaultVFreq;
509         }
510 
511         if(gSrcInfo[MAIN_WINDOW].Status2.u16OP1_OutputVFreqAfterFRC == 0)//only assign significant value for one time
512         {
513             gSrcInfo[MAIN_WINDOW].Status2.u16OP1_OutputVFreqAfterFRC = gSrcInfo[MAIN_WINDOW].Status2.u16OutputVFreqAfterFRC;
514         }
515 
516         //save panel default timing
517         memcpy(&(gSrcInfo[MAIN_WINDOW].Status2.stXCPanelDefaultTiming), &(pXC_InitData->stPanelInfo), sizeof(XC_PANEL_TIMING));
518         // Here is the third place user can set mirror mode flag !!!
519         if (pXC_InitData->bMirror)
520         {
521             // So we need update variable here.
522             gSrcInfo[MAIN_WINDOW].Status2.eMirrorMode = MIRROR_HV;
523             gSrcInfo[SUB_WINDOW].Status2.eMirrorMode = MIRROR_HV;
524         }
525 
526         pXCResourcePrivate->stdrvXC_MVideo.enOldInputSrc_ForScalerSetSource[MAIN_WINDOW] = INPUT_SOURCE_NONE;
527         pXCResourcePrivate->stdrvXC_MVideo.enOldInputSrc_ForScalerSetSource[SUB_WINDOW] = INPUT_SOURCE_NONE;
528 
529         memset(&pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_Init_Misc, 0, sizeof(XC_INITMISC));
530 
531         pXCResourcePrivate->stdrvXC_MVideo_Context.g_bEnableRepWindowForFrameColor = FALSE;
532         pXCResourcePrivate->stdrvXC_MVideo_Context.bMainIsOnTop = FALSE;
533 
534         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32InitDataLen_Suspend = 0;
535         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32InitMiscDataLen_Suspend = 0;
536         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u8DispWindowColor_Suspend[MAIN_WINDOW] = 0;
537         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u8DispWindowColor_Suspend[SUB_WINDOW] = 0;
538         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32OSDCCtrltype_Suspend = 0;
539         pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32FrameColor_Suspend = 0;
540 
541 #ifndef DISABLE_3D_FUNCTION
542             MDrv_SC_3D_Variable_Init(pInstance);
543 #endif
544         // interrupts
545         for(i=0; i<MAX_SC_INT; i++)
546         {
547             for(j=0; j<MAX_ISR_NUM_OF_EACH_INT; j++)
548             {
549                 pXCResourcePrivate->stdrvXC_ISR.stXCIsrInfo[i][j].aryXC_ISR_Param = NULL;
550                 pXCResourcePrivate->stdrvXC_ISR.stXCIsrInfo[i][j].aryXC_ISR = NULL;
551             }
552         }
553         _XC_ENTRY(pInstance);
554         MDrv_XC_GetDefaultHVSyncInfo(pInstance);
555         // SW patch for Eisntein
556         #if (FRC_INSIDE)
557             MHal_FRC_interrupt_mask(pInstance, 0xFF);
558         #endif
559 
560         // With HW Auto no signal case,  sub video source change would causes OP1 broken, looks like main video broken
561         Hal_SC_ip_enable_turnoff_OP1_for_AutoNoSignal(pInstance, DISABLE);
562         //store initial command number
563         pXCResourcePrivate->sthal_SC.u16OldValue[E_STORE_VALUE_INIT_CMD_NUM] = SC_R2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK20_29_L, 0x1F1F);
564         _XC_RETURN(pInstance);
565     }
566 }
567 
MDrv_XC_SetHdmiSyncMode(void * pInstance,E_HDMI_SYNC_TYPE eSynctype)568 void MDrv_XC_SetHdmiSyncMode(void *pInstance, E_HDMI_SYNC_TYPE eSynctype)
569 {
570     XC_LOG_TRACE(XC_DBGLEVEL_SETWINDOW,"set HDMI sync mode mode: %u (0 is DE mode, 1 is HV mode)\n",eSynctype);
571     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
572     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
573     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
574     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
575     pXCResourcePrivate->stdrvXC_MVideo_Context.s_HDMISYNC_type = eSynctype;
576 }
577 
MApi_XC_SetHdmiSyncMode_U2(void * pInstance,E_HDMI_SYNC_TYPE eSynctype)578 void MApi_XC_SetHdmiSyncMode_U2(void* pInstance, E_HDMI_SYNC_TYPE eSynctype)
579 {
580     //Whether we should support special timing with HV sync mode. Some timing, like 720@30p must use HV mode
581     //  to detect it. so this API is actually to enable or disable the capablity for these special timing.
582     //  DE mode: not support special timing, HV mode: support special timing
583     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
584     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
585     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
586 
587     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
588     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
589 #if SUPPORT_IP_HDMI_FOR_HV_MODE
590     if(HDMI_SYNC_HV == eSynctype)
591     {
592         pXCResourcePrivate->stdrvXC_MVideo_Context._bSupportHVMode = TRUE;
593     }
594     else
595 #endif
596     {
597         pXCResourcePrivate->stdrvXC_MVideo_Context._bSupportHVMode = FALSE;
598     }
599     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
600 }
601 
MApi_XC_SetHdmiSyncMode(E_HDMI_SYNC_TYPE eSynctype)602 void MApi_XC_SetHdmiSyncMode(E_HDMI_SYNC_TYPE eSynctype)
603 {
604     if (pu32XCInst == NULL)
605     {
606         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
607         return;
608     }
609 
610     stXC_SET_HDMI_SYNCMODE XCArgs;
611     XCArgs.eSynctype = eSynctype;
612 
613     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_HDMI_SYNCMODE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
614     {
615         printf("Obtain XC engine fail\n");
616         return;
617     }
618     else
619     {
620         return;
621     }
622 }
623 
MDrv_XC_GetHdmiSyncMode(void * pInstance)624 E_HDMI_SYNC_TYPE MDrv_XC_GetHdmiSyncMode(void *pInstance)
625 {
626     //Check whether which mode are we using: DE or HV.
627     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
628     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
629     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
630     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
631     return pXCResourcePrivate->stdrvXC_MVideo_Context.s_HDMISYNC_type;
632 }
633 
MApi_XC_GetHdmiSyncMode_U2(void * pInstance)634 E_HDMI_SYNC_TYPE MApi_XC_GetHdmiSyncMode_U2(void* pInstance)
635 {
636     E_HDMI_SYNC_TYPE eReturn = HDMI_SYNC_DE;
637     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
638     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
639     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
640 
641     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
642     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
643     eReturn = MDrv_XC_GetHdmiSyncMode(pInstance);
644     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
645     return eReturn;
646 }
647 
MApi_XC_GetHdmiSyncMode(void)648 E_HDMI_SYNC_TYPE MApi_XC_GetHdmiSyncMode(void)
649 {
650     if (pu32XCInst == NULL)
651     {
652         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
653         return HDMI_SYNC_DE;
654     }
655 
656     stXC_GET_HDMI_SYNCMODE XCArgs;
657     XCArgs.eReturnValue = HDMI_SYNC_DE;
658 
659     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_GET_HDMI_SYNCMODE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
660     {
661         printf("Obtain XC engine fail\n");
662         return HDMI_SYNC_DE;
663     }
664     else
665     {
666         return XCArgs.eReturnValue;
667     }
668 }
669 
MDrv_XC_Switch_DE_HV_Mode_By_Timing(void * pInstance,SCALER_WIN eWindow)670 void MDrv_XC_Switch_DE_HV_Mode_By_Timing(void *pInstance, SCALER_WIN eWindow)
671 {
672 #if SUPPORT_IP_HDMI_FOR_HV_MODE
673 #if ONLY_ALLOW_HV_MODE_FOR_720P
674     MS_U16 u16HDE = 0;
675     MS_U8 u8InputSrcSel, u8SyncSel, u8VideoSel=0, u8isYPbPr, u8HankShakingMD;
676     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
677     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
678     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
679     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
680     if(pXCResourcePrivate->stdrvXC_MVideo_Context._bSupportHVMode)
681     {
682         _XC_ENTRY(pInstance);
683         u16HDE = MDrv_HDMI_GetHDE();
684         //printf("---------------------MDrv_HDMI_GetHDE=%u\n",u16HDE);
685         if(HVMODE_HDE_VALIDATION(u16HDE))
686         {
687             if(HDMI_SYNC_HV != MDrv_XC_GetHdmiSyncMode(pInstance))
688             {
689                 MDrv_XC_SetHdmiSyncMode(pInstance, HDMI_SYNC_HV);
690                 //printf("@@@---%s:%d u8IP_PixelRep=%u\n", __FUNCTION__, __LINE__, gSrcInfo[eWindow].Status2.u8IP_PixelRep);
691                 if(gSrcInfo[eWindow].Status2.u8IP_PixelRep != INVALID_IP_PIXELREPTITION)
692                 {
693                     gSrcInfo[eWindow].Status2.u8IP_PixelRep = INVALID_IP_PIXELREPTITION;
694                     Hal_SC_ip_set_fir_down_sample_divider(pInstance, DISABLE,0x00,eWindow); //Reset Pixel repetition, when switch hv mode
695                 }
696                 MDrv_SC_ip_set_input_vsync_delay(pInstance, NO_DELAY, eWindow );
697                 MDrv_SC_ip_set_de_only_mode(pInstance, DISABLE, eWindow );
698                 // Use DE as capture window
699                 MDrv_SC_ip_set_de_bypass_mode(pInstance, ENABLE, eWindow);
700                 // Disable scaling for get correct DE.
701                 //MDrv_SC_Enable_PreScaling(FALSE, FALSE, eWindow);
702                 // Set full range capture size for de-bypass mode
703                 //MDrv_SC_SetFullRangeCapture(eWindow);
704                 MDrv_SC_ip_set_input_sync_sample_mode(pInstance, GLITCH_REMOVAL, eWindow );
705                 MDrv_SC_ip_set_post_glitch_removal(pInstance, ENABLE, 0x01, eWindow );
706                 Hal_HDMI_Set_YUV422to444_Bypass(TRUE);
707 
708                 //720p with IP_HDMI, color space problem. must set it to IP_VIDEO
709                 u8InputSrcSel = IP_HDMI;
710                 u8VideoSel = IP_MST_VD_A;
711                 u8SyncSel = (AUTO_DETECT << 1) | CSYNC;
712                 u8isYPbPr = TRUE;
713                 u8HankShakingMD = FALSE;
714                 MDrv_SC_ip_set_input_source(pInstance, u8InputSrcSel, u8SyncSel, u8VideoSel, u8isYPbPr, eWindow);
715                 MDrv_XC_reset_ip(pInstance, eWindow );
716             }
717         }
718         else
719         {
720             if(HDMI_SYNC_DE != MDrv_XC_GetHdmiSyncMode(pInstance))
721             {
722                 MDrv_XC_SetHdmiSyncMode(pInstance, HDMI_SYNC_DE);
723                 //printf("@@@---%s:%d u8IP_PixelRep=%u\n", __FUNCTION__, __LINE__, gSrcInfo[eWindow].Status2.u8IP_PixelRep);
724                 if(gSrcInfo[eWindow].Status2.u8IP_PixelRep != INVALID_IP_PIXELREPTITION)
725                 {
726                     gSrcInfo[eWindow].Status2.u8IP_PixelRep = INVALID_IP_PIXELREPTITION;
727                     Hal_SC_ip_set_fir_down_sample_divider(pInstance, DISABLE,0x00,eWindow); //Reset Pixel repetition, when switch hv mode
728                 }
729                 MDrv_SC_ip_set_input_vsync_delay(pInstance, DELAY_QUARTER_HSYNC, eWindow );
730                 MDrv_SC_ip_set_de_only_mode(pInstance, ENABLE, eWindow );
731                 MDrv_SC_ip_set_de_bypass_mode(pInstance, DISABLE, eWindow);
732                 MDrv_SC_ip_set_input_sync_sample_mode(pInstance, NORMAL_MODE, eWindow );
733                 MDrv_SC_ip_set_post_glitch_removal(pInstance, ENABLE, 0x07, eWindow );
734                 Hal_HDMI_Set_YUV422to444_Bypass(TRUE);
735 
736                 //720p with IP_HDMI, color space problem. must set it to IP_VIDEO
737                 //here should recover the setting of 720p
738                 u8InputSrcSel = IP_HDMI;
739                 u8VideoSel = IP_HDMI;
740                 u8SyncSel = (AUTO_DETECT << 1) | CSYNC;
741                 u8isYPbPr = TRUE;
742                 u8HankShakingMD = FALSE;
743                 MDrv_SC_ip_set_input_source(pInstance, u8InputSrcSel, u8SyncSel, u8VideoSel, u8isYPbPr, eWindow);
744                 MDrv_XC_reset_ip(pInstance, eWindow );
745             }
746         }
747         _XC_RETURN(pInstance);
748     }
749 #endif
750 #endif
751 }
752 
MDrv_XC_Set_DE_Lock_Mode(void * pInstance,SCALER_WIN eWindow)753 void MDrv_XC_Set_DE_Lock_Mode(void *pInstance, SCALER_WIN eWindow)
754 {
755     MS_U16 u16HDE = 0;
756     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
757     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
758 
759     _XC_ENTRY(pInstance);
760     u16HDE = MDrv_HDMI_GetHDE();
761     if(HVMODE_HDE_VALIDATION(u16HDE))
762     {
763         MDrv_SC_ip_set_de_only_mode(pInstance, DISABLE, eWindow );
764         MDrv_SC_ip_set_de_lock_mode(pInstance, ENABLE, eWindow);
765     }
766     else
767     {
768         MDrv_SC_ip_set_de_only_mode(pInstance, ENABLE, eWindow );
769         MDrv_SC_ip_set_de_lock_mode(pInstance, DISABLE, eWindow);
770     }
771     _XC_RETURN(pInstance);
772 }
773 
mvideo_sc_getcropwin(void * pInstance,MS_WINDOW_TYPE * pCropWin,SCALER_WIN eWindow)774 void mvideo_sc_getcropwin( void *pInstance, MS_WINDOW_TYPE *pCropWin, SCALER_WIN eWindow )
775 {
776     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
777     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
778     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
779     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
780     pCropWin->x = gSrcInfo[eWindow].stCropWin.x;
781     pCropWin->y = gSrcInfo[eWindow].stCropWin.y;
782     pCropWin->width = gSrcInfo[eWindow].stCropWin.width;
783     pCropWin->height = gSrcInfo[eWindow].stCropWin.height;
784 }
785 
mvideo_pnl_is_dualport(void * pInstance)786 MS_U8  mvideo_pnl_is_dualport(void *pInstance)
787 {
788     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
789     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
790     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
791     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
792     return pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u8LPLL_Mode; // 0: single mode, 1: dual mode
793 }
794 
mvideo_pnl_set_dclkmode(void * pInstance,E_XC_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode)795 void mvideo_pnl_set_dclkmode(void *pInstance, E_XC_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode)
796 {
797     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
798     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
799     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
800     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
801     pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.enPnl_Out_Timing_Mode = enPnl_Out_Timing_Mode;
802 }
803 
mvideo_sc_is_enable_3dnr(void * pInstance,SCALER_WIN eWindow)804 MS_BOOL mvideo_sc_is_enable_3dnr(void *pInstance, SCALER_WIN eWindow )
805 {
806     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
807     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
808     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
809     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
810     return gSrcInfo[eWindow].bEn3DNR;
811 }
812 
mvideo_sc_set_3dnr(void * pInstance,MS_BOOL bEnable,SCALER_WIN eWindow)813 void mvideo_sc_set_3dnr(void *pInstance, MS_BOOL bEnable,  SCALER_WIN eWindow )
814 {
815     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
816     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
817     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
818     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
819     gSrcInfo[eWindow].bEn3DNR = bEnable;
820 }
821 
822 //-------------------------------------------------------------------------------------------------
823 /// check whether the specific window is YUV space
824 /// @param  eWindow                \b IN: which window we are going to set
825 /// @return @ref MS_BOOL
826 //-------------------------------------------------------------------------------------------------
MApi_XC_IsYUVSpace_U2(void * pInstance,SCALER_WIN eWindow)827 MS_BOOL MApi_XC_IsYUVSpace_U2( void* pInstance, SCALER_WIN eWindow )
828 {
829     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
830     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
831     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
832 
833     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
834     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
835     MS_BOOL bReturn = gSrcInfo[eWindow].bUseYUVSpace;
836     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
837     return bReturn;
838 }
839 
MApi_XC_IsYUVSpace(SCALER_WIN eWindow)840 MS_BOOL MApi_XC_IsYUVSpace( SCALER_WIN eWindow )
841 {
842     if (pu32XCInst == NULL)
843     {
844         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
845         return FALSE;
846     }
847 
848     stXC_CHECK_YUVSPACE XCArgs;
849     XCArgs.eWindow = eWindow;
850     XCArgs.bReturnValue = FALSE;
851 
852     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_CHECK_YUVSPACE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
853     {
854         printf("Obtain XC engine fail\n");
855         return FALSE;
856     }
857     else
858     {
859         return XCArgs.bReturnValue;
860     }
861 }
862 
863 //-------------------------------------------------------------------------------------------------
864 /// Enable/Disable force RGB in
865 /// @param  bEnable                 \b IN: enable or disable
866 /// @param  eWindow                 \b IN: which window we are going to enable or disable
867 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableForceRGBin_U2(void * pInstance,MS_BOOL bEnable,SCALER_WIN eWindow)868 void MApi_XC_EnableForceRGBin_U2(void* pInstance, MS_BOOL bEnable, SCALER_WIN eWindow)
869 {
870     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
871     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
872     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
873 
874     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
875     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
876     gSrcInfo[eWindow].bForceRGBin = bEnable;
877 
878 #if defined(UFO_XC_HDR) && defined(UFO_XC_HDR_VERSION) && (UFO_XC_HDR_VERSION == 2)
879     /// Set CFD skip picture setting or not.
880     /// If force RGB in, CFD skip picture setting (Hur, Contrast, Saturation)
881     XC_CFD_OSD_CONTROL cfdOsd;
882     memset(&cfdOsd, 0, sizeof(XC_CFD_OSD_CONTROL));
883 
884     cfdOsd.u32Version = CFD_OSD_VERSION;
885     cfdOsd.u16Length = sizeof(XC_CFD_OSD_CONTROL);
886     cfdOsd.u8Win = eWindow;
887     cfdOsd.bSkipPictureSettingValid = TRUE;
888     cfdOsd.bSkipPictureSetting = bEnable;
889 
890     XC_CFD_CONTROL_INFO cfdCtrl;
891     memset(&cfdCtrl, 0, sizeof(XC_CFD_CONTROL_INFO));
892     cfdCtrl.enCtrlType = E_XC_CFD_CTRL_TYPE_OSD;
893     cfdCtrl.pParam = &cfdOsd;
894     cfdCtrl.u32ParamLen = sizeof(XC_CFD_OSD_CONTROL);
895 
896     MDrv_XC_HDR_Control(pInstance, E_XC_HDR_CTRL_CFD_CONTROL, &cfdCtrl);
897 #endif
898     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
899 }
900 
MApi_XC_EnableForceRGBin(MS_BOOL bEnable,SCALER_WIN eWindow)901 void MApi_XC_EnableForceRGBin(MS_BOOL bEnable, SCALER_WIN eWindow)
902 {
903     if (pu32XCInst == NULL)
904     {
905         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
906         {
907             printf("UtopiaOpen XC failed\n");
908             return;
909         }
910     }
911 
912     stXC_SET_FORCE_RGBIN XCArgs;
913     XCArgs.bEnable = bEnable;
914     XCArgs.eWindow = eWindow;
915 
916     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_FORCE_RGBIN, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
917     {
918         printf("Obtain XC engine fail\n");
919         return;
920     }
921     else
922     {
923         return;
924     }
925 }
926 //-------------------------------------------------------------------------------------------------
927 /// This function will enable/diable framebufferless mode
928 /// @param  bEnable      \b IN: TRUE: enable, FALSE: otherwise
929 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableFrameBufferLess_U2(void * pInstance,MS_BOOL bEnable)930 void MApi_XC_EnableFrameBufferLess_U2(void* pInstance, MS_BOOL bEnable)
931 {
932     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
933     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
934     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
935 
936     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
937     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
938     gSrcInfo[MAIN_WINDOW].bFBL = bEnable;
939     _XC_ENTRY(pInstance);
940     MDrv_SC_set_fbl(pInstance, bEnable);
941     _XC_RETURN(pInstance);
942     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
943 }
944 
MApi_XC_EnableFrameBufferLess(MS_BOOL bEnable)945 void MApi_XC_EnableFrameBufferLess(MS_BOOL bEnable)
946 {
947     if (pu32XCInst == NULL)
948     {
949         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
950         return;
951     }
952 
953     stXC_SET_FRAMEBUFFERLESS XCArgs;
954     XCArgs.bEnable = bEnable;
955 
956     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_FRAMEBUFFERLESS, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
957     {
958         printf("Obtain XC engine fail\n");
959         return;
960     }
961     else
962     {
963         return;
964     }
965 }
966 
967 //-------------------------------------------------------------------------------------------------
968 /// Query whether current XC is framebufferless or not
969 /// @return @ref MS_BOOL
970 //-------------------------------------------------------------------------------------------------
MDrv_XC_IsCurrentFrameBufferLessMode(void * pInstance)971 MS_BOOL MDrv_XC_IsCurrentFrameBufferLessMode(void *pInstance)
972 {
973     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
974     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
975     //gSrcInfo[MAIN_WINDOW].bFBL = MDrv_SC_get_fbl();
976     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
977     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
978 #ifdef UFO_XC_FB_LEVEL
979     if(gSrcInfo[MAIN_WINDOW].eFBLevel == E_XC_FB_LEVEL_FBL)
980         return TRUE;
981     else
982         return FALSE;
983 #else
984     return gSrcInfo[MAIN_WINDOW].bFBL;
985 #endif
986 }
987 
MApi_XC_IsCurrentFrameBufferLessMode_U2(void * pInstance)988 MS_BOOL MApi_XC_IsCurrentFrameBufferLessMode_U2(void* pInstance)
989 {
990     MS_BOOL bReturn = FALSE;
991     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
992     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
993     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
994     bReturn = MDrv_XC_IsCurrentFrameBufferLessMode(pInstance);
995     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
996     return bReturn;
997 }
998 
MApi_XC_IsCurrentFrameBufferLessMode(void)999 MS_BOOL MApi_XC_IsCurrentFrameBufferLessMode(void)
1000 {
1001     if (pu32XCInst == NULL)
1002     {
1003         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1004         return FALSE;
1005     }
1006 
1007     stXC_CHECK_FRAMEBUFFERLESS XCArgs;
1008     XCArgs.bReturnValue = FALSE;
1009 
1010     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_CHECK_FRAMEBUFFERLESS, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1011     {
1012         printf("Obtain XC engine fail\n");
1013         return FALSE;
1014     }
1015     else
1016     {
1017         return XCArgs.bReturnValue;
1018     }
1019 }
1020 
1021 //-------------------------------------------------------------------------------------------------
1022 /// This function will enable/diable request framebufferless mode
1023 /// @param  bEnable      \b IN: TRUE: enable, FALSE: otherwise
1024 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableRequest_FrameBufferLess_U2(void * pInstance,MS_BOOL bEnable)1025 void MApi_XC_EnableRequest_FrameBufferLess_U2(void* pInstance, MS_BOOL bEnable)
1026 {
1027     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1028     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1029     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1030     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1031     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1032 
1033     if(Hal_SC_Set_RequestFBL_Mode(pInstance, bEnable))
1034     {
1035         gSrcInfo[MAIN_WINDOW].bR_FBL = bEnable;
1036 
1037         // MVOP handshake. Default mvop always enable hsk mode.
1038 #if (HW_DESIGN_4K2K_VER != 7) //Kano and BOX chips HSK can not set here
1039         MVOP_Handle stMvopHd = { E_MVOP_MODULE_MAIN };
1040         MDrv_MVOP_SetCommand(&stMvopHd, E_MVOP_CMD_SET_HANDSHAKE_MODE, &bEnable);
1041 #endif
1042         // Mirror Mode
1043         if (gSrcInfo[MAIN_WINDOW].enInputSourceType == INPUT_SOURCE_DTV)
1044         {
1045             if (TRUE == bEnable)
1046             {
1047                 MVOP_DrvMirror enMvopMirror = E_VOPMIRROR_NONE;
1048                 if (IsVMirrorMode(MAIN_WINDOW) && IsHMirrorMode(MAIN_WINDOW))
1049                     enMvopMirror = E_VOPMIRROR_HVBOTH;
1050                 else if (IsVMirrorMode(MAIN_WINDOW))
1051                     enMvopMirror = E_VOPMIRROR_VERTICAL;
1052                 else if (IsHMirrorMode(MAIN_WINDOW))
1053                     enMvopMirror = E_VOPMIRROR_HORIZONTALL;
1054 
1055                 if (enMvopMirror != E_VOPMIRROR_NONE)
1056                 {
1057                     MDrv_MVOP_SetVOPMirrorMode(TRUE, enMvopMirror);
1058                     MDrv_XC_EnableMirrorModeEx(pInstance, MIRROR_NORMAL, MAIN_WINDOW);
1059                 }
1060             }
1061             else
1062             {
1063                 MVOP_Handle stHdl = { E_MVOP_MODULE_MAIN };
1064                 MVOP_DrvMirror enMvopMirror = E_VOPMIRROR_NONE;
1065                 MDrv_MVOP_GetCommand(&stHdl, E_MVOP_CMD_GET_MIRROR_MODE, &enMvopMirror, sizeof(enMvopMirror));
1066                 MirrorMode_t enXcMirror = MIRROR_NORMAL;
1067                 if (enMvopMirror == E_VOPMIRROR_HVBOTH)
1068                     enXcMirror = MIRROR_HV;
1069                 else if (enMvopMirror == E_VOPMIRROR_VERTICAL)
1070                     enXcMirror = MIRROR_V_ONLY;
1071                 else if (enMvopMirror == E_VOPMIRROR_HORIZONTALL)
1072                     enXcMirror = MIRROR_H_ONLY;
1073 
1074                 if(enXcMirror != MIRROR_NORMAL)
1075                 {
1076                     MDrv_MVOP_SetVOPMirrorMode(FALSE, enMvopMirror);
1077                     MDrv_XC_EnableMirrorModeEx(pInstance, enXcMirror, MAIN_WINDOW);
1078                 }
1079             }
1080         }
1081     }
1082     else
1083         printf("Not support\n");
1084     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1085 }
1086 
MApi_XC_EnableRequest_FrameBufferLess(MS_BOOL bEnable)1087 void MApi_XC_EnableRequest_FrameBufferLess(MS_BOOL bEnable)
1088 {
1089     if (pu32XCInst == NULL)
1090     {
1091         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1092         return;
1093     }
1094 
1095     stXC_SET_REQUEST_FRAMEBUFFERLESS XCArgs;
1096     XCArgs.bEnable = bEnable;
1097 
1098     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_REQUEST_FRAMEBUFFERLESS, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1099     {
1100         printf("Obtain XC engine fail\n");
1101         return;
1102     }
1103     else
1104     {
1105         return;
1106     }
1107 }
1108 
1109 //-------------------------------------------------------------------------------------------------
1110 /// Query whether current XC is request framebufferless or not
1111 /// the return value is not reliable before load MADi mode
1112 /// @return @ref MS_BOOL
1113 //-------------------------------------------------------------------------------------------------
MDrv_XC_IsCurrentRequest_FrameBufferLessMode(void * pInstance)1114 MS_BOOL MDrv_XC_IsCurrentRequest_FrameBufferLessMode(void* pInstance)
1115 {
1116     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1117     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1118     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1119     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1120 #ifdef UFO_XC_FB_LEVEL
1121     if(gSrcInfo[MAIN_WINDOW].eFBLevel == E_XC_FB_LEVEL_RFBL_DI)
1122         return TRUE;
1123     else
1124         return FALSE;
1125 #else
1126     return gSrcInfo[MAIN_WINDOW].bR_FBL;
1127 #endif
1128 }
1129 
MApi_XC_IsCurrentRequest_FrameBufferLessMode_U2(void * pInstance)1130 MS_BOOL MApi_XC_IsCurrentRequest_FrameBufferLessMode_U2(void* pInstance)
1131 {
1132     MS_BOOL bReturn = FALSE;
1133     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1134     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1135     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1136     bReturn = MDrv_XC_IsCurrentRequest_FrameBufferLessMode(pInstance);
1137     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1138     return bReturn;
1139 }
1140 
MApi_XC_IsCurrentRequest_FrameBufferLessMode(void)1141 MS_BOOL MApi_XC_IsCurrentRequest_FrameBufferLessMode(void)
1142 {
1143     if (pu32XCInst == NULL)
1144     {
1145         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1146         return FALSE;
1147     }
1148 
1149     stXC_CHECK_REQUEST_FRAMEBUFFERLESS XCArgs;
1150     XCArgs.bReturnValue = FALSE;
1151 
1152     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_CHECK_REQUEST_FRAMEBUFFERLESS, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1153     {
1154         printf("Obtain XC engine fail\n");
1155         return FALSE;
1156     }
1157     else
1158     {
1159         return XCArgs.bReturnValue;
1160     }
1161 }
1162 
1163 //Obsolte function, do not use it any more
mvideo_sc_get_output_vfreq_U2(void * pInstance)1164 MS_U16 mvideo_sc_get_output_vfreq_U2(void* pInstance)
1165 {
1166     MS_U16 u16OutputVFreq = 0;
1167     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1168     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1169     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1170     u16OutputVFreq = MDrv_SC_GetOutputVFreqX100(pInstance)/10;
1171     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1172     return u16OutputVFreq;
1173 }
1174 
1175 #ifdef UFO_XC_FB_LEVEL
1176 //-------------------------------------------------------------------------------------------------
1177 /// This function will decide using FB level
1178 /// @param  bEnable      \b IN: TRUE: enable, FALSE: otherwise
1179 //-------------------------------------------------------------------------------------------------
MApi_XC_Set_FB_Level_U2(void * pInstance,E_XC_FB_LEVEL eFBLevel,SCALER_WIN eWindow)1180 E_APIXC_ReturnValue MApi_XC_Set_FB_Level_U2(void* pInstance, E_XC_FB_LEVEL eFBLevel, SCALER_WIN eWindow)
1181 {
1182     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1183     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1184     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1185     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1186     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1187     _XC_ENTRY(pInstance);
1188 
1189     if(eWindow == MAIN_WINDOW)
1190     {
1191         gSrcInfo[MAIN_WINDOW].eFBLevel = eFBLevel;
1192     }
1193     else
1194     {
1195         printf("Not support Sub Window now !!!\n");
1196     }
1197 
1198     printf(" [eWindow] = %d , FB LEVEL = %d!!!!!\n", eWindow, eFBLevel);
1199     _XC_RETURN(pInstance);
1200     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1201     return E_APIXC_RET_OK;
1202 }
1203 
MApi_XC_Set_FB_Level(E_XC_FB_LEVEL eFBLevel,SCALER_WIN eWindow)1204 E_APIXC_ReturnValue  MApi_XC_Set_FB_Level(E_XC_FB_LEVEL eFBLevel, SCALER_WIN eWindow)
1205 {
1206     if (pu32XCInst == NULL)
1207     {
1208         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1209         return E_APIXC_RET_FAIL;
1210     }
1211 
1212     stXC_SET_FB_LEVEL XCArgs;
1213     XCArgs.eFBLevel = eFBLevel;
1214     XCArgs.eWindow = eWindow;
1215     XCArgs.eReturnValue = E_APIXC_RET_FAIL;
1216 
1217     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_FB_LEVEL, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1218     {
1219         printf("Obtain XC engine fail\n");
1220         return E_APIXC_RET_FAIL;
1221     }
1222     else
1223     {
1224         return XCArgs.eReturnValue;;
1225     }
1226 }
1227 
1228 //-------------------------------------------------------------------------------------------------
1229 /// This function will get current FB level
1230 /// @param  bEnable      \b IN: TRUE: enable, FALSE: otherwise
1231 //-------------------------------------------------------------------------------------------------
MApi_XC_Get_FB_Level_U2(void * pInstance,SCALER_WIN eWindow)1232 E_XC_FB_LEVEL MApi_XC_Get_FB_Level_U2(void* pInstance, SCALER_WIN eWindow)
1233 {
1234     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1235     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1236     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1237     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1238     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1239     E_XC_FB_LEVEL eTmpFBLevel = E_XC_FB_LEVEL_FB;
1240     _XC_ENTRY(pInstance);
1241 
1242     if(eWindow == MAIN_WINDOW)
1243     {
1244         eTmpFBLevel = gSrcInfo[MAIN_WINDOW].eFBLevel;
1245     }
1246     else
1247     {
1248         printf("Not support Sub Window now , default using FB!!!\n");
1249         eTmpFBLevel = E_XC_FB_LEVEL_FB;
1250     }
1251 
1252     _XC_RETURN(pInstance);
1253     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1254 
1255     XC_LOG_TRACE(XC_DBGLEVEL_SETWINDOW, " [eWindow] = %d , FB LEVEL = %d!!!!!\n", eWindow, eTmpFBLevel);
1256     return eTmpFBLevel;
1257 }
1258 
MApi_XC_Get_FB_Level(SCALER_WIN eWindow)1259 E_XC_FB_LEVEL SYMBOL_WEAK MApi_XC_Get_FB_Level(SCALER_WIN eWindow)
1260 {
1261     if (pu32XCInst == NULL)
1262     {
1263         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1264         return E_XC_FB_LEVEL_NUM;
1265     }
1266 
1267     stXC_GET_FB_LEVEL XCArgs;
1268     XCArgs.eWindow = eWindow;
1269     XCArgs.eReturnValue = E_XC_FB_LEVEL_FB;
1270 
1271     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_GET_FB_LEVEL, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1272     {
1273         printf("Obtain XC engine fail\n");
1274         return E_XC_FB_LEVEL_NUM;
1275     }
1276     else
1277     {
1278         return XCArgs.eReturnValue;
1279     }
1280 }
1281 #endif
1282 
mvideo_sc_get_output_vfreq(void)1283 MS_U16 mvideo_sc_get_output_vfreq(void)
1284 {
1285     if (pu32XCInst == NULL)
1286     {
1287         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1288         return 0;
1289     }
1290 
1291     stXC_GET_OUTPUT_VFREQ XCArgs;
1292     XCArgs.u16ReturnValue = 0;
1293 
1294     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_GET_OUTPUT_VFREQ, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1295     {
1296         printf("Obtain XC engine fail\n");
1297         return 0;
1298     }
1299     else
1300     {
1301         return XCArgs.u16ReturnValue;
1302     }
1303 }
1304 
1305 //-------------------------------------------------------------------------------------------------
1306 /// check whether specific window is memory format 422
1307 /// @param  eWindow                \b IN: which window we are going to query
1308 /// @return @ref MS_BOOL
1309 //-------------------------------------------------------------------------------------------------
MApi_XC_IsMemoryFormat422_U2(void * pInstance,SCALER_WIN eWindow)1310 MS_BOOL MApi_XC_IsMemoryFormat422_U2( void* pInstance, SCALER_WIN eWindow )
1311 {
1312     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1313     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1314     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1315 
1316     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1317     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1318     MS_BOOL bReturn = gSrcInfo[eWindow].bMemFmt422;
1319     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1320     return bReturn;
1321 }
1322 
MApi_XC_IsMemoryFormat422(SCALER_WIN eWindow)1323 MS_BOOL MApi_XC_IsMemoryFormat422( SCALER_WIN eWindow )
1324 {
1325     if (pu32XCInst == NULL)
1326     {
1327         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1328         return FALSE;
1329     }
1330 
1331     stXC_CHECK_MEMORYFORMAT422 XCArgs;
1332     XCArgs.eWindow = eWindow;
1333     XCArgs.bReturnValue = FALSE;
1334 
1335     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_CHECK_MEMORYFORMAT422, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1336     {
1337         printf("Obtain XC engine fail\n");
1338         return FALSE;
1339     }
1340     else
1341     {
1342         return XCArgs.bReturnValue;
1343     }
1344 }
1345 
1346 //-------------------------------------------------------------------------------------------------
1347 /// Set XC mirror hv mode for main window
1348 /// @param  bEnable                \b IN: enable or disable XC mirror mode
1349 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableMirrorMode_U2(void * pInstance,MS_BOOL bEnable)1350 void MApi_XC_EnableMirrorMode_U2( void* pInstance, MS_BOOL bEnable )
1351 {
1352     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1353     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1354     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1355     _XC_ENTRY(pInstance);
1356     if (bEnable)
1357     {
1358         MDrv_XC_EnableMirrorModeEx(pInstance, MIRROR_HV, MAIN_WINDOW);
1359     }
1360     else
1361     {
1362         MDrv_XC_EnableMirrorModeEx(pInstance, MIRROR_NORMAL, MAIN_WINDOW);
1363     }
1364     _XC_RETURN(pInstance);
1365     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1366 }
1367 
MApi_XC_EnableMirrorMode(MS_BOOL bEnable)1368 void MApi_XC_EnableMirrorMode( MS_BOOL bEnable )
1369 {
1370     if (pu32XCInst == NULL)
1371     {
1372         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1373         return;
1374     }
1375 
1376     stXC_SET_MIRROR_MODE_ENABLE XCArgs;
1377     XCArgs.bEnable = bEnable;
1378 
1379     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_MIRROR_MODE_ENABLE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1380     {
1381         printf("Obtain XC engine fail\n");
1382         return;
1383     }
1384     else
1385     {
1386         return;
1387     }
1388 }
1389 
1390 //-------------------------------------------------------------------------------------------------
1391 /// Get XC mirror mode for main window
1392 /// @return @ref MirrorMode_t
1393 //-------------------------------------------------------------------------------------------------
MApi_XC_GetMirrorModeType(void)1394 MirrorMode_t MApi_XC_GetMirrorModeType( void )
1395 {
1396     //This API not use anymore
1397     //instance use XC0
1398     return MDrv_XC_GetMirrorModeTypeEx(pu32XCInst, MAIN_WINDOW);
1399 }
1400 
1401 //-------------------------------------------------------------------------------------------------
1402 /// Set XC mirror mode for main and sub window
1403 /// @param  bEnable                \b IN: enable or disable XC mirror mode
1404 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableMirrorMode2_U2(void * pInstance,MirrorMode_t eMirrorMode)1405 void MApi_XC_EnableMirrorMode2_U2( void* pInstance, MirrorMode_t eMirrorMode )
1406 {
1407     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1408     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1409     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1410     _XC_ENTRY(pInstance);
1411     MDrv_XC_EnableMirrorModeEx(pInstance, eMirrorMode, MAIN_WINDOW);
1412     MDrv_XC_EnableMirrorModeEx(pInstance, eMirrorMode, SUB_WINDOW);
1413     _XC_RETURN(pInstance);
1414     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1415 }
1416 
MApi_XC_EnableMirrorMode2(MirrorMode_t eMirrorMode)1417 void MApi_XC_EnableMirrorMode2( MirrorMode_t eMirrorMode )
1418 {
1419     if (pu32XCInst == NULL)
1420     {
1421         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1422         return;
1423     }
1424 
1425     stXC_SET_MIRROR_MODE2_ENABLE XCArgs;
1426     XCArgs.eMirrorMode = eMirrorMode;
1427 
1428     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_MIRROR_MODE2_ENABLE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1429     {
1430         printf("Obtain XC engine fail\n");
1431         return;
1432     }
1433     else
1434     {
1435         return;
1436     }
1437 }
1438 
1439 //-------------------------------------------------------------------------------------------------
1440 /// Set XC mirror mode for main or sub window
1441 /// @param  eMirrorMode                 \b IN: enable or disable XC mirror mode
1442 /// @param  eWindow                     \b IN: main or sub window
1443 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableMirrorModeEx_U2(void * pInstance,MirrorMode_t eMirrorMode,SCALER_WIN eWindow)1444 MS_BOOL MApi_XC_EnableMirrorModeEx_U2( void* pInstance, MirrorMode_t eMirrorMode,  SCALER_WIN eWindow)
1445 {
1446     MS_BOOL bReturn = FALSE;
1447     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1448     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1449     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1450     _XC_ENTRY(pInstance);
1451     bReturn = MDrv_XC_EnableMirrorModeEx(pInstance, eMirrorMode, eWindow);
1452     _XC_RETURN(pInstance);
1453     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1454     return bReturn;
1455 
1456 }
1457 
MApi_XC_EnableMirrorModeEx(MirrorMode_t eMirrorMode,SCALER_WIN eWindow)1458 MS_BOOL MApi_XC_EnableMirrorModeEx( MirrorMode_t eMirrorMode,  SCALER_WIN eWindow)
1459 {
1460     if (pu32XCInst == NULL)
1461     {
1462         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1463         return FALSE;
1464     }
1465 
1466     stXC_SET_MIRRORMODE_EX XCArgs;
1467     XCArgs.eMirrorMode = eMirrorMode;
1468     XCArgs.eWindow = eWindow;
1469     XCArgs.bReturnValue = FALSE;
1470 
1471     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_MIRRORMODE_EX, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1472     {
1473         printf("Obtain XC engine fail\n");
1474         return FALSE;
1475     }
1476     else
1477     {
1478         return XCArgs.bReturnValue;
1479     }
1480 }
1481 //-------------------------------------------------------------------------------------------------
1482 /// Get XC mirror mode for main or sub window
1483 /// @param  eWindow                \b IN: main or sub window
1484 /// @return @ref MirrorMode_t
1485 //-------------------------------------------------------------------------------------------------
MDrv_XC_GetMirrorModeTypeEx(void * pInstance,SCALER_WIN eWindow)1486 MirrorMode_t MDrv_XC_GetMirrorModeTypeEx(void *pInstance, SCALER_WIN eWindow)
1487 {
1488     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1489     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1490     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1491 
1492     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1493     MirrorMode_t eReturn = gSrcInfo[eWindow].Status2.eMirrorMode;
1494     return eReturn;
1495 }
1496 
MApi_XC_GetMirrorModeTypeEx_U2(void * pInstance,SCALER_WIN eWindow)1497 MirrorMode_t MApi_XC_GetMirrorModeTypeEx_U2(void* pInstance, SCALER_WIN eWindow)
1498 {
1499     MirrorMode_t eMirrorMode = MIRROR_MAX;
1500     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1501     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1502     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1503     eMirrorMode = MDrv_XC_GetMirrorModeTypeEx(pInstance, eWindow);
1504     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1505     return eMirrorMode;
1506 }
1507 
MApi_XC_GetMirrorModeTypeEx(SCALER_WIN eWindow)1508 MirrorMode_t MApi_XC_GetMirrorModeTypeEx(SCALER_WIN eWindow)
1509 {
1510     if (pu32XCInst == NULL)
1511     {
1512         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1513         return MIRROR_MAX;
1514     }
1515 
1516     stXC_GET_MIRRORMODE_TYPEEX XCArgs;
1517     XCArgs.eWindow = eWindow;
1518     XCArgs.eReturnValue = MIRROR_MAX;
1519 
1520     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_GET_MIRRORMODE_TYPEEX, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1521     {
1522         printf("Obtain XC engine fail\n");
1523         return MIRROR_MAX;
1524     }
1525     else
1526     {
1527         return XCArgs.eReturnValue;
1528     }
1529 }
1530 
1531 #if SeamlessZapping_DBG // for SeamLess Zapping Debug
_MDrv_XC_GetXCReg_ByISR(SC_INT_SRC eIntNum,void * pParam)1532 void _MDrv_XC_GetXCReg_ByISR(SC_INT_SRC eIntNum, void * pParam)
1533 {
1534 /// Add the reg info for debug
1535     eIntNum = eIntNum;
1536     pParam = pParam;
1537     printf("@@#@@[%s][%d]BK1F_79=%x\n",__FUNCTION__, __LINE__, (MS_U16)(SC_R2BYTEMSK(REG_SC_BK1F_79_L, 0xFFFF)));
1538     printf("@@#@@[%s][%d]BK12_3A=%x\n",__FUNCTION__, __LINE__, (SC_R2BYTEMSK(REG_SC_BK12_3A_L, 0xFF)));
1539     printf("@@#@@[%s][%d]BK12_0E=%x, BK12_0F=%x\n",
1540         __FUNCTION__, __LINE__, (MS_U16)(SC_R2BYTEMSK(REG_SC_BK12_0E_L, 0x7FF)),(MS_U16)(SC_R2BYTEMSK(REG_SC_BK12_0F_L, 0x7FF)));
1541     printf("@@#@@[%s][%d]BK12_16=%x, BK12_17=%x\n",
1542         __FUNCTION__, __LINE__, (MS_U16)(SC_R2BYTEMSK(REG_SC_BK12_16_L, 0x7FF)),(MS_U16)(SC_R2BYTEMSK(REG_SC_BK12_17_L, 0x7FF)));
1543     printf("@@#@@[%s][%d]SC3_2A=%x\n",
1544         __FUNCTION__, __LINE__, (MS_U16)(R2BYTEMSK(L_BK_LPLL(0x2A), 0x3FF)));
1545 
1546 }
1547 #endif
1548 #define LPLL_TIMEOUT  300  // ms
1549 //-------------------------------------------------------------------------------------------------
1550 /// let display video freeze by disable scaler buffer write
1551 /// @param  bEnable        \b IN: TRUE: enable, FALSE: otherwise
1552 /// @param  eWindow        \b IN: which window we are going to set
1553 //-------------------------------------------------------------------------------------------------
MDrv_XC_FreezeImg(void * pInstance,MS_BOOL bEnable,SCALER_WIN eWindow)1554 void MDrv_XC_FreezeImg(void *pInstance, MS_BOOL bEnable, SCALER_WIN eWindow)
1555 {
1556 
1557     PQ_WIN ePQWin;
1558 #ifndef K3_U2
1559 #if SUPPORT_SEAMLESS_ZAPPING
1560     MS_U32 u32Delayms = 0;
1561 #endif
1562 #endif
1563     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1564     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1565     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
1566     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
1567 
1568 #ifdef UFO_XC_FB_LEVEL
1569     if((gSrcInfo[eWindow].eFBLevel == E_XC_FB_LEVEL_FBL)  || (gSrcInfo[eWindow].eFBLevel == E_XC_FB_LEVEL_RFBL_DI))
1570 #else
1571     if(gSrcInfo[eWindow].bFBL || gSrcInfo[eWindow].bR_FBL)
1572 #endif
1573     {
1574         return; //not support freeze for FBL mode
1575     }
1576     ePQWin = (eWindow == MAIN_WINDOW) ? PQ_MAIN_WINDOW : PQ_SUB_WINDOW;
1577 
1578     if(bEnable)
1579     {
1580         _XC_ENTRY(pInstance);
1581 
1582         if(MDrv_XC_MLoad_GetStatus(pInstance) == E_MLOAD_ENABLED)
1583             Hal_SC_set_freezeimg_burst(pInstance, bEnable, eWindow);
1584         else
1585             Hal_SC_set_freezeimg(pInstance, bEnable, eWindow);
1586         _XC_RETURN(pInstance);
1587 
1588         //warning: This function is already protected with mutex
1589 #ifdef ENABLE_TV_SC2_PQ
1590         if (psXCInstPri->u32DeviceID == PQ_XC_ID_0)
1591 #endif
1592         {
1593             if(s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode)
1594             {
1595 #if PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB
1596                 s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode((psXCInstPri->u32DeviceID == 1)?PQ_SUB_WINDOW:PQ_MAIN_WINDOW, bEnable);
1597 #else
1598                 s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode(ePQWin, bEnable);
1599 #endif
1600             }
1601         }
1602 #ifdef ENABLE_TV_SC2_PQ
1603         else if (psXCInstPri->u32DeviceID == PQ_XC_ID_1)
1604         {
1605             if(s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode_ex)
1606                 s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode_ex(psXCInstPri->u32DeviceID, ePQWin, bEnable);
1607         }
1608 #endif
1609         //
1610 
1611 #if SeamlessZapping_DBG
1612         printf("@@#@@ Freeze\n");
1613         if(FALSE == MDrv_XC_InterruptIsAttached(pInstance, SC_INT_VSINT, _MDrv_XC_GetXCReg_ByISR, NULL))
1614         {
1615             printf("###ISR ###\n");
1616             _MDrv_XC_GetXCReg_ByISR(0,NULL);
1617             MDrv_XC_InterruptAttachWithoutMutex(pInstance, SC_INT_VSINT, _MDrv_XC_GetXCReg_ByISR, NULL);
1618         }
1619 #endif
1620     }
1621     else
1622     {
1623         //warning: This function is already protected with mutex
1624 #ifdef ENABLE_TV_SC2_PQ
1625         if (psXCInstPri->u32DeviceID == PQ_XC_ID_0)
1626 #endif
1627         {
1628             if(s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode)
1629             {
1630 #if PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB
1631                 s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode((psXCInstPri->u32DeviceID == 1)?PQ_SUB_WINDOW:PQ_MAIN_WINDOW, bEnable);
1632 #else
1633                 s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode(ePQWin, bEnable);
1634 #endif
1635             }
1636         }
1637 #ifdef ENABLE_TV_SC2_PQ
1638         else if (psXCInstPri->u32DeviceID == PQ_XC_ID_1)
1639         {
1640             if(s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode_ex)
1641                 s_PQ_Function_Info[psXCInstPri->u32DeviceID].pq_disable_filmmode_ex(psXCInstPri->u32DeviceID, ePQWin, bEnable);
1642         }
1643 #endif
1644         //
1645 #ifndef K3_U2
1646 #if SUPPORT_SEAMLESS_ZAPPING
1647         //// for SLZ debug, wait lpll lock, for the stable OP Vsync
1648         if(Hal_SC_GetSeamlessZappingStatus(pInstance, eWindow))
1649         {
1650             //printf("@@#@@ u32Delayms = %u\n", LPLL_TIMEOUT);
1651             while(((R2BYTEMSK(L_BK_LPLL(0x2A), 0x3FF))!=0x1F4)&&(u32Delayms < LPLL_TIMEOUT))
1652             {
1653                 MsOS_DelayTask(1);
1654                 u32Delayms++;
1655             }
1656         }
1657         /// end
1658 #endif
1659 #endif
1660 
1661         _XC_ENTRY(pInstance);
1662         if(MDrv_XC_MLoad_GetStatus(pInstance) == E_MLOAD_ENABLED)
1663             Hal_SC_set_freezeimg_burst(pInstance, bEnable, eWindow);
1664         else
1665             Hal_SC_set_freezeimg(pInstance, bEnable, eWindow);
1666         _XC_RETURN(pInstance);
1667     }
1668 
1669     XC_LOG_TRACE(XC_DBGLEVEL_SEAMLESSZAP, "[%s][%06d]SLZ[%s] Freeze = %x\n",
1670         __FUNCTION__, __LINE__, eWindow?"SUB":"MAIN", bEnable);
1671 
1672 
1673 }
1674 
MApi_XC_FreezeImg_U2(void * pInstance,MS_BOOL bEnable,SCALER_WIN eWindow)1675 void MApi_XC_FreezeImg_U2(void* pInstance, MS_BOOL bEnable, SCALER_WIN eWindow)
1676 {
1677     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1678     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1679     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1680     MDrv_XC_FreezeImg(pInstance, bEnable,eWindow);
1681     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1682 }
1683 
MApi_XC_FreezeImg(MS_BOOL bEnable,SCALER_WIN eWindow)1684 void MApi_XC_FreezeImg(MS_BOOL bEnable, SCALER_WIN eWindow)
1685 {
1686     if (pu32XCInst == NULL)
1687     {
1688         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1689         return;
1690     }
1691 
1692     stXC_SET_FREEZEIMG XCArgs;
1693     XCArgs.bEnable = bEnable;
1694     XCArgs.eWindow = eWindow;
1695 
1696     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_FREEZEIMG, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1697     {
1698         printf("Obtain XC engine fail\n");
1699         return;
1700     }
1701     else
1702     {
1703         return;
1704     }
1705 }
1706 
1707 //-------------------------------------------------------------------------------------------------
1708 /// Query whether the specific window is freeze image status or not
1709 /// @param  eWindow                \b IN: which window we are going to query
1710 /// @return @ref MS_BOOL
1711 //-------------------------------------------------------------------------------------------------
MApi_XC_IsFreezeImg_U2(void * pInstance,SCALER_WIN eWindow)1712 MS_BOOL MApi_XC_IsFreezeImg_U2(void* pInstance, SCALER_WIN eWindow)
1713 {
1714     MS_BOOL bXCFreezeImg;
1715     _XC_ENTRY(pInstance);
1716 
1717     bXCFreezeImg = Hal_SC_get_freezeimg(pInstance, eWindow);
1718     //return Hal_SC_get_freezeimg(eWindow);
1719     _XC_RETURN(pInstance);
1720     return bXCFreezeImg;
1721 }
1722 
MApi_XC_IsFreezeImg(SCALER_WIN eWindow)1723 MS_BOOL MApi_XC_IsFreezeImg(SCALER_WIN eWindow)
1724 {
1725     if (pu32XCInst == NULL)
1726     {
1727         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1728         return FALSE;
1729     }
1730 
1731     stXC_CHECK_FREEZEIMG XCArgs;
1732     XCArgs.eWindow = eWindow;
1733     XCArgs.bReturnValue = FALSE;
1734 
1735     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_CHECK_FREEZEIMG, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1736     {
1737         printf("Obtain XC engine fail\n");
1738         return FALSE;
1739     }
1740     else
1741     {
1742         return XCArgs.bReturnValue;
1743     }
1744 }
1745 
MDrv_XC_GetInfo(void * pInstance,XC_ApiInfo * pXC_Info)1746 void MDrv_XC_GetInfo(void *pInstance, XC_ApiInfo *pXC_Info)
1747 {
1748     UNUSED(pInstance);
1749 
1750     pXC_Info->u8MaxWindowNum = MAX_WINDOW_NUM;
1751     pXC_Info->u8NumOfDigitalDDCRam = NUM_OF_DIGITAL_DDCRAM;
1752     pXC_Info->u8MaxFrameNumInMem = MAX_FRAME_NUM_IN_MEM;
1753     pXC_Info->u8MaxFieldNumInMem = MAX_FIELD_NUM_IN_MEM;
1754 }
1755 
1756 #ifdef MS_DEBUG
MDrv_XC_ShowTrace_Header(MS_U16 u16LogSwitch)1757 void MDrv_XC_ShowTrace_Header(MS_U16 u16LogSwitch)
1758 {
1759     printf("[XC,");
1760     if (u16LogSwitch & XC_DBGLEVEL_SETTIMING)
1761         printf("LPLL]");
1762     else if (u16LogSwitch & XC_DBGLEVEL_SETWINDOW)
1763         printf("SetWindow]");
1764     else if (u16LogSwitch & XC_DBGLEVEL_MUX)
1765         printf("Mux]");
1766     else if (u16LogSwitch & XC_DGBLEVEL_CROPCALC)
1767         printf("Cropping]");
1768     else if (u16LogSwitch & XC_DBGLEVEL_AUTOGEOMETRY)
1769         printf("AUTOGEO]");
1770     else if (u16LogSwitch & XC_DBGLEVEL_SETTIMING_ISR)
1771         printf("LPLL_ISR]");
1772     else if (u16LogSwitch & XC_DBGLEVEL_FUNCTION_TRACE)
1773         printf("FUNCTION_TRACE]");
1774     else if (u16LogSwitch & XC_DBGLEVEL_PARAMETER_TRACE)
1775         printf("PARAMETER_TRACE]");
1776     else
1777         printf("Unknown]");
1778 }
1779 #endif
1780 
1781 //-------------------------------------------------------------------------------------------------
1782 /// General Read Byte Function
1783 /// @param  u32Reg                \b IN: which value shouldn't contain xc sub bank and address
1784 /// @return @ref MS_U8
1785 //-------------------------------------------------------------------------------------------------
MApi_XC_ReadByte_U2(void * pInstance,MS_U32 u32Reg)1786 MS_U8   MApi_XC_ReadByte_U2(void* pInstance, MS_U32 u32Reg)
1787 {return (MS_U8)MDrv_ReadByte( u32Reg );}
1788 
MApi_XC_ReadByte(MS_U32 u32Reg)1789 MS_U8   MApi_XC_ReadByte(MS_U32 u32Reg)
1790 {
1791     if (pu32XCInst == NULL)
1792     {
1793         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1794         {
1795             printf("UtopiaOpen XC failed\n");
1796             return E_APIXC_RET_FAIL;
1797         }
1798     }
1799 
1800     stXC_READBYTE XCArgs;
1801     XCArgs.u32Reg = u32Reg;
1802     XCArgs.u8ReturnValue = 0;
1803 
1804     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_READBYTE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1805     {
1806         printf("Obtain XC engine fail\n");
1807         return 0;
1808     }
1809     else
1810     {
1811         return XCArgs.u8ReturnValue;
1812     }
1813 }
1814 
1815 //-------------------------------------------------------------------------------------------------
1816 /// General Write Byte Function
1817 /// @param  u32Reg                \b IN: which value shouldn't contain xc sub bank and address
1818 /// @param  u8Val                \b IN: setting value
1819 //-------------------------------------------------------------------------------------------------
MApi_XC_WriteByte_U2(void * pInstance,MS_U32 u32Reg,MS_U8 u8Val)1820 void   MApi_XC_WriteByte_U2(void* pInstance, MS_U32 u32Reg, MS_U8 u8Val)
1821 {MDrv_WriteByte( u32Reg, u8Val );}
1822 
MApi_XC_WriteByte(MS_U32 u32Reg,MS_U8 u8Val)1823 void   MApi_XC_WriteByte(MS_U32 u32Reg, MS_U8 u8Val)
1824 {
1825     if (pu32XCInst == NULL)
1826     {
1827         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1828         {
1829             printf("UtopiaOpen XC failed\n");
1830             return;
1831         }
1832     }
1833 
1834     stXC_WRITEBYTE XCArgs;
1835     XCArgs.u32Reg = u32Reg;
1836     XCArgs.u8Val = u8Val;
1837 
1838     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_WRITEBYTE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1839     {
1840         printf("Obtain XC engine fail\n");
1841         return;
1842     }
1843     else
1844     {
1845         return;
1846     }
1847 }
1848 
1849 //-------------------------------------------------------------------------------------------------
1850 /// General 2 Write Byte Function
1851 /// @param  u32Reg                \b IN: which value shouldn't contain xc sub bank and address
1852 /// @param  u16Val                \b IN: setting value
1853 /// @param  u16Msk                \b IN: setting value
1854 //-------------------------------------------------------------------------------------------------
MApi_XC_Write2ByteMask_U2(void * pInstance,MS_U32 u32Reg,MS_U16 u16val,MS_U16 u16Mask)1855 void MApi_XC_Write2ByteMask_U2(void* pInstance, MS_U32 u32Reg, MS_U16 u16val, MS_U16 u16Mask)
1856 {MDrv_Write2ByteMask(u32Reg, u16val, u16Mask);}
1857 
MApi_XC_Write2ByteMask(MS_U32 u32Reg,MS_U16 u16val,MS_U16 u16Mask)1858 void MApi_XC_Write2ByteMask(MS_U32 u32Reg, MS_U16 u16val, MS_U16 u16Mask)
1859 {
1860     if (pu32XCInst == NULL)
1861     {
1862         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1863         {
1864             printf("UtopiaOpen XC failed\n");
1865             return;
1866         }
1867     }
1868 
1869     stXC_WRITE2BYTEMSK XCArgs;
1870     XCArgs.u32Reg = u32Reg;
1871     XCArgs.u16val = u16val;
1872     XCArgs.u16Mask = u16Mask;
1873 
1874     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_WRITE2BYTEMSK, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1875     {
1876         printf("Obtain XC engine fail\n");
1877         return;
1878     }
1879     else
1880     {
1881         return;
1882     }
1883 }
1884 
1885 //-------------------------------------------------------------------------------------------------
1886 /// General Write Byte Mask Function
1887 /// @param  u32Reg                \b IN: which value shouldn't contain xc sub bank and address
1888 /// @param  u8Val                \b IN: setting value
1889 /// @param  u8Msk                \b IN: decide which bit is valied
1890 //-------------------------------------------------------------------------------------------------
MApi_XC_WriteByteMask_U2(void * pInstance,MS_U32 u32Reg,MS_U8 u8Val,MS_U8 u8Msk)1891 void    MApi_XC_WriteByteMask_U2(void* pInstance, MS_U32 u32Reg, MS_U8 u8Val, MS_U8 u8Msk)
1892 {
1893     MDrv_WriteByteMask( u32Reg, u8Val, u8Msk );
1894 }
1895 
MApi_XC_WriteByteMask(MS_U32 u32Reg,MS_U8 u8Val,MS_U8 u8Msk)1896 void    MApi_XC_WriteByteMask(MS_U32 u32Reg, MS_U8 u8Val, MS_U8 u8Msk)
1897 {
1898     if (pu32XCInst == NULL)
1899     {
1900         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1901         {
1902             printf("UtopiaOpen XC failed\n");
1903             return ;
1904         }
1905     }
1906 
1907     stXC_WRITEBYTEMSK XCArgs;
1908     XCArgs.u32Reg = u32Reg;
1909     XCArgs.u8Val = u8Val;
1910     XCArgs.u8Msk = u8Msk;
1911 
1912     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_WRITEBYTEMSK, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1913     {
1914         printf("Obtain XC engine fail\n");
1915         return;
1916     }
1917     else
1918     {
1919         return;
1920     }
1921 }
1922 
1923 //-------------------------------------------------------------------------------------------------
1924 /// Scaler Write 2 Byte Function, and use mutex to protect while switch bank and write address
1925 /// @param  u32Reg                \b IN: which value contain xc sub bank and address
1926 /// @param  u16Val                \b IN: setting value
1927 //-------------------------------------------------------------------------------------------------
MApi_XC_W2BYTE_U2(void * pInstance,MS_U32 u32Reg,MS_U16 u16Val)1928 void    MApi_XC_W2BYTE_U2(void* pInstance, MS_U32 u32Reg, MS_U16 u16Val)
1929 {
1930     MSXC_WR_DBG(printf("W2 BK= %x, REG = %x, Val =%x\n", (MS_U16)((u32Reg&0xFF00)>>8), (MS_U16)(u32Reg&0x00FF), u16Val));
1931     // removed for not need to mutex, just spread function
1932     #if (!ENABLE_REGISTER_SPREAD)
1933     _XC_ENTRY(pInstance);
1934     #endif
1935     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1936     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1937     SC_W2BYTE(psXCInstPri->u32DeviceID,  u32Reg, u16Val);
1938     #if (!ENABLE_REGISTER_SPREAD)
1939     _XC_RETURN(pInstance);
1940     #endif
1941 }
1942 
MApi_XC_W2BYTE(MS_U32 u32Reg,MS_U16 u16Val)1943 void    MApi_XC_W2BYTE(MS_U32 u32Reg, MS_U16 u16Val)
1944 {
1945     if (pu32XCInst == NULL)
1946     {
1947         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1948         {
1949             printf("UtopiaOpen XC failed\n");
1950             return ;
1951         }
1952     }
1953 
1954     stXC_W2BYTE XCArgs;
1955     XCArgs.u32Reg = u32Reg;
1956     XCArgs.u16Val = u16Val;
1957 
1958     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_W2BYTE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
1959     {
1960         printf("Obtain XC engine fail\n");
1961         return;
1962     }
1963     else
1964     {
1965         return;
1966     }
1967 }
1968 
1969 //-------------------------------------------------------------------------------------------------
1970 /// Scaler Read 2 Byte Function, and use mutex to protect while switch bank and write address
1971 /// @param  u32Reg                \b IN: which value contain xc sub bank and address
1972 /// @return @ref MS_U16
1973 //-------------------------------------------------------------------------------------------------
MApi_XC_R2BYTE_U2(void * pInstance,MS_U32 u32Reg)1974 MS_U16  MApi_XC_R2BYTE_U2(void* pInstance, MS_U32 u32Reg)
1975 {
1976     MS_U16 u16tmp;
1977     MSXC_WR_DBG(printf("R2 BK= %x, REG = %x\n", (MS_U16)((u32Reg&0xFF00)>>8), (MS_U16)(u32Reg&0x00FF)));
1978 // removed for not need to mutex, just spread function
1979     #if (!ENABLE_REGISTER_SPREAD)
1980     _XC_ENTRY(pInstance);
1981     #endif
1982     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1983     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1984     u16tmp = (MS_U16)SC_R2BYTE(psXCInstPri->u32DeviceID,  u32Reg );
1985     #if (!ENABLE_REGISTER_SPREAD)
1986     _XC_RETURN(pInstance);
1987     #endif
1988     return u16tmp;
1989 }
1990 
MApi_XC_R2BYTE(MS_U32 u32Reg)1991 MS_U16  MApi_XC_R2BYTE(MS_U32 u32Reg)
1992 {
1993     if (pu32XCInst == NULL)
1994     {
1995         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1996         {
1997             printf("UtopiaOpen XC failed\n");
1998             return E_APIXC_RET_FAIL;
1999         }
2000     }
2001 
2002     stXC_R2BYTE XCArgs;
2003     XCArgs.u32Reg = u32Reg;
2004     XCArgs.u16ReturnValue = 0;
2005 
2006     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_R2BYTE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2007     {
2008         printf("Obtain XC engine fail\n");
2009         return 0;
2010     }
2011     else
2012     {
2013         return XCArgs.u16ReturnValue;
2014     }
2015 }
2016 
2017 //-------------------------------------------------------------------------------------------------
2018 /// Scaler Write 4 Byte Function, and use mutex to protect while switch bank and write address
2019 /// @param  u32Reg                \b IN: which value contain xc sub bank and address
2020 /// @param  u32Val                \b IN: setting value
2021 //-------------------------------------------------------------------------------------------------
MApi_XC_W4BYTE_U2(void * pInstance,MS_U32 u32Reg,MS_U32 u32Val)2022 void    MApi_XC_W4BYTE_U2(void* pInstance, MS_U32 u32Reg, MS_U32 u32Val)
2023 {
2024     MSXC_WR_DBG(printf("W4 BK= %x, REG = %x, Val =%lx\n", (MS_U16)((u32Reg&0xFF00)>>8), (MS_U16)(u32Reg&0x00FF), u32Val));
2025     // removed for not need to mutex, just spread function
2026     #if (!ENABLE_REGISTER_SPREAD)
2027     _XC_ENTRY(pInstance);
2028     #endif
2029     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2030     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2031     SC_W4BYTE(psXCInstPri->u32DeviceID,  u32Reg, u32Val);
2032     #if (!ENABLE_REGISTER_SPREAD)
2033     _XC_RETURN(pInstance);
2034     #endif
2035 }
2036 
MApi_XC_W4BYTE(MS_U32 u32Reg,MS_U32 u32Val)2037 void    MApi_XC_W4BYTE(MS_U32 u32Reg, MS_U32 u32Val)
2038 {
2039     if (pu32XCInst == NULL)
2040     {
2041         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2042         {
2043             printf("UtopiaOpen XC failed\n");
2044             return ;
2045         }
2046     }
2047 
2048     stXC_W4BYTE XCArgs;
2049     XCArgs.u32Reg = u32Reg;
2050     XCArgs.u32Val = u32Val;
2051 
2052     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_W4BYTE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2053     {
2054         printf("Obtain XC engine fail\n");
2055         return;
2056     }
2057     else
2058     {
2059         return;
2060     }
2061 }
2062 
2063 //-------------------------------------------------------------------------------------------------
2064 /// Scaler Read 4 Byte Function, and use mutex to protect while switch bank and write address
2065 /// @param  u32Reg                \b IN: which value contain xc sub bank and address
2066 /// @return @ref MS_U32
2067 //-------------------------------------------------------------------------------------------------
MApi_XC_R4BYTE_U2(void * pInstance,MS_U32 u32Reg)2068 MS_U32  MApi_XC_R4BYTE_U2(void* pInstance, MS_U32 u32Reg)
2069 {
2070     MS_U32 u32tmp;
2071     MSXC_WR_DBG(printf("R4 BK= %x, REG = %x\n", (MS_U16)((u32Reg&0xFF00)>>8), (MS_U16)(u32Reg&0x00FF)));
2072   // removed for not need to mutex, just spread function
2073     #if (!ENABLE_REGISTER_SPREAD)
2074     _XC_ENTRY(pInstance);
2075     #endif
2076     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2077     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2078     u32tmp = (MS_U32)SC_R4BYTE(psXCInstPri->u32DeviceID,  u32Reg );
2079     #if (!ENABLE_REGISTER_SPREAD)
2080     _XC_RETURN(pInstance);
2081     #endif
2082     return u32tmp;
2083 
2084 }
2085 
MApi_XC_R4BYTE(MS_U32 u32Reg)2086 MS_U32  MApi_XC_R4BYTE(MS_U32 u32Reg)
2087 {
2088     if (pu32XCInst == NULL)
2089     {
2090         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2091         {
2092             printf("UtopiaOpen XC failed\n");
2093             return E_APIXC_RET_FAIL;
2094         }
2095     }
2096 
2097     stXC_R4BYTE XCArgs;
2098     XCArgs.u32Reg = u32Reg;
2099     XCArgs.u32ReturnValue = 0;
2100 
2101     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_R4BYTE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2102     {
2103         printf("Obtain XC engine fail\n");
2104         return 0;
2105     }
2106     else
2107     {
2108         return XCArgs.u32ReturnValue;
2109     }
2110 }
2111 
2112 //-------------------------------------------------------------------------------------------------
2113 /// Scaler Read 2 Byte Mask Function, and use mutex to protect while switch bank and write address
2114 /// @param  u32Reg                \b IN: which value contain xc sub bank and address
2115 /// @param  u16mask              \b IN: decide which bit is valied
2116 /// @return @ref MS_U16
2117 //-------------------------------------------------------------------------------------------------
MApi_XC_R2BYTEMSK_U2(void * pInstance,MS_U32 u32Reg,MS_U16 u16mask)2118 MS_U16  MApi_XC_R2BYTEMSK_U2(void* pInstance, MS_U32 u32Reg, MS_U16 u16mask)
2119 {
2120     MS_U16 u16tmp;
2121     //MS_U8  u8OldBank;
2122 
2123     MSXC_WR_DBG(printf("R2M BK= %x, REG = %x\n", (MS_U16)((u32Reg&0xFF00)>>8), (MS_U16)(u32Reg&0x00FF)));
2124     // removed for not need to mutex, just spread function
2125     #if (!ENABLE_REGISTER_SPREAD)
2126     _XC_ENTRY(pInstance);
2127     #endif
2128     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2129     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2130 
2131     //u8OldBank = MDrv_ReadByte(BK_SELECT_00);
2132 
2133     u16tmp = (MS_U16)SC_R2BYTEMSK(psXCInstPri->u32DeviceID,  u32Reg, u16mask);
2134 
2135     //MDrv_WriteByte(BK_SELECT_00, u8OldBank);
2136     #if (!ENABLE_REGISTER_SPREAD)
2137     _XC_RETURN(pInstance);
2138     #endif
2139     return u16tmp;
2140 }
2141 
MApi_XC_R2BYTEMSK(MS_U32 u32Reg,MS_U16 u16mask)2142 MS_U16  MApi_XC_R2BYTEMSK(MS_U32 u32Reg, MS_U16 u16mask)
2143 {
2144     if (pu32XCInst == NULL)
2145     {
2146         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2147         {
2148             printf("UtopiaOpen XC failed\n");
2149             return E_APIXC_RET_FAIL;
2150         }
2151     }
2152 
2153     stXC_R2BYTEMSK XCArgs;
2154     XCArgs.u32Reg = u32Reg;
2155     XCArgs.u16mask = u16mask;
2156     XCArgs.u16ReturnValue = 0;
2157 
2158     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_R2BYTEMSK, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2159     {
2160         printf("Obtain XC engine fail\n");
2161         return 0;
2162     }
2163     else
2164     {
2165         return XCArgs.u16ReturnValue;
2166     }
2167 }
2168 
2169 //-------------------------------------------------------------------------------------------------
2170 /// Scaler Write 2 Byte Mask Function, and use mutex to protect while switch bank and write address
2171 /// @param  u32Reg                \b IN: which value contain xc sub bank and address
2172 /// @param  u16Val              \b IN: Setting value
2173 /// @param  u16mask              \b IN: decide which bit is valied
2174 //-------------------------------------------------------------------------------------------------
MApi_XC_W2BYTEMSK_U2(void * pInstance,MS_U32 u32Reg,MS_U16 u16Val,MS_U16 u16mask)2175 void    MApi_XC_W2BYTEMSK_U2(void* pInstance, MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16mask)
2176 {
2177     //MS_U8 u8OldBank;
2178 
2179     MSXC_WR_DBG(printf("W2M BK= %x, REG = %x\n", (MS_U16)((u32Reg&0xFF00)>>8), (MS_U16)(u32Reg&0x00FF)));
2180     // removed for not need to mutex, just spread function
2181     #if (!ENABLE_REGISTER_SPREAD)
2182     _XC_ENTRY(pInstance);
2183     #endif
2184     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2185     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2186 
2187     //u8OldBank = MDrv_ReadByte(BK_SELECT_00);
2188 
2189     SC_W2BYTEMSK(psXCInstPri->u32DeviceID,  u32Reg, u16Val, u16mask);
2190 
2191     //MDrv_WriteByte(BK_SELECT_00, u8OldBank);
2192     #if (!ENABLE_REGISTER_SPREAD)
2193     _XC_RETURN(pInstance);
2194     #endif
2195 }
2196 
MApi_XC_W2BYTEMSK(MS_U32 u32Reg,MS_U16 u16Val,MS_U16 u16mask)2197 void    MApi_XC_W2BYTEMSK(MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16mask)
2198 {
2199     if (pu32XCInst == NULL)
2200     {
2201         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2202         {
2203             printf("UtopiaOpen XC failed\n");
2204             return ;
2205         }
2206     }
2207 
2208     stXC_W2BYTEMSK XCArgs;
2209     XCArgs.u32Reg = u32Reg;
2210     XCArgs.u16Val = u16Val;
2211     XCArgs.u16mask = u16mask;
2212 
2213     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_W2BYTEMSK, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2214     {
2215         printf("Obtain XC engine fail\n");
2216         return;
2217     }
2218     else
2219     {
2220         return;
2221     }
2222 }
2223 
2224 #if FPGA
mvideo_set_pnl_info_fpga(XC_PANEL_INFO * pPanel_Info)2225 void mvideo_set_pnl_info_fpga(XC_PANEL_INFO *pPanel_Info)
2226 {
2227     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2228     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2229     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2230     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2231     pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16HStart = pPanel_Info->u16HStart;
2232     pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Width = pPanel_Info->u16Width;
2233     pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16VStart = pPanel_Info->u16VStart;
2234     pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Height = pPanel_Info->u16Height;
2235 }
2236 #endif
2237 
MApi_XC_EnableRepWindowForFrameColor_U2(void * pInstance,MS_BOOL bEnable)2238 void MApi_XC_EnableRepWindowForFrameColor_U2(void* pInstance, MS_BOOL bEnable)
2239 {
2240     _XC_ENTRY(pInstance);
2241     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2242     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2243     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2244 
2245     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
2246     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2247     pXCResourcePrivate->stdrvXC_MVideo_Context.g_bEnableRepWindowForFrameColor = bEnable;
2248 
2249 #if 0
2250     if( bEnable == FALSE )
2251     {
2252         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK0F_57_L, 0, BIT(8)|BIT(9) ); // Disable display rep window
2253         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK0F_42_L, 0, 0xFFFF);
2254         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK0F_43_L, 0, 0xFFFF);
2255         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK0F_44_L, 0, 0xFFFF);
2256         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK0F_45_L, 0, 0xFFFF);
2257     }
2258 #endif
2259     _XC_RETURN(pInstance);
2260     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
2261 }
2262 
MApi_XC_EnableRepWindowForFrameColor(MS_BOOL bEnable)2263 void MApi_XC_EnableRepWindowForFrameColor(MS_BOOL bEnable)
2264 {
2265     if (pu32XCInst == NULL)
2266     {
2267         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
2268         return;
2269     }
2270 
2271     stXC_SET_REPORTWINDOW_FOR_FRAMECOLOR XCArgs;
2272     XCArgs.bEnable = bEnable;
2273 
2274     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_REPORTWINDOW_FOR_FRAMECOLOR, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2275     {
2276         printf("Obtain XC engine fail\n");
2277         return;
2278     }
2279     else
2280     {
2281         return;
2282     }
2283 }
2284 
2285 // scmi type 0: A1/A7/T12/T13, 1: M10/J2/A5/A6/A3
MDrv_XC_Get_SCMI_Type(void)2286 MS_BOOL MDrv_XC_Get_SCMI_Type(void)
2287 {
2288     return _FIELD_PACKING_MODE_SUPPORTED;
2289 }
2290 
2291 //-------------------------------------------------------------------------------------------------
2292 /// Enable/Disable RW bank auto
2293 /// @param  bEnable                 \b IN: enable or disable
2294 /// @param  eWindow                 \b IN: which window we are going to enable or disable
2295 //-------------------------------------------------------------------------------------------------
MApi_XC_EnableRWBankAuto_U2(void * pInstance,MS_BOOL bEnable,SCALER_WIN eWindow)2296 void MApi_XC_EnableRWBankAuto_U2(void* pInstance, MS_BOOL bEnable, SCALER_WIN eWindow)
2297 {
2298     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2299     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2300     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2301 
2302     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
2303     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2304     gSrcInfo[eWindow].bRWBankAuto = bEnable;
2305     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
2306 }
2307 
MApi_XC_EnableRWBankAuto(MS_BOOL bEnable,SCALER_WIN eWindow)2308 void MApi_XC_EnableRWBankAuto(MS_BOOL bEnable, SCALER_WIN eWindow)
2309 {
2310     if (pu32XCInst == NULL)
2311     {
2312         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
2313         return;
2314     }
2315 
2316     stXC_SET_AUTO_RWBANK_ENABLE XCArgs;
2317     XCArgs.bEnable = bEnable;
2318     XCArgs.eWindow = eWindow;
2319 
2320     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_SET_AUTO_RWBANK_ENABLE, (void*)&XCArgs) != UTOPIA_STATUS_SUCCESS)
2321     {
2322         printf("Obtain XC engine fail\n");
2323         return;
2324     }
2325     else
2326     {
2327         return;
2328     }
2329 }
MApi_XC_Dump_SHM_U2(void * pInstance)2330 void MApi_XC_Dump_SHM_U2(void *pInstance)
2331 {
2332     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2333     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2334     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2335 
2336     _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
2337     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2338 
2339     _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
2340 }
MApi_XC_Dump_SHM(void)2341 void MApi_XC_Dump_SHM(void)
2342 {
2343     if (pu32XCInst == NULL)
2344     {
2345         if(UtopiaOpen(MODULE_XC, &pu32XCInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2346         {
2347             printf("UtopiaOpen XC failed\n");
2348             return;
2349         }
2350     }
2351 
2352     if(UtopiaIoctl(pu32XCInst, E_XC_CMD_DUMP_SHM, NULL) != UTOPIA_STATUS_SUCCESS)
2353     {
2354         printf("Obtain XC engine fail\n");
2355         return;
2356     }
2357     else
2358     {
2359         return;
2360     }
2361 }
2362 //-------------------------------------------------------------------------------------------------
2363 /// MDrv_XC_OSDC_TGEN_Setting
2364 /// @param  pstOC_Tgen                 \b IN: the timing control
2365 //-------------------------------------------------------------------------------------------------
MDrv_XC_OSDC_TGEN_Setting(void * pInstance,MS_XC_OSDC_TGEN_INFO * pstOC_Tgen)2366 void MDrv_XC_OSDC_TGEN_Setting(void *pInstance, MS_XC_OSDC_TGEN_INFO *pstOC_Tgen)
2367 {
2368     MHAL_SC_set_osdc_tgen_htotal(pInstance, pstOC_Tgen->u16OC_Tgen_HTotal);
2369     MHAL_SC_set_osdc_tgen_vtotal(pInstance, pstOC_Tgen->u16OC_Tgen_VTotal);
2370 
2371     MHAL_SC_set_osdc_tgen_hsync_start(pInstance, pstOC_Tgen->u16OC_Tgen_Hsync_Start);
2372     MHAL_SC_set_osdc_tgen_hsync_end(pInstance, pstOC_Tgen->u16OC_Tgen_Hsync_End);
2373     MHAL_SC_set_osdc_tgen_hframe_de_start(pInstance, pstOC_Tgen->u16OC_Tgen_HframDE_Start);
2374     MHAL_SC_set_osdc_tgen_hframe_de_end(pInstance, pstOC_Tgen->u16OC_Tgen_HframDE_End);
2375 
2376     MHAL_SC_set_osdc_tgen_vsync_start(pInstance, pstOC_Tgen->u16OC_Tgen_Vsync_Start);
2377     MHAL_SC_set_osdc_tgen_vsync_end(pInstance, pstOC_Tgen->u16OC_Tgen_Vsync_End);
2378     MHAL_SC_set_osdc_tgen_vframe_de_start(pInstance, pstOC_Tgen->u16OC_Tgen_VframDE_Start);
2379     MHAL_SC_set_osdc_tgen_vframe_de_end(pInstance, pstOC_Tgen->u16OC_Tgen_VframDE_End);
2380 }
2381 
2382 extern void MDrv_PNL_SetOSDCOutputType(void *pInstance, MS_U16 eLPLL_Type, MS_U8 eOC_OutputFormat);
2383 extern void MDrv_PNL_VBY1_Hardware_TrainingMode_En(void *pInstance, MS_BOOL bIsVideoMode ,MS_BOOL bEnable);
MDrv_XC_OSDC_Control(void * pInstance,MS_U32 eCtrl_type)2384 E_APIXC_ReturnValue MDrv_XC_OSDC_Control(void *pInstance, MS_U32 eCtrl_type)
2385 {
2386     E_APIXC_ReturnValue eRet = E_APIXC_RET_FAIL;
2387     MS_U32 u32ldHz = 0;
2388     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2389     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2390     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2391 
2392     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2393     pXCResourcePrivate->stdrvXC_MVideo_Context.g_u32OSDCCtrltype_Suspend  = eCtrl_type;
2394 
2395     if(gSrcInfo[MAIN_WINDOW].Status2.bIsInitOSDC)
2396     {
2397         if(eCtrl_type == E_XC_OSDC_CTRL_MISC)
2398         {
2399             MDrv_XC_OSDC_MISC_Control(pInstance, &gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL);
2400             eRet = E_APIXC_RET_OK;
2401         }
2402         else if(eCtrl_type == E_XC_OSDC_CTRL_TGEN)
2403         {
2404             MDrv_XC_OSDC_TGEN_Setting(pInstance, &gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING);
2405 
2406             //Set OSDC Output clk
2407             u32ldHz = (MS_U32)gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_HTotal*
2408                       gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_VTotal*
2409                       pXCResourcePrivate->stdrvXC_MVideo.OSDC_FREQ;
2410 
2411             if((gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type ==0)||
2412                (gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type >= E_XC_PNL_LPLL_TYPE_MAX))
2413             {
2414                 gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type = E_XC_PNL_LPLL_HS_LVDS;
2415             }
2416             MApi_PNL_SetExt_LPLL_Type(gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type);
2417 
2418             MApi_PNL_CalExtLPLLSETbyDClk(u32ldHz);
2419             eRet = E_APIXC_RET_OK;
2420         }
2421         else if(eCtrl_type == E_XC_OSDC_INIT)
2422         {
2423             if((gSrcInfo[MAIN_WINDOW].Status2.u16OC_PreLplltype !=gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type) ||
2424                 (gSrcInfo[MAIN_WINDOW].Status2.u16OC_Tgen_HTotal !=gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_HTotal) ||
2425                 (gSrcInfo[MAIN_WINDOW].Status2.u16OC_Tgen_VTotal !=gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_VTotal))
2426             {
2427 
2428                 if((gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type >= E_XC_PNL_LPLL_VBY1_10BIT_4LANE)
2429                     &&(gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type <= E_XC_PNL_LPLL_VBY1_8BIT_8LANE))
2430                 {
2431                     if(MApi_PNL_GetOSDHWTraining_Status(pInstance))
2432                     {
2433                          MDrv_PNL_VBY1_Hardware_TrainingMode_En(pInstance, FALSE ,DISABLE);
2434                     }
2435                     else
2436                     {
2437                     //Close the RT51 OSD handshack code flow
2438                     MOD_W2BYTEMSK(REG_MOD_BK00_44_L, BIT(15), BIT(15));
2439                 }
2440                 }
2441 
2442                 MDrv_XC_OSDC_MISC_Control(pInstance, &gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL);
2443                 MDrv_XC_OSDC_TGEN_Setting(pInstance, &gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING);
2444 
2445                 //Set OSDC Output clk
2446                 u32ldHz = (MS_U32)gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_HTotal*
2447                           gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_VTotal*
2448                           pXCResourcePrivate->stdrvXC_MVideo.OSDC_FREQ;
2449                 if((gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type ==0)||
2450                    (gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type >= E_XC_PNL_LPLL_TYPE_MAX))
2451                 {
2452                     gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type = E_XC_PNL_LPLL_HS_LVDS;
2453                 }
2454                 MApi_PNL_SetExt_LPLL_Type(gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type);
2455                 MDrv_PNL_SetOSDCOutputType(pInstance,
2456                                            gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type,
2457                                            gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u8OC_OutputFormat);
2458                 MApi_PNL_CalExtLPLLSETbyDClk(u32ldHz);
2459 
2460                 if((gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type >= E_XC_PNL_LPLL_VBY1_10BIT_4LANE)
2461                     &&(gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type <= E_XC_PNL_LPLL_VBY1_8BIT_8LANE))
2462                 {
2463                     if(MApi_PNL_GetOSDHWTraining_Status(pInstance))
2464                     {
2465                         MDrv_PNL_VBY1_Hardware_TrainingMode_En(pInstance, FALSE ,ENABLE);
2466                     }
2467                     else
2468                     {
2469                         //Open the RT51 OSD handshack code flow
2470                         MOD_W2BYTEMSK(REG_MOD_BK00_44_L, 0, BIT(15));
2471                     }
2472                 }
2473                 gSrcInfo[MAIN_WINDOW].Status2.u16OC_PreLplltype =gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type;
2474                 gSrcInfo[MAIN_WINDOW].Status2.u16OC_Tgen_HTotal =gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_HTotal;
2475                 gSrcInfo[MAIN_WINDOW].Status2.u16OC_Tgen_VTotal =gSrcInfo[MAIN_WINDOW].Status2.stXCOSDCTIMING.u16OC_Tgen_VTotal;
2476 
2477             }
2478             eRet = E_APIXC_RET_OK;
2479         }
2480         else if(eCtrl_type == E_XC_OSDC_CTRL_OUTPUT_FORMAT)
2481         {
2482             MDrv_PNL_SetOSDCOutputType(pInstance,
2483                                        gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u16OC_Lpll_type,
2484                                        gSrcInfo[MAIN_WINDOW].Status2.stXCOSDC_CTRL.u8OC_OutputFormat);
2485             eRet = E_APIXC_RET_OK;
2486         }
2487         else
2488         {
2489             printf("[Note]Please re-select the control item!\n");
2490             eRet = E_APIXC_RET_FAIL_ENUM_NOT_SUPPORT;
2491         }
2492     }
2493     else
2494     {
2495         eRet = E_APIXC_RET_FAIL_FUN_NOT_SUPPORT;
2496     }
2497 
2498     return eRet;
2499 
2500 }
2501 
2502 //-------------------------------------------------------------------------------------------------
2503 /// MDrv_XC_OSDC_MISC_Control
2504 /// @param  pstOC_Ctrl                 \b IN: the OSDC MISC control
2505 //-------------------------------------------------------------------------------------------------
MDrv_XC_OSDC_MISC_Control(void * pInstance,MS_XC_OSDC_CTRL_INFO * pstOC_Ctrl)2506 void MDrv_XC_OSDC_MISC_Control(void *pInstance, MS_XC_OSDC_CTRL_INFO *pstOC_Ctrl)
2507 {
2508     MHAL_SC_enable_osdc(pInstance, pstOC_Ctrl->bOC_ClK_En);
2509     MHAL_SC_set_osdc_mixer_bypass_enable(pInstance, pstOC_Ctrl->bOC_Mixer_Bypass_En);
2510     MHAL_SC_set_osdc_mixer_inv_alpha_enable(pInstance, pstOC_Ctrl->bOC_Mixer_InvAlpha_En);
2511     MHAL_SC_set_osdc_mixer_hs_n_vfde_enable(pInstance, pstOC_Ctrl->bOC_Mixer_Hsync_Vfde_Out);
2512     MHAL_SC_set_osdc_mixer_hfde_n_vfde_enable(pInstance, pstOC_Ctrl->bOC_Mixer_Hfde_Vfde_Out);
2513 }
2514 
2515 //-------------------------------------------------------------------------------------------------
2516 /// MDrv_XC_OSDC_GetDataFromRegister
2517 /// @param  pstOC_Tgen                 \b IN: the timing control
2518 /// @param  pstOC_Ctrl                 \b IN: the OSDC MISC control
2519 /// @return @ref MS_BOOL
2520 //-------------------------------------------------------------------------------------------------
MDrv_XC_OSDC_GetDataFromRegister(void * pInstance,MS_XC_OSDC_TGEN_INFO * pstOC_Tgen,MS_XC_OSDC_CTRL_INFO * pstOC_Ctrl)2521 MS_BOOL MDrv_XC_OSDC_GetDataFromRegister(void *pInstance, MS_XC_OSDC_TGEN_INFO *pstOC_Tgen, MS_XC_OSDC_CTRL_INFO *pstOC_Ctrl)
2522 {
2523     if((NULL == pstOC_Tgen)||(NULL == pstOC_Ctrl))
2524     {
2525         return FALSE;
2526     }
2527 
2528     pstOC_Tgen->u16OC_Tgen_HTotal              = MHAL_SC_get_osdc_tgen_htotal(pInstance);
2529     pstOC_Tgen->u16OC_Tgen_Hsync_Start         = MHAL_SC_get_osdc_tgen_hsync_start(pInstance);
2530     pstOC_Tgen->u16OC_Tgen_Hsync_End           = MHAL_SC_get_osdc_tgen_hsync_end(pInstance);
2531     pstOC_Tgen->u16OC_Tgen_HframDE_Start       = MHAL_SC_get_osdc_tgen_hframe_de_start(pInstance);
2532     pstOC_Tgen->u16OC_Tgen_HframDE_End         = MHAL_SC_get_osdc_tgen_hframe_de_end(pInstance);
2533     pstOC_Tgen->u16OC_Tgen_VTotal              = MHAL_SC_get_osdc_tgen_vtotal(pInstance);
2534     pstOC_Tgen->u16OC_Tgen_Vsync_Start         = MHAL_SC_get_osdc_tgen_vsync_start(pInstance);
2535     pstOC_Tgen->u16OC_Tgen_Vsync_End           = MHAL_SC_get_osdc_tgen_vsync_end(pInstance);
2536     pstOC_Tgen->u16OC_Tgen_VframDE_Start       = MHAL_SC_get_osdc_tgen_vframe_de_start(pInstance);
2537     pstOC_Tgen->u16OC_Tgen_VframDE_End         = MHAL_SC_get_osdc_tgen_vframe_de_end(pInstance);
2538 
2539     pstOC_Ctrl->bOC_ClK_En                     = MHAL_SC_get_osdc_onoff_status(pInstance);
2540     pstOC_Ctrl->bOC_Mixer_Bypass_En            = MHAL_SC_get_osdc_mixer_bypass_status(pInstance);
2541     pstOC_Ctrl->bOC_Mixer_InvAlpha_En          = MHAL_SC_get_osdc_mixer_inv_alpha_status(pInstance);
2542     pstOC_Ctrl->bOC_Mixer_Hsync_Vfde_Out       = MHAL_SC_get_osdc_mixer_hs_n_vfde_status(pInstance);
2543     pstOC_Ctrl->bOC_Mixer_Hfde_Vfde_Out        = MHAL_SC_get_osdc_mixer_hfde_n_vfde_status(pInstance);
2544 
2545     return TRUE;
2546 }
2547 
MDrv_XC_OSDC_TGENRST_EN(void * pInstance,MS_BOOL bEnable)2548 void MDrv_XC_OSDC_TGENRST_EN(void *pInstance, MS_BOOL bEnable)
2549 {
2550     MHAL_SC_set_osdc_tgen_reset_enable(pInstance, bEnable);
2551 }
2552 
MDrv_XC_OSDC_SWRST_EN(void * pInstance,MS_BOOL bEnable)2553 void MDrv_XC_OSDC_SWRST_EN(void *pInstance, MS_BOOL bEnable)
2554 {
2555     MHAL_SC_set_osdc_swreset_enable(pInstance, bEnable);
2556 }
2557 
MDrv_XC_IsSupportPipPatchUsingSc1MainAsSc0Sub(void)2558 MS_BOOL MDrv_XC_IsSupportPipPatchUsingSc1MainAsSc0Sub(void)
2559 {
2560     return (MS_BOOL)PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB;
2561 }
2562 
MDrv_XC_GetChipCaps(void * pInstance,E_XC_CAPS eCapType,MS_U32 * pRet,MS_U32 ret_size)2563 E_APIXC_ReturnValue MDrv_XC_GetChipCaps(void *pInstance, E_XC_CAPS eCapType, MS_U32* pRet, MS_U32 ret_size)
2564 {
2565     switch(eCapType)
2566     {
2567         case E_XC_IMMESWITCH:
2568             *pRet = SUPPORT_IMMESWITCH;
2569             break;
2570         case E_XC_DVI_AUTO_EQ:
2571             *pRet = SUPPORT_DVI_AUTO_EQ;
2572             break;
2573         case E_XC_FRC_INSIDE:
2574             *pRet = FRC_INSIDE;
2575             break;
2576         case E_XC_SUPPORT_FRCM_MODE:
2577             *pRet = SUPPORT_FRCM_MODE;
2578             break;
2579         case E_XC_SUPPORT_4K2K_WITH_PIP:
2580             *pRet = SUPPORT_4K2K_PIP;
2581             break;
2582         case E_XC_DIP_CHIP_CAPS:
2583             {
2584                 if( ret_size != sizeof(ST_XC_DIP_CHIPCAPS))
2585                 {
2586                     return E_APIXC_RET_FAIL_INVALID_PARAMETER;
2587                 }
2588                 ST_XC_DIP_CHIPCAPS *stDipCaps;
2589                 stDipCaps = (ST_XC_DIP_CHIPCAPS *)pRet;
2590                 DIP_CHIP_CAP(stDipCaps->eWindow,stDipCaps->u32DipChipCaps);
2591                 break;
2592             }
2593         case E_XC_3D_FBL_CAPS:
2594 #ifndef DISABLE_3D_FUNCTION
2595             *pRet = MDrv_SC_3D_IsSupportFBL3D();
2596 #else
2597             *pRet = FALSE;
2598 #endif
2599             break;
2600 
2601         case E_XC_SUPPORT_DETECT3D_IN3DMODE:
2602 #ifndef DISABLE_3D_FUNCTION
2603     #if HW_2DTO3D_SUPPORT
2604             *pRet = (HW_2DTO3D_VER >= 3);
2605     #else
2606             *pRet = FALSE;
2607     #endif
2608 #else
2609             *pRet = FALSE;
2610 #endif
2611             break;
2612 
2613         case E_XC_HW_SEAMLESS_ZAPPING:
2614             *pRet = SUPPORT_SEAMLESS_ZAPPING;
2615             break;
2616         case E_XC_SUPPORT_DEVICE1:
2617             *pRet = SUPPORT_DEVICE1;
2618             break;
2619 
2620         case E_XC_2DTO3D_VERSION:
2621 #if HW_2DTO3D_SUPPORT
2622             *pRet = HW_2DTO3D_VER;
2623 #else
2624             *pRet = 0xFFFFFFFF;
2625 #endif
2626             break;
2627         case E_XC_SUPPORT_FORCE_VSP_IN_DS_MODE:
2628             *pRet = HW_SUPPORT_FORCE_VSP_IN_DS_MODE;
2629             break;
2630         case E_XC_SUPPORT_INTERLACE_OUT:
2631             *pRet = HW_SUPPORT_INTERLACE_OUTPUT;
2632             break;
2633         case E_XC_SUPPORT_4K2K_60P:
2634             *pRet = HW_SUPPORT_4K2K_60P_OUTPUT;
2635             break;
2636         case E_XC_SUPPORT_PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB:
2637         {
2638             if( ret_size != sizeof(MS_U32))
2639             {
2640                 return E_APIXC_RET_FAIL_INVALID_PARAMETER;
2641             }
2642             *pRet = (MS_U32)MDrv_XC_IsSupportPipPatchUsingSc1MainAsSc0Sub();
2643             break;
2644         }
2645         case E_XC_HW_4K2K_VIP_PEAKING_LIMITATION:
2646             *pRet = HW_4K2K_VIP_PEAKING_LIMITATION;
2647             break;
2648 
2649         case E_XC_FB_CAPS_GET_FB_LEVEL:
2650         {
2651             XC_GET_FB_LEVEL* stXCGetFBLevel = (XC_GET_FB_LEVEL *)pRet;
2652             stXCGetFBLevel->eFBLevel = MHal_XC_Get_FB_Level(pInstance, &(stXCGetFBLevel->stCropWin), &(stXCGetFBLevel->stDispWin),stXCGetFBLevel->bInterlace,&(stXCGetFBLevel->u16HSizeAfterPrescaling), &(stXCGetFBLevel->u16VSizeAfterPrescaling));
2653             break;
2654         }
2655 #ifdef UFO_XC_AUTO_DOWNLOAD
2656         case E_XC_SUPPORT_AUTODOWNLOAD_CLIENT:
2657         {
2658             if(ret_size != sizeof(XC_AUTODOWNLOAD_CLIENT_SUPPORTED_CAPS))
2659             {
2660                 return E_APIXC_RET_FAIL_INVALID_PARAMETER;
2661             }
2662             XC_AUTODOWNLOAD_CLIENT_SUPPORTED_CAPS *pstAutoDownloadCaps;
2663             pstAutoDownloadCaps = (XC_AUTODOWNLOAD_CLIENT_SUPPORTED_CAPS *)pRet;
2664             MDrv_XC_GetAutoDownloadCaps(pstAutoDownloadCaps->enClient, &(pstAutoDownloadCaps->bSupported));
2665             break;
2666         }
2667 #endif
2668 #ifdef UFO_XC_HDR
2669 #if (UFO_XC_HDR_VERSION == 2)
2670         case E_XC_SUPPORT_HDR:
2671         {
2672             if(ret_size != sizeof(XC_HDR_SUPPORTED_CAPS))
2673             {
2674                 return E_APIXC_RET_FAIL_INVALID_PARAMETER;
2675             }
2676             XC_HDR_SUPPORTED_CAPS *pstHDRCaps;
2677             pstHDRCaps = (XC_HDR_SUPPORTED_CAPS *)pRet;
2678             MDrv_XC_HDR_GetCaps(pInstance, pstHDRCaps);
2679             break;
2680 
2681         }
2682 #endif
2683 #endif
2684 #ifdef UFO_XC_SUPPORT_3D_DS
2685         case E_XC_SUPPORT_3D_DS:
2686         {
2687             *pRet = SUPPORT_3D_DS;
2688             break;
2689         }
2690 #endif
2691         case E_XC_SCALING_LIMITATION:
2692             *pRet = HW_SCALING_LIMITATION;
2693             break;
2694         default:
2695             return E_APIXC_RET_FAIL_ENUM_NOT_SUPPORT;
2696     }
2697     return E_APIXC_RET_OK;
2698 }
2699 
MDrv_XC_Get_Semaphore(void * pInstance,E_XC_POOL_ID_TYPE eID_TYPE)2700 MS_U32 MDrv_XC_Get_Semaphore(void *pInstance,E_XC_POOL_ID_TYPE eID_TYPE)
2701 {
2702 	E_XC_POOL_ID eID=E_XC_POOL_ID_MAX;
2703     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2704     MS_U32 u32Return = UTOPIA_STATUS_FAIL;
2705 
2706 	if(pInstance == NULL)
2707     {
2708         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
2709         return u32Return;
2710     }
2711     else
2712 	{
2713     	UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2714 	}
2715 
2716     if(eID_TYPE == E_XC_ID_REG)
2717     {
2718 		eID=_XC_SELECT_INTERNAL_REGISTER(psXCInstPri->u32DeviceID);
2719     }
2720 	else if(eID_TYPE == E_XC_ID_VAR)
2721     {
2722 		eID=_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID);
2723     }
2724 	else if(eID_TYPE == E_XC_ID_MLD)
2725     {
2726 		eID=_XC_SELECT_INTERNAL_MENULOAD(psXCInstPri->u32DeviceID);
2727     }
2728     else if(eID_TYPE == E_XC_ID_DS)
2729     {
2730         eID=_XC_SELECT_INTERNAL_DS(psXCInstPri->u32DeviceID);
2731     }
2732 
2733 
2734     if (eID >= E_XC_POOL_ID_MAX)
2735     {
2736         printf("[%s,%5d] Unknown XC Pool ID\n",__func__, __LINE__);
2737         return u32Return;
2738     }
2739 	if (eID == E_XC_POOL_ID_INTERNAL_REGISTER || eID == E_XC_POOL_ID_INTERNAL_REGISTER_1 ||
2740         eID == E_XC_POOL_ID_INTERNAL_MENULOAD || eID == E_XC_POOL_ID_INTERNAL_MENULOAD_1 ||
2741         eID == E_XC_POOL_ID_INTERNAL_DS       || eID == E_XC_POOL_ID_INTERNAL_DS_1 )
2742     {
2743         return u32Return;
2744     }
2745 
2746     #if 0 // for Debug. It is important to check the tid
2747     pid_t tid;
2748     tid = syscall(SYS_gettid);
2749     printf("tid = (%d)\n",tid);
2750     #endif
2751 
2752     void* pModule = NULL;
2753     UtopiaInstanceGetModule(pInstance, &pModule);
2754 
2755     if(UtopiaResourceObtain(pModule, eID, &g_pXCResource[eID]) != UTOPIA_STATUS_SUCCESS)
2756     {
2757         printf("UtopiaResourceObtain fail\n");
2758         return UTOPIA_STATUS_ERR_RESOURCE;
2759     }
2760     u32Return = UTOPIA_STATUS_SUCCESS;
2761     return u32Return;
2762 }
2763 
MDrv_XC_Release_Semaphore(void * pInstance,E_XC_POOL_ID_TYPE eID_TYPE)2764 MS_U32 MDrv_XC_Release_Semaphore(void *pInstance,E_XC_POOL_ID_TYPE eID_TYPE)
2765 {
2766 	E_XC_POOL_ID eID=E_XC_POOL_ID_MAX;
2767     MS_U32 u32Return = UTOPIA_STATUS_FAIL;
2768     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2769 
2770 	if(pInstance == NULL)
2771     {
2772         printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
2773         return u32Return;
2774     }else
2775 	{
2776     	UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2777 	}
2778 	if(eID_TYPE == E_XC_ID_REG)
2779 		eID=_XC_SELECT_INTERNAL_REGISTER(psXCInstPri->u32DeviceID);
2780 	else if(eID_TYPE == E_XC_ID_VAR)
2781 		eID=_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID);
2782 	else if(eID_TYPE == E_XC_ID_MLD)
2783 		eID=_XC_SELECT_INTERNAL_MENULOAD(psXCInstPri->u32DeviceID);
2784     else if(eID_TYPE == E_XC_ID_DS)
2785         eID=_XC_SELECT_INTERNAL_DS(psXCInstPri->u32DeviceID);
2786 
2787     if (eID >= E_XC_POOL_ID_MAX)
2788     {
2789         printf("[%s,%5d] Unknown XC Pool ID\n",__func__, __LINE__);
2790         return u32Return;
2791     }
2792 
2793 	if (eID == E_XC_POOL_ID_INTERNAL_REGISTER || eID == E_XC_POOL_ID_INTERNAL_REGISTER_1 ||
2794         eID == E_XC_POOL_ID_INTERNAL_MENULOAD || eID == E_XC_POOL_ID_INTERNAL_MENULOAD_1 ||
2795         eID == E_XC_POOL_ID_INTERNAL_DS       || eID == E_XC_POOL_ID_INTERNAL_DS_1)
2796     {
2797         return u32Return;
2798     }
2799     #if 0 // for Debug. It is important to check the tid
2800     pid_t tid;
2801     tid = syscall(SYS_gettid);
2802     printf("tid = (%d)\n",tid);
2803     #endif
2804 
2805     u32Return = UtopiaResourceRelease(g_pXCResource[eID]);
2806     return u32Return;
2807 }
2808 
MDrv_XC_Resource_Mapping(MS_U32 u32InstanceID,E_XC_POOL_ID eID)2809 E_XC_POOL_ID MDrv_XC_Resource_Mapping(MS_U32 u32InstanceID, E_XC_POOL_ID eID)
2810 {
2811     if(eID >= E_XC_POOL_ID_MAX)
2812     {
2813         printf("Error, Invalid POOL ID!!!\n");
2814         return E_XC_POOL_ID_MAX;
2815     }
2816     if(u32InstanceID == 0)
2817     {
2818         //FIXME?
2819         return eID;
2820     }
2821     else if(u32InstanceID == 1)
2822     {
2823         switch(eID)
2824         {
2825             case E_XC_POOL_ID_INTERNAL_REGISTER:
2826             case E_XC_POOL_ID_INTERNAL_REGISTER_1:
2827                 return E_XC_POOL_ID_INTERNAL_REGISTER_1;
2828             case E_XC_POOL_ID_INTERNAL_VARIABLE:
2829             case E_XC_POOL_ID_INTERNAL_VARIABLE_1:
2830                 return E_XC_POOL_ID_INTERNAL_VARIABLE_1;
2831             case E_XC_POOL_ID_INTERNAL_MENULOAD:
2832             case E_XC_POOL_ID_INTERNAL_MENULOAD_1:
2833                 return E_XC_POOL_ID_INTERNAL_MENULOAD_1;
2834             case E_XC_POOL_ID_INTERNAL_DS:
2835             case E_XC_POOL_ID_INTERNAL_DS_1:
2836                 return E_XC_POOL_ID_INTERNAL_DS_1;
2837             default:
2838                 return eID;
2839         }
2840     }
2841     else
2842     {
2843         printf("u32InstanceID = %td is over 1!!\n", (ptrdiff_t)u32InstanceID);
2844         return E_XC_POOL_ID_MAX;
2845     }
2846 }
2847 
2848 
MDrv_XC_Set_VOP(void * pInstance,MS_XC_VOP_Data * pstVOPData)2849 void MDrv_XC_Set_VOP(void *pInstance, MS_XC_VOP_Data *pstVOPData)
2850 
2851 {
2852     //Note: H/V Total, H/V DE End, H/V Syncwidth all need minus 1 when set to register
2853     MS_U16 u16DE_HEND = pstVOPData->u16HStart + pstVOPData->u16Width - 1;
2854     MS_U16 u16DE_HStart = pstVOPData->u16HStart;
2855     MS_U16 u16DE_VEND = pstVOPData->u16VStart + pstVOPData->u16Height - 1;
2856     MS_U16 u16DE_VStart = pstVOPData->u16VStart;
2857     MS_U16 u16VsyncStart = pstVOPData->u16VTotal - pstVOPData->u16VSyncStart;// vsync start = Vtt - (VSyncWidth + BackPorch)
2858 
2859 
2860     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2861     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2862 
2863     printf("##@##[%s][%d][%tx]\n", __FUNCTION__, __LINE__, (ptrdiff_t)psXCInstPri->u32DeviceID);
2864 
2865 
2866 
2867     // Htotal/Vtotal
2868 #if PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB
2869     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0C_L, (pstVOPData->u16HTotal/2 - 1), VOP_HTT_MASK);         // output htotal
2870 #else
2871     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0C_L, (pstVOPData->u16HTotal - 1), VOP_HTT_MASK);         // output htotal
2872 #endif
2873     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0D_L, (pstVOPData->u16VTotal - 1), VOP_VTT_MASK);         // output vtotal
2874 
2875     // DE H/V start/size
2876     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_04_L, u16DE_HStart, VOP_DE_HSTART_MASK);                                       // DE H start
2877     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_05_L, u16DE_HEND  , VOP_DE_HEND_MASK);  // DE H end
2878 #if PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB
2879     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_06_L, u16DE_VStart+6, VOP_DE_VSTART_MASK);                                       // DE V start
2880     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_07_L, u16DE_VEND+10  , VOP_DE_VEND_MASK);  // DE V end
2881 #else
2882     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_06_L, u16DE_VStart, VOP_DE_VSTART_MASK);                                       // DE V start
2883     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_07_L, u16DE_VEND  , VOP_DE_VEND_MASK);  // DE V end
2884 #endif
2885 
2886     // Display H/V start/size
2887     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_08_L, u16DE_HStart , VOP_DISPLAY_HSTART_MASK);                                               // Display H start
2888     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_09_L, u16DE_HEND   , VOP_DISPLAY_HEND_MASK);  // Display H end
2889 #if PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB
2890     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0A_L, u16DE_VStart+6 , VOP_DISPLAY_VSTART_MASK);                                               // Display V start
2891     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0B_L, u16DE_VEND+6   , VOP_DISPLAY_VEND_MASK);  // Display V end
2892 #else
2893     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0A_L, u16DE_VStart , VOP_DISPLAY_VSTART_MASK);                                               // Display V start
2894     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_0B_L, u16DE_VEND   , VOP_DISPLAY_VEND_MASK);  // Display V end
2895 #endif
2896 
2897     // H/V sync start/width
2898     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_01_L, (pstVOPData->u8HSyncWidth-1), LBMASK);                    // hsync width
2899     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_02_L, ((u16VsyncStart & 0x7FF) | ((u16VsyncStart & 0x800) << 1)), 0x17FF);     // vsync start = Vtt - (VSyncWidth + BackPorch)
2900     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_03_L, (u16VsyncStart + pstVOPData->u8VSyncWidth - 1), VOP_VSYNC_END_MASK);    // vsync end = Vsync start + Vsync Width
2901     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_10_L, (pstVOPData->bManuelVSyncCtrl << 15), BIT(15));                                  // manual vsync control
2902     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_10_L, BIT(14), BIT(14));       //default set to mode1                                                                       // disable auto_htotal
2903     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_23_L, BIT(7), BIT(7));
2904 
2905     // output control
2906     SC_W2BYTE(psXCInstPri->u32DeviceID, REG_SC_BK10_21_L, pstVOPData->u16OCTRL);
2907 
2908     SC_W2BYTE(psXCInstPri->u32DeviceID, REG_SC_BK10_46_L, pstVOPData->u16OSTRL);
2909 
2910     // output driving current
2911     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_47_L, pstVOPData->u16ODRV, LBMASK);
2912 }
2913 
2914 
2915 #ifndef DISABLE_HW_PATTERN_FUNCTION
2916 #ifdef SUPPORT_HW_TESTPATTERN
MDrv_SC_OP1_PatGen_Init(void * pInstance,EN_XC_OP1_PATGEN_MODE eMode)2917 MS_BOOL MDrv_SC_OP1_PatGen_Init(void *pInstance, EN_XC_OP1_PATGEN_MODE eMode)
2918 {
2919     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2920     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2921     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2922     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2923     if(!pXCResourcePrivate->stdrvXC_MVideo_Context.bOP1_PatGen_Init)
2924     {
2925         MHal_SC_OP1_Pattern_backup_setting();
2926         pXCResourcePrivate->stdrvXC_MVideo_Context.bOP1_PatGen_Init = TRUE;
2927     }
2928 
2929     if(FALSE == MHal_SC_OP1_Pattern_set_patgen_mode(eMode))
2930     {
2931         return FALSE;
2932     }
2933 
2934     MHal_SC_OP1_Pattern_init_setting();
2935 
2936     MHal_SC_OP1_Pattern_sram_writedone();
2937 
2938     //MS_U16 u16OP1_PatGen_HSize = 0;
2939     //MS_U16 u16OP1_PatGen_VSize = 0;
2940 
2941     //Set the hSize and VSize
2942     //u16OP1_PatGen_HSize = gSrcInfo[MAIN_WINDOW].stDispWin.width - gSrcInfo[MAIN_WINDOW].stDispWin.x ;
2943     //u16OP1_PatGen_VSize = gSrcInfo[MAIN_WINDOW].stDispWin.height - gSrcInfo[MAIN_WINDOW].stDispWin.y;
2944 
2945     //MHal_SC_OP1_Pattern_set_frame_size(u16OP1_PatGen_HSize, u16OP1_PatGen_VSize);
2946     MHal_SC_OP1_Pattern_set_frame_size(pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Width
2947                                        , pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Width);
2948 
2949     MHal_SC_OP1_Pattern_enable(ENABLE);
2950 
2951     // due to change di1lb, need to wait HW done
2952     MsOS_DelayTask(50);
2953 
2954     return TRUE;
2955 
2956 }
2957 
MDrv_SC_Set_OP1_TestPattern(void * pInstance,EN_XC_OP1_PATTERN ePattern,EN_XC_OP1_PATGEN_MODE eMode)2958 E_APIXC_ReturnValue MDrv_SC_Set_OP1_TestPattern(void *pInstance, EN_XC_OP1_PATTERN ePattern, EN_XC_OP1_PATGEN_MODE eMode)
2959 {
2960     E_APIXC_ReturnValue enResult = E_APIXC_RET_OK;
2961     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
2962     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
2963     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
2964     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
2965     //initialize the op1 pattern gen
2966 
2967     //temp solution for fixing the broken problem when changing pattern directly.
2968     //need to mute first before any pattern change ot disable pattern
2969 
2970     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_19_L, BIT(1),BIT(1)); //window color en : on
2971 #if (FRC_INSIDE && (HW_DESIGN_4K2K_VER == 6))
2972     if (IsVBY1_16LANE((MS_U8)pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.eLPLL_Type))
2973     {
2974         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BKCB_17_L, BIT(1),BIT(1));
2975     }
2976 #endif
2977     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK01_02_L, BIT(7),BIT(7)); //input source disable
2978 
2979     //MDrv_SC_OP1_PatGen_Init(mode);
2980 
2981     // Disable then enable to make a reset, to avoid SRAM data wrong
2982     MDrv_SC_OP1_PatGen_Disable(pInstance);
2983     //MsOS_DelayTask(50);
2984     MDrv_SC_OP1_PatGen_Init(pInstance, eMode);
2985     //MsOS_DelayTask(50);
2986 
2987     if(gSrcInfo[MAIN_WINDOW].bUseYUVSpace)
2988     {
2989         //if(!bSkipColorMatrix)
2990         MHAL_SC_set_r2y_en(pInstance, ENABLE, MAIN_WINDOW);
2991 
2992     }
2993     else if(SC_R2BYTE(psXCInstPri->u32DeviceID, REG_SC_BK10_26_L)!= 0x400 )
2994     {
2995         // prevent fist time boot up with no signal
2996         //if(!bSkipColorMatrix)
2997         MHAL_SC_set_r2y_en(pInstance, ENABLE, MAIN_WINDOW);
2998 
2999     }
3000 
3001     if(SC_R2BYTE(psXCInstPri->u32DeviceID, REG_SC_BK10_2F_L) == 0 ) //by pass 3x3 color matrix
3002     {
3003         //if(!bSkipColorMatrix)
3004         MHAL_SC_set_r2y_en(pInstance, DISABLE, MAIN_WINDOW);
3005     }
3006 
3007     switch (ePattern)
3008     {
3009         case E_XC_OP1_WB_PATTERN:
3010             MDrv_SC_OP1_WB_Pattern(pInstance, 8, 12);
3011             break;
3012         case E_XC_OP1_PURE_RED_PATTERN:
3013             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x20);
3014             break;
3015         case E_XC_OP1_PURE_GREEN_PATTERN:
3016             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x30);
3017             break;
3018         case E_XC_OP1_PURE_BLUE_PATTERN:
3019             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x40);
3020             break;
3021         case E_XC_OP1_PURE_WHITE_PATTERN:
3022             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x50);
3023             break;
3024         case E_XC_OP1_PURE_BLACK_PATTERN:
3025             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x60);
3026             break;
3027         case E_XC_OP1_PURE_GREY_PATTERN:
3028             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,155,155,155);
3029             break;
3030         case E_XC_OP1_PURE_COLOR_V_BAR_PATTERN:
3031             MDrv_SC_OP1_Pure_Color_V_Bar_Pattern(pInstance, 8, 12);
3032             break;
3033         case E_XC_OP1_PURE_COLOR_H_BAR_PATTERN:
3034             MDrv_SC_OP1_Pure_Color_H_Bar_Pattern(pInstance, 8, 8);
3035             break;
3036         case E_XC_OP1_PURE_GREY_BAR_16_PATTERN:
3037             MDrv_SC_OP1_Pure_Gray_Bar_Pattern(pInstance, 32, 12, 2, 11, 16);
3038             break;
3039         case E_XC_OP1_PURE_GREY_BAR_32_PATTERN:
3040             MDrv_SC_OP1_Pure_Gray_Bar_Pattern(pInstance, 32, 12, 1, 11, 32);
3041             break;
3042         case E_XC_OP1_PURE_GREY_BAR_64_PATTERN:
3043             MDrv_SC_OP1_Pure_Gray_Bar_Pattern(pInstance, 128, 12, 2,11,64);
3044             break;
3045         case E_XC_OP1_PURE_GREY_RGB_32_PATTERN:
3046             MDrv_SC_OP1_Pure_RGB_32_Pattern(pInstance, 32, 8, 1, 1, 32);
3047             break;
3048         case E_XC_OP1_PURE_RGB_CHECKERBOARD_PATTERN:
3049             MDrv_SC_OP1_Pure_RGB_Checkerboard_Pattern_GBChange(pInstance, 3, 3);
3050             break;
3051         case E_XC_OP1_PURE_RGB_CHECKERBOARD_PATTERN_2:
3052             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x70);
3053             break;
3054         case E_XC_OP1_DOAFADE_GRAY_PATTERN:
3055             MDrv_SC_OP1_Dotfade_Gray_Pattern(pInstance, 8, 12);
3056             break;
3057         case E_XC_OP1_CALIBRATION_PATTERN:
3058             MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x80);
3059             break;
3060         case E_XC_OP1_CALIBRATION_COLOR_DOTFADE_PATTERN:
3061             MDrv_SC_OP1_Calibratoin_Color_Dotfade_Pattern(pInstance, 8,12);
3062             break;
3063         case E_XC_OP1_PATTERN_1:
3064             MDrv_SC_OP1_1_Pattern(pInstance, 192,216);
3065             break;
3066         case E_XC_OP1_PATTERN_2:
3067             MDrv_SC_OP1_2_Pattern(pInstance, 16,27);
3068             break;
3069         case E_XC_OP1_PATTERN_3:
3070             MDrv_SC_OP1_3_Pattern(pInstance, 24,108);
3071             break;
3072         case E_XC_OP1_3D_PATTERN:
3073             MDrv_SC_OP1_3D_Pattern(pInstance, 64,30);
3074             break;
3075         case E_XC_OP1_PURE_RED_100IRE_PATTERN:
3076             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,940,0,0);
3077             break;
3078         case E_XC_OP1_PURE_GREEN_100IRE_PATTERN:
3079             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,940,0);
3080             break;
3081         case E_XC_OP1_PURE_BLUE_100IRE_PATTERN:
3082             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,0,940);
3083             break;
3084         case E_XC_OP1_PURE_RED_70IRE_PATTERN:
3085             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,658,0,0);
3086             break;
3087         case E_XC_OP1_PURE_GREEN_70IRE_PATTERN:
3088             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,658,0);
3089             break;
3090         case E_XC_OP1_PURE_BLUE_70IRE_PATTERN:
3091             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,0,658);
3092             break;
3093         case E_XC_OP1_PURE_RED_40IRE_PATTERN:
3094             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,376,0,0);
3095             break;
3096         case E_XC_OP1_PURE_GREEN_40IRE_PATTERN:
3097             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,376,0);
3098             break;
3099         case E_XC_OP1_PURE_BLUE_40IRE_PATTERN:
3100             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,0,376);
3101             break;
3102         case E_XC_OP1_PURE_RED_20IRE_PATTERN:
3103             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,188,0,0);
3104             break;
3105         case E_XC_OP1_PURE_GREEN_20IRE_PATTERN:
3106             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,188,0);
3107             break;
3108         case E_XC_OP1_PURE_BLUE_20IRE_PATTERN:
3109             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,0,188);
3110             break;
3111         case E_XC_OP1_PURE_RED_10IRE_PATTERN:
3112             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,94,0,0);
3113             break;
3114         case E_XC_OP1_PURE_GREEN_10IRE_PATTERN:
3115             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,94,0);
3116             break;
3117         case E_XC_OP1_PURE_BLUE_10IRE_PATTERN:
3118             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,0,0,94);
3119             break;
3120         case E_XC_OP1_PURE_WHITE_100IRE_PATTERN:
3121             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,940,940,940);
3122             break;
3123         case E_XC_OP1_PURE_WHITE_90IRE_PATTERN:
3124             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,846,846,846);
3125             break;
3126         case E_XC_OP1_PURE_WHITE_80IRE_PATTERN:
3127             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,752,752,752);
3128             break;
3129         case E_XC_OP1_PURE_WHITE_70IRE_PATTERN:
3130             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,658,658,658);
3131             break;
3132         case E_XC_OP1_PURE_WHITE_60IRE_PATTERN:
3133             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,564,564,564);
3134             break;
3135         case E_XC_OP1_PURE_WHITE_50IRE_PATTERN:
3136             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,470,470,470);
3137             break;
3138         case E_XC_OP1_PURE_WHITE_40IRE_PATTERN:
3139             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,376,376,376);
3140             break;
3141         case E_XC_OP1_PURE_WHITE_30IRE_PATTERN:
3142             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,282,282,282);
3143             break;
3144         case E_XC_OP1_PURE_WHITE_20IRE_PATTERN:
3145             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,188,188,188);
3146             break;
3147         case E_XC_OP1_PURE_WHITE_10IRE_PATTERN:
3148             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,94,94,94);
3149             break;
3150         case E_XC_OP1_PURE_GAMMA_GREY1_PATTERN:
3151             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,178,178,178);
3152             break;
3153         case E_XC_OP1_PURE_GAMMA_GREY2_PATTERN:
3154             MDrv_SC_OP1_Pure_Color_Tile_Pattern(pInstance, 8,12,50,50,50);
3155             break;
3156         default:
3157             printf("Error : Not support this pattern !!");
3158             enResult = E_APIXC_RET_FAIL_INVALID_PARAMETER;
3159             break;
3160     }
3161 
3162     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK01_02_L, 0x00,BIT(7)); //input source enable
3163     SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BK10_19_L, 0x00,BIT(1)); //window color en : off
3164 #if (FRC_INSIDE && (HW_DESIGN_4K2K_VER == 6))
3165     if (IsVBY1_16LANE((MS_U8)pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.eLPLL_Type))
3166     {
3167         SC_W2BYTEMSK(psXCInstPri->u32DeviceID, REG_SC_BKCB_17_L, 0x00,BIT(1));
3168     }
3169 #endif
3170 
3171     return enResult;
3172 }
3173 
MDrv_SC_OP1_PatGen_Disable(void * pInstance)3174 MS_BOOL MDrv_SC_OP1_PatGen_Disable(void *pInstance)
3175 {
3176     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3177     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3178     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3179     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3180     if(!pXCResourcePrivate->stdrvXC_MVideo_Context.bOP1_PatGen_Init)
3181         return FALSE;
3182 
3183     //disable the op1 test pattern
3184     MHal_SC_OP1_Pattern_enable(DISABLE);
3185 
3186     //recover to original setting
3187     MHal_SC_OP1_Pattern_restore_setting();
3188 
3189     // due to change di1lb, need to wait HW done
3190     MsOS_DelayTask(50);
3191 
3192     return TRUE;
3193 }
3194 
MDrv_SC_OP1_Align_Width_Height(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt,MS_U16 * u16AlignWidth,MS_U16 * u16AlignHeight)3195 void MDrv_SC_OP1_Align_Width_Height(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt, MS_U16 *u16AlignWidth, MS_U16 *u16AlignHeight)
3196 {
3197     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3198     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3199     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3200     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3201     #if 0
3202     if ((g_XC_InitData.stPanelInfo.u16Width > 1900) && (g_XC_InitData.stPanelInfo.u16Height > 1000))
3203     {
3204         // FHD case
3205         *u16AlignWidth = (MS_U16)(1920/u16HTileCnt +0.5) * u16HTileCnt;
3206         *u16AlignHeight = (MS_U16)(1080/u16VTileCnt +0.5) * u16VTileCnt;
3207     }
3208     else
3209     {
3210         // HD case
3211         *u16AlignWidth = (MS_U16)(1366/u16HTileCnt +0.5) * u16HTileCnt;
3212         *u16AlignHeight = (MS_U16)(768/u16VTileCnt +0.5) * u16VTileCnt;
3213     }
3214     #else
3215     *u16AlignWidth = (MS_U16)(pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Width/u16HTileCnt +0.5) * u16HTileCnt;
3216     *u16AlignHeight = (MS_U16)(pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Height/u16VTileCnt +0.5) * u16VTileCnt;
3217     #endif
3218 }
3219 
MDrv_SC_OP1_HW_Default_Pattern(void * pInstance,MS_U8 u8Val)3220 void MDrv_SC_OP1_HW_Default_Pattern(void *pInstance, MS_U8 u8Val)
3221 {
3222     //clear default pattern
3223     MHal_SC_OP1_Pattern_pure_color(0x00);
3224 
3225     //disable border
3226     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3227 
3228     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3229     MDrv_SC_OP1_Align_Width_Height(pInstance, 1, 1, &u16HTotalSize, &u16VTotalSize);
3230     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3231 
3232     MHal_SC_OP1_Pattern_pure_color(u8Val);
3233     MHal_SC_OP1_Pattern_enable(ENABLE);
3234 }
3235 
MDrv_SC_OP1_WB_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)3236 void MDrv_SC_OP1_WB_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
3237 {
3238     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3239     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3240     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3241     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3242     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3243     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3244 
3245     //clear default pattern
3246     MHal_SC_OP1_Pattern_pure_color(0x00);
3247 
3248     //disable border
3249     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3250 
3251 
3252     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3253 
3254     u16HTileSize = u16HTotalSize/u16HTileCnt;
3255     u16VTileSize = u16VTotalSize/u16VTileCnt;
3256     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3257 
3258     MHal_SC_OP1_Pattern_sram_writestart();
3259 
3260     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3261 
3262     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3263     {
3264         MHal_SC_OP1_Pattern_customize_blcok(8,2,true,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3265 
3266         MHal_SC_OP1_Pattern_customize_blcok(1,2,true,false,160,160,160,E_XC_OP1_PATTERN_TYPE_PURE);
3267         MHal_SC_OP1_Pattern_customize_blcok(6,2,false,false,263,263,263,E_XC_OP1_PATTERN_TYPE_PURE);
3268         MHal_SC_OP1_Pattern_customize_blcok(1,2,false,true,100,100,100,E_XC_OP1_PATTERN_TYPE_PURE);
3269 
3270         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3271 
3272         MHal_SC_OP1_Pattern_customize_blcok(1,2,true,false,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3273         MHal_SC_OP1_Pattern_customize_blcok(6,2,false,false,678,678,678,E_XC_OP1_PATTERN_TYPE_PURE);
3274         MHal_SC_OP1_Pattern_customize_blcok(1,2,false,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3275 
3276         MHal_SC_OP1_Pattern_customize_blcok(8,2,true,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3277     }
3278     else
3279     {
3280         MHal_SC_OP1_Pattern_customize_blcok(8,2,true,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3281 
3282         MHal_SC_OP1_Pattern_customize_blcok(1,2,true,false,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3283         MHal_SC_OP1_Pattern_customize_blcok(6,2,false,false,678,678,678,E_XC_OP1_PATTERN_TYPE_PURE);
3284         MHal_SC_OP1_Pattern_customize_blcok(1,2,false,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3285 
3286         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3287 
3288         MHal_SC_OP1_Pattern_customize_blcok(1,2,true,false,160,160,160,E_XC_OP1_PATTERN_TYPE_PURE);
3289         MHal_SC_OP1_Pattern_customize_blcok(6,2,false,false,263,263,263,E_XC_OP1_PATTERN_TYPE_PURE);
3290         MHal_SC_OP1_Pattern_customize_blcok(1,2,false,true,100,100,100,E_XC_OP1_PATTERN_TYPE_PURE);
3291 
3292         MHal_SC_OP1_Pattern_customize_blcok(8,1,true,true,512,512,512,E_XC_OP1_PATTERN_TYPE_PURE);
3293     }
3294 
3295     MHal_SC_OP1_Pattern_sram_writedone();
3296 }
3297 
MDrv_SC_OP1_Pure_Color_V_Bar_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)3298 void MDrv_SC_OP1_Pure_Color_V_Bar_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
3299 {
3300     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3301     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3302     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3303     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3304 
3305     if (!pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3306     {
3307         MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x10);
3308     }
3309     else
3310     {
3311 
3312     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3313     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3314 
3315     //clear default pattern
3316     MHal_SC_OP1_Pattern_pure_color(0x00);
3317 
3318     //disable border
3319     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3320 
3321     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3322 
3323     u16HTileSize = u16HTotalSize/u16HTileCnt;
3324     u16VTileSize = u16VTotalSize/u16VTileCnt;
3325     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3326 
3327     MHal_SC_OP1_Pattern_sram_writestart();
3328 
3329     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3330 
3331 
3332     #if 1
3333     // For mirror case
3334     MHal_SC_OP1_Pattern_customize_blcok(1,11,true,false,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3335     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3336     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3337     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3338     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3339     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3340     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3341     MHal_SC_OP1_Pattern_customize_blcok(1,11,false,true,1023,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3342     #else
3343     if (g_XC_InitData.bMirror)
3344     {
3345         MHal_SC_OP1_Pattern_customize_blcok(1,11,true,false,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3346         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3347         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3348         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3349         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3350         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3351         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3352         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,true,1023,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3353     }
3354     else
3355     {
3356         MHal_SC_OP1_Pattern_customize_blcok(1,11,true,false,1023,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3357         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3358         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3359         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3360         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3361         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3362         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,false,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3363         MHal_SC_OP1_Pattern_customize_blcok(1,11,false,true,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3364     }
3365     #endif
3366 
3367     MHal_SC_OP1_Pattern_sram_writedone();
3368     }
3369 
3370 }
MDrv_SC_OP1_Pure_Color_H_Bar_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)3371 void MDrv_SC_OP1_Pure_Color_H_Bar_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
3372 {
3373     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3374     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3375     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3376     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3377 
3378     if (!pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3379     {
3380         MDrv_SC_OP1_HW_Default_Pattern(pInstance, 0x90);
3381     }
3382     else
3383     {
3384         MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3385         MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3386 
3387         //clear default pattern
3388         MHal_SC_OP1_Pattern_pure_color(0x00);
3389 
3390         //disable border
3391         MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3392 
3393         MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3394 
3395         u16HTileSize = u16HTotalSize/u16HTileCnt;
3396         u16VTileSize = u16VTotalSize/u16VTileCnt;
3397         MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3398 
3399         MHal_SC_OP1_Pattern_sram_writestart();
3400 
3401         MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3402 
3403         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3404         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3405         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3406         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,1023,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3407         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3408         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,0,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3409         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,1023,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3410         MHal_SC_OP1_Pattern_customize_blcok(8,0,true,true,1023,1023,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3411 
3412         MHal_SC_OP1_Pattern_sram_writedone();
3413     }
3414 }
3415 
MDrv_SC_OP1_Pure_Gray_Bar_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt,MS_U8 block_Size,MS_U8 repeat_Num,MS_U8 level)3416 void MDrv_SC_OP1_Pure_Gray_Bar_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt, MS_U8 block_Size, MS_U8 repeat_Num, MS_U8 level)
3417 {
3418     MS_U8 i;
3419     MS_U16 u16ValPerLevel_10bits=0;
3420     MS_U16 u16Cur_Val =0;
3421     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3422     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3423     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3424     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3425 
3426     u16ValPerLevel_10bits = (1024/level) ;
3427 
3428     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3429     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3430 
3431     //clear default pattern
3432     MHal_SC_OP1_Pattern_pure_color(0x00);
3433 
3434     //disable border
3435     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3436 
3437     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3438 
3439     u16HTileSize = u16HTotalSize/u16HTileCnt;
3440     u16VTileSize = u16VTotalSize/u16VTileCnt;
3441     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3442 
3443     MHal_SC_OP1_Pattern_sram_writestart();
3444 
3445     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3446 
3447     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3448     {
3449         for(i=0;i<level;i++)
3450         {
3451             if(i==0)
3452             {
3453                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3454             }else if(i== (level -1))
3455             {
3456                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0, 0, 0,E_XC_OP1_PATTERN_TYPE_PURE);
3457             }else
3458             {
3459                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,u16Cur_Val, u16Cur_Val, u16Cur_Val,E_XC_OP1_PATTERN_TYPE_PURE);
3460             }
3461             u16Cur_Val -= ((u16ValPerLevel_10bits) & 0x3ff);
3462         }
3463     }
3464     else
3465     {
3466         for(i=0;i<level;i++)
3467         {
3468             if(i==0)
3469             {
3470                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3471             }else if(i== (level -1))
3472             {
3473                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3474             }else
3475             {
3476                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,u16Cur_Val, u16Cur_Val, u16Cur_Val,E_XC_OP1_PATTERN_TYPE_PURE);
3477             }
3478 
3479             u16Cur_Val += ((u16ValPerLevel_10bits) & 0x3ff);
3480         }
3481     }
3482 
3483     MHal_SC_OP1_Pattern_sram_writedone();
3484 
3485 }
3486 
MDrv_SC_OP1_Pure_RGB_32_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt,MS_U8 block_Size,MS_U8 repeat_Num,MS_U8 level)3487 void MDrv_SC_OP1_Pure_RGB_32_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt, MS_U8 block_Size,MS_U8 repeat_Num,MS_U8 level)
3488 {
3489     MS_U8 i;
3490     MS_U16 u16ValPerLevel_10bits=0;
3491     MS_U16 u16Cur_Val =0;
3492     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3493     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3494     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3495     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3496 
3497     u16ValPerLevel_10bits = (1024/level) ;
3498 
3499     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3500     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3501 
3502     //clear default pattern
3503     MHal_SC_OP1_Pattern_pure_color(0x00);
3504 
3505     //disable border
3506     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3507 
3508     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3509 
3510     u16HTileSize = u16HTotalSize/u16HTileCnt;
3511     u16VTileSize = u16VTotalSize/u16VTileCnt;
3512     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3513 
3514     MHal_SC_OP1_Pattern_sram_writestart();
3515 
3516     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3517 
3518     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3519     {
3520         //Blue
3521         u16Cur_Val = 1024;
3522 
3523         for(i=0;i<level;i++)
3524         {
3525             if(i==0)
3526             {
3527                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x00, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3528             }else if(i== (level -1))
3529             {
3530                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3531             }else
3532             {
3533                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,0x00, 0x00, u16Cur_Val,E_XC_OP1_PATTERN_TYPE_PURE);
3534             }
3535             u16Cur_Val -= ((u16ValPerLevel_10bits) & 0x3ff);
3536         }
3537 
3538         u16Cur_Val = 1024;
3539         //Green
3540         for(i=0;i<level;i++)
3541         {
3542             if(i==0)
3543             {
3544                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x3FF, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3545             }else if(i== (level -1))
3546             {
3547                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3548             }else
3549             {
3550                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,0x00, u16Cur_Val, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3551             }
3552             u16Cur_Val -= ((u16ValPerLevel_10bits) & 0x3ff);
3553         }
3554 
3555         u16Cur_Val = 1024;
3556         //Red
3557         for(i=0;i<level;i++)
3558         {
3559             if(i==0)
3560             {
3561                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x3FF, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3562             }else if(i== (level -1))
3563             {
3564                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3565             }else
3566             {
3567                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,u16Cur_Val, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3568             }
3569             u16Cur_Val -= ((u16ValPerLevel_10bits) & 0x3ff);
3570         }
3571 
3572         u16Cur_Val = 1024;
3573         //Gray
3574         for(i=0;i<level;i++)
3575         {
3576             if(i==0)
3577             {
3578                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3579             }else if(i== (level -1))
3580             {
3581                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x00, 0x00, 0x0,E_XC_OP1_PATTERN_TYPE_PURE);
3582             }else
3583             {
3584                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,u16Cur_Val, u16Cur_Val, u16Cur_Val,E_XC_OP1_PATTERN_TYPE_PURE);
3585             }
3586             u16Cur_Val -= ((u16ValPerLevel_10bits) & 0x3ff);
3587         }
3588         u16Cur_Val = 1024;
3589     }
3590     else
3591     {
3592         //Gray
3593         for(i=0;i<level;i++)
3594         {
3595             if(i==0)
3596             {
3597                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3598             }else if(i== (level -1))
3599             {
3600                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3601             }else
3602             {
3603                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,u16Cur_Val, u16Cur_Val, u16Cur_Val,E_XC_OP1_PATTERN_TYPE_PURE);
3604             }
3605             u16Cur_Val += ((u16ValPerLevel_10bits) & 0x3ff);
3606         }
3607 
3608         u16Cur_Val = 0;
3609 
3610         //Red
3611         for(i=0;i<level;i++)
3612         {
3613             if(i==0)
3614             {
3615                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3616             }else if(i== (level -1))
3617             {
3618                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x3FF, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3619             }else
3620             {
3621                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,u16Cur_Val, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3622             }
3623             u16Cur_Val += ((u16ValPerLevel_10bits) & 0x3ff);
3624         }
3625         u16Cur_Val = 0;
3626 
3627         //Green
3628         for(i=0;i<level;i++)
3629         {
3630             if(i==0)
3631             {
3632                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3633             }else if(i== (level -1))
3634             {
3635                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x00, 0x3FF, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3636             }else
3637             {
3638                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,0x00, u16Cur_Val, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3639             }
3640             u16Cur_Val += ((u16ValPerLevel_10bits) & 0x3ff);
3641         }
3642         u16Cur_Val = 0;
3643 
3644         //Blue
3645         for(i=0;i<level;i++)
3646         {
3647             if(i==0)
3648             {
3649                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3650             }else if(i== (level -1))
3651             {
3652                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,TRUE,0x00, 0x00, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3653             }else
3654             {
3655                 MHal_SC_OP1_Pattern_customize_blcok(block_Size,repeat_Num,FALSE,FALSE,0x00, 0x00, u16Cur_Val,E_XC_OP1_PATTERN_TYPE_PURE);
3656             }
3657             u16Cur_Val += ((u16ValPerLevel_10bits) & 0x3ff);
3658         }
3659         u16Cur_Val = 0;
3660     }
3661 
3662     MHal_SC_OP1_Pattern_sram_writedone();
3663 }
3664 
MDrv_SC_OP1_Pure_RGB_Checkerboard_Pattern_GBChange(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)3665 void MDrv_SC_OP1_Pure_RGB_Checkerboard_Pattern_GBChange(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
3666 {
3667     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3668     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3669     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3670     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3671     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3672     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3673 
3674     //clear default pattern
3675     MHal_SC_OP1_Pattern_pure_color(0x00);
3676 
3677     //disable border
3678     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3679 
3680     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3681 
3682     u16HTileSize = u16HTotalSize/u16HTileCnt;
3683     u16VTileSize = u16VTotalSize/u16VTileCnt;
3684     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3685 
3686     MHal_SC_OP1_Pattern_sram_writestart();
3687 
3688     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3689 
3690     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3691     {
3692         MHal_SC_OP1_Pattern_customize_blcok(1,0,TRUE,FALSE,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3693         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3694         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,TRUE,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3695         MHal_SC_OP1_Pattern_customize_blcok(1,0,TRUE,FALSE,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3696         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3697         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,TRUE,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3698         MHal_SC_OP1_Pattern_customize_blcok(1,0,TRUE,FALSE,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3699         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3700         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,TRUE,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3701     }
3702     else
3703     {
3704         MHal_SC_OP1_Pattern_customize_blcok(1,0,TRUE,FALSE,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3705         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3706         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,TRUE,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3707         MHal_SC_OP1_Pattern_customize_blcok(1,0,TRUE,FALSE,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3708         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3709         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,TRUE,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3710         MHal_SC_OP1_Pattern_customize_blcok(1,0,TRUE,FALSE,0,1023,0,E_XC_OP1_PATTERN_TYPE_PURE);
3711         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0,0,1023,E_XC_OP1_PATTERN_TYPE_PURE);
3712         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,TRUE,1023,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
3713     }
3714 
3715     MHal_SC_OP1_Pattern_sram_writedone();
3716 }
3717 
MDrv_SC_OP1_Dotfade_Gray_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)3718 void MDrv_SC_OP1_Dotfade_Gray_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
3719 {
3720     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3721     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3722     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3723     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3724     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3725     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3726 
3727     //clear default pattern
3728     MHal_SC_OP1_Pattern_pure_color(0x00);
3729 
3730     //disable border
3731     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3732 
3733     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3734 
3735     u16HTileSize = u16HTotalSize/u16HTileCnt;
3736     u16VTileSize = u16VTotalSize/u16VTileCnt;
3737     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3738 
3739     MHal_SC_OP1_Pattern_sram_writestart();
3740 
3741     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3742 
3743     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3744     {
3745         MHal_SC_OP1_Pattern_set_dotfade_value(236, 236, 236);
3746         MHal_SC_OP1_Pattern_set_dotfade_overfollow_protection(TRUE, TRUE, TRUE);
3747         MHal_SC_OP1_Pattern_customize_blcok(8, 11, TRUE, TRUE, 1023, 1023, 1023, E_XC_OP1_PATTERN_TYPE_DOTFADE);
3748     }
3749     else
3750     {
3751         MHal_SC_OP1_Pattern_set_dotfade_value(18, 18, 18);
3752         MHal_SC_OP1_Pattern_set_dotfade_overfollow_protection(TRUE, TRUE, TRUE);
3753         MHal_SC_OP1_Pattern_customize_blcok(8, 11, TRUE, TRUE, 0, 0, 0, E_XC_OP1_PATTERN_TYPE_DOTFADE);
3754     }
3755 
3756     MHal_SC_OP1_Pattern_sram_writedone();
3757 
3758 }
3759 
MDrv_SC_OP1_Calibratoin_Color_Dotfade_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)3760 void MDrv_SC_OP1_Calibratoin_Color_Dotfade_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
3761 {
3762     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
3763     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
3764     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
3765     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
3766     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
3767     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
3768 
3769     //clear default pattern
3770     MHal_SC_OP1_Pattern_pure_color(0x00);
3771 
3772     //disable border
3773     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
3774 
3775     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
3776 
3777     u16HTileSize = u16HTotalSize/u16HTileCnt;
3778     u16VTileSize = u16VTotalSize/u16VTileCnt;
3779     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
3780 
3781     MHal_SC_OP1_Pattern_sram_writestart();
3782 
3783     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
3784 
3785     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
3786     {
3787         //dotfade---------------------------------------------------------------------------------
3788         MHal_SC_OP1_Pattern_set_dotfade_value(236, 236, 236);
3789         MHal_SC_OP1_Pattern_set_dotfade_overfollow_protection(TRUE, TRUE, TRUE);
3790         MHal_SC_OP1_Pattern_customize_blcok(8,1, TRUE, TRUE, 1023, 1023, 1023, E_XC_OP1_PATTERN_TYPE_DOTFADE);
3791 
3792         //entry8: black
3793         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3794         //entry7: blue
3795         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3796         //entry6: red
3797         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3798         //entry5: pink
3799         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x00,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3800         //entry4: green
3801         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x3FF,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3802         //entry3: (0,255,255)
3803         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3804         //entry2: yellow
3805         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3806         //entry1: white
3807         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3808 
3809         //
3810         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3811         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3812         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3813         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3814         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3815         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3816         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3817         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3818 
3819         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3820         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3821         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3822         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3823         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3824         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3825         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3826         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3827 
3828         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3829         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3830         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3831         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3832         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3833         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3834         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3835         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3836 
3837         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3838         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3839         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3840         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3841         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3842         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3843         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3844         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3845     }
3846     else
3847     {
3848         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3849         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3850         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3851         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3852         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3853         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3854         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3855         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3856 
3857         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3858         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3859         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3860         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3861         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3862         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3863         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3864         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3865 
3866         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3867         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3868         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3869         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3870         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3871         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3872         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3873         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3874 
3875         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3876         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3877         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3878         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3879         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3880         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3881         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00, 0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3882         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x3FF, 0x3FF, 0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3883 
3884         //entry1: white
3885         MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3886         //entry2: yellow
3887         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x3FF,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3888         //entry3: (0,255,255)
3889         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3890         //entry4: green
3891         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x3FF,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3892         //entry5: pink
3893         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x00,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3894         //entry6: red
3895         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x3FF, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3896         //entry7: blue
3897         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0x00, 0x00,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
3898         //entry8: black
3899         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
3900 
3901         //dotfade---------------------------------------------------------------------------------
3902         MHal_SC_OP1_Pattern_set_dotfade_value(18, 18, 18);
3903         MHal_SC_OP1_Pattern_set_dotfade_overfollow_protection(TRUE, TRUE, TRUE);
3904         MHal_SC_OP1_Pattern_customize_blcok(8,1, TRUE, TRUE, 0, 0, 0, E_XC_OP1_PATTERN_TYPE_DOTFADE);
3905     }
3906 
3907     MHal_SC_OP1_Pattern_sram_writedone();
3908 
3909 }
3910 
MDrv_SC_OP1_Set_Border_Type(MS_U8 * u8GetType,MS_U8 u8Type1,MS_U8 u8Type2,MS_U8 u8Type3,MS_U8 u8Type4,MS_U8 u8Type5)3911 void MDrv_SC_OP1_Set_Border_Type(MS_U8 *u8GetType, MS_U8 u8Type1, MS_U8 u8Type2, MS_U8 u8Type3, MS_U8 u8Type4, MS_U8 u8Type5)
3912 {
3913     u8GetType[0] = u8Type1;
3914     u8GetType[1] = u8Type2;
3915     u8GetType[2] = u8Type3;
3916     u8GetType[3] = u8Type4;
3917     u8GetType[4] = u8Type5;
3918 }
3919 
MDrv_SC_OP1_Set_Border_Val(MS_U8 u8BoldValType,MS_U8 u8ValType)3920 XC_OP1_PatGen_Border MDrv_SC_OP1_Set_Border_Val(MS_U8 u8BoldValType, MS_U8 u8ValType)
3921 {
3922     XC_OP1_PatGen_Border tile;
3923     memset(&tile , 0 , sizeof(XC_OP1_PatGen_Border));
3924 
3925     switch(u8BoldValType)
3926     {
3927             case 0:
3928                 tile.u8TopBold = 1;
3929                 tile.u8BottomBold =1;
3930                 tile.u8LeftBold =1;
3931                 tile.u8RightBold =1;
3932                 break;
3933             case 1:
3934                 tile.u8TopBold = 1;
3935                 tile.u8BottomBold =1;
3936                 tile.u8LeftBold =3;
3937                 tile.u8RightBold =1;
3938 
3939                 break;
3940             case 2:
3941                 tile.u8TopBold = 3;
3942                 tile.u8BottomBold =1;
3943                 tile.u8LeftBold =1;
3944                 tile.u8RightBold =1;
3945 
3946                 break;
3947             case 3:
3948                 tile.u8TopBold = 1;
3949                 tile.u8BottomBold =1;
3950                 tile.u8LeftBold =1;
3951                 tile.u8RightBold =3;
3952 
3953                 break;
3954             case 4:
3955                 tile.u8TopBold = 1;
3956                 tile.u8BottomBold =3;
3957                 tile.u8LeftBold =1;
3958                 tile.u8RightBold =1;
3959 
3960                 break;
3961             case 5:
3962                 tile.u8TopBold = 3;
3963                 tile.u8BottomBold =1;
3964                 tile.u8LeftBold =3;
3965                 tile.u8RightBold =1;
3966 
3967                 break;
3968             case 6:
3969                 tile.u8TopBold = 3;
3970                 tile.u8BottomBold =1;
3971                 tile.u8LeftBold =1;
3972                 tile.u8RightBold =3;
3973 
3974                 break;
3975             case 7:
3976                 tile.u8TopBold = 1;
3977                 tile.u8BottomBold =3;
3978                 tile.u8LeftBold =1;
3979                 tile.u8RightBold =3;
3980 
3981                 break;
3982             case 8:
3983                 tile.u8TopBold = 1;
3984                 tile.u8BottomBold =3;
3985                 tile.u8LeftBold =3;
3986                 tile.u8RightBold =1;
3987 
3988                 break;
3989             case 9:
3990                 tile.u8TopBold = 3;
3991                 tile.u8BottomBold =3;
3992                 tile.u8LeftBold =1;
3993                 tile.u8RightBold =1;
3994 
3995                 break;
3996             case 10:
3997                 tile.u8TopBold = 1;
3998                 tile.u8BottomBold =1;
3999                 tile.u8LeftBold =3;
4000                 tile.u8RightBold =3;
4001 
4002                 break;
4003             case 11:
4004                 tile.u8TopBold = 3;
4005                 tile.u8BottomBold =1;
4006                 tile.u8LeftBold =3;
4007                 tile.u8RightBold =3;
4008 
4009             case 12:
4010                 tile.u8TopBold = 3;
4011                 tile.u8BottomBold =3;
4012                 tile.u8LeftBold =1;
4013                 tile.u8RightBold =3;
4014 
4015                 break;
4016             case 13:
4017                 tile.u8TopBold = 1;
4018                 tile.u8BottomBold =3;
4019                 tile.u8LeftBold =3;
4020                 tile.u8RightBold =3;
4021 
4022                 break;
4023             case 14:
4024                 tile.u8TopBold = 3;
4025                 tile.u8BottomBold =3;
4026                 tile.u8LeftBold =3;
4027                 tile.u8RightBold =1;
4028 
4029                 break;
4030 
4031             case 15:
4032                 tile.u8TopBold = 3;
4033                 tile.u8BottomBold =3;
4034                 tile.u8LeftBold =3;
4035                 tile.u8RightBold =3;
4036 
4037                 break;
4038 
4039             default:
4040                 tile.u8TopBold = 1;
4041                 tile.u8BottomBold =1;
4042                 tile.u8LeftBold =1;
4043                 tile.u8RightBold =1;
4044                 break;
4045     }
4046 
4047     switch(u8ValType)
4048     {
4049             case 0:
4050                 tile.bTop = 0;
4051                 tile.bBottom =0;
4052                 tile.bLeft =0;
4053                 tile.bRight =0;
4054                 break;
4055             case 1:
4056                 tile.bTop = 0;
4057                 tile.bBottom =0;
4058                 tile.bLeft =1;
4059                 tile.bRight =0;
4060                 break;
4061             case 2:
4062                 tile.bTop = 1;
4063                 tile.bBottom =0;
4064                 tile.bLeft =0;
4065                 tile.bRight =0;
4066                 break;
4067             case 3:
4068                 tile.bTop = 0;
4069                 tile.bBottom =0;
4070                 tile.bLeft =0;
4071                 tile.bRight =1;
4072                 break;
4073             case 4:
4074                 tile.bTop = 0;
4075                 tile.bBottom =1;
4076                 tile.bLeft =0;
4077                 tile.bRight =0;
4078                 break;
4079             case 5:
4080                 tile.bTop = 1;
4081                 tile.bBottom =0;
4082                 tile.bLeft =1;
4083                 tile.bRight =0;
4084                 break;
4085             case 6:
4086                 tile.bTop = 1;
4087                 tile.bBottom =0;
4088                 tile.bLeft =0;
4089                 tile.bRight =1;
4090                 break;
4091             case 7:
4092                 tile.bTop = 0;
4093                 tile.bBottom =1;
4094                 tile.bLeft =0;
4095                 tile.bRight =1;
4096                 break;
4097             case 8:
4098                 tile.bTop = 0;
4099                 tile.bBottom =1;
4100                 tile.bLeft =1;
4101                 tile.bRight =0;
4102                 break;
4103             case 9:
4104                 tile.bTop = 1;
4105                 tile.bBottom =1;
4106                 tile.bLeft =0;
4107                 tile.bRight =0;
4108                 break;
4109             case 10:
4110                 tile.bTop = 0;
4111                 tile.bBottom =0;
4112                 tile.bLeft =1;
4113                 tile.bRight =1;
4114                 break;
4115             case 11:
4116                 tile.bTop = 1;
4117                 tile.bBottom =0;
4118                 tile.bLeft =1;
4119                 tile.bRight =1;
4120                 break;
4121             case 12:
4122                 tile.bTop = 1;
4123                 tile.bBottom =1;
4124                 tile.bLeft =0;
4125                 tile.bRight =1;
4126                 break;
4127             case 13:
4128                 tile.bTop = 0;
4129                 tile.bBottom =1;
4130                 tile.bLeft =1;
4131                 tile.bRight =1;
4132                 break;
4133             case 14:
4134                 tile.bTop = 1;
4135                 tile.bBottom =1;
4136                 tile.bLeft =1;
4137                 tile.bRight =0;
4138                 break;
4139 
4140             case 15:
4141                 tile.bTop = 1;
4142                 tile.bBottom =1;
4143                 tile.bLeft =1;
4144                 tile.bRight =1;
4145                 break;
4146 
4147             default:
4148                 tile.bTop = 0;
4149                 tile.bBottom =0;
4150                 tile.bLeft =0;
4151                 tile.bRight =0;
4152                 break;
4153     }
4154 
4155     return tile;
4156 }
4157 
MDrv_SC_OP1_Set_Border_Sram(MS_U8 * u8BoldValType,MS_U8 * u8ValType)4158 void MDrv_SC_OP1_Set_Border_Sram(MS_U8 *u8BoldValType, MS_U8 *u8ValType)
4159 {
4160     XC_OP1_PatGen_Border tile1,tile2,tile3,tile4,tile5;
4161 
4162     tile1 = MDrv_SC_OP1_Set_Border_Val(u8BoldValType[0], u8ValType[0]);
4163     tile2 = MDrv_SC_OP1_Set_Border_Val(u8BoldValType[1], u8ValType[1]);
4164     tile3 = MDrv_SC_OP1_Set_Border_Val(u8BoldValType[2], u8ValType[2]);
4165     tile4 = MDrv_SC_OP1_Set_Border_Val(u8BoldValType[3], u8ValType[3]);
4166     tile5 = MDrv_SC_OP1_Set_Border_Val(u8BoldValType[4], u8ValType[4]);
4167 
4168     MHal_SC_OP1_Pattern_set_border_sram(tile1, tile2, tile3, tile4, tile5);
4169 }
4170 
MDrv_SC_OP1_Set_Pattern2_Border(void * pInstance)4171 void MDrv_SC_OP1_Set_Pattern2_Border(void *pInstance)
4172 {
4173     MS_U8 u8BoldValType[5] = {0};
4174     MS_U8 u8ValType[5] = {0};
4175     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
4176     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
4177     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
4178     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
4179 
4180     MHal_SC_OP1_Pattern_enable_border(TRUE,0x3FF,0x3FF,0x3FF);
4181 
4182     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
4183     { //mirror mode
4184 
4185      //0~50
4186      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4187      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4188 
4189      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4190      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4191 
4192      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4193      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4194 
4195      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,13,13,13,13);
4196      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4197 
4198      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4199      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4200 
4201      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4202      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4203 
4204      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,15,15,15);
4205      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4206 
4207      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4208      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4209 
4210      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4211      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4212 
4213      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4214      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4215 
4216      //51~100
4217      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4218      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4219 
4220      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4221      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4222 
4223      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,5);
4224      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4225 
4226      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,5,2,2);
4227      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4228 
4229      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,2);
4230      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4231 
4232      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,5,2,6);
4233      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4234 
4235      MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
4236      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4237 
4238      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4239      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4240 
4241      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
4242      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4243 
4244      MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
4245      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4246 
4247      //101~150
4248      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4249      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4250 
4251      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
4252      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4253 
4254      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
4255      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4256 
4257      MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
4258      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4259 
4260      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
4261      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4262 
4263      MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
4264      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4265 
4266      MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
4267      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4268 
4269      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4270      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4271 
4272      MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
4273      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4274 
4275      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
4276      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4277 
4278      //151~200
4279      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4280      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4281 
4282      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
4283      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4284 
4285      MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
4286      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4287 
4288      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4289      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4290 
4291      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
4292      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4293 
4294      MDrv_SC_OP1_Set_Border_Type(u8ValType,3,8,4,7,8);
4295      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4296 
4297      MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,4,4);
4298      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4299 
4300      MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,7,8);
4301      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4302 
4303      MDrv_SC_OP1_Set_Border_Type(u8ValType,4,7,11,11,11);
4304      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4305 
4306      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4307      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4308 
4309      //201~250
4310      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4311      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4312 
4313      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,13,13);
4314      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4315 
4316      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4317      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4318 
4319      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4320      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4321 
4322      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,5);
4323      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4324 
4325      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,5,2,2);
4326      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4327 
4328      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,2);
4329      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4330 
4331      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,5,2,6);
4332      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4333 
4334      MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,1,0);
4335      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4336 
4337      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4338      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4339 
4340      //251~300
4341      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
4342      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4343 
4344      MDrv_SC_OP1_Set_Border_Type(u8ValType,3,5,2,6,1);
4345      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4346 
4347      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4348      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4349 
4350      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
4351      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4352 
4353      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
4354      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4355 
4356      MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
4357      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4358 
4359      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
4360      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4361 
4362      MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,8,4);
4363      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4364 
4365      MDrv_SC_OP1_Set_Border_Type(u8ValType,7,1,0,0,0);
4366      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4367 
4368      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4369      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4370 
4371      //301~350
4372      MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,5);
4373      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4374 
4375      MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,1,0,0);
4376      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4377 
4378      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4379      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4380 
4381      MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
4382      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4383 
4384      MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,8,4);
4385      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4386 
4387      MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,4,4);
4388      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4389 
4390      MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,7,8,4);
4391      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4392 
4393      MDrv_SC_OP1_Set_Border_Type(u8ValType,7,15,15,15,15);
4394      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4395 
4396      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4397      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4398 
4399      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4400      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4401 
4402      //351~400
4403      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,11,11,11);
4404      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4405 
4406      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4407      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4408 
4409      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4410      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4411 
4412      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,13,13);
4413      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4414 
4415      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4416      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4417 
4418      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4419      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4420 
4421      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,15);
4422      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4423 
4424      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4425      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4426 
4427      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4428      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4429 
4430      MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4431      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4432 
4433      //401~432
4434      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4435      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4436 
4437      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4438      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4439 
4440      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4441      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4442 
4443      MDrv_SC_OP1_Set_Border_Type(u8ValType,11,13,13,13,13);
4444      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4445 
4446      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4447      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4448 
4449      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4450      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4451 
4452      MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,0,0,0);
4453      MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4454     }
4455     else
4456     {
4457         //0~50
4458         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4459         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4460 
4461         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4462         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4463 
4464         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4465         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4466 
4467         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,13,13,13,13);
4468         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4469 
4470         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4471         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4472 
4473         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4474         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4475 
4476         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,15,15,15);
4477         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4478 
4479         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4480         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4481 
4482         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4483         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4484 
4485         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,11,11);
4486         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4487 
4488         //51~100
4489         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4490         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4491 
4492         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4493         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4494 
4495         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,13);
4496         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4497 
4498         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4499         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4500 
4501         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4502         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4503 
4504         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4505         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4506 
4507         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4508         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4509 
4510         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4511         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4512 
4513         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4514         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4515 
4516         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,5,2,6,5);
4517         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4518 
4519         //101~150
4520         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,2);
4521         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4522 
4523         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,6,5);
4524         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4525 
4526         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,1,0,3);
4527         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4528 
4529         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
4530         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4531 
4532         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
4533         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4534 
4535         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,1,0);
4536         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4537 
4538         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
4539         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4540 
4541         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4542         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4543 
4544         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,5,2,6,1);
4545         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4546 
4547         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
4548         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4549 
4550         //151~200
4551         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4552         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4553 
4554         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
4555         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4556 
4557         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
4558         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4559 
4560         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4561         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4562 
4563         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,8,4);
4564         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4565 
4566         MDrv_SC_OP1_Set_Border_Type(u8ValType,7,1,0,3,1);
4567         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4568 
4569         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4570         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4571 
4572         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,5);
4573         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4574 
4575         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,8,4,7);
4576         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4577 
4578         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,4,4,4);
4579         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4580 
4581         //201~250
4582         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,4,7);
4583         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4584 
4585         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,11,11);
4586         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4587 
4588         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4589         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4590 
4591         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4592         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4593 
4594         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,13);
4595         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4596 
4597         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4598         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4599 
4600         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4601         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4602 
4603         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4604         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4605 
4606         MDrv_SC_OP1_Set_Border_Type(u8ValType,5,2,6,5,2);
4607         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4608 
4609         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,2);
4610         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4611 
4612         //251~300
4613         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,6,5,2);
4614         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4615 
4616         MDrv_SC_OP1_Set_Border_Type(u8ValType,6,1,0,3,1);// 1
4617         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4618 
4619         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4620         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4621 
4622         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
4623         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4624 
4625         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// 2
4626         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4627 
4628         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
4629         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4630 
4631         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
4632         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4633 
4634         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// 3
4635         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4636 
4637         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
4638         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4639 
4640         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4641         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4642 
4643         //301~350
4644         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);// 4
4645         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4646 
4647         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
4648         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4649 
4650         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4651         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4652 
4653         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
4654         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4655 
4656         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// 5
4657         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4658 
4659         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4660         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4661 
4662         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
4663         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4664 
4665         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);// 6
4666         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4667 
4668         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
4669         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4670 
4671         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
4672         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4673 
4674         //351~400
4675         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,8,4,7);
4676         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4677 
4678         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,4,4,4);
4679         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4680 
4681         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,4,7);
4682         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4683 
4684         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,15,15);
4685         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4686 
4687         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4688         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4689 
4690         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4691         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4692 
4693         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4694         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4695 
4696         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4697         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4698 
4699         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,15);
4700         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4701 
4702         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,15,15,15,11);
4703         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4704 
4705         //401~432
4706         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4707         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4708 
4709         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4710         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4711 
4712         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
4713         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4714 
4715         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,13,13,13,13);
4716         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4717 
4718         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4719         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4720 
4721         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
4722         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4723 
4724         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,0,0,0);
4725         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
4726 
4727     }
4728 }
4729 
MDrv_SC_OP1_1_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)4730 void MDrv_SC_OP1_1_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
4731 {
4732     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
4733     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
4734     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
4735     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
4736     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
4737     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
4738 
4739     //clear default pattern
4740     MHal_SC_OP1_Pattern_pure_color(0x00);
4741 
4742     //disable border
4743     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
4744 
4745     if ((pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Width < 1900)
4746         && (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Height < 1000))
4747     {
4748         // For special pattern!!!!  HD/FHD use different tile cnt !!!!
4749         u16HTileCnt = 20;
4750         u16VTileCnt = 18;
4751     }
4752 
4753     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
4754 
4755     u16HTileSize = u16HTotalSize/u16HTileCnt;
4756     u16VTileSize = u16VTotalSize/u16VTileCnt;
4757     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
4758 
4759     MHal_SC_OP1_Pattern_sram_writestart();
4760 
4761     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
4762 
4763     if ((pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Width > 1900)
4764         && (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.stPanelInfo.u16Height > 1000))
4765     {
4766         // FHD case
4767         MHal_SC_OP1_Pattern_customize_blcok(48,15,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4768         MHal_SC_OP1_Pattern_customize_blcok(48,15,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4769         MHal_SC_OP1_Pattern_customize_blcok(48,15,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4770         MHal_SC_OP1_Pattern_customize_blcok(48,15,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4771 
4772         MHal_SC_OP1_Pattern_customize_blcok(12,10,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4773         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4774         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4775         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4776         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4777         MHal_SC_OP1_Pattern_customize_blcok(12,10,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4778 
4779         MHal_SC_OP1_Pattern_customize_blcok(12,11,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4780         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4781         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4782         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4783         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4784         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4785         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4786         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4787         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4788         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4789         MHal_SC_OP1_Pattern_customize_blcok(12,11,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4790 
4791         MHal_SC_OP1_Pattern_customize_blcok(12,37,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4792         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4793         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4794         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4795         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4796         MHal_SC_OP1_Pattern_customize_blcok(12,37,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4797 
4798         MHal_SC_OP1_Pattern_customize_blcok(12,11,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4799         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4800         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4801         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4802         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4803         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4804         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4805         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4806         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4807         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4808         MHal_SC_OP1_Pattern_customize_blcok(12,11,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4809 
4810         MHal_SC_OP1_Pattern_customize_blcok(12,37,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4811         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4812         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4813         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4814         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4815         MHal_SC_OP1_Pattern_customize_blcok(12,37,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4816 
4817         MHal_SC_OP1_Pattern_customize_blcok(12,11,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4818         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4819         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4820         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4821         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4822         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4823         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4824         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4825         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4826         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4827         MHal_SC_OP1_Pattern_customize_blcok(12,11,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4828 
4829         MHal_SC_OP1_Pattern_customize_blcok(12,37,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4830         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4831         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4832         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4833         MHal_SC_OP1_Pattern_customize_blcok(42,37,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4834         MHal_SC_OP1_Pattern_customize_blcok(12,37,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4835 
4836         MHal_SC_OP1_Pattern_customize_blcok(12,11,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4837         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4838         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4839         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4840         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4841         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4842         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4843         MHal_SC_OP1_Pattern_customize_blcok(42,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4844         MHal_SC_OP1_Pattern_customize_blcok(6,11,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4845         MHal_SC_OP1_Pattern_customize_blcok(9,11,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4846         MHal_SC_OP1_Pattern_customize_blcok(12,11,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4847 
4848 
4849         MHal_SC_OP1_Pattern_customize_blcok(12,10,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4850         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4851         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4852         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4853         MHal_SC_OP1_Pattern_customize_blcok(42,10,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4854         MHal_SC_OP1_Pattern_customize_blcok(12,10,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4855 
4856         MHal_SC_OP1_Pattern_customize_blcok(48,15,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4857         MHal_SC_OP1_Pattern_customize_blcok(48,15,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4858         MHal_SC_OP1_Pattern_customize_blcok(48,15,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4859         MHal_SC_OP1_Pattern_customize_blcok(48,15,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4860 
4861     }
4862     else
4863     {
4864         // HD case
4865         MHal_SC_OP1_Pattern_customize_blcok(0x14,0x00,TRUE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4866 
4867         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4868         MHal_SC_OP1_Pattern_customize_blcok(0x12,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4869         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4870 
4871         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4872         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4873         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4874         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4875         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4876         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4877         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4878         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4879         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4880         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4881         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4882 
4883         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x02,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4884         MHal_SC_OP1_Pattern_customize_blcok(0x12,0x02,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4885         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x02,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4886 
4887         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4888         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4889         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4890         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4891         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4892         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4893         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4894         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4895         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4896         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4897         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4898 
4899         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x03,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4900         MHal_SC_OP1_Pattern_customize_blcok(0x12,0x03,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4901         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x03,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4902 
4903         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4904         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4905         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4906         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4907         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4908         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4909         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4910         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4911         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4912         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4913         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4914 
4915         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x02,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4916         MHal_SC_OP1_Pattern_customize_blcok(0x12,0x02,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4917         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x02,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4918 
4919         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4920         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4921         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4922         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4923         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4924         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4925         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4926         MHal_SC_OP1_Pattern_customize_blcok(0x04,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4927         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4928         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4929         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4930 
4931         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4932         MHal_SC_OP1_Pattern_customize_blcok(0x12,0x00,FALSE,FALSE,0x3FF, 0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
4933         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4934 
4935         MHal_SC_OP1_Pattern_customize_blcok(0x14,0x00,TRUE,TRUE,0x00, 0x00,0x00,E_XC_OP1_PATTERN_TYPE_PURE);
4936     }
4937 
4938     MHal_SC_OP1_Pattern_sram_writedone();
4939 
4940 }
4941 
MDrv_SC_OP1_2_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)4942 void MDrv_SC_OP1_2_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
4943 {
4944     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
4945     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
4946     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
4947     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
4948     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
4949     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
4950 
4951     //clear default pattern
4952     MHal_SC_OP1_Pattern_pure_color(0x00);
4953 
4954     //disable border
4955     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
4956 
4957     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
4958 
4959     u16HTileSize = u16HTotalSize/u16HTileCnt;
4960     u16VTileSize = u16VTotalSize/u16VTileCnt;
4961     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
4962 
4963     MHal_SC_OP1_Pattern_sram_writestart();
4964 
4965     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
4966 
4967     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
4968     {
4969         //Fade: 3
4970         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
4971         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
4972         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
4973         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
4974         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
4975         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
4976         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
4977         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
4978         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
4979         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
4980         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
4981         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
4982         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
4983         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
4984         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
4985         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
4986 
4987         //Fade:  2
4988         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(239)<<2, (88)<<2,(204)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
4989         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(233)<<2, (89)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
4990         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(238)<<2, (73)<<2,(248)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
4991         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(249)<<2, (52)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
4992         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(253)<<2, (2)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
4993         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(0)<<2, (219)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
4994         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(79)<<2, (209)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
4995         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(82)<<2, (223)<<2,(230)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
4996         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(67)<<2, (229)<<2,(231)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
4997         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(44)<<2, (240)<<2,(238)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
4998         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(0)<<2, (255)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
4999         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(221)<<2, (254)<<2,(22)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5000         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(223)<<2, (252)<<2,(76)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5001         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(255)<<2, (249)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5002         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(254)<<2, (248)<<2,(48)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5003         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(255)<<2, (255)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5004         //Fade: 1
5005         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5006         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(247)<<2, (247)<<2,(247)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5007         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(229)<<2, (229)<<2,(229)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5008         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(211)<<2, (211)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5009         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(194)<<2, (194)<<2,(194)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5010         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(181)<<2, (181)<<2,(181)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5011         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(160)<<2, (160)<<2,(160)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5012         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(145)<<2, (145)<<2,(145)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5013         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(128)<<2, (128)<<2,(128)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5014         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(112)<<2, (112)<<2,(112)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5015         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(97)<<2, (97)<<2,(97)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5016         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(80)<<2, (80)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5017         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(64)<<2, (64)<<2,(64)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5018         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(49)<<2, (49)<<2,(49)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5019         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(19)<<2, (15)<<2,(12)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5020         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5021 
5022         //rigth pure block
5023         MHal_SC_OP1_Pattern_customize_blcok(0x03,0x07,TRUE,FALSE,0x13c, 0x28,0x1d5, E_XC_OP1_PATTERN_TYPE_PURE);
5024 
5025         //middle pure block
5026         MHal_SC_OP1_Pattern_customize_blcok(0x0a,0x07,FALSE,FALSE,0x161, 0x161,0x161, E_XC_OP1_PATTERN_TYPE_PURE);
5027 
5028         //left pure block
5029         MHal_SC_OP1_Pattern_customize_blcok(0x03,0x07,FALSE,TRUE,0x00, 0x1c9,0x2f2, E_XC_OP1_PATTERN_TYPE_PURE);
5030 
5031 
5032         //pure gray 55
5033         int i=0;
5034         for(i=0;i<16;i++)
5035         {
5036             if(i==0){
5037                 MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5038             }else if (i==15)
5039             {
5040                 MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
5041             }else
5042                 {
5043                 MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
5044             }
5045         }
5046          //item:3
5047          //LineDot: right
5048          MHal_SC_OP1_Pattern_customize_blcok(3,1,TRUE,FALSE,0x470,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5049         //end of linedot item 3-----------------------------------------------------------------------------
5050 
5051 
5052         //Pure between LineDot itme3
5053         MHal_SC_OP1_Pattern_customize_blcok(10,1,FALSE,FALSE,0x336, 0x336,0x336, E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5054 
5055 
5056          //linedot item3--------------------------------------------------------------------------------------
5057          //LineDot : left
5058 
5059         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,TRUE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5060 
5061         //itme2
5062         //LineDot: right
5063         MHal_SC_OP1_Pattern_customize_blcok(3,2,TRUE,FALSE,0x570,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5064 
5065         //Pure between LineDot itme2
5066         MHal_SC_OP1_Pattern_customize_blcok(10,2,FALSE,FALSE,0x336, 0x336,0x336, E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5067 
5068          //linedot item2--------------------------------------------------------------------------------------
5069          //LineDot : left
5070         MHal_SC_OP1_Pattern_customize_blcok(3,2,FALSE,TRUE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5071 
5072         //itme1:
5073         //LineDot: right
5074         MHal_SC_OP1_Pattern_customize_blcok(3,1,TRUE,FALSE,0x1F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5075 
5076         //Pure between LineDot item1
5077         MHal_SC_OP1_Pattern_customize_blcok(10,1,FALSE,FALSE,0x336, 0x336,0x336, E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5078 
5079          //linedot item1--------------------------------------------------------------------------------------
5080          //LineDot : left
5081         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,TRUE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5082 
5083         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5084         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(241)<<2, (241)<<2,(241)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5085         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(224)<<2, (224)<<2,(224)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5086         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(205)<<2, (205)<<2,(205)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5087         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(187)<<2, (187)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5088         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(172)<<2, (172)<<2,(172)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5089         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(157)<<2, (157)<<2,(157)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5090         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(139)<<2, (139)<<2,(139)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5091         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(121)<<2, (121)<<2,(121)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5092         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(106)<<2, (106)<<2,(106)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5093         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(88)<<2, (88)<<2,(88)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5094         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(71)<<2, (71)<<2,(71)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5095         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(55)<<2, (55)<<2,(55)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5096         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(37)<<2, (37)<<2,(37)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5097         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(19)<<2, (19)<<2,(19)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5098         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5099 
5100         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,(0)<<2, (0)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5101         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (1)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5102         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (1)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5103         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (0)<<2,(202)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5104         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (1)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5105         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(170)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5106         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (2)<<2,(154)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5107         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(2)<<2, (0)<<2,(136)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5108         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(120)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5109         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (2)<<2,(105)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5110         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(2)<<2, (0)<<2,(84)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5111         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(72)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5112         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(3)<<2, (0)<<2,(57)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5113         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (1)<<2,(32)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5114         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(20)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5115         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5116 
5117         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(254)<<2, (0)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5118         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(240)<<2, (1)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5119         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(224)<<2, (0)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5120         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(203)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5121         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(185)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5122         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(171)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5123         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(153)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5124         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(136)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5125         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(121)<<2, (1)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5126         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(105)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5127         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(85)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5128         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(72)<<2, (0)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5129         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(56)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5130         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(36)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5131         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(21)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5132         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5133 
5134         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,((2)<<2),((255)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5135         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((242)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5136         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((3)<<2),((225)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5137         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((3)<<2),((204)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5138         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((3)<<2),((186)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5139         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((171)<<2),((4)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5140         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((156)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5141         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((2)<<2),((138)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5142         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((120)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5143         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((105)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5144         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((2)<<2),((87)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5145         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((2)<<2),((72)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5146         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((55)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5147         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((36)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5148         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((19)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5149         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5150     }
5151     else
5152     {
5153         //Fade: Green
5154         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5155         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((19)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5156         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((36)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5157         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((55)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5158         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((2)<<2),((72)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5159         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((2)<<2),((87)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5160         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((105)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5161         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((120)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5162         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((2)<<2),((138)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5163         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((156)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5164         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((171)<<2),((4)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5165         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((3)<<2),((186)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5166         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((3)<<2),((204)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5167         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((3)<<2),((225)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5168         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((0)<<2),((242)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5169         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,((2)<<2),((255)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5170 
5171 
5172         //Fade: Red
5173         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5174         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(21)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5175         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(36)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5176         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(56)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5177         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(72)<<2, (0)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5178         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(85)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5179         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(105)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5180         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(121)<<2, (1)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5181         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(136)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5182         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(153)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5183         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(171)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5184         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(185)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5185         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(203)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5186         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(224)<<2, (0)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5187         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(240)<<2, (1)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5188         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(254)<<2, (0)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5189 
5190         //Fade: Blue
5191         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5192         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(20)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5193         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (1)<<2,(32)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5194         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(3)<<2, (0)<<2,(57)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5195         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(72)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5196         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(2)<<2, (0)<<2,(84)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5197         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (2)<<2,(105)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5198         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(120)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5199         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(2)<<2, (0)<<2,(136)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5200         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (2)<<2,(154)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5201         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(0)<<2, (0)<<2,(170)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5202         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (1)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5203         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (0)<<2,(202)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5204         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (1)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5205         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,(1)<<2, (1)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5206         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,(0)<<2, (0)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5207 
5208 
5209         //Fade:  White
5210         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5211         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(19)<<2, (19)<<2,(19)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5212         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(37)<<2, (37)<<2,(37)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5213         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(55)<<2, (55)<<2,(55)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5214         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(71)<<2, (71)<<2,(71)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5215         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(88)<<2, (88)<<2,(88)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5216         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(106)<<2, (106)<<2,(106)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5217         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(121)<<2, (121)<<2,(121)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5218         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(139)<<2, (139)<<2,(139)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5219         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(157)<<2, (157)<<2,(157)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5220         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(172)<<2, (172)<<2,(172)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5221         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(187)<<2, (187)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5222         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(205)<<2, (205)<<2,(205)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5223         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(224)<<2, (224)<<2,(224)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5224         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(241)<<2, (241)<<2,(241)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5225         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5226 
5227         //linedot item1--------------------------------------------------------------------------------------
5228         //LineDot : left
5229         MHal_SC_OP1_Pattern_customize_blcok(3,1,TRUE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5230 
5231         //Pure between LineDot
5232         MHal_SC_OP1_Pattern_customize_blcok(10,1,FALSE,FALSE,0x336, 0x336,0x336, E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5233 
5234         //LineDot: right
5235         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,TRUE,0x0F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5236 
5237          //linedot item2--------------------------------------------------------------------------------------
5238          //LineDot : left
5239         MHal_SC_OP1_Pattern_customize_blcok(3,2,TRUE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5240 
5241          //Pure between LineDot
5242         MHal_SC_OP1_Pattern_customize_blcok(10,2,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5243 
5244          //LineDot: right
5245         MHal_SC_OP1_Pattern_customize_blcok(3,2,FALSE,TRUE,0x570,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5246 
5247          //linedot item3--------------------------------------------------------------------------------------
5248          //LineDot : left
5249         MHal_SC_OP1_Pattern_customize_blcok(3,1,TRUE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5250 
5251         //Pure between LineDot
5252         MHal_SC_OP1_Pattern_customize_blcok(10,1,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5253 
5254          //LineDot: right
5255         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,TRUE,0x470,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
5256 
5257         //pure gray 55
5258         int i=0;
5259         for(i=0;i<16;i++)
5260         {
5261             if(i==0){
5262                 MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,0xDC, 0xDC,0xDC, E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5263             }else if (i==15)
5264             {
5265                 MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,0xDC, 0xDC,0xDC, E_XC_OP1_PATTERN_TYPE_PURE);
5266             }else
5267                 {
5268                 MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,0xDC, 0xDC,0xDC, E_XC_OP1_PATTERN_TYPE_PURE);
5269             }
5270         }
5271 
5272         //left pure block
5273         MHal_SC_OP1_Pattern_customize_blcok(0x03,0x07,TRUE,FALSE,0x00, 0x1c9,0x2f2,E_XC_OP1_PATTERN_TYPE_PURE);
5274         //middle pure block
5275         MHal_SC_OP1_Pattern_customize_blcok(0x0a,0x07,FALSE,FALSE,0x161, 0x161,0x161,E_XC_OP1_PATTERN_TYPE_PURE);
5276         //rigth pure block
5277         MHal_SC_OP1_Pattern_customize_blcok(0x03,0x07,FALSE,TRUE,0x13c, 0x28,0x1d5,E_XC_OP1_PATTERN_TYPE_PURE);
5278 
5279         //Fade: 1
5280         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5281         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(19)<<2, (15)<<2,(12)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5282         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(49)<<2, (49)<<2,(49)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5283         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(64)<<2, (64)<<2,(64)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5284         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(80)<<2, (80)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5285         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(97)<<2, (97)<<2,(97)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5286         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(112)<<2, (112)<<2,(112)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5287         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(128)<<2, (128)<<2,(128)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5288         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(145)<<2, (145)<<2,(145)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5289         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(160)<<2, (160)<<2,(160)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5290         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(181)<<2, (181)<<2,(181)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5291         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(194)<<2, (194)<<2,(194)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5292         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(211)<<2, (211)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5293         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(229)<<2, (229)<<2,(229)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5294         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(247)<<2, (247)<<2,(247)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5295         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5296 
5297 
5298         //Fade:  2
5299         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,TRUE,FALSE,(255)<<2, (255)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5300         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(254)<<2, (248)<<2,(48)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5301         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(255)<<2, (249)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5302         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(223)<<2, (252)<<2,(76)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5303         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(221)<<2, (254)<<2,(22)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5304         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(0)<<2, (255)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5305         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(44)<<2, (240)<<2,(238)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5306         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(67)<<2, (229)<<2,(231)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5307         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(82)<<2, (223)<<2,(230)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5308         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(79)<<2, (209)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5309         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(0)<<2, (219)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5310         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(253)<<2, (2)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5311         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(249)<<2, (52)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5312         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(238)<<2, (73)<<2,(248)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5313         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,FALSE,(233)<<2, (89)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5314         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x00,FALSE,TRUE,(239)<<2, (88)<<2,(204)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5315 
5316         //Fade: 3
5317         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,TRUE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
5318         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
5319         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
5320         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
5321         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
5322         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
5323         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
5324         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
5325         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
5326         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
5327         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
5328         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
5329         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
5330         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
5331         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
5332         MHal_SC_OP1_Pattern_customize_blcok(0x01,0x01,FALSE,TRUE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
5333 
5334     }
5335 
5336     MHal_SC_OP1_Pattern_sram_write_enable(FALSE);
5337 
5338     MHal_SC_OP1_Pattern_sram_write_fastmode(FALSE);
5339 
5340     MHal_SC_OP1_Pattern_set_wraddr(0x00);
5341 
5342     //reg_sram_jump_thr
5343     MHal_SC_OP1_Pattern_set_jump_threshold(0x00);
5344 
5345     MHal_SC_OP1_Pattern_sram_write_enable(TRUE);
5346 
5347     MHal_SC_OP1_Pattern_sram_write_fastmode(TRUE);
5348 
5349     //Write the border command to second SRAM
5350     MDrv_SC_OP1_Set_Pattern2_Border(pInstance);
5351 
5352     MHal_SC_OP1_Pattern_sram_write_enable(FALSE);
5353 
5354     MHal_SC_OP1_Pattern_sram_write_fastmode(FALSE);
5355 
5356     MHal_SC_OP1_Pattern_sram_writedone();
5357 
5358 }
5359 
MDrv_SC_OP1_Set_Pattern3_Border(void * pInstance)5360 void MDrv_SC_OP1_Set_Pattern3_Border(void* pInstance)
5361 {
5362     MS_U8 u8BoldValType[5] = {0};
5363     MS_U8 u8ValType[5] = {0};
5364     MS_U16 i;
5365     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
5366     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
5367     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
5368     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
5369 
5370     MHal_SC_OP1_Pattern_enable_border(TRUE,0x3FF,0x3FF,0x3FF);
5371 
5372     for(i=0;i< ((((24*17))/5));i++)   //tile1~ tile405
5373     {
5374         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5375         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5376     }
5377 
5378     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5379     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5380 
5381     //tile411 ~ 415
5382     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5383     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5384     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5385 
5386     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5387     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5388     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5389 
5390     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5391     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5392 
5393     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5394     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5395     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5396 
5397     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5398     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5399     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5400 
5401     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5402     MDrv_SC_OP1_Set_Border_Type(u8ValType,3,10,10,10,10);
5403     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5404     //row1 : starts at 437
5405 
5406     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5407     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5408     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5409 
5410     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5411     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5412 
5413     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5414     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,1,0,0);
5415     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5416 
5417     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5418     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5419     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5420 
5421     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5422     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5423     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5424 
5425     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5426     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5427     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5428 
5429     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5430     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5431 
5432     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5433     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,1,0,0,0);
5434     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5435 
5436     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5437     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,10);
5438     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5439 
5440     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5441     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5442     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5443 
5444     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5445     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5446 
5447     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5448     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5449     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5450 
5451     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5452     MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5453     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5454 
5455     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5456     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,10,10);
5457     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5458 
5459     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5460     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5461     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5462 
5463     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5464     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5465 
5466     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5467     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,1);
5468     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5469 
5470     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5471     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5472     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5473 
5474     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5475     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,13,13,13);
5476     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5477 
5478     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5479     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5480     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5481 
5482     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5483     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5484 
5485     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5486     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,1,0);
5487     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5488 
5489     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5490     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5491     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5492 
5493     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5494     MDrv_SC_OP1_Set_Border_Type(u8ValType,3,11,11,11,11); //row2
5495     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5496 
5497     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5498     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
5499     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5500 
5501     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
5502     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5503 
5504     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5505     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,1,0,0);
5506     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5507 
5508     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5509     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5510     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5511 
5512     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5513     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5514     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5515 
5516     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5517     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5518     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5519 
5520     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5521     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5522 
5523     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5524     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,1,0,0,0);
5525     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5526 
5527     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5528     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,13);
5529     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5530 
5531     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5532     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5533     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5534 
5535     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5536     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5537 
5538     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5539     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5540     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5541 
5542     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5543     MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5544     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5545 
5546     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5547     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,11,11); //row 3
5548     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5549 
5550     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5551     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
5552     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5553 
5554     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
5555     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5556 
5557     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5558     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,1);
5559     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5560 
5561     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5562     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5563 
5564     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5565     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,10,10,10);
5566     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5567 
5568     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5569     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5570     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5571 
5572     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5573     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5574 
5575     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5576     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,1,0);
5577     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5578 
5579     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5580     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5581     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5582 
5583     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5584     MDrv_SC_OP1_Set_Border_Type(u8ValType,3,13,13,13,13);
5585     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5586 
5587     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5588     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5589     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5590 
5591     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
5592     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5593 
5594     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5595     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,1,0,0);
5596     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5597 
5598     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5599     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5600     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5601 
5602     ///-----
5603     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
5604     {
5605         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5606         MDrv_SC_OP1_Set_Border_Type(u8ValType,5,2,6,5,2); //pure block -1
5607         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5608 
5609         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5610         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,2);
5611         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5612 
5613         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,6,5,2);
5614         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5615 
5616         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5617         MDrv_SC_OP1_Set_Border_Type(u8ValType,6,1,0,0,0);
5618         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5619 
5620         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5621         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);//pure block -2
5622         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5623 
5624         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5625         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5626         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5627 
5628         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5629         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5630 
5631         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5632         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
5633         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5634 
5635         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5636         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5637         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5638 
5639         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5640         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5641         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);//pure block -3
5642 
5643         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5644         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5645         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5646 
5647         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5648         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5649 
5650         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5651         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
5652         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5653 
5654         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5655         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5656 
5657         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5658         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3); //pure block -4
5659         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5660 
5661         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5662         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5663         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5664 
5665         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5666         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5667 
5668         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5669         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
5670         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5671 
5672         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5673         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5674 
5675         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5676         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1); //pure block -5
5677         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5678 
5679         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5680         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5681 
5682         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
5683         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5684 
5685         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5686         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5687         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5688 
5689         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5690         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5691         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5692 
5693         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5694         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);//pure block -6
5695         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5696 
5697         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5698         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5699         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5700 
5701         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5702         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5703 
5704         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5705         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5706         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5707 
5708         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5709         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);//pure block -7
5710         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5711 
5712         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5713         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5714         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5715 
5716         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5717         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5718 
5719         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5720         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
5721         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5722 
5723         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5724         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5725         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5726 
5727         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5728         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5729         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);//pure block -8
5730 
5731         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5732         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5733         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5734 
5735         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5736         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5737 
5738         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5739         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
5740         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5741 
5742         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5743         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5744 
5745         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5746         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);//pure block -9
5747         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5748 
5749         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5750         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5751         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5752 
5753         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5754         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5755 
5756         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5757         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
5758         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5759 
5760         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5761         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5762 
5763         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5764         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);//pure block -10
5765         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5766 
5767         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5768         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5769         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5770 
5771         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
5772         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5773 
5774         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5775         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5776         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5777 
5778         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5779         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5780         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5781 
5782         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5783         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0); //pure block -11
5784         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5785 
5786         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5787         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5788         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5789 
5790         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5791         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5792 
5793         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5794         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5795         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5796 
5797         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5798         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1); //pure block -12
5799         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5800 
5801         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5802         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5803         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5804 
5805         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5806         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5807 
5808         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5809         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
5810         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5811 
5812         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5813         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5814         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5815 
5816         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5817         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5818         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType); //pure block -13
5819 
5820         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5821         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5822         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5823 
5824         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5825         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5826 
5827         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5828         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
5829         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5830 
5831         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5832         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5833 
5834         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5835         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);//pure block -14
5836         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5837 
5838         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5839         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5840         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5841 
5842         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5843         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5844 
5845         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5846         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
5847         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5848 
5849         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5850         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5851 
5852         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5853         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);//pure block -15
5854         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5855 
5856         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5857         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5858         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5859 
5860         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
5861         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5862 
5863         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5864         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5865         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5866 
5867         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5868         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5869         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5870 
5871         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5872         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);//pure block -16
5873         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5874 
5875         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5876         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5877         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5878 
5879         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5880         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5881 
5882         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5883         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5884         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5885 
5886         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5887         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);//pure block -17
5888         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5889 
5890         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5891         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5892         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5893 
5894         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5895         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5896 
5897         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5898         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
5899         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5900 
5901         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5902         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5903         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5904 
5905         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5906         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
5907         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);//pure block -18
5908 
5909         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5910         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
5911         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5912 
5913         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5914         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5915 
5916         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5917         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
5918         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5919 
5920         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5921         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5922 
5923         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5924         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);//pure block -19
5925         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5926 
5927         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5928         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5929         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5930 
5931         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5932         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5933 
5934         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5935         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
5936         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5937 
5938         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5939         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5940 
5941         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5942         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);//pure block -20
5943         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5944 
5945         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
5946         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5947 
5948         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
5949         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5950 
5951         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
5952         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
5953         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5954 
5955         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5956         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
5957         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5958 
5959         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5960         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,8,4);//pure block -21
5961         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5962 
5963         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5964         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,4,4);
5965         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5966 
5967         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,7,8,4);
5968         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5969 
5970         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
5971         MDrv_SC_OP1_Set_Border_Type(u8ValType,7,1,0,0,0);
5972         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5973 
5974         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
5975         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,11);//middle pure - 1
5976         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5977 
5978         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5979         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
5980         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5981 
5982         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,15,15,11,11);
5983         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5984 
5985         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
5986         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
5987         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5988 
5989         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
5990         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
5991         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5992 
5993         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
5994         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,10,10);//middle pure - 2
5995         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
5996 
5997         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
5998         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
5999         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6000 
6001         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6002         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6003 
6004         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6005         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,1);
6006         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6007 
6008         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6009         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6010 
6011         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6012         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,10,10,10);//middle pure - 3
6013         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6014 
6015         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6016         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6017         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6018 
6019         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6020         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6021 
6022         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6023         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,1,0);
6024         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6025 
6026         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6027         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6028 
6029         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6030         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,10,10,10,10);//middle pure - 4
6031         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6032 
6033         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6034         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6035         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6036 
6037         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6038         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6039 
6040         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6041         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,1,0,0);
6042         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6043 
6044         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6045         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6046         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6047 
6048         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6049         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13); //middle pure - 5
6050         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6051 
6052         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6053         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
6054         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6055 
6056         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
6057         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6058 
6059         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6060         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,1,0,0,0);
6061         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6062 
6063         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6064         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,5); // linedot1-1
6065         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6066 
6067         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6068         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,5,2,2);
6069         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6070 
6071         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,15,15,2,2);
6072         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6073 
6074         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6075         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,5,2,6);
6076         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6077 
6078         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6079         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6080         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6081 
6082         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6083         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6084         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// linedot1-2
6085 
6086         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6087         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6088         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6089 
6090         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6091         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6092 
6093         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6094         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6095         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6096 
6097         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6098         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6099 
6100         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6101         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// linedot1-3
6102         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6103 
6104         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6105         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6106         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6107 
6108         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6109         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6110 
6111         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6112         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6113         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6114 
6115         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6116         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6117 
6118         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6119         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1); // linedot1-4
6120         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6121 
6122         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6123         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6124         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6125 
6126         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6127         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6128 
6129         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6130         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6131         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6132 
6133         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6134         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6135         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6136 
6137         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6138         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0); // linedot1-5
6139         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6140 
6141         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6142         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6143         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6144 
6145         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6146         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6147 
6148         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6149         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6150         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6151 
6152         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6153         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// linedot1-6
6154         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6155 
6156         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6157         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6158 
6159         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6160         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6161 
6162         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6163         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6164         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6165 
6166         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6167         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6168         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6169 
6170         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6171         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,8,4);// linedot1-7
6172         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6173 
6174         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6175         MDrv_SC_OP1_Set_Border_Type(u8ValType,7,1,0,0,0);
6176         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6177 
6178         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6179         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6180 
6181         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6182         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6183         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6184 
6185         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6186         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6187 
6188         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6189         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,5,2,6);// linedot2-1
6190         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6191 
6192         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6193         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6194         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6195 
6196         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6197         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6198 
6199         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6200         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6201         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6202 
6203         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6204         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6205 
6206         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6207         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1); // linedot2-2
6208         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6209 
6210         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6211         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6212 
6213         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6214         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6215 
6216         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6217         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6218         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6219 
6220         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6221         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6222         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6223 
6224         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6225         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// linedot2-3
6226         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6227 
6228         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6229         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6230         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6231 
6232         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6233         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6234 
6235         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6236         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6237         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6238 
6239         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6240         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// linedot2-4
6241         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6242 
6243         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6244         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6245         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6246 
6247         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6248         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6249 
6250         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6251         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6252         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6253 
6254         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6255         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6256         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6257 
6258         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6259         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6260         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// linedot2-5
6261 
6262         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6263         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6264         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6265 
6266         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6267         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6268 
6269         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6270         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6271         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6272 
6273         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6274         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6275 
6276         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6277         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// linedot2-6
6278         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6279 
6280         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6281         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6282         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6283 
6284         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6285         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6286 
6287         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6288         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6289         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6290 
6291         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6292         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6293 
6294         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6295         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,8,4,7,1);// linedot2-7
6296         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6297 
6298         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6299         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6300         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6301 
6302         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6303         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6304 
6305         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6306         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6307         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6308 
6309         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6310         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6311         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6312 
6313         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6314         MDrv_SC_OP1_Set_Border_Type(u8ValType,5,2,6,1,0);// linedot3-1
6315         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6316 
6317         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6318         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6319         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6320 
6321         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6322         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6323 
6324         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6325         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6326         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6327 
6328         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6329         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// linedot3-2
6330         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6331 
6332         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6333         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6334         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6335 
6336         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6337         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6338 
6339         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6340         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6341         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6342 
6343         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6344         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6345         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6346 
6347         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6348         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6349         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// linedot3-3
6350 
6351         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6352         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6353         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6354 
6355         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6356         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6357 
6358         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6359         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6360         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6361 
6362         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6363         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6364 
6365         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6366         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// linedot3-4
6367         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6368 
6369         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6370         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6371         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6372 
6373         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6374         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6375 
6376         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6377         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6378         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6379 
6380         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6381         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6382 
6383         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6384         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);// linedot3-5
6385         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6386 
6387         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6388         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6389         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6390 
6391         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6392         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6393 
6394         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6395         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6396         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6397 
6398         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6399         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6400         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6401 
6402         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6403         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// linedot3-6
6404         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6405 
6406         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6407         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6408         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6409 
6410         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6411         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6412 
6413         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6414         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6415         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6416 
6417         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6418         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,8);// linedot3-7
6419         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6420 
6421         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6422         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,7,1,0,0);
6423         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6424 
6425         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6426         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6427 
6428         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6429         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6430         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6431 
6432         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6433         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6434         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6435 
6436         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6437         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,11,11);// bottom row
6438         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6439 
6440         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6441         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
6442         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6443 
6444         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
6445         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6446 
6447         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6448         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,1);
6449         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6450 
6451         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6452         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6453 
6454         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6455         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,10,10,10);
6456         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6457 
6458         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6459         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6460         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6461 
6462         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6463         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6464 
6465         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6466         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,1,0);
6467         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6468 
6469         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6470         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6471 
6472         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6473         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,13,13,13,13);
6474         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6475 
6476         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6477         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
6478         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6479 
6480         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
6481         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6482 
6483         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6484         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,1,0,0);
6485         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6486 
6487         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6488         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6489         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6490     }
6491     else
6492     {
6493         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6494         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11); //row4
6495         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6496 
6497         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6498         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
6499         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6500 
6501         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
6502         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6503 
6504         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6505         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,1,0,0,0);
6506         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6507 
6508         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6509         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,10);
6510         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6511 
6512         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6513         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6514         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6515 
6516         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6517         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6518         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6519 
6520         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6521         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6522         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6523 
6524         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6525         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6526         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6527 
6528         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6529         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,13,13);
6530         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6531 
6532         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6533         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
6534         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6535 
6536         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
6537         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6538 
6539         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6540         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,1);
6541         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6542 
6543         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6544         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6545         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6546 
6547         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6548         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,5,2,6); // linedot1-1
6549         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6550 
6551         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6552         MDrv_SC_OP1_Set_Border_Type(u8ValType,5,2,2,2,2);
6553         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6554 
6555         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,6);
6556         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6557 
6558         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6559         MDrv_SC_OP1_Set_Border_Type(u8ValType,5,2,6,1,0);
6560         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6561 
6562         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6563         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6564         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6565 
6566         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6567         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1); // linedot1-2
6568         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6569 
6570         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6571         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6572         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6573 
6574         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6575         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6576 
6577         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6578         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6579         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6580 
6581         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6582         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6583         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6584 
6585         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6586         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// linedot1-3
6587         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6588 
6589         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6590         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6591         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6592 
6593         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6594         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6595 
6596         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6597         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6598         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6599 
6600         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6601         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// linedot1-4
6602         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6603 
6604         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6605         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6606         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6607 
6608         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6609         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6610 
6611         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6612         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6613         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6614 
6615         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6616         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6617         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6618 
6619         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6620         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6621         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// linedot1-5
6622 
6623         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6624         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6625         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6626 
6627         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6628         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6629 
6630         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6631         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6632         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6633 
6634         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6635         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6636 
6637         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6638         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// linedot1-6
6639         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6640 
6641         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6642         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6643         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6644 
6645         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6646         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6647 
6648         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6649         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6650         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6651 
6652         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6653         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6654         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6655 
6656         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6657         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);// linedot1-7
6658         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6659 
6660         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6661         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6662         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6663 
6664         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,8);
6665         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6666 
6667         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6668         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,7,1,0,0);
6669         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6670 
6671         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6672         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6673         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6674 
6675         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6676         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0); //linedot2-1
6677         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6678 
6679         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6680         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6681         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6682 
6683         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,5,2);
6684         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6685 
6686         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6687         MDrv_SC_OP1_Set_Border_Type(u8ValType,6,1,0,0,0);
6688         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6689 
6690         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6691         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);//linedot2-2
6692         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6693 
6694         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6695         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6696         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6697 
6698         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6699         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6700 
6701         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6702         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6703         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6704 
6705         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6706         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6707         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6708 
6709         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6710         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6711         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);//linedot2-3
6712 
6713         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6714         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6715         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6716 
6717         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6718         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6719 
6720         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6721         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6722         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6723 
6724         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6725         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6726 
6727         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6728         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);//linedot2-4
6729         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6730 
6731         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6732         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6733         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6734 
6735         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6736         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6737 
6738         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6739         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6740         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6741 
6742         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6743         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6744         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6745 
6746         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6747         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);//linedot2-5
6748         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6749 
6750         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6751         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6752         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6753 
6754         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6755         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6756 
6757         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6758         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6759         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6760 
6761         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6762         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6763         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6764 
6765         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6766         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);//linedot2-6
6767         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6768 
6769         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6770         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6771         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6772 
6773         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6774         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6775 
6776         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6777         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6778         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6779 
6780         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6781         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);//linedot2-7
6782         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6783 
6784         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6785         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6786 
6787         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6788         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6789 
6790         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6791         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,8,4,7);
6792         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6793 
6794         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6795         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6796         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6797 
6798         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6799         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6800         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);//linedot3-1
6801 
6802         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6803         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6804         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6805 
6806         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6807         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6808 
6809         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6810         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,5,2,6,1);
6811         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6812 
6813         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6814         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6815         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6816 
6817         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6818         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);//linedot3-2
6819         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6820 
6821         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6822         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6823         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6824 
6825         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6826         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6827 
6828         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6829         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
6830         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6831 
6832         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6833         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6834 
6835         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6836         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);//linedot3-3
6837         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6838 
6839         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6840         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6841         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6842 
6843         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
6844         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6845 
6846         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6847         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6848         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6849 
6850         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6851         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6852         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6853 
6854         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6855         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);//linedot3-4
6856         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6857 
6858         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6859         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6860         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6861 
6862         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6863         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6864 
6865         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6866         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6867         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6868 
6869         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6870         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);//linedot3-5
6871         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6872 
6873         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6874         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
6875         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6876 
6877         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6878         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6879 
6880         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6881         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
6882         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6883 
6884         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6885         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6886         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6887 
6888         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6889         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
6890         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);//linedot3-6
6891 
6892         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6893         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
6894         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6895 
6896         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6897         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6898 
6899         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6900         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
6901         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6902 
6903         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6904         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6905 
6906         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6907         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,8,4,7);//linedot3-7
6908         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6909 
6910         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6911         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,4,4,15);
6912         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6913 
6914         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,4,4,4,7);
6915         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6916 
6917         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6918         MDrv_SC_OP1_Set_Border_Type(u8ValType,8,4,7,1,0);
6919         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6920 
6921         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6922         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6923 
6924         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6925         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,11,11,11,11);//middle pure - 1
6926         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6927 
6928         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6929         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
6930         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6931 
6932         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
6933         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6934 
6935         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6936         MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,1,0,0);
6937         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6938 
6939         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6940         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
6941         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6942 
6943         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6944         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10); //middle pure - 2
6945         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6946 
6947         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6948         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6949         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6950 
6951         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6952         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6953 
6954         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
6955         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,1,0,0,0);
6956         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6957 
6958         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6959         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,10);//middle pure - 3
6960         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6961 
6962         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6963         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6964         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6965 
6966         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6967         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6968 
6969         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
6970         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6971         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6972 
6973         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
6974         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
6975         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6976 
6977         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
6978         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,10,10);//middle pure - 4
6979         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6980 
6981         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6982         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6983         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6984 
6985         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
6986         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6987 
6988         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
6989         MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,1);
6990         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6991 
6992         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
6993         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
6994         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6995 
6996         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
6997         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,13,13,13);//middle pure - 5
6998         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
6999 
7000         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7001         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,15);
7002         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7003 
7004         MDrv_SC_OP1_Set_Border_Type(u8ValType,15,13,13,13,13);
7005         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7006 
7007         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7008         MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,1,0);
7009         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7010 
7011         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7012         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7013         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7014 
7015         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7016         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,5,2,6,5); // pure block - 1
7017         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7018 
7019         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7020         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,2,2);
7021         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7022 
7023         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,2,2,6,5);
7024         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7025 
7026         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7027         MDrv_SC_OP1_Set_Border_Type(u8ValType,2,6,1,0,0);
7028         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7029 
7030         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7031         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7032         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7033 
7034         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7035         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0); // pure block - 2
7036         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7037 
7038         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7039         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7040         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7041 
7042         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7043         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7044 
7045         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7046         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7047         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7048 
7049         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7050         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// pure block - 3
7051         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7052 
7053         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7054         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7055         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7056 
7057         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7058         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7059 
7060         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7061         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
7062         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7063 
7064         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7065         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7066         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7067 
7068         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7069         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7070         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// pure block - 4
7071 
7072         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7073         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7074         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7075 
7076         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7077         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7078 
7079         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7080         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
7081         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7082 
7083         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7084         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7085 
7086         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7087         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// pure block - 5
7088         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7089 
7090         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7091         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7092 
7093         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7094         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7095 
7096         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7097         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
7098         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7099 
7100         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7101         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7102 
7103         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7104         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1); // pure block - 6
7105         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7106 
7107         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7108         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7109         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7110 
7111         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
7112         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7113 
7114         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7115         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7116         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7117 
7118         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7119         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7120         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7121 
7122         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7123         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
7124         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7125 
7126         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7127         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7128         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7129 
7130         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7131         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7132 
7133         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7134         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7135         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7136 
7137         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7138         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// pure block - 7
7139         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7140 
7141         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7142         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7143         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7144 
7145         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7146         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7147 
7148         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7149         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
7150         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7151 
7152         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7153         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7154         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7155 
7156         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7157         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7158         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// pure block - 9
7159 
7160         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7161         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7162         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7163 
7164         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7165         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7166 
7167         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7168         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
7169         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7170 
7171         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7172         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7173         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7174 
7175         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7176         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// pure block - 10
7177         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7178 
7179         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7180         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7181         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7182 
7183         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7184         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7185 
7186         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7187         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
7188         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7189 
7190         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7191         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7192         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7193 
7194         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7195         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);// pure block - 11
7196         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7197 
7198         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7199         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7200         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7201 
7202         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
7203         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7204 
7205         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7206         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7207         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7208 
7209         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7210         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7211         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7212 
7213         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7214         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// pure block - 12
7215         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7216 
7217         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7218         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7219         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7220 
7221         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7222         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7223 
7224         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7225         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7226         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7227 
7228         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7229         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// pure block - 13
7230         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7231 
7232         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7233         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7234         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7235 
7236         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7237         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7238 
7239         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7240         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
7241         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7242 
7243         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7244         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7245         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7246 
7247         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7248         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7249         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// pure block - 14
7250 
7251         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7252         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7253         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7254 
7255         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7256         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7257 
7258         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7259         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
7260         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7261 
7262         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7263         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7264         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7265 
7266         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7267         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// pure block - 15
7268         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7269 
7270         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7271         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7272         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7273 
7274         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7275         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7276 
7277         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7278         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
7279         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7280 
7281         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7282         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7283         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7284 
7285         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7286         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);// pure block - 16
7287         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7288 
7289         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7290         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7291         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7292 
7293         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
7294         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7295 
7296         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7297         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7298         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7299 
7300         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7301         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7302         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7303 
7304         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7305         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);// pure block - 17
7306         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7307 
7308         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7309         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7310         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7311 
7312         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7313         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7314 
7315         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7316         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7317         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7318 
7319         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7320         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);// pure block - 18
7321         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7322 
7323         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7324         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,0);
7325         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7326 
7327         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7328         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7329 
7330         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7331         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);
7332         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7333 
7334         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7335         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7336         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7337 
7338         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7339         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,1,0);
7340         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);// pure block - 19
7341 
7342         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7343         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,0,0);
7344         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7345 
7346         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7347         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7348 
7349         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7350         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,1,0,3,1);
7351         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7352 
7353         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7354         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7355 
7356         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7357         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,1,0,3);// pure block - 20
7358         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7359 
7360         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7361         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7362 
7363         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7364         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7365 
7366         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7367         MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,3,1,0);
7368         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7369 
7370         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7371         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7372 
7373         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7374         MDrv_SC_OP1_Set_Border_Type(u8ValType,3,8,4,7,8);// pure block - 21
7375         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7376 
7377         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7378         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,4,4);
7379         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7380 
7381         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,4,4,7,8);
7382         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7383 
7384         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7385         MDrv_SC_OP1_Set_Border_Type(u8ValType,4,7,1,0,0);
7386         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7387 
7388         MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7389         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7390         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7391 
7392     }
7393     ///------
7394 
7395     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7396     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);// bottom row 1 -1
7397     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7398 
7399     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7400     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7401     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7402 
7403     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7404     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7405 
7406     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7407     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,1,0,0,0);
7408     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7409 
7410     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7411     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,10); // bottom row 1 -2
7412     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7413 
7414     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7415     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7416     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7417 
7418     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7419     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7420 
7421     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7422     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7423     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7424 
7425     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7426     MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7427     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7428 
7429     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7430     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,13,13);// bottom row 1 -3
7431     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7432 
7433     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7434     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
7435     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7436 
7437     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
7438     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7439 
7440     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7441     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,1);
7442     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7443 
7444     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7445     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7446 
7447     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7448     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,11,11,11); // bottom row 2 -1
7449     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7450 
7451     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7452     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7453     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7454 
7455     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7456     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7457 
7458     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7459     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,1,0);
7460     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7461 
7462     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7463     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7464 
7465     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7466     MDrv_SC_OP1_Set_Border_Type(u8ValType,3,10,10,10,10);// bottom row 2 -2
7467     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7468 
7469     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7470     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7471     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7472 
7473     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7474     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7475 
7476     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7477     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,1,0,0);
7478     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7479 
7480     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7481     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7482     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7483 
7484     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7485     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);// bottom row 2 -3
7486     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7487 
7488     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7489     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
7490     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7491 
7492     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,13,13,13,13);
7493     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7494 
7495     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7496     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,1,0,0,0);
7497     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7498 
7499     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7500     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,11);// bottom row 3 -1
7501     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7502 
7503     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7504     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7505     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7506 
7507     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7508     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7509 
7510     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7511     MDrv_SC_OP1_Set_Border_Type(u8ValType,11,11,11,11,11);
7512     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7513 
7514     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7515     MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7516     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7517 
7518     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7519     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,3,10,10);// bottom row 3 -2
7520     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7521 
7522     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7523     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7524     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7525 
7526     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7527     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7528 
7529     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7530     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,1);
7531     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7532 
7533     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7534     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7535 
7536     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7537     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,3,10,10,10);// bottom row 3 -3
7538     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7539 
7540     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7541     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7542     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7543 
7544     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7545     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7546 
7547     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,3,1,0);
7548     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,1,0);
7549     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7550 
7551     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7552     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7553 
7554     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7555     MDrv_SC_OP1_Set_Border_Type(u8ValType,3,10,10,10,10);// bottom row 3 -4
7556     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7557 
7558     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7559     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7560     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7561 
7562     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7563     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7564 
7565     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,3,1,0,0);
7566     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,1,0,0);
7567     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7568 
7569     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7570     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7571     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7572 
7573     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7574     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);// bottom row 3 -5
7575     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7576 
7577     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,0);
7578     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7579     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7580 
7581     MDrv_SC_OP1_Set_Border_Type(u8ValType,10,10,10,10,10);
7582     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7583 
7584     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,3,1,0,0,0);
7585     MDrv_SC_OP1_Set_Border_Type(u8ValType,13,1,0,0,0);
7586     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7587 
7588     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,3,1);
7589     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,3,1);
7590     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7591 
7592     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7593     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7594 
7595     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7596     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7597 
7598     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,0,0,0,0,3);
7599     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,3);
7600     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7601 
7602     MDrv_SC_OP1_Set_Border_Type(u8BoldValType,1,0,0,0,0);
7603     MDrv_SC_OP1_Set_Border_Type(u8ValType,1,0,0,0,0);
7604     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7605 
7606     for(i=0;i<(412/5)-1;i++)
7607     {
7608         MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7609         MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7610     }
7611 
7612     MDrv_SC_OP1_Set_Border_Type(u8ValType,0,0,0,0,0);
7613     MDrv_SC_OP1_Set_Border_Sram(u8BoldValType, u8ValType);
7614 
7615 }
7616 
MDrv_SC_OP1_3_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)7617 void MDrv_SC_OP1_3_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
7618 {
7619     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
7620     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
7621     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
7622     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
7623     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
7624     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
7625 
7626     //clear default pattern
7627     MHal_SC_OP1_Pattern_pure_color(0x00);
7628 
7629     //disable border
7630     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
7631 
7632     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
7633 
7634     u16HTileSize = u16HTotalSize/u16HTileCnt;
7635     u16VTileSize = u16VTotalSize/u16VTileCnt;
7636     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
7637 
7638     MHal_SC_OP1_Pattern_sram_writestart();
7639 
7640     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
7641 
7642     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
7643     {
7644 
7645         //bottom black border
7646         MHal_SC_OP1_Pattern_customize_blcok(12,16,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7647         MHal_SC_OP1_Pattern_customize_blcok(12,16,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7648 
7649         //rigth black border - no.12
7650         MHal_SC_OP1_Pattern_customize_blcok(4,0,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7651         MHal_SC_OP1_Pattern_customize_blcok(16,0,FALSE,FALSE,0x3FF,0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
7652         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7653 
7654         //rigth black border - no.12
7655         MHal_SC_OP1_Pattern_customize_blcok(4,4,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7656 
7657         //Fade: 3
7658         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7659         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7660         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7661         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7662         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7663         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7664         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7665         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7666         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7667         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7668         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7669         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7670         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7671         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7672         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7673         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7674 
7675         //left black border - no.12
7676         MHal_SC_OP1_Pattern_customize_blcok(4,4,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7677 
7678         //rigth black border - no.11
7679         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7680 
7681         //Fade:  2
7682         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(239)<<2, (88)<<2,(204)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7683         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(233)<<2, (89)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7684         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(238)<<2, (73)<<2,(248)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7685         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(249)<<2, (52)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7686         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(253)<<2, (2)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7687         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (219)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7688         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(79)<<2, (209)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7689         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(82)<<2, (223)<<2,(230)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7690         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(67)<<2, (229)<<2,(231)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7691         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(44)<<2, (240)<<2,(238)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7692         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (255)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7693         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(221)<<2, (254)<<2,(22)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7694         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(223)<<2, (252)<<2,(76)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7695         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (249)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7696         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(254)<<2, (248)<<2,(48)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7697         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (255)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7698 
7699          //left black border - no.11
7700         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7701 
7702         //rigth black border - no.12
7703         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7704 
7705         //Fade: 1
7706         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7707         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(247)<<2, (247)<<2,(247)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7708         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(229)<<2, (229)<<2,(229)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7709         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(211)<<2, (211)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7710         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(194)<<2, (194)<<2,(194)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7711         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(181)<<2, (181)<<2,(181)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7712         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(160)<<2, (160)<<2,(160)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7713         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(145)<<2, (145)<<2,(145)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7714         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(128)<<2, (128)<<2,(128)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7715         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(112)<<2, (112)<<2,(112)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7716         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(97)<<2, (97)<<2,(97)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7717         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(80)<<2, (80)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7718         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(64)<<2, (64)<<2,(64)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7719         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(49)<<2, (49)<<2,(49)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7720         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(19)<<2, (15)<<2,(12)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7721         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7722 
7723          //left black border - no.12
7724         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7725 
7726         //rigth black border - no.13
7727         MHal_SC_OP1_Pattern_customize_blcok(4,20,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7728 
7729         //rigth pure block
7730         MHal_SC_OP1_Pattern_customize_blcok(3,20,FALSE,FALSE,0x13c, 0x28,0x1d5,E_XC_OP1_PATTERN_TYPE_PURE);
7731 
7732         //middle pure block
7733         MHal_SC_OP1_Pattern_customize_blcok(10,20,FALSE,FALSE,0x161, 0x161,0x161,E_XC_OP1_PATTERN_TYPE_PURE);
7734 
7735         //left pure block
7736         MHal_SC_OP1_Pattern_customize_blcok(3,20,FALSE,FALSE,0x00, 0x1c9,0x2f2,E_XC_OP1_PATTERN_TYPE_PURE);
7737 
7738          //left black border - no.13
7739         MHal_SC_OP1_Pattern_customize_blcok(4,20,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7740 
7741         //rigth black border - no.14
7742         MHal_SC_OP1_Pattern_customize_blcok(4,4,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7743 
7744         //pure gray 55
7745         int i=0;
7746         for(i=0;i<16;i++)
7747         {
7748             MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
7749         }
7750 
7751         //left black border - no.14
7752         MHal_SC_OP1_Pattern_customize_blcok(4,4,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7753 
7754         //rigth black border -
7755         MHal_SC_OP1_Pattern_customize_blcok(4,0,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7756 
7757         //item:4
7758         //LineDot: right
7759         MHal_SC_OP1_Pattern_customize_blcok(3,0,FALSE,FALSE,0x470,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7760         //end of linedot item 4-----------------------------------------------------------------------------
7761 
7762 
7763         //Pure between LineDot itme4
7764         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);
7765 
7766         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
7767 
7768         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
7769 
7770         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);
7771 
7772          //linedot item4--------------------------------------------------------------------------------------
7773          //LineDot : left
7774         MHal_SC_OP1_Pattern_customize_blcok(3,0,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7775 
7776         //left black border -
7777         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7778 
7779         //rigth black border - no.15
7780         MHal_SC_OP1_Pattern_customize_blcok(4,5,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7781 
7782         //item:3
7783         //LineDot: right
7784         MHal_SC_OP1_Pattern_customize_blcok(3,5,FALSE,FALSE,0x470,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7785         //end of linedot item 3-----------------------------------------------------------------------------
7786 
7787 
7788         //Pure between LineDot itme3
7789         MHal_SC_OP1_Pattern_customize_blcok(10,5,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7790 
7791 
7792         //linedot item3--------------------------------------------------------------------------------------
7793         //LineDot : left
7794         MHal_SC_OP1_Pattern_customize_blcok(3,5,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7795 
7796         //left black border - no.15
7797         MHal_SC_OP1_Pattern_customize_blcok(4,5,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7798 
7799 
7800         //rigth black border - no.16
7801         MHal_SC_OP1_Pattern_customize_blcok(4,6,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7802 
7803         //itme2
7804         //LineDot: right
7805         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x570,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7806 
7807         //Pure between LineDot itme2
7808         MHal_SC_OP1_Pattern_customize_blcok(10,6,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7809 
7810         //linedot item2--------------------------------------------------------------------------------------
7811         //LineDot : left
7812         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7813 
7814         //left black border - no.16
7815         MHal_SC_OP1_Pattern_customize_blcok(4,6,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7816 
7817         //rigth black border - no.17
7818         MHal_SC_OP1_Pattern_customize_blcok(4,6,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7819 
7820         //itme1:
7821         //LineDot: right
7822         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x1F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7823 
7824         //Pure between LineDot item1
7825         MHal_SC_OP1_Pattern_customize_blcok(10,6,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7826 
7827         //linedot item1--------------------------------------------------------------------------------------
7828         //LineDot : left
7829         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
7830 
7831         //left black border - no.17
7832         MHal_SC_OP1_Pattern_customize_blcok(4,6,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7833 
7834         //rigth black border - no.18
7835         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7836 
7837         //Fade:  White
7838         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7839         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(241)<<2, (241)<<2,(241)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7840         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(224)<<2, (224)<<2,(224)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7841         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(205)<<2, (205)<<2,(205)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7842         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(187)<<2, (187)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7843         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(172)<<2, (172)<<2,(172)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7844         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(157)<<2, (157)<<2,(157)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7845         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(139)<<2, (139)<<2,(139)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7846         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(121)<<2, (121)<<2,(121)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7847         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(106)<<2, (106)<<2,(106)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7848         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(88)<<2, (88)<<2,(88)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7849         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(71)<<2, (71)<<2,(71)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7850         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(55)<<2, (55)<<2,(55)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7851         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(37)<<2, (37)<<2,(37)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7852         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(19)<<2, (19)<<2,(19)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7853         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7854 
7855         //left black border - no.18
7856         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7857 
7858         //rigth black border - no.19
7859         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7860 
7861         //Fade: Blue
7862         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7863         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7864         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7865         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (0)<<2,(202)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7866         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7867         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(170)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7868         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (2)<<2,(154)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7869         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(2)<<2, (0)<<2,(136)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7870         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(120)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7871         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (2)<<2,(105)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7872         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(2)<<2, (0)<<2,(84)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7873         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(72)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7874         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(3)<<2, (0)<<2,(57)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7875         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (1)<<2,(32)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7876         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(20)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7877         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7878 
7879         //left black border - no.19
7880         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7881 
7882         //rigth black border - no.20
7883         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7884 
7885         //Fade: Red
7886         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(254)<<2, (0)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7887         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(240)<<2, (1)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7888         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(224)<<2, (0)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7889         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(203)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7890         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(185)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7891         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(171)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7892         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(153)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7893         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(136)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7894         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(121)<<2, (1)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7895         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(105)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7896         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(85)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7897         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(72)<<2, (0)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7898         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(56)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7899         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(36)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7900         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(21)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7901         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7902 
7903         //left black border - no.20
7904         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7905 
7906         //rigth black border - no.21
7907         MHal_SC_OP1_Pattern_customize_blcok(4,4,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7908 
7909         //Fade: Green
7910         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((255)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7911         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((242)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7912         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((3)<<2),((225)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7913         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((3)<<2),((204)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7914         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((3)<<2),((186)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7915         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((171)<<2),((4)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7916         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((156)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7917         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((138)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7918         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((120)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7919         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((105)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7920         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((87)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7921         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((72)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7922         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((55)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7923         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((36)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7924         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((19)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7925         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7926 
7927         //left black border - no.21
7928         MHal_SC_OP1_Pattern_customize_blcok(4,4,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7929 
7930         MHal_SC_OP1_Pattern_customize_blcok(4,0,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7931         MHal_SC_OP1_Pattern_customize_blcok(16,0,FALSE,FALSE,0x3FF,0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
7932         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7933 
7934         //top black border
7935         MHal_SC_OP1_Pattern_customize_blcok(12,16,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7936         MHal_SC_OP1_Pattern_customize_blcok(12,16,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7937     }
7938     else
7939     {
7940         //top black border
7941         MHal_SC_OP1_Pattern_customize_blcok(12,16,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7942         MHal_SC_OP1_Pattern_customize_blcok(12,16,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7943 
7944         //top white border
7945         MHal_SC_OP1_Pattern_customize_blcok(4,0,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7946         MHal_SC_OP1_Pattern_customize_blcok(16,0,FALSE,FALSE,0x3FF,0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
7947         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7948 
7949         //left black border - no.1
7950         MHal_SC_OP1_Pattern_customize_blcok(4,4,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7951 
7952         //Fade: Green
7953         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7954         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((19)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7955         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((36)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7956         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((55)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7957         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((72)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7958         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((87)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7959         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((105)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7960         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((120)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7961         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((138)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7962         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((156)<<2),((3)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7963         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((171)<<2),((4)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7964         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((3)<<2),((186)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7965         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((3)<<2),((204)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7966         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((3)<<2),((225)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7967         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((0)<<2),((242)<<2),((0)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7968         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((2)<<2),((255)<<2),((2)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7969 
7970         //rigth black border - no.1
7971         MHal_SC_OP1_Pattern_customize_blcok(4,4,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7972 
7973         //left black border - no.2
7974         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7975 
7976         //Fade: Red
7977         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
7978         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(21)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
7979         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(36)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
7980         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(56)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
7981         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(72)<<2, (0)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
7982         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(85)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
7983         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(105)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
7984         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(121)<<2, (1)<<2,(3)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
7985         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(136)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
7986         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(153)<<2, (1)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
7987         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(171)<<2, (1)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
7988         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(185)<<2, (0)<<2,(0)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
7989         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(203)<<2, (0)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
7990         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(224)<<2, (0)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
7991         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(240)<<2, (1)<<2,(4)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
7992         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(254)<<2, (0)<<2,(2)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
7993 
7994         //rigth black border - no.2
7995         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7996 
7997         //left black border - no.3
7998         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
7999 
8000         //Fade: Blue
8001         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
8002         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(20)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
8003         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (1)<<2,(32)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
8004         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(3)<<2, (0)<<2,(57)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
8005         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(72)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
8006         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(2)<<2, (0)<<2,(84)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
8007         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (2)<<2,(105)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
8008         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(120)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
8009         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(2)<<2, (0)<<2,(136)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
8010         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (2)<<2,(154)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
8011         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(170)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
8012         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
8013         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (0)<<2,(202)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
8014         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
8015         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
8016         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (0)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8017 
8018         //rigth black border - no.3
8019         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8020 
8021         //left black border - no.4
8022         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8023 
8024         //Fade:  White
8025         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
8026         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(19)<<2, (19)<<2,(19)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
8027         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(37)<<2, (37)<<2,(37)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
8028         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(55)<<2, (55)<<2,(55)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
8029         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(71)<<2, (71)<<2,(71)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
8030         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(88)<<2, (88)<<2,(88)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
8031         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(106)<<2, (106)<<2,(106)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
8032         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(121)<<2, (121)<<2,(121)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
8033         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(139)<<2, (139)<<2,(139)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
8034         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(157)<<2, (157)<<2,(157)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
8035         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(172)<<2, (172)<<2,(172)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
8036         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(187)<<2, (187)<<2,(187)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
8037         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(205)<<2, (205)<<2,(205)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
8038         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(224)<<2, (224)<<2,(224)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
8039         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(241)<<2, (241)<<2,(241)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
8040         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8041 
8042         //rigth black border - no.4
8043         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8044 
8045         //left black border - no.5
8046         MHal_SC_OP1_Pattern_customize_blcok(4,6,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8047 
8048         //linedot item1--------------------------------------------------------------------------------------
8049         //LineDot : left
8050         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8051 
8052         //Pure between LineDot
8053         MHal_SC_OP1_Pattern_customize_blcok(10,6,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8054 
8055         //LineDot: right
8056         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x0F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8057 
8058         //rigth black border - no.5
8059         MHal_SC_OP1_Pattern_customize_blcok(4,6,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8060 
8061         //left black border - no.6
8062         MHal_SC_OP1_Pattern_customize_blcok(4,6,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8063 
8064         //linedot item2--------------------------------------------------------------------------------------
8065         //LineDot : left
8066         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8067 
8068         //Pure between LineDot
8069         MHal_SC_OP1_Pattern_customize_blcok(10,6,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8070 
8071         //LineDot: right
8072         MHal_SC_OP1_Pattern_customize_blcok(3,6,FALSE,FALSE,0x570,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8073 
8074         //rigth black border - no.6
8075         MHal_SC_OP1_Pattern_customize_blcok(4,6,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8076 
8077         //left black border - no.7
8078         MHal_SC_OP1_Pattern_customize_blcok(4,5,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8079 
8080         //linedot item3--------------------------------------------------------------------------------------
8081         //LineDot : left
8082         MHal_SC_OP1_Pattern_customize_blcok(3,5,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8083 
8084         //Pure between LineDot
8085         MHal_SC_OP1_Pattern_customize_blcok(10,5,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8086 
8087         //LineDot: right
8088         MHal_SC_OP1_Pattern_customize_blcok(3,5,FALSE,FALSE,0x470,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8089         //end of linedot item1~3-----------------------------------------------------------------------------
8090 
8091         //rigth black border - no.7
8092         MHal_SC_OP1_Pattern_customize_blcok(4,5,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8093 
8094 
8095         //left black border -
8096         MHal_SC_OP1_Pattern_customize_blcok(4,0,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8097 
8098         //linedot item4--------------------------------------------------------------------------------------
8099         //LineDot : left
8100         MHal_SC_OP1_Pattern_customize_blcok(3,0,FALSE,FALSE,0x7F0,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8101 
8102         //Pure between LineDot
8103         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);
8104 
8105         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
8106 
8107         MHal_SC_OP1_Pattern_customize_blcok(1,0,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
8108 
8109         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,FALSE,0x336, 0x336,0x336,E_XC_OP1_PATTERN_TYPE_PURE);
8110 
8111 
8112         //LineDot: right
8113         MHal_SC_OP1_Pattern_customize_blcok(3,0,FALSE,FALSE,0x470,0x03,0x3FF,E_XC_OP1_PATTERN_TYPE_LINEDOT);
8114         //end of linedot item 4-----------------------------------------------------------------------------
8115 
8116         //rigth black border -
8117         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8118 
8119         //left black border - no.8
8120         MHal_SC_OP1_Pattern_customize_blcok(4,4,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8121 
8122         //pure gray 55
8123         int i=0;
8124         for(i=0;i<16;i++)
8125         {
8126             MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,0xDC, 0xDC,0xDC,E_XC_OP1_PATTERN_TYPE_PURE);
8127         }
8128 
8129         //rigth black border - no.8
8130         MHal_SC_OP1_Pattern_customize_blcok(4,4,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8131 
8132         //left black border - no.9
8133         MHal_SC_OP1_Pattern_customize_blcok(4,20,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8134 
8135         //left pure block
8136         MHal_SC_OP1_Pattern_customize_blcok(3,20,FALSE,FALSE,0x00, 0x1c9,0x2f2,E_XC_OP1_PATTERN_TYPE_PURE);
8137         //middle pure block
8138         MHal_SC_OP1_Pattern_customize_blcok(10,20,FALSE,FALSE,0x161, 0x161,0x161,E_XC_OP1_PATTERN_TYPE_PURE);
8139         //rigth pure block
8140         MHal_SC_OP1_Pattern_customize_blcok(3,20,FALSE,FALSE,0x13c, 0x28,0x1d5,E_XC_OP1_PATTERN_TYPE_PURE);
8141 
8142         //rigth black border - no.9
8143         MHal_SC_OP1_Pattern_customize_blcok(4,20,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8144 
8145         //left black border - no.10
8146         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8147 
8148         //Fade: 1
8149         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(1)<<2, (1)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
8150         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(19)<<2, (15)<<2,(12)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
8151         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(49)<<2, (49)<<2,(49)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
8152         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(64)<<2, (64)<<2,(64)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
8153         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(80)<<2, (80)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
8154         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(97)<<2, (97)<<2,(97)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
8155         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(112)<<2, (112)<<2,(112)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
8156         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(128)<<2, (128)<<2,(128)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
8157         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(145)<<2, (145)<<2,(145)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
8158         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(160)<<2, (160)<<2,(160)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
8159         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(181)<<2, (181)<<2,(181)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
8160         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(194)<<2, (194)<<2,(194)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
8161         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(211)<<2, (211)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
8162         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(229)<<2, (229)<<2,(229)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
8163         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(247)<<2, (247)<<2,(247)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
8164         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (255)<<2,(255)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8165 
8166         //rigth black border - no.10
8167         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8168 
8169         //left black border - no.11
8170         MHal_SC_OP1_Pattern_customize_blcok(4,2,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8171 
8172         //Fade:  2
8173         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (255)<<2,(1)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
8174         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(254)<<2, (248)<<2,(48)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
8175         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(255)<<2, (249)<<2,(80)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
8176         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(223)<<2, (252)<<2,(76)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
8177         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(221)<<2, (254)<<2,(22)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
8178         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (255)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
8179         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(44)<<2, (240)<<2,(238)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
8180         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(67)<<2, (229)<<2,(231)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
8181         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(82)<<2, (223)<<2,(230)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
8182         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(79)<<2, (209)<<2,(211)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
8183         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(0)<<2, (219)<<2,(223)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
8184         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(253)<<2, (2)<<2,(253)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
8185         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(249)<<2, (52)<<2,(254)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
8186         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(238)<<2, (73)<<2,(248)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
8187         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(233)<<2, (89)<<2,(239)<<2,E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
8188         MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,(239)<<2, (88)<<2,(204)<<2,E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8189 
8190         //rigth black border - no.11
8191         MHal_SC_OP1_Pattern_customize_blcok(4,2,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8192 
8193         //left black border - no.12
8194         MHal_SC_OP1_Pattern_customize_blcok(4,4,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8195 
8196         //Fade: 3
8197         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.1
8198         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((1)<<2),((1)<<2),((1)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.2
8199         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.3
8200         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((37)<<2),((37)<<2),((37)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.4
8201         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.5
8202         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((56)<<2),((56)<<2),((56)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.6
8203         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.7
8204         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((79)<<2),((79)<<2),((79)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.8
8205         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.9
8206         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((217)<<2),((213)<<2),((214)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.10
8207         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.11
8208         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((226)<<2),((226)<<2),((226)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.12
8209         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.13
8210         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((242)<<2),((238)<<2),((239)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.14
8211         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);   //NO.15
8212         MHal_SC_OP1_Pattern_customize_blcok(1,4,FALSE,FALSE,((255)<<2),((255)<<2),((255)<<2),E_XC_OP1_PATTERN_TYPE_PURE);    //NO.16
8213 
8214         //rigth black border - no.12
8215         MHal_SC_OP1_Pattern_customize_blcok(4,4,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8216 
8217         MHal_SC_OP1_Pattern_customize_blcok(4,0,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8218         MHal_SC_OP1_Pattern_customize_blcok(16,0,FALSE,FALSE,0x3FF,0x3FF,0x3FF,E_XC_OP1_PATTERN_TYPE_PURE);
8219         MHal_SC_OP1_Pattern_customize_blcok(4,0,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8220 
8221 
8222         //bottom black border
8223         MHal_SC_OP1_Pattern_customize_blcok(12,16,TRUE,FALSE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8224         MHal_SC_OP1_Pattern_customize_blcok(12,16,FALSE,TRUE,0,0,0,E_XC_OP1_PATTERN_TYPE_PURE);
8225 
8226     }
8227 
8228     MHal_SC_OP1_Pattern_sram_write_enable(FALSE);
8229 
8230     MHal_SC_OP1_Pattern_sram_write_fastmode(FALSE);
8231 
8232     MHal_SC_OP1_Pattern_set_wraddr(0x00);
8233 
8234     //reg_sram_jump_thr
8235     MHal_SC_OP1_Pattern_set_jump_threshold(0x00);
8236 
8237     MHal_SC_OP1_Pattern_sram_write_enable(TRUE);
8238 
8239     MHal_SC_OP1_Pattern_sram_write_fastmode(TRUE);
8240 
8241     //Write the border command to second SRAM
8242     MDrv_SC_OP1_Set_Pattern3_Border(pInstance);
8243 
8244     MHal_SC_OP1_Pattern_sram_write_enable(FALSE);
8245 
8246     MHal_SC_OP1_Pattern_sram_write_fastmode(FALSE);
8247 
8248     MHal_SC_OP1_Pattern_sram_writedone();
8249 }
8250 
MDrv_SC_OP1_3D_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt)8251 void MDrv_SC_OP1_3D_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt)
8252 {
8253     int i=0;
8254     MS_U16 u16Val =0;
8255     MS_U16 u16Step = 1024/32;
8256     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
8257     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
8258     XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
8259     UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
8260     XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
8261     UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
8262 
8263     //clear default pattern
8264     MHal_SC_OP1_Pattern_pure_color(0x00);
8265 
8266     //disable border
8267     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
8268 
8269     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
8270 
8271     u16HTileSize = u16HTotalSize/u16HTileCnt;
8272     u16VTileSize = u16VTotalSize/u16VTileCnt;
8273     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
8274 
8275     MHal_SC_OP1_Pattern_sram_writestart();
8276 
8277     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
8278 
8279     if (pXCResourcePrivate->stdrvXC_MVideo_Context.g_XC_InitData.bMirror)
8280     {
8281         //no.7----------------------------------------------------------------------
8282         //RIGHT
8283         u16Val = 1023;
8284         for(i=0;i<32;i++)
8285         {
8286             if(i==0)
8287             {
8288                 MHal_SC_OP1_Pattern_customize_blcok(1,16,TRUE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8289             }
8290             else if(i== 31)
8291             {
8292                 MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8293             }
8294             else
8295             {
8296                 MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8297             }
8298             u16Val -= u16Step;
8299         }
8300 
8301         //LEFT
8302         u16Val = 1023;
8303         for(i=0;i<32;i++)
8304         {
8305             if(i==0)
8306             {
8307                 MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8308             }
8309             else if(i== 31)
8310             {
8311                 MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8312             }
8313             else
8314             {
8315                 MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8316             }
8317             u16Val -= u16Step;
8318         }
8319 
8320         //no.6----------------------------------------------------------------------
8321         u16Val = 1023;
8322         for(i=0;i<18;i++)
8323         {
8324             if(i==0)
8325             {
8326                 MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8327             }
8328             else
8329             {
8330                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8331             }
8332             u16Val -= u16Step;
8333         }
8334 
8335         //green box -16
8336         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2), E_XC_OP1_PATTERN_TYPE_PURE);
8337         u16Val -= u16Step;
8338         u16Val -= u16Step;
8339 
8340         //RIGHT
8341         for(i=0;i<12;i++)
8342         {
8343             if(i==11)
8344             {
8345                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8346             }
8347             else
8348             {
8349                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8350             }
8351             u16Val -= u16Step;
8352         }
8353 
8354         u16Val = 1023;
8355         for(i=0;i<10;i++)
8356         {
8357            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8358            u16Val -= u16Step;
8359         }
8360 
8361         // green box - 15
8362         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8363         u16Val -= u16Step;
8364         u16Val -= u16Step;
8365         u16Val -= u16Step;
8366 
8367         for(i=0;i<7;i++)
8368         {
8369            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8370            u16Val -= u16Step;
8371         }
8372 
8373         //green box -14
8374         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8375         u16Val -= u16Step;
8376         u16Val -= u16Step;
8377         u16Val -= u16Step;
8378 
8379         //LEFT
8380         for(i=0;i<9;i++)
8381         {
8382            if(i==8)
8383            {
8384                MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8385            }
8386            else
8387            {
8388                MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8389            }
8390            u16Val -= u16Step;
8391          }
8392 
8393         //no.5
8394         for(i=0;i<8;i++)
8395         {
8396             if(i== 0)
8397             {
8398                 MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8399             }
8400             else
8401             {
8402                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8403             }
8404             u16Val -= u16Step;
8405         }
8406 
8407         //green box -13
8408         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8409         u16Val -= u16Step;
8410         u16Val -= u16Step;
8411 
8412         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8413         u16Val -= u16Step;
8414 
8415         //green box -12
8416         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8417         u16Val -= u16Step;
8418         u16Val -= u16Step;
8419 
8420         for(i=0;i<5;i++)
8421         {
8422             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8423             u16Val -= u16Step;
8424         }
8425 
8426         //green box -11
8427         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8428         u16Val -= u16Step;
8429         u16Val -= u16Step;
8430 
8431         //RIGHT
8432         for(i=0;i<12;i++)
8433         {
8434             if(i==11)
8435             {
8436                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8437             }
8438             else
8439             {
8440                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8441             }
8442             u16Val -= u16Step;
8443         }
8444 
8445         //LEFT
8446         u16Val =1023;
8447         for(i=0;i<32;i++)
8448         {
8449             if(i==0)
8450             {
8451                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8452             }
8453             else if(i== 31)
8454             {
8455                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8456             }
8457             else
8458             {
8459                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8460             }
8461             u16Val -= u16Step;
8462         }
8463 
8464         //no.4
8465         u16Val = 1023;
8466         for(i=0;i<8;i++)
8467         {
8468             if(i== 0)
8469             {
8470                 MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8471             }
8472             else
8473             {
8474                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8475             }
8476             u16Val -= u16Step;
8477          }
8478 
8479         //green box -10
8480         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8481         u16Val -= u16Step;
8482         u16Val -= u16Step;
8483 
8484         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8485         u16Val -= u16Step;
8486 
8487         //green box -9
8488         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8489         u16Val -= u16Step;
8490         u16Val -= u16Step;
8491 
8492         for(i=0;i<5;i++)
8493         {
8494             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8495             u16Val -= u16Step;
8496         }
8497 
8498         //green box -8
8499         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8500         u16Val -= u16Step;
8501         u16Val -= u16Step;
8502 
8503         //RIGHT
8504         for(i=0;i<12;i++)
8505         {
8506             if(i==11)
8507             {
8508                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8509             }
8510             else
8511             {
8512                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8513             }
8514             u16Val -= u16Step;
8515         }
8516 
8517         u16Val = 1023;
8518         for(i=0;i<20;i++)
8519         {
8520             if(i==0)
8521             {
8522                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8523             }
8524             else
8525             {
8526                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8527             }
8528             u16Val -= u16Step;
8529         }
8530 
8531         //green box -7
8532         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8533         u16Val -= u16Step;
8534         u16Val -= u16Step;
8535         u16Val -= u16Step;
8536 
8537         //LEFT
8538         for(i=0;i<9;i++)
8539         {
8540             if(i==8)
8541             {
8542                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8543             }
8544             else
8545             {
8546                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8547             }
8548             u16Val -= u16Step;
8549         }
8550 
8551         //no.3
8552         u16Val = 1023;
8553         for(i=0;i<8;i++)
8554         {
8555             if(i== 0)
8556             {
8557                 MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8558             }
8559             else
8560             {
8561                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8562             }
8563             u16Val -= u16Step;
8564         }
8565 
8566         //green box -6
8567         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8568         u16Val -= u16Step;
8569         u16Val -= u16Step;
8570 
8571         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8572         u16Val -= u16Step;
8573 
8574         //green box -5
8575         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8576         u16Val -= u16Step;
8577         u16Val -= u16Step;
8578 
8579         for(i=0;i<5;i++)
8580         {
8581             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8582             u16Val -= u16Step;
8583         }
8584 
8585         //green box -4
8586         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8587         u16Val -= u16Step;
8588         u16Val -= u16Step;
8589 
8590         //RIGHT
8591         for(i=0;i<12;i++)
8592         {
8593             if(i==11)
8594             {
8595                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8596             }
8597             else
8598             {
8599                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8600             }
8601             u16Val -= u16Step;
8602         }
8603 
8604         //LEFT
8605         u16Val =1023;
8606         for(i=0;i<32;i++)
8607         {
8608             if(i==0)
8609             {
8610                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8611             }
8612             else if(i== 31)
8613             {
8614                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8615             }
8616             else
8617             {
8618                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8619             }
8620             u16Val -= u16Step;
8621         }
8622 
8623         //no.2
8624         u16Val =1023;
8625         for(i=0;i<18;i++)
8626         {
8627             if(i==0)
8628             {
8629                 MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8630             }
8631             else
8632             {
8633                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8634             }
8635             u16Val -= u16Step;
8636         }
8637 
8638         //green box -3
8639         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8640         u16Val -= u16Step;
8641         u16Val -= u16Step;
8642 
8643         //RIGTH
8644         for(i=0;i<12;i++)
8645         {
8646             if(i==11)
8647             {
8648                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8649             }
8650             else
8651             {
8652                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8653             }
8654             u16Val -= u16Step;
8655         }
8656 
8657         u16Val = 1023;
8658         for(i=0;i<10;i++)
8659         {
8660             if(i==0)
8661             {
8662                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8663             }
8664             else
8665             {
8666                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8667             }
8668             u16Val -= u16Step;
8669         }
8670 
8671         // green box - 2
8672         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8673         u16Val -= u16Step;
8674         u16Val -= u16Step;
8675         u16Val -= u16Step;
8676 
8677         for(i=0;i<7;i++)
8678         {
8679             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8680             u16Val -= u16Step;
8681         }
8682 
8683         //green box -1
8684         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8685         u16Val -= u16Step;
8686         u16Val -= u16Step;
8687         u16Val -= u16Step;
8688 
8689         //LEFT
8690         for(i=0;i<9;i++)
8691         {
8692             if(i==8)
8693             {
8694                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8695             }
8696             else
8697             {
8698                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8699             }
8700             u16Val -= u16Step;
8701         }
8702 
8703         // no.1
8704         //RIGHT
8705         u16Val = 1023;
8706         for(i=0;i<32;i++)
8707         {
8708             if(i==0)
8709             {
8710                 MHal_SC_OP1_Pattern_customize_blcok(1,2,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8711             }
8712             else if(i== 31)
8713             {
8714                 MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8715             }
8716             else
8717             {
8718                 MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8719             }
8720             u16Val -= u16Step;
8721         }
8722 
8723         //LEFT
8724         u16Val = 1023;
8725         for(i=0;i<32;i++)
8726         {
8727             if(i==0)
8728             {
8729                 MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8730             }
8731             else if(i== 31)
8732             {
8733                 MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,TRUE,0,0,0, E_XC_OP1_PATTERN_TYPE_PURE);
8734             }
8735             else
8736             {
8737                 MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8738             }
8739             u16Val -= u16Step;
8740         }
8741     }
8742     else
8743     {
8744          //no.1----------------------------------------------------------------------
8745          //LEFT
8746          for(i=0;i<32;i++){
8747                 if(i==0){
8748                     MHal_SC_OP1_Pattern_customize_blcok(1,2,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8749                 }else if(i== 31){
8750                     MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8751                 }else{
8752                     MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8753                 }
8754                 u16Val += u16Step;
8755           }
8756 
8757          //RIGHT
8758          u16Val = 0;
8759          for(i=0;i<32;i++){
8760                 if(i==0){
8761                     MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8762                 }else if(i== 31){
8763                     MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8764                 }else{
8765                     MHal_SC_OP1_Pattern_customize_blcok(1,2,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8766                 }
8767                 u16Val += u16Step;
8768           }
8769 
8770          //no.2-----------------------------------------------------------------------
8771          //LEFT
8772          u16Val = 0;
8773          for(i=0;i<9;i++){
8774                 if(i==0){
8775                     MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8776                 }
8777                 else{
8778                     MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8779                 }
8780                 u16Val += u16Step;
8781           }
8782 
8783          //green box -1
8784          MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8785          u16Val += u16Step;
8786          u16Val += u16Step;
8787          u16Val += u16Step;
8788 
8789          for(i=0;i<7;i++){
8790             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8791             u16Val += u16Step;
8792          }
8793 
8794          // green box - 2
8795          MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8796          u16Val += u16Step;
8797          u16Val += u16Step;
8798          u16Val += u16Step;
8799 
8800          for(i=0;i<10;i++){
8801             if(i==9){
8802                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8803             }else{
8804                 MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8805             }
8806             u16Val += u16Step;
8807          }
8808 
8809          //RIGTH
8810          u16Val=0;
8811          for(i=0;i<12;i++){
8812             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8813             u16Val += u16Step;
8814          }
8815 
8816          //green box -3
8817          MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8818          u16Val += u16Step;
8819          u16Val += u16Step;
8820 
8821         for(i=0;i<18;i++){
8822                if(i==17){
8823                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8824                }
8825                else{
8826                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8827                }
8828                u16Val += u16Step;
8829          }
8830 
8831         //no.3
8832         //LEFT
8833         u16Val =0;
8834         for(i=0;i<32;i++){
8835                if(i==0){
8836                    MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8837                }else if(i== 31){
8838                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8839                }else{
8840                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8841                }
8842                u16Val += u16Step;
8843          }
8844 
8845         //RIGHT
8846          u16Val=0;
8847          for(i=0;i<12;i++){
8848             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8849             u16Val += u16Step;
8850          }
8851 
8852         //green box -4
8853         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8854         u16Val += u16Step;
8855         u16Val += u16Step;
8856 
8857         for(i=0;i<5;i++){
8858            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8859            u16Val += u16Step;
8860         }
8861 
8862         //green box -5
8863         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8864         u16Val += u16Step;
8865         u16Val += u16Step;
8866 
8867         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8868         u16Val += u16Step;
8869 
8870         //green box -6
8871         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8872         u16Val += u16Step;
8873         u16Val += u16Step;
8874 
8875         for(i=0;i<8;i++){
8876                 if(i== 7){
8877                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8878                }else{
8879                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8880                }
8881                u16Val += u16Step;
8882          }
8883 
8884         //no.4
8885         //LEFT
8886         u16Val = 0;
8887         for(i=0;i<9;i++){
8888                if(i==0){
8889                    MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8890                }
8891                else{
8892                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8893                }
8894                u16Val += u16Step;
8895          }
8896 
8897         //green box -7
8898         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8899         u16Val += u16Step;
8900         u16Val += u16Step;
8901         u16Val += u16Step;
8902 
8903         for(i=0;i<20;i++){
8904                if(i==19){
8905                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8906                }
8907                else{
8908                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8909                }
8910                u16Val += u16Step;
8911          }
8912 
8913         //RIGHT
8914         u16Val=0;
8915         for(i=0;i<12;i++){
8916            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8917            u16Val += u16Step;
8918         }
8919 
8920         //green box -8
8921         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8922         u16Val += u16Step;
8923         u16Val += u16Step;
8924 
8925         for(i=0;i<5;i++){
8926            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8927            u16Val += u16Step;
8928         }
8929 
8930         //green box -9
8931         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8932         u16Val += u16Step;
8933         u16Val += u16Step;
8934 
8935         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8936         u16Val += u16Step;
8937 
8938         //green box -10
8939         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8940         u16Val += u16Step;
8941         u16Val += u16Step;
8942 
8943         for(i=0;i<8;i++){
8944                 if(i== 7){
8945                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8946                }else{
8947                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8948                 }
8949                u16Val += u16Step;
8950         }
8951 
8952         //no.5
8953         //LEFT
8954         u16Val =0;
8955         for(i=0;i<32;i++){
8956                if(i==0){
8957                    MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8958                }else if(i== 31){
8959                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8960                }else{
8961                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8962                }
8963                u16Val += u16Step;
8964          }
8965 
8966         //RIGHT
8967          u16Val=0;
8968          for(i=0;i<12;i++){
8969             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8970             u16Val += u16Step;
8971         }
8972 
8973         //green box -11
8974         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2),E_XC_OP1_PATTERN_TYPE_PURE);
8975         u16Val += u16Step;
8976         u16Val += u16Step;
8977 
8978         for(i=0;i<5;i++){
8979            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8980            u16Val += u16Step;
8981         }
8982 
8983         //green box -12
8984         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2), E_XC_OP1_PATTERN_TYPE_PURE);
8985         u16Val += u16Step;
8986         u16Val += u16Step;
8987 
8988         MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
8989         u16Val += u16Step;
8990 
8991         //green box -13
8992         MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2), E_XC_OP1_PATTERN_TYPE_PURE);
8993         u16Val += u16Step;
8994         u16Val += u16Step;
8995 
8996         for(i=0;i<8;i++){
8997                 if(i== 7){
8998                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
8999                }else{
9000                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9001                }
9002                u16Val += u16Step;
9003          }
9004 
9005         //no.6
9006         //LEFT
9007         u16Val = 0;
9008         for(i=0;i<9;i++){
9009                if(i==0){
9010                    MHal_SC_OP1_Pattern_customize_blcok(1,1,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9011                }
9012                else{
9013                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9014             }
9015                u16Val += u16Step;
9016         }
9017 
9018         //green box -14
9019         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2), E_XC_OP1_PATTERN_TYPE_PURE);
9020         u16Val += u16Step;
9021         u16Val += u16Step;
9022         u16Val += u16Step;
9023 
9024         for(i=0;i<7;i++){
9025            MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9026            u16Val += u16Step;
9027         }
9028 
9029         // green box - 15
9030         MHal_SC_OP1_Pattern_customize_blcok(3,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2), E_XC_OP1_PATTERN_TYPE_PURE);
9031         u16Val += u16Step;
9032         u16Val += u16Step;
9033         u16Val += u16Step;
9034 
9035         for(i=0;i<10;i++){
9036            if(i==9){
9037                MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
9038            }else{
9039                MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9040            }
9041            u16Val += u16Step;
9042         }
9043 
9044         //RIGHT
9045         u16Val = 0;
9046          for(i=0;i<12;i++){
9047             MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9048             u16Val += u16Step;
9049          }
9050 
9051          //green box -16
9052          MHal_SC_OP1_Pattern_customize_blcok(2,1,FALSE,FALSE,(30<<2),(200<<2),(30<<2), E_XC_OP1_PATTERN_TYPE_PURE);
9053          u16Val += u16Step;
9054          u16Val += u16Step;
9055 
9056         for(i=0;i<18;i++){
9057                if(i==17){
9058                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
9059                }
9060                else{
9061                    MHal_SC_OP1_Pattern_customize_blcok(1,1,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9062                }
9063                u16Val += u16Step;
9064         }
9065 
9066         //no.7----------------------------------------------------------------------
9067         //LEFT
9068         for(i=0;i<32;i++){
9069                if(i==0){
9070                    MHal_SC_OP1_Pattern_customize_blcok(1,16,TRUE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9071                }else if(i== 31){
9072                    MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
9073                }else{
9074                    MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9075                }
9076                u16Val += u16Step;
9077          }
9078 
9079         //RIGHT
9080         u16Val =0;
9081         for(i=0;i<32;i++){
9082                if(i==0){
9083                    MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9084                }else if(i== 31){
9085                    MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,TRUE,1023,1023,1023, E_XC_OP1_PATTERN_TYPE_PURE);
9086                }else{
9087                    MHal_SC_OP1_Pattern_customize_blcok(1,16,FALSE,FALSE,u16Val,u16Val,u16Val, E_XC_OP1_PATTERN_TYPE_PURE);
9088                }
9089                u16Val += u16Step;
9090          }
9091     }
9092 
9093     MHal_SC_OP1_Pattern_sram_writedone();
9094 
9095 }
9096 
MDrv_SC_OP1_Pure_Color_Tile_Pattern(void * pInstance,MS_U16 u16HTileCnt,MS_U16 u16VTileCnt,MS_U16 u16RVal,MS_U16 u16GVal,MS_U16 u16BVal)9097 void MDrv_SC_OP1_Pure_Color_Tile_Pattern(void *pInstance, MS_U16 u16HTileCnt, MS_U16 u16VTileCnt, MS_U16 u16RVal, MS_U16 u16GVal, MS_U16 u16BVal)
9098 {
9099     MS_U16 u16HTileSize = 0, u16VTileSize = 0;
9100     MS_U16 u16HTotalSize = 0, u16VTotalSize = 0;
9101 
9102     //clear default pattern
9103     MHal_SC_OP1_Pattern_pure_color(0x00);
9104 
9105     //disable border
9106     MHal_SC_OP1_Pattern_enable_border(FALSE,0x3FF,0x3FF,0x3FF);
9107 
9108     MDrv_SC_OP1_Align_Width_Height(pInstance, u16HTileCnt, u16VTileCnt, &u16HTotalSize, &u16VTotalSize);
9109 
9110     u16HTileSize = u16HTotalSize/u16HTileCnt;
9111     u16VTileSize = u16VTotalSize/u16VTileCnt;
9112     MHal_SC_OP1_PatGen_adjust_frame_size(u16HTotalSize, u16VTotalSize);
9113 
9114     MHal_SC_OP1_Pattern_sram_writestart();
9115 
9116     MHal_SC_OP1_Pattern_define_tile(u16HTileSize, u16VTileSize);
9117 
9118     MHal_SC_OP1_Pattern_customize_blcok(u16HTileCnt,(u16VTileCnt-1),true,true,u16RVal,u16GVal,u16BVal,E_XC_OP1_PATTERN_TYPE_PURE);
9119 
9120     MHal_SC_OP1_Pattern_sram_writedone();
9121 }
9122 #endif
9123 #endif
9124 
9125 #ifndef MSOS_TYPE_NOS
9126 #undef _GNU_SOURCE // need this _GNU_SOURCE because we need to check tid by "syscall"
9127 #endif
9128