1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi // such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi // third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any
38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi // parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi // ("Services").
52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi // or otherwise:
58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi // with the said Rules.
72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi // be English.
74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi #ifndef _API_XC_PANEL_C_
79*53ee8cc1Swenshuai.xi #define _API_XC_PANEL_C_
80*53ee8cc1Swenshuai.xi
81*53ee8cc1Swenshuai.xi /******************************************************************************/
82*53ee8cc1Swenshuai.xi /* Includes */
83*53ee8cc1Swenshuai.xi /******************************************************************************/
84*53ee8cc1Swenshuai.xi // Common Definition
85*53ee8cc1Swenshuai.xi #include "MsCommon.h"
86*53ee8cc1Swenshuai.xi #include "MsVersion.h"
87*53ee8cc1Swenshuai.xi #include "MsIRQ.h"
88*53ee8cc1Swenshuai.xi #include "MsOS.h"
89*53ee8cc1Swenshuai.xi #include "utopia.h"
90*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
91*53ee8cc1Swenshuai.xi #include "apiPNL.h"
92*53ee8cc1Swenshuai.xi #include "apiPNL_v2.h"
93*53ee8cc1Swenshuai.xi #include "drvPNL.h"
94*53ee8cc1Swenshuai.xi // wyc.test-131206
95*53ee8cc1Swenshuai.xi #include "halPNL.h"
96*53ee8cc1Swenshuai.xi
97*53ee8cc1Swenshuai.xi #include "PNL_private.h"
98*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
99*53ee8cc1Swenshuai.xi #include <linux/string.h>
100*53ee8cc1Swenshuai.xi #else
101*53ee8cc1Swenshuai.xi #include <string.h>
102*53ee8cc1Swenshuai.xi #endif
103*53ee8cc1Swenshuai.xi
104*53ee8cc1Swenshuai.xi /******************************************************************************/
105*53ee8cc1Swenshuai.xi /* Debug information */
106*53ee8cc1Swenshuai.xi /******************************************************************************/
107*53ee8cc1Swenshuai.xi
108*53ee8cc1Swenshuai.xi #define PNL_DBG_MSG(fmt,...) \
109*53ee8cc1Swenshuai.xi MS_DEBUG_MSG(do{ \
110*53ee8cc1Swenshuai.xi if(_u16PnlDbgSwitch){ \
111*53ee8cc1Swenshuai.xi printf( "[PNL_DBG_MSG]: %s: %d \n" fmt, __FUNCTION__, __LINE__, ## __VA_ARGS__); \
112*53ee8cc1Swenshuai.xi } \
113*53ee8cc1Swenshuai.xi } while(0))
114*53ee8cc1Swenshuai.xi
115*53ee8cc1Swenshuai.xi #define PNL_PRINT_VAR(var) \
116*53ee8cc1Swenshuai.xi do{ \
117*53ee8cc1Swenshuai.xi if(_u16PnlDbgSwitch){ \
118*53ee8cc1Swenshuai.xi PNL_DBG_MSG("%30s: %d\n", #var, (var)); \
119*53ee8cc1Swenshuai.xi } \
120*53ee8cc1Swenshuai.xi }while(0)
121*53ee8cc1Swenshuai.xi
122*53ee8cc1Swenshuai.xi #define PNL_PRINT_FUN(fun) \
123*53ee8cc1Swenshuai.xi do{ \
124*53ee8cc1Swenshuai.xi if(_u16PnlDbgSwitch){ \
125*53ee8cc1Swenshuai.xi PNL_DBG_MSG("\n"); \
126*53ee8cc1Swenshuai.xi PNL_DBG_MSG("**************************************************\n"); \
127*53ee8cc1Swenshuai.xi PNL_DBG_MSG("*\t\t%s \t\t\n", #fun); \
128*53ee8cc1Swenshuai.xi PNL_DBG_MSG("**************************************************\n"); \
129*53ee8cc1Swenshuai.xi fun; \
130*53ee8cc1Swenshuai.xi PNL_DBG_MSG("* *\n"); \
131*53ee8cc1Swenshuai.xi PNL_DBG_MSG("* *\n"); \
132*53ee8cc1Swenshuai.xi PNL_DBG_MSG("**************************************************\n"); \
133*53ee8cc1Swenshuai.xi } \
134*53ee8cc1Swenshuai.xi }while(0)
135*53ee8cc1Swenshuai.xi
136*53ee8cc1Swenshuai.xi #ifndef UNUSED
137*53ee8cc1Swenshuai.xi #define UNUSED(x) ((x)=(x))
138*53ee8cc1Swenshuai.xi #endif
139*53ee8cc1Swenshuai.xi
140*53ee8cc1Swenshuai.xi #ifndef XC_SUPPORT_AUTO_VSYNC
141*53ee8cc1Swenshuai.xi #define XC_SUPPORT_AUTO_VSYNC 0
142*53ee8cc1Swenshuai.xi #endif
143*53ee8cc1Swenshuai.xi
144*53ee8cc1Swenshuai.xi #define PNL_SEMAPHORE_DBG 0
145*53ee8cc1Swenshuai.xi #define _pnl_dbg_semaphore E_PNL_POOL_ID_INTERNAL
146*53ee8cc1Swenshuai.xi // if anyone wants to see log inside android,
147*53ee8cc1Swenshuai.xi // please replace the "printf" with "ALOGE" so that it can be printed in android process
148*53ee8cc1Swenshuai.xi // OS related
149*53ee8cc1Swenshuai.xi #if (PNL_SEMAPHORE_DBG)
150*53ee8cc1Swenshuai.xi #define _PNL_SEMAPHORE_ENTRY(pInstance,POOL_ID) \
151*53ee8cc1Swenshuai.xi if (POOL_ID == _pnl_dbg_semaphore) \
152*53ee8cc1Swenshuai.xi printf("1 [%s,%5d]==========================Prepare to get semaphore, PNL ID = %d\n",__func__,__LINE__,POOL_ID); \
153*53ee8cc1Swenshuai.xi if(MDrv_PNL_Get_Semaphore(pInstance,POOL_ID) != UTOPIA_STATUS_SUCCESS) \
154*53ee8cc1Swenshuai.xi { \
155*53ee8cc1Swenshuai.xi printf("[%s,%5d] Get PNL Semaphore failed\n",__FUNCTION__,__LINE__); \
156*53ee8cc1Swenshuai.xi } \
157*53ee8cc1Swenshuai.xi if (POOL_ID == _pnl_dbg_semaphore) \
158*53ee8cc1Swenshuai.xi printf("[%s,%5d]Semaphore Got\n\n",__func__,__LINE__);
159*53ee8cc1Swenshuai.xi
160*53ee8cc1Swenshuai.xi #define _PNL_SEMAPHORE_RETURN(pInstance,POOL_ID) \
161*53ee8cc1Swenshuai.xi if (POOL_ID == _pnl_dbg_semaphore) \
162*53ee8cc1Swenshuai.xi printf("0 [%s,%5d]==========================prepare to release semaphore, PNL ID = %d\n",__func__,__LINE__,POOL_ID); \
163*53ee8cc1Swenshuai.xi MDrv_PNL_Release_Semaphore(pInstance,POOL_ID); \
164*53ee8cc1Swenshuai.xi if (POOL_ID == _pnl_dbg_semaphore) \
165*53ee8cc1Swenshuai.xi printf("[%s,%5d]Semaphore Returned\n\n",__func__,__LINE__);
166*53ee8cc1Swenshuai.xi
167*53ee8cc1Swenshuai.xi #else
168*53ee8cc1Swenshuai.xi #define _PNL_SEMAPHORE_ENTRY(pInstance,POOL_ID) \
169*53ee8cc1Swenshuai.xi if(MDrv_PNL_Get_Semaphore(pInstance,POOL_ID) != UTOPIA_STATUS_SUCCESS) \
170*53ee8cc1Swenshuai.xi { }
171*53ee8cc1Swenshuai.xi
172*53ee8cc1Swenshuai.xi #define _PNL_SEMAPHORE_RETURN(pInstance,POOL_ID) \
173*53ee8cc1Swenshuai.xi MDrv_PNL_Release_Semaphore(pInstance,POOL_ID);
174*53ee8cc1Swenshuai.xi #endif
175*53ee8cc1Swenshuai.xi
176*53ee8cc1Swenshuai.xi
177*53ee8cc1Swenshuai.xi #define PNL_WAIT_MUTEX (TICK_PER_ONE_MS * 300) // 300 ms
178*53ee8cc1Swenshuai.xi
179*53ee8cc1Swenshuai.xi // Mutex function
180*53ee8cc1Swenshuai.xi #define _PNL_ENTRY() _PNL_ENTRY_MUTEX(_s32PNLMutex)
181*53ee8cc1Swenshuai.xi #define _PNL_RETURN() _PNL_RETURN_MUTEX(_s32PNLMutex)
182*53ee8cc1Swenshuai.xi
183*53ee8cc1Swenshuai.xi #define _PNL_ENTRY_MUTEX(_mutex_) \
184*53ee8cc1Swenshuai.xi if(!OS_OBTAIN_MUTEX(_mutex_, PNL_WAIT_MUTEX)) \
185*53ee8cc1Swenshuai.xi { \
186*53ee8cc1Swenshuai.xi printf("==========================\n"); \
187*53ee8cc1Swenshuai.xi printf("[%s][%s][%06d] Mutex taking timeout\n",__FILE__,__FUNCTION__,__LINE__); \
188*53ee8cc1Swenshuai.xi }
189*53ee8cc1Swenshuai.xi #define _PNL_RETURN_MUTEX(_mutex_) OS_RELEASE_MUTEX(_mutex_);
190*53ee8cc1Swenshuai.xi
191*53ee8cc1Swenshuai.xi /******************************************************************************/
192*53ee8cc1Swenshuai.xi /* Type Definition */
193*53ee8cc1Swenshuai.xi /******************************************************************************/
194*53ee8cc1Swenshuai.xi
195*53ee8cc1Swenshuai.xi /******************************************************************************/
196*53ee8cc1Swenshuai.xi /* Macro and Define */
197*53ee8cc1Swenshuai.xi /******************************************************************************/
198*53ee8cc1Swenshuai.xi #define MAX_BACKLIGHT 100
199*53ee8cc1Swenshuai.xi #define PANEL_DE_VSTART 0 //8 // for STB, the DE Vstart must be 0
200*53ee8cc1Swenshuai.xi
201*53ee8cc1Swenshuai.xi /******************************************************************************/
202*53ee8cc1Swenshuai.xi /* Private varialbes */
203*53ee8cc1Swenshuai.xi /******************************************************************************/
204*53ee8cc1Swenshuai.xi
205*53ee8cc1Swenshuai.xi // Mutex & Lock
206*53ee8cc1Swenshuai.xi static MS_S32 _s32PNLMutex = -1;
207*53ee8cc1Swenshuai.xi
208*53ee8cc1Swenshuai.xi static const MSIF_Version _api_pnl_version = { .DDI = { PNL_API_VERSION }, };
209*53ee8cc1Swenshuai.xi
210*53ee8cc1Swenshuai.xi /******************************************************************************/
211*53ee8cc1Swenshuai.xi /* Function */
212*53ee8cc1Swenshuai.xi /******************************************************************************/
213*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_XC_IsSupportPipPatchUsingSc1MainAsSc0Sub(void);
214*53ee8cc1Swenshuai.xi /******************************************************************************/
215*53ee8cc1Swenshuai.xi /* Private functions */
216*53ee8cc1Swenshuai.xi /******************************************************************************/
217*53ee8cc1Swenshuai.xi //
218*53ee8cc1Swenshuai.xi // set params from user defined panel
219*53ee8cc1Swenshuai.xi //
_MakeCompatibile(void * pInstance)220*53ee8cc1Swenshuai.xi static void _MakeCompatibile(void* pInstance)
221*53ee8cc1Swenshuai.xi {
222*53ee8cc1Swenshuai.xi MS_U8 VerSel[3], VerLib[3];
223*53ee8cc1Swenshuai.xi
224*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
225*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
226*53ee8cc1Swenshuai.xi
227*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
228*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
229*53ee8cc1Swenshuai.xi memcpy(VerLib, _api_pnl_version.DDI.version, 2);
230*53ee8cc1Swenshuai.xi memcpy(VerSel, pPNLResourcePrivate->_api_pnl_version_sel.DDI.version, 2);
231*53ee8cc1Swenshuai.xi
232*53ee8cc1Swenshuai.xi VerLib[2] = VerSel[2] = '\0';
233*53ee8cc1Swenshuai.xi
234*53ee8cc1Swenshuai.xi if(strcmp( (const char*)VerSel, (const char*)VerLib ) != 0)
235*53ee8cc1Swenshuai.xi {
236*53ee8cc1Swenshuai.xi if ((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_TYPE_TTL)
237*53ee8cc1Swenshuai.xi || (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_TYPE_DAC_P)
238*53ee8cc1Swenshuai.xi || ((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type >= E_PNL_TYPE_MINILVDS)
239*53ee8cc1Swenshuai.xi && (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type <= E_PNL_TYPE_DIGITAL_MINILVDS))
240*53ee8cc1Swenshuai.xi || ((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_TYPE_EXT)
241*53ee8cc1Swenshuai.xi && (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type_Ext == E_PNL_TYPE_TTL_TCON))
242*53ee8cc1Swenshuai.xi )
243*53ee8cc1Swenshuai.xi {
244*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOutTimingMode = E_PNL_CHG_HTOTAL;
245*53ee8cc1Swenshuai.xi }
246*53ee8cc1Swenshuai.xi else
247*53ee8cc1Swenshuai.xi {
248*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOutTimingMode = E_PNL_CHG_VTOTAL;
249*53ee8cc1Swenshuai.xi }
250*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8PanelNoiseDith = TRUE;
251*53ee8cc1Swenshuai.xi
252*53ee8cc1Swenshuai.xi if( strcmp( (const char*)VerSel, "00" ) == 0 )
253*53ee8cc1Swenshuai.xi {
254*53ee8cc1Swenshuai.xi
255*53ee8cc1Swenshuai.xi MS_CRITICAL_MSG(printf("wrong PanelType version, enter compatitlbe mode\n"));
256*53ee8cc1Swenshuai.xi }
257*53ee8cc1Swenshuai.xi else
258*53ee8cc1Swenshuai.xi {
259*53ee8cc1Swenshuai.xi MS_CRITICAL_MSG(printf("Panel Library mismatch(%s), please update to version %s\n", VerSel, VerLib));
260*53ee8cc1Swenshuai.xi }
261*53ee8cc1Swenshuai.xi }
262*53ee8cc1Swenshuai.xi //Temp patch for MBOOT pnl lib and SN/Chara2 pnl lib are not same with DE Vstart
263*53ee8cc1Swenshuai.xi if(pPNLResourcePrivate->stapiPNL._bSkipTimingChange == TRUE)
264*53ee8cc1Swenshuai.xi {
265*53ee8cc1Swenshuai.xi MS_U16 u16DEStart = MDrv_PNL_Get_DEVstart(pInstance);
266*53ee8cc1Swenshuai.xi //Check DE Vstart
267*53ee8cc1Swenshuai.xi if(u16DEStart != pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart)
268*53ee8cc1Swenshuai.xi {
269*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart = u16DEStart;
270*53ee8cc1Swenshuai.xi printf("[Warning] %s:%d, Too old MBOOT PNL lib found, change DE Vstart as MBOOT's setting[%d]\n", __FUNCTION__, __LINE__, u16DEStart);
271*53ee8cc1Swenshuai.xi }
272*53ee8cc1Swenshuai.xi
273*53ee8cc1Swenshuai.xi //Check DE Hstart
274*53ee8cc1Swenshuai.xi u16DEStart = MDrv_PNL_Get_DEHstart(pInstance);
275*53ee8cc1Swenshuai.xi if(u16DEStart != pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart)
276*53ee8cc1Swenshuai.xi {
277*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart = u16DEStart;
278*53ee8cc1Swenshuai.xi printf("[Warning] %s:%d, Panel config mismatch, change DE Hstart as MBOOT's setting[%d]\n", __FUNCTION__, __LINE__, u16DEStart);
279*53ee8cc1Swenshuai.xi }
280*53ee8cc1Swenshuai.xi
281*53ee8cc1Swenshuai.xi }
282*53ee8cc1Swenshuai.xi }
283*53ee8cc1Swenshuai.xi
_TransToDriver_APIPNL_LINK_TYPE_To_PNL_TYPE(APIPNL_LINK_TYPE enAPILinkType)284*53ee8cc1Swenshuai.xi static PNL_TYPE _TransToDriver_APIPNL_LINK_TYPE_To_PNL_TYPE(APIPNL_LINK_TYPE enAPILinkType)
285*53ee8cc1Swenshuai.xi {
286*53ee8cc1Swenshuai.xi PNL_TYPE enDriverLinkType = E_PNL_TYPE_TTL;
287*53ee8cc1Swenshuai.xi
288*53ee8cc1Swenshuai.xi switch(enAPILinkType)
289*53ee8cc1Swenshuai.xi {
290*53ee8cc1Swenshuai.xi case LINK_TTL:
291*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_TTL;
292*53ee8cc1Swenshuai.xi break;
293*53ee8cc1Swenshuai.xi case LINK_RSDS:
294*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_RSDS;
295*53ee8cc1Swenshuai.xi break;
296*53ee8cc1Swenshuai.xi case LINK_MINILVDS:
297*53ee8cc1Swenshuai.xi case LINK_ANALOG_MINILVDS:
298*53ee8cc1Swenshuai.xi case LINK_DIGITAL_MINILVDS:
299*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_MINILVDS;
300*53ee8cc1Swenshuai.xi break;
301*53ee8cc1Swenshuai.xi case LINK_DAC_I:
302*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_DAC_I;
303*53ee8cc1Swenshuai.xi break;
304*53ee8cc1Swenshuai.xi case LINK_DAC_P:
305*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_DAC_P;
306*53ee8cc1Swenshuai.xi break;
307*53ee8cc1Swenshuai.xi default:
308*53ee8cc1Swenshuai.xi case LINK_LVDS:
309*53ee8cc1Swenshuai.xi case LINK_PDPLVDS:
310*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_LVDS;
311*53ee8cc1Swenshuai.xi break;
312*53ee8cc1Swenshuai.xi case LINK_EXT:
313*53ee8cc1Swenshuai.xi {
314*53ee8cc1Swenshuai.xi printf("LINK TYPE = EXT \n");
315*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_EXT;
316*53ee8cc1Swenshuai.xi }
317*53ee8cc1Swenshuai.xi break;
318*53ee8cc1Swenshuai.xi }
319*53ee8cc1Swenshuai.xi return enDriverLinkType;
320*53ee8cc1Swenshuai.xi }
321*53ee8cc1Swenshuai.xi
_TransToDriver_APIPNL_LINK_EXT_TYPE_To_PNL_TYPE(APIPNL_LINK_EXT_TYPE enLPLL_TypeExt)322*53ee8cc1Swenshuai.xi static PNL_TYPE _TransToDriver_APIPNL_LINK_EXT_TYPE_To_PNL_TYPE(APIPNL_LINK_EXT_TYPE enLPLL_TypeExt)
323*53ee8cc1Swenshuai.xi {
324*53ee8cc1Swenshuai.xi PNL_TYPE enDriverLinkType = E_PNL_TYPE_EXT;
325*53ee8cc1Swenshuai.xi
326*53ee8cc1Swenshuai.xi switch(enLPLL_TypeExt)
327*53ee8cc1Swenshuai.xi {
328*53ee8cc1Swenshuai.xi default:
329*53ee8cc1Swenshuai.xi case LINK_MINILVDS_5P_2L:
330*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_5P_2L;
331*53ee8cc1Swenshuai.xi break;
332*53ee8cc1Swenshuai.xi
333*53ee8cc1Swenshuai.xi case LINK_MINILVDS_4P_2L:
334*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_4P_2L;
335*53ee8cc1Swenshuai.xi break;
336*53ee8cc1Swenshuai.xi
337*53ee8cc1Swenshuai.xi case LINK_MINILVDS_3P_2L:
338*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_3P_2L;
339*53ee8cc1Swenshuai.xi break;
340*53ee8cc1Swenshuai.xi
341*53ee8cc1Swenshuai.xi case LINK_MINILVDS_6P_1L:
342*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_6P_1L;
343*53ee8cc1Swenshuai.xi break;
344*53ee8cc1Swenshuai.xi
345*53ee8cc1Swenshuai.xi case LINK_MINILVDS_5P_1L:
346*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_5P_1L;
347*53ee8cc1Swenshuai.xi break;
348*53ee8cc1Swenshuai.xi
349*53ee8cc1Swenshuai.xi case LINK_MINILVDS_4P_1L:
350*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_4P_1L;
351*53ee8cc1Swenshuai.xi break;
352*53ee8cc1Swenshuai.xi
353*53ee8cc1Swenshuai.xi case LINK_MINILVDS_3P_1L:
354*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_3P_1L;
355*53ee8cc1Swenshuai.xi break;
356*53ee8cc1Swenshuai.xi
357*53ee8cc1Swenshuai.xi case LINK_HF_LVDS:
358*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_HF_LVDS;
359*53ee8cc1Swenshuai.xi break;
360*53ee8cc1Swenshuai.xi
361*53ee8cc1Swenshuai.xi case LINK_HS_LVDS:
362*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_HS_LVDS;
363*53ee8cc1Swenshuai.xi break;
364*53ee8cc1Swenshuai.xi
365*53ee8cc1Swenshuai.xi case LINK_TTL_TCON:
366*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_TYPE_TTL_TCON;
367*53ee8cc1Swenshuai.xi break;
368*53ee8cc1Swenshuai.xi
369*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_3P_6BIT:
370*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_3P_6BIT;
371*53ee8cc1Swenshuai.xi break;
372*53ee8cc1Swenshuai.xi
373*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_4P_6BIT:
374*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_4P_6BIT;
375*53ee8cc1Swenshuai.xi break;
376*53ee8cc1Swenshuai.xi
377*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_5P_6BIT:
378*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_5P_6BIT;
379*53ee8cc1Swenshuai.xi break;
380*53ee8cc1Swenshuai.xi
381*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_6P_6BIT:
382*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_6P_6BIT;
383*53ee8cc1Swenshuai.xi break;
384*53ee8cc1Swenshuai.xi
385*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_3P_6BIT:
386*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_3P_6BIT;
387*53ee8cc1Swenshuai.xi break;
388*53ee8cc1Swenshuai.xi
389*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_4P_6BIT:
390*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_4P_6BIT;
391*53ee8cc1Swenshuai.xi break;
392*53ee8cc1Swenshuai.xi
393*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_5P_6BIT:
394*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_5P_6BIT;
395*53ee8cc1Swenshuai.xi break;
396*53ee8cc1Swenshuai.xi
397*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_6P_6BIT:
398*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_6P_6BIT;
399*53ee8cc1Swenshuai.xi break;
400*53ee8cc1Swenshuai.xi
401*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_3P_8BIT:
402*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_3P_8BIT;
403*53ee8cc1Swenshuai.xi break;
404*53ee8cc1Swenshuai.xi
405*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_4P_8BIT:
406*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_4P_8BIT;
407*53ee8cc1Swenshuai.xi break;
408*53ee8cc1Swenshuai.xi
409*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_5P_8BIT:
410*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_5P_8BIT;
411*53ee8cc1Swenshuai.xi break;
412*53ee8cc1Swenshuai.xi
413*53ee8cc1Swenshuai.xi case LINK_MINILVDS_1CH_6P_8BIT:
414*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_1CH_6P_8BIT;
415*53ee8cc1Swenshuai.xi break;
416*53ee8cc1Swenshuai.xi
417*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_3P_8BIT:
418*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_3P_8BIT;
419*53ee8cc1Swenshuai.xi break;
420*53ee8cc1Swenshuai.xi
421*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_4P_8BIT:
422*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_4P_8BIT;
423*53ee8cc1Swenshuai.xi break;
424*53ee8cc1Swenshuai.xi
425*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_5P_8BIT:
426*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_5P_8BIT;
427*53ee8cc1Swenshuai.xi break;
428*53ee8cc1Swenshuai.xi
429*53ee8cc1Swenshuai.xi case LINK_MINILVDS_2CH_6P_8BIT:
430*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_MINILVDS_2CH_6P_8BIT;
431*53ee8cc1Swenshuai.xi break;
432*53ee8cc1Swenshuai.xi
433*53ee8cc1Swenshuai.xi case LINK_EPI34_8P:
434*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI34_8P;
435*53ee8cc1Swenshuai.xi break;
436*53ee8cc1Swenshuai.xi
437*53ee8cc1Swenshuai.xi case LINK_EPI28_8P:
438*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI28_8P;
439*53ee8cc1Swenshuai.xi break;
440*53ee8cc1Swenshuai.xi
441*53ee8cc1Swenshuai.xi case LINK_EPI34_6P:
442*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI34_6P;
443*53ee8cc1Swenshuai.xi break;
444*53ee8cc1Swenshuai.xi
445*53ee8cc1Swenshuai.xi case LINK_EPI28_6P:
446*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI28_6P;
447*53ee8cc1Swenshuai.xi break;
448*53ee8cc1Swenshuai.xi
449*53ee8cc1Swenshuai.xi case LINK_HDMI_BYPASS_MODE:
450*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_HDMI_BYPASS_MODE;
451*53ee8cc1Swenshuai.xi break;
452*53ee8cc1Swenshuai.xi
453*53ee8cc1Swenshuai.xi case LINK_VBY1_10BIT_8LANE:
454*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_10BIT_8LANE;
455*53ee8cc1Swenshuai.xi break;
456*53ee8cc1Swenshuai.xi
457*53ee8cc1Swenshuai.xi case LINK_VBY1_8BIT_8LANE:
458*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_8BIT_8LANE;
459*53ee8cc1Swenshuai.xi break;
460*53ee8cc1Swenshuai.xi //Following codes need check!!!
461*53ee8cc1Swenshuai.xi //In current refine, disable these codes for keeping logic.
462*53ee8cc1Swenshuai.xi //To be checked:Following link type can't be transfered to driver in fact.
463*53ee8cc1Swenshuai.xi
464*53ee8cc1Swenshuai.xi case LINK_EPI34_2P:
465*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI34_2P;
466*53ee8cc1Swenshuai.xi break;
467*53ee8cc1Swenshuai.xi
468*53ee8cc1Swenshuai.xi case LINK_EPI34_4P:
469*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI34_4P;
470*53ee8cc1Swenshuai.xi break;
471*53ee8cc1Swenshuai.xi
472*53ee8cc1Swenshuai.xi case LINK_EPI28_2P:
473*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI28_2P;
474*53ee8cc1Swenshuai.xi break;
475*53ee8cc1Swenshuai.xi
476*53ee8cc1Swenshuai.xi case LINK_EPI28_4P:
477*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI28_4P;
478*53ee8cc1Swenshuai.xi break;
479*53ee8cc1Swenshuai.xi
480*53ee8cc1Swenshuai.xi case LINK_EPI28_12P:
481*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI28_12P;
482*53ee8cc1Swenshuai.xi break;
483*53ee8cc1Swenshuai.xi
484*53ee8cc1Swenshuai.xi case LINK_EPI24_12P:
485*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_EPI24_12P;
486*53ee8cc1Swenshuai.xi break;
487*53ee8cc1Swenshuai.xi
488*53ee8cc1Swenshuai.xi case LINK_VBY1_10BIT_16LANE:
489*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_10BIT_16LANE;
490*53ee8cc1Swenshuai.xi break;
491*53ee8cc1Swenshuai.xi
492*53ee8cc1Swenshuai.xi case LINK_VBY1_10BIT_4LANE:
493*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_10BIT_4LANE;
494*53ee8cc1Swenshuai.xi break;
495*53ee8cc1Swenshuai.xi
496*53ee8cc1Swenshuai.xi case LINK_VBY1_10BIT_2LANE:
497*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_10BIT_2LANE;
498*53ee8cc1Swenshuai.xi break;
499*53ee8cc1Swenshuai.xi
500*53ee8cc1Swenshuai.xi case LINK_VBY1_10BIT_1LANE:
501*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_10BIT_1LANE;
502*53ee8cc1Swenshuai.xi break;
503*53ee8cc1Swenshuai.xi
504*53ee8cc1Swenshuai.xi case LINK_VBY1_8BIT_16LANE:
505*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_8BIT_16LANE;
506*53ee8cc1Swenshuai.xi break;
507*53ee8cc1Swenshuai.xi
508*53ee8cc1Swenshuai.xi case LINK_VBY1_8BIT_4LANE:
509*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_8BIT_4LANE;
510*53ee8cc1Swenshuai.xi break;
511*53ee8cc1Swenshuai.xi
512*53ee8cc1Swenshuai.xi case LINK_VBY1_8BIT_2LANE:
513*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_8BIT_2LANE;
514*53ee8cc1Swenshuai.xi break;
515*53ee8cc1Swenshuai.xi
516*53ee8cc1Swenshuai.xi case LINK_VBY1_8BIT_1LANE:
517*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_8BIT_1LANE;
518*53ee8cc1Swenshuai.xi break;
519*53ee8cc1Swenshuai.xi
520*53ee8cc1Swenshuai.xi case LINK_HS_LVDS_2CH_BYPASS_MODE:
521*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_HS_LVDS_BYPASS_MODE;
522*53ee8cc1Swenshuai.xi break;
523*53ee8cc1Swenshuai.xi
524*53ee8cc1Swenshuai.xi case LINK_VBY1_8BIT_4LANE_BYPASS_MODE:
525*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE;
526*53ee8cc1Swenshuai.xi break;
527*53ee8cc1Swenshuai.xi
528*53ee8cc1Swenshuai.xi case LINK_VBY1_10BIT_4LANE_BYPASS_MODE:
529*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE;
530*53ee8cc1Swenshuai.xi break;
531*53ee8cc1Swenshuai.xi
532*53ee8cc1Swenshuai.xi case LINK_USI_T_8BIT_12P:
533*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_USI_T_8BIT_12P;
534*53ee8cc1Swenshuai.xi break;
535*53ee8cc1Swenshuai.xi
536*53ee8cc1Swenshuai.xi case LINK_USI_T_10BIT_12P:
537*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_USI_T_10BIT_12P;
538*53ee8cc1Swenshuai.xi break;
539*53ee8cc1Swenshuai.xi
540*53ee8cc1Swenshuai.xi case LINK_ISP_8BIT_12P:
541*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_ISP_8BIT_12P;
542*53ee8cc1Swenshuai.xi break;
543*53ee8cc1Swenshuai.xi
544*53ee8cc1Swenshuai.xi case LINK_ISP_8BIT_6P_D:
545*53ee8cc1Swenshuai.xi enDriverLinkType = E_PNL_LPLL_ISP_8BIT_6P_D;
546*53ee8cc1Swenshuai.xi break;
547*53ee8cc1Swenshuai.xi }
548*53ee8cc1Swenshuai.xi return enDriverLinkType;
549*53ee8cc1Swenshuai.xi }
550*53ee8cc1Swenshuai.xi
_SetPanelParams(void * pInstance,PanelType * pSelPanelType)551*53ee8cc1Swenshuai.xi static MS_BOOL _SetPanelParams(void* pInstance, PanelType *pSelPanelType)
552*53ee8cc1Swenshuai.xi {
553*53ee8cc1Swenshuai.xi /* Make sure following equalities right, avoid m_wPanel Start not fit SyncWidth and BackPorch
554*53ee8cc1Swenshuai.xi ** m_wPanelHStart = m_ucPanelHSyncWidth + m_ucPanelHSyncBackPorch
555*53ee8cc1Swenshuai.xi ** m_wPanelVStart = m_ucPanelVSyncWidth + m_ucPanelVBackPorch
556*53ee8cc1Swenshuai.xi */
557*53ee8cc1Swenshuai.xi //pSelPanelType->m_wPanelHStart = pSelPanelType->m_ucPanelHSyncWidth + pSelPanelType->m_ucPanelHSyncBackPorch;
558*53ee8cc1Swenshuai.xi //pSelPanelType->m_wPanelVStart = pSelPanelType->m_ucPanelVSyncWidth + pSelPanelType->m_ucPanelVBackPorch;
559*53ee8cc1Swenshuai.xi
560*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
561*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
562*53ee8cc1Swenshuai.xi
563*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
564*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
565*53ee8cc1Swenshuai.xi
566*53ee8cc1Swenshuai.xi /* Calculate panel info according to panel_raw_data.
567*53ee8cc1Swenshuai.xi * can be factor out to diff functions.
568*53ee8cc1Swenshuai.xi */
569*53ee8cc1Swenshuai.xi // output Sync timing
570*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HTotal = pSelPanelType->m_wPanelHTotal;
571*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VTotal = pSelPanelType->m_wPanelVTotal;
572*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32MinSET = pSelPanelType->m_dwPanelMinSET;//devPanel_MinSET(); // output MinSET
573*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32MaxSET = pSelPanelType->m_dwPanelMaxSET;//devPanel_MaxSET(); // output MaxSET
574*53ee8cc1Swenshuai.xi //#if (ENABLE_LVDSTORGB_CONVERTER == ENABLE)
575*53ee8cc1Swenshuai.xi // panel_Info.u8HSyncWidth = 0x8D + 1; // hsync width
576*53ee8cc1Swenshuai.xi // #else
577*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8HSyncWidth = pSelPanelType->m_ucPanelHSyncWidth;//pnlGetHSyncWidth(); // hsync width
578*53ee8cc1Swenshuai.xi // #endif
579*53ee8cc1Swenshuai.xi
580*53ee8cc1Swenshuai.xi // display timing
581*53ee8cc1Swenshuai.xi if(ENABLE == pPNLResourcePrivate->stapiPNL._bForceSetHStartEnable)
582*53ee8cc1Swenshuai.xi {
583*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart = pPNLResourcePrivate->stapiPNL._u16PanelHStart;
584*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._bForceSetHStartEnable = DISABLE;
585*53ee8cc1Swenshuai.xi }
586*53ee8cc1Swenshuai.xi else
587*53ee8cc1Swenshuai.xi {
588*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart = pSelPanelType->m_wPanelHStart;//devPanel_HSTART(); // DE H start
589*53ee8cc1Swenshuai.xi }
590*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Width = pSelPanelType->m_wPanelWidth; // DE H width
591*53ee8cc1Swenshuai.xi
592*53ee8cc1Swenshuai.xi if( (pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC & E_APIPNL_MISC_PIXELSHIFT_ENABLE) == 0 )
593*53ee8cc1Swenshuai.xi {
594*53ee8cc1Swenshuai.xi if (MDrv_XC_IsSupportPipPatchUsingSc1MainAsSc0Sub())
595*53ee8cc1Swenshuai.xi {
596*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart = MDrv_PNL_GetPanelVStart();
597*53ee8cc1Swenshuai.xi }
598*53ee8cc1Swenshuai.xi else
599*53ee8cc1Swenshuai.xi {
600*53ee8cc1Swenshuai.xi //when do not enable the pixel shift feature
601*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart = PANEL_DE_VSTART; // devPanel_VSTART(); // DE V start
602*53ee8cc1Swenshuai.xi }
603*53ee8cc1Swenshuai.xi }
604*53ee8cc1Swenshuai.xi else
605*53ee8cc1Swenshuai.xi {
606*53ee8cc1Swenshuai.xi //when enable the pixel shift feature
607*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart = MDrv_PNL_GetPanelVStart();//pSelPanelType->m_wPanelVStart;//PANEL_DE_VSTART; // devPanel_VSTART(); // DE V start
608*53ee8cc1Swenshuai.xi }
609*53ee8cc1Swenshuai.xi
610*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Height = pSelPanelType->m_wPanelHeight;//devPanel_HEIGHT(); // DE V height
611*53ee8cc1Swenshuai.xi
612*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VSyncStart = pSelPanelType->m_wPanelVStart; //devPanel_VSTART(); // vsync start
613*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8VSyncWidth = pSelPanelType->m_ucPanelVSyncWidth; //PANEL_VSYNC_WIDTH; // vsync width
614*53ee8cc1Swenshuai.xi // output control
615*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OCTRL = (MS_U16)(pSelPanelType->m_bPanelDualPort << 8)
616*53ee8cc1Swenshuai.xi | pSelPanelType->m_bPanelSwapEven_RB;
617*53ee8cc1Swenshuai.xi
618*53ee8cc1Swenshuai.xi //devPanel_OCTRL();
619*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OSTRL = (0xF700) | (pSelPanelType->m_ucPanelDCLKDelay << 4)
620*53ee8cc1Swenshuai.xi | pSelPanelType->m_bPanelInvHSync;
621*53ee8cc1Swenshuai.xi
622*53ee8cc1Swenshuai.xi // output driving current
623*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16ODRV = (MS_U16)(pSelPanelType->m_ucPanelDCKLCurrent << 6)
624*53ee8cc1Swenshuai.xi | (pSelPanelType->m_ucPanelDECurrent << 4)
625*53ee8cc1Swenshuai.xi | (pSelPanelType->m_ucPanelODDDataCurrent << 2)
626*53ee8cc1Swenshuai.xi | pSelPanelType->m_ucPanelEvenDataCurrent; //devPanel_ODRV();
627*53ee8cc1Swenshuai.xi
628*53ee8cc1Swenshuai.xi //for MOD
629*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Mode = pSelPanelType->m_bPanelDoubleClk == 0 ? E_PNL_MODE_SINGLE : E_PNL_MODE_DUAL; // 0: single clock mode, 1: double clock mode
630*53ee8cc1Swenshuai.xi // !! it should not use the different type to assign
631*53ee8cc1Swenshuai.xi
632*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type = _TransToDriver_APIPNL_LINK_TYPE_To_PNL_TYPE(pSelPanelType->m_ePanelLinkType);
633*53ee8cc1Swenshuai.xi if (E_PNL_TYPE_EXT == pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type)
634*53ee8cc1Swenshuai.xi {
635*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type = pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type_Ext;
636*53ee8cc1Swenshuai.xi }
637*53ee8cc1Swenshuai.xi
638*53ee8cc1Swenshuai.xi //printf("@@ %s, %d, pSelPanelType->m_ePanelLinkType=%u\n", __FUNCTION__, __LINE__, pSelPanelType->m_ePanelLinkType);
639*53ee8cc1Swenshuai.xi //printf("@@ %s, %d, _stPnlInitData.eLPLL_Type=%u\n", __FUNCTION__, __LINE__, pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type);
640*53ee8cc1Swenshuai.xi
641*53ee8cc1Swenshuai.xi //we should set VSync manually to satisfy HDMITx's requirement.
642*53ee8cc1Swenshuai.xi //auto-Vsync will have several-vertical-line error.
643*53ee8cc1Swenshuai.xi switch(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type)
644*53ee8cc1Swenshuai.xi {
645*53ee8cc1Swenshuai.xi case E_PNL_TYPE_DAC_I:
646*53ee8cc1Swenshuai.xi case E_PNL_TYPE_DAC_P:
647*53ee8cc1Swenshuai.xi case E_PNL_TYPE_PDPLVDS:
648*53ee8cc1Swenshuai.xi //case E_PNL_TYPE_EXT:
649*53ee8cc1Swenshuai.xi case E_PNL_TYPE_TTL:
650*53ee8cc1Swenshuai.xi #if (XC_SUPPORT_AUTO_VSYNC == 0)
651*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_10BIT_16LANE:
652*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_10BIT_4LANE:
653*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_10BIT_2LANE:
654*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_10BIT_1LANE:
655*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_8BIT_16LANE:
656*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_8BIT_4LANE:
657*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_8BIT_2LANE:
658*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_8BIT_1LANE:
659*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_10BIT_8LANE:
660*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_8BIT_8LANE:
661*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE:
662*53ee8cc1Swenshuai.xi case E_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE:
663*53ee8cc1Swenshuai.xi #endif
664*53ee8cc1Swenshuai.xi ///TCON Panel
665*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI34_8P:
666*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI28_8P:
667*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI34_6P:
668*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI28_6P:
669*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI34_2P:
670*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI34_4P:
671*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI28_2P:
672*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI28_4P:
673*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI28_12P:
674*53ee8cc1Swenshuai.xi case E_PNL_LPLL_EPI24_12P:
675*53ee8cc1Swenshuai.xi case E_PNL_TYPE_TTL_TCON:
676*53ee8cc1Swenshuai.xi case E_PNL_TYPE_MINILVDS:
677*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_5P_2L:
678*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_4P_2L:
679*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_3P_2L:
680*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_6P_1L:
681*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_5P_1L:
682*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_4P_1L:
683*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_3P_1L:
684*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_3P_8BIT:
685*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_4P_8BIT:
686*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_5P_8BIT:
687*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_6P_8BIT:
688*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_3P_6BIT:
689*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_4P_6BIT:
690*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_5P_6BIT:
691*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_2CH_6P_6BIT:
692*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_3P_8BIT:
693*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_4P_8BIT:
694*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_5P_8BIT:
695*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_6P_8BIT:
696*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_3P_6BIT:
697*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_4P_6BIT:
698*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_5P_6BIT:
699*53ee8cc1Swenshuai.xi case E_PNL_LPLL_MINILVDS_1CH_6P_6BIT:
700*53ee8cc1Swenshuai.xi case E_PNL_LPLL_USI_T_8BIT_12P:
701*53ee8cc1Swenshuai.xi case E_PNL_LPLL_USI_T_10BIT_12P:
702*53ee8cc1Swenshuai.xi case E_PNL_LPLL_ISP_8BIT_12P:
703*53ee8cc1Swenshuai.xi case E_PNL_LPLL_ISP_8BIT_6P_D:
704*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bManuelVSyncCtrl = TRUE;
705*53ee8cc1Swenshuai.xi break;
706*53ee8cc1Swenshuai.xi default:
707*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bManuelVSyncCtrl = FALSE;
708*53ee8cc1Swenshuai.xi break;
709*53ee8cc1Swenshuai.xi }
710*53ee8cc1Swenshuai.xi
711*53ee8cc1Swenshuai.xi if((pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC & E_APIPNL_MISC_ENABLE_MANUAL_VSYNC_CTRL)
712*53ee8cc1Swenshuai.xi == E_APIPNL_MISC_ENABLE_MANUAL_VSYNC_CTRL)
713*53ee8cc1Swenshuai.xi {
714*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bManuelVSyncCtrl = TRUE;
715*53ee8cc1Swenshuai.xi }
716*53ee8cc1Swenshuai.xi
717*53ee8cc1Swenshuai.xi //MOD_REG(0x40)
718*53ee8cc1Swenshuai.xi //PANEL_DCLK_DELAY:8, PANEL_SWAP_LVDS_CH:6, PANEL_SWAP_LVDS_POL:5, PANEL_LVDS_TI_MODE:2,
719*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16MOD_CTRL0 = ((/*PANEL_DCLK_DELAY*/pSelPanelType->m_ucPanelDCLKDelay & 0xf) << 8)
720*53ee8cc1Swenshuai.xi | ((/*PANEL_SWAP_LVDS_CH*/ pSelPanelType->m_bPanelSwapLVDS_CH) ? BIT(6):0)
721*53ee8cc1Swenshuai.xi | ((/*~PANEL_SWAP_LVDS_POL*/ !pSelPanelType->m_bPanelSwapLVDS_POL) ? BIT(5):0)
722*53ee8cc1Swenshuai.xi | ((/*PANEL_LVDS_PDP_10BIT*/ pSelPanelType->m_bPanelPDP10BIT) ? BIT(3):0)
723*53ee8cc1Swenshuai.xi | ((/*PANEL_LVDS_TI_MODE*/ pSelPanelType->m_bPanelLVDS_TI_MODE) ? BIT(2):0);
724*53ee8cc1Swenshuai.xi //MOD_REG(0x49)
725*53ee8cc1Swenshuai.xi //PANEL_SWAP_EVEN_ML:14, PANEL_SWAP_EVEN_RB:13, PANEL_SWAP_ODD_ML:12, PANEL_SWAP_ODD_RB:11
726*53ee8cc1Swenshuai.xi // [7,6] : output formate selction 10: 8bit, 01: 6bit :other 10bit
727*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16MOD_CTRL9 = ((/* PANEL_SWAP_EVEN_ML */ pSelPanelType->m_bPanelSwapEven_ML)? BIT(14):0)
728*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_EVEN_RB */ pSelPanelType->m_bPanelSwapEven_RB)? BIT(13):0)
729*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_ODD_ML */ pSelPanelType->m_bPanelSwapOdd_ML)? BIT(12):0)
730*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_ODD_RB */ pSelPanelType->m_bPanelSwapOdd_RB)? BIT(11):0)
731*53ee8cc1Swenshuai.xi | ((/* PANEL_OUTPUT_FORMAT */pSelPanelType->m_ucOutputFormatBitMode) << 6 )
732*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_EVEN_RG */ pSelPanelType->m_bPanelSwapEven_RG)? BIT(5):0)
733*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_EVEN_GB */ pSelPanelType->m_bPanelSwapEven_GB)? BIT(4):0)
734*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_ODD_RG */ pSelPanelType->m_bPanelSwapOdd_RG)? BIT(3):0)
735*53ee8cc1Swenshuai.xi | ((/* PANEL_SWAP_ODD_GB */ pSelPanelType->m_bPanelSwapOdd_GB)? BIT(2):0);
736*53ee8cc1Swenshuai.xi //MOD_REG(0x4A)
737*53ee8cc1Swenshuai.xi //PANEL_INV_HSYNC:12, PANEL_INV_DCLK:4, PANEL_INV_VSYNC:3, PANEL_INV_DE:2, PANEL_DUAL_PORT:1, PANEL_SWAP_PORT:0,
738*53ee8cc1Swenshuai.xi
739*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16MOD_CTRLA = ((pSelPanelType->m_bPanelInvHSync)? BIT(12):0)
740*53ee8cc1Swenshuai.xi | ((pSelPanelType->m_bPanelInvDCLK)? BIT(4):0)
741*53ee8cc1Swenshuai.xi | ((pSelPanelType->m_bPanelInvVSync)? BIT(3):0)
742*53ee8cc1Swenshuai.xi | ((pSelPanelType->m_bPanelInvDE)? BIT(2):0)
743*53ee8cc1Swenshuai.xi | ((pSelPanelType->m_bPanelDualPort) ? BIT(1):0)
744*53ee8cc1Swenshuai.xi | ((pSelPanelType->m_bPanelSwapPort) ? BIT(0):0);
745*53ee8cc1Swenshuai.xi
746*53ee8cc1Swenshuai.xi //MOD_REG(0x4B)
747*53ee8cc1Swenshuai.xi //[1:0]ti_bitmode=00(10bit)
748*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8MOD_CTRLB = pSelPanelType->m_ucTiBitMode;
749*53ee8cc1Swenshuai.xi
750*53ee8cc1Swenshuai.xi #define MOVE_OUTSIDE TRUE
751*53ee8cc1Swenshuai.xi #if MOVE_OUTSIDE
752*53ee8cc1Swenshuai.xi /*printf( "Move board related params to (custimized panel file)Panel.c (LVDSTxSwapValue)%d\n",
753*53ee8cc1Swenshuai.xi pSelPanelType->m_u16LVDSTxSwapValue
754*53ee8cc1Swenshuai.xi );*/
755*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16LVDSTxSwapValue = pSelPanelType->m_u16LVDSTxSwapValue;
756*53ee8cc1Swenshuai.xi
757*53ee8cc1Swenshuai.xi #else
758*53ee8cc1Swenshuai.xi #if defined(ENABLE_LVDS_PN_SWAP)
759*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16LVDSTxSwapValue = (LVDS_PN_SWAP_H<<8) | LVDS_PN_SWAP_L;
760*53ee8cc1Swenshuai.xi #else
761*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16LVDSTxSwapValue = 0;
762*53ee8cc1Swenshuai.xi #endif
763*53ee8cc1Swenshuai.xi
764*53ee8cc1Swenshuai.xi #endif
765*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOutTimingMode = pSelPanelType->m_ucOutTimingMode;
766*53ee8cc1Swenshuai.xi
767*53ee8cc1Swenshuai.xi if(ENABLE==pPNLResourcePrivate->stapiPNL._bForceSetDCLKEnable)
768*53ee8cc1Swenshuai.xi {
769*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq =( (MS_U32)(pPNLResourcePrivate->stapiPNL._u16PanelDCLK/2*10000000)/(pSelPanelType->m_wPanelHTotal*pSelPanelType->m_wPanelVTotal))*2;
770*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._bForceSetDCLKEnable = DISABLE;
771*53ee8cc1Swenshuai.xi }
772*53ee8cc1Swenshuai.xi else
773*53ee8cc1Swenshuai.xi {
774*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq = ((MS_U32)pSelPanelType->m_dwPanelDCLK*10000000)/(pSelPanelType->m_wPanelHTotal*pSelPanelType->m_wPanelVTotal);
775*53ee8cc1Swenshuai.xi }
776*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq = MDrv_PNL_GetDefaultVfreq(pInstance, pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq);
777*53ee8cc1Swenshuai.xi
778*53ee8cc1Swenshuai.xi //In FRC 120Hz Panel case, the DCLK should be double
779*53ee8cc1Swenshuai.xi if(MDrv_PNL_Is_SupportFRC(pInstance) && (pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC == (MS_U32)E_APIPNL_MISC_MFC_ENABLE))
780*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq *= 2;
781*53ee8cc1Swenshuai.xi
782*53ee8cc1Swenshuai.xi if ((pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC == (MS_U32)E_APIPNL_MISC_4K2K_ENABLE_60HZ))
783*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq *= 2;
784*53ee8cc1Swenshuai.xi
785*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8PanelNoiseDith = pSelPanelType->m_bPanelNoiseDith;
786*53ee8cc1Swenshuai.xi
787*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOnTiming1 = pSelPanelType->m_wPanelOnTiming1;
788*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOnTiming2 = pSelPanelType->m_wPanelOnTiming2;
789*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOffTiming1 = pSelPanelType->m_wPanelOffTiming1;
790*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOffTiming2 = pSelPanelType->m_wPanelOffTiming2;
791*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelMinPWMVal = pSelPanelType->m_ucMinPWMVal;
792*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelMaxPWMVal = pSelPanelType->m_ucMaxPWMVal;
793*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelDimmingCtl = pSelPanelType->m_ucDimmingCtl;
794*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelHSyncBackPorch = pSelPanelType->m_wPanelHStart - pSelPanelType->m_ucPanelHSyncWidth;
795*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelVBackPorch = pSelPanelType->m_wPanelVStart - pSelPanelType->m_ucPanelVSyncWidth;
796*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.pPanelName = pSelPanelType->m_pPanelName;
797*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelAspectRatio= pSelPanelType->m_ucPanelAspectRatio;
798*53ee8cc1Swenshuai.xi
799*53ee8cc1Swenshuai.xi /// set default value to E_PNL_TYPE_HS_LVDS
800*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Ext_LpllType = E_PNL_TYPE_HS_LVDS;
801*53ee8cc1Swenshuai.xi
802*53ee8cc1Swenshuai.xi /// set default setting for HW training mode
803*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bVideo_HW_Training_En = TRUE;//FALSE;
804*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bOSD_HW_Training_En = TRUE;//FALSE;
805*53ee8cc1Swenshuai.xi
806*53ee8cc1Swenshuai.xi // for Panel lib compatibility
807*53ee8cc1Swenshuai.xi _MakeCompatibile(pInstance);
808*53ee8cc1Swenshuai.xi
809*53ee8cc1Swenshuai.xi if(MDrv_PNL_Is_SupportFRC(pInstance))
810*53ee8cc1Swenshuai.xi {
811*53ee8cc1Swenshuai.xi if(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC == (MS_U32)E_APIPNL_MISC_MFC_ENABLE)
812*53ee8cc1Swenshuai.xi {
813*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Mode = E_PNL_MODE_QUAD;
814*53ee8cc1Swenshuai.xi }
815*53ee8cc1Swenshuai.xi }
816*53ee8cc1Swenshuai.xi
817*53ee8cc1Swenshuai.xi if(pPNLResourcePrivate->stapiPNL._bSkipTimingChange == FALSE)
818*53ee8cc1Swenshuai.xi {
819*53ee8cc1Swenshuai.xi //ignore timing change if Mboot Logo
820*53ee8cc1Swenshuai.xi MDrv_PNL_SetPanelType(pInstance, &pPNLResourcePrivate->stdrvPNL._stPnlInitData);
821*53ee8cc1Swenshuai.xi }
822*53ee8cc1Swenshuai.xi #if 0
823*53ee8cc1Swenshuai.xi if(_stPnlInitData.eLPLL_Type == E_PNL_TYPE_MFC)
824*53ee8cc1Swenshuai.xi {
825*53ee8cc1Swenshuai.xi MDrv_PNL_MFC(TRUE);
826*53ee8cc1Swenshuai.xi }
827*53ee8cc1Swenshuai.xi #endif
828*53ee8cc1Swenshuai.xi
829*53ee8cc1Swenshuai.xi // Save panel type parameters
830*53ee8cc1Swenshuai.xi memcpy(&pPNLResourcePrivate->stapiPNL._stPanelTypeSaved, pSelPanelType, sizeof(PanelType));
831*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._stPanelTypeSaved.m_wPanelHStart = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart;
832*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._stPanelTypeSaved.m_wPanelVStart = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart;
833*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._stPanelTypeSaved.m_ucOutTimingMode = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOutTimingMode;
834*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._stPanelTypeSaved.m_bPanelNoiseDith = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8PanelNoiseDith;
835*53ee8cc1Swenshuai.xi
836*53ee8cc1Swenshuai.xi return TRUE;
837*53ee8cc1Swenshuai.xi }
838*53ee8cc1Swenshuai.xi
839*53ee8cc1Swenshuai.xi //
840*53ee8cc1Swenshuai.xi // DumpData
841*53ee8cc1Swenshuai.xi //
_DumpData(void * pInstance)842*53ee8cc1Swenshuai.xi static void _DumpData(void* pInstance)
843*53ee8cc1Swenshuai.xi {
844*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
845*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
846*53ee8cc1Swenshuai.xi
847*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
848*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
849*53ee8cc1Swenshuai.xi
850*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info);
851*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HTotal );
852*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VTotal );
853*53ee8cc1Swenshuai.xi
854*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8HSyncWidth );
855*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Width );
856*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Height );
857*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart );
858*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart );
859*53ee8cc1Swenshuai.xi
860*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OCTRL );
861*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OSTRL );
862*53ee8cc1Swenshuai.xi
863*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16ODRV );
864*53ee8cc1Swenshuai.xi
865*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DITHCTRL );
866*53ee8cc1Swenshuai.xi
867*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Mode );
868*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type );
869*53ee8cc1Swenshuai.xi
870*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16MOD_CTRL0 );
871*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16MOD_CTRL9 );
872*53ee8cc1Swenshuai.xi
873*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16MOD_CTRLA );
874*53ee8cc1Swenshuai.xi
875*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8MOD_CTRLB );
876*53ee8cc1Swenshuai.xi
877*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16LVDSTxSwapValue);
878*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(_stPnlInitData.u16PanelOutTimingMode);
879*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq );
880*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u16DefaultHTotal );
881*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u16DefaultVTotal );
882*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u16MinHTotal );
883*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u16MaxHTotal );
884*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u16MinVTotal );
885*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u16MaxVTotal );
886*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u32MinDCLK );
887*53ee8cc1Swenshuai.xi //PNL_PRINT_VAR(panel_info->u32MaxDCLK );
888*53ee8cc1Swenshuai.xi
889*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VSyncStart );
890*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8VSyncWidth );
891*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8PanelNoiseDith );
892*53ee8cc1Swenshuai.xi
893*53ee8cc1Swenshuai.xi }
894*53ee8cc1Swenshuai.xi
895*53ee8cc1Swenshuai.xi //
896*53ee8cc1Swenshuai.xi // Dump m_panel data
897*53ee8cc1Swenshuai.xi //
_EmptyMethod(MS_BOOL bEnable)898*53ee8cc1Swenshuai.xi static void _EmptyMethod(MS_BOOL bEnable)
899*53ee8cc1Swenshuai.xi {
900*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
901*53ee8cc1Swenshuai.xi {
902*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
903*53ee8cc1Swenshuai.xi {
904*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
905*53ee8cc1Swenshuai.xi return;
906*53ee8cc1Swenshuai.xi }
907*53ee8cc1Swenshuai.xi }
908*53ee8cc1Swenshuai.xi UNUSED(bEnable);
909*53ee8cc1Swenshuai.xi PNL_DBG_MSG(" Error!! <============== Calling a non-registered function!!");
910*53ee8cc1Swenshuai.xi }
911*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLHstart_U2(void * pInstance)912*53ee8cc1Swenshuai.xi MS_U16 MAPI_PNL_GetPNLHstart_U2(void *pInstance)
913*53ee8cc1Swenshuai.xi {
914*53ee8cc1Swenshuai.xi MS_U16 u16HStart = 0;
915*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
916*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
917*53ee8cc1Swenshuai.xi
918*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
919*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
920*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
921*53ee8cc1Swenshuai.xi u16HStart = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HStart;
922*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
923*53ee8cc1Swenshuai.xi return u16HStart;
924*53ee8cc1Swenshuai.xi }
925*53ee8cc1Swenshuai.xi //
926*53ee8cc1Swenshuai.xi //
_getPanelHstart(void)927*53ee8cc1Swenshuai.xi static MS_U16 _getPanelHstart(void)
928*53ee8cc1Swenshuai.xi {
929*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
930*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
931*53ee8cc1Swenshuai.xi {
932*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
933*53ee8cc1Swenshuai.xi {
934*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
935*53ee8cc1Swenshuai.xi return FALSE;
936*53ee8cc1Swenshuai.xi }
937*53ee8cc1Swenshuai.xi }
938*53ee8cc1Swenshuai.xi
939*53ee8cc1Swenshuai.xi stPNL_GetHstart PNLArgs;
940*53ee8cc1Swenshuai.xi PNLArgs.u16Return= 0;
941*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETHSTART, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
942*53ee8cc1Swenshuai.xi {
943*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
944*53ee8cc1Swenshuai.xi return 0;
945*53ee8cc1Swenshuai.xi }
946*53ee8cc1Swenshuai.xi else
947*53ee8cc1Swenshuai.xi {
948*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
949*53ee8cc1Swenshuai.xi }
950*53ee8cc1Swenshuai.xi #else
951*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLHstart_U2(pu32PNLInst);
952*53ee8cc1Swenshuai.xi #endif
953*53ee8cc1Swenshuai.xi }
954*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLVstart_U2(void * pInstance)955*53ee8cc1Swenshuai.xi MS_U16 MAPI_PNL_GetPNLVstart_U2(void *pInstance)
956*53ee8cc1Swenshuai.xi {
957*53ee8cc1Swenshuai.xi MS_U16 u16VStart = 0;
958*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
959*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
960*53ee8cc1Swenshuai.xi
961*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
962*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
963*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
964*53ee8cc1Swenshuai.xi u16VStart = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VStart;
965*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
966*53ee8cc1Swenshuai.xi return u16VStart;
967*53ee8cc1Swenshuai.xi }
968*53ee8cc1Swenshuai.xi
_getPanelVstart(void)969*53ee8cc1Swenshuai.xi static MS_U16 _getPanelVstart(void)
970*53ee8cc1Swenshuai.xi {
971*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
972*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
973*53ee8cc1Swenshuai.xi {
974*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
975*53ee8cc1Swenshuai.xi {
976*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
977*53ee8cc1Swenshuai.xi return FALSE;
978*53ee8cc1Swenshuai.xi }
979*53ee8cc1Swenshuai.xi }
980*53ee8cc1Swenshuai.xi
981*53ee8cc1Swenshuai.xi stPNL_GetVstart PNLArgs;
982*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
983*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETVSTART, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
984*53ee8cc1Swenshuai.xi {
985*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
986*53ee8cc1Swenshuai.xi return 0;
987*53ee8cc1Swenshuai.xi }
988*53ee8cc1Swenshuai.xi else
989*53ee8cc1Swenshuai.xi {
990*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
991*53ee8cc1Swenshuai.xi }
992*53ee8cc1Swenshuai.xi #else
993*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLVstart_U2(pu32PNLInst);
994*53ee8cc1Swenshuai.xi #endif
995*53ee8cc1Swenshuai.xi }
996*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLWidth_U2(void * pInstance)997*53ee8cc1Swenshuai.xi MS_U16 MAPI_PNL_GetPNLWidth_U2(void *pInstance)
998*53ee8cc1Swenshuai.xi {
999*53ee8cc1Swenshuai.xi MS_U16 u16Width = 0;
1000*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1001*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1002*53ee8cc1Swenshuai.xi
1003*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1004*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1005*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1006*53ee8cc1Swenshuai.xi u16Width = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Width;
1007*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1008*53ee8cc1Swenshuai.xi return u16Width;
1009*53ee8cc1Swenshuai.xi }
1010*53ee8cc1Swenshuai.xi
_getPanelWidth(void)1011*53ee8cc1Swenshuai.xi static MS_U16 _getPanelWidth (void)
1012*53ee8cc1Swenshuai.xi {
1013*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1014*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1015*53ee8cc1Swenshuai.xi {
1016*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1017*53ee8cc1Swenshuai.xi {
1018*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1019*53ee8cc1Swenshuai.xi return FALSE;
1020*53ee8cc1Swenshuai.xi }
1021*53ee8cc1Swenshuai.xi }
1022*53ee8cc1Swenshuai.xi
1023*53ee8cc1Swenshuai.xi stPNL_GetWidth PNLArgs;
1024*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
1025*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETWIDTH, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1026*53ee8cc1Swenshuai.xi {
1027*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1028*53ee8cc1Swenshuai.xi return 0;
1029*53ee8cc1Swenshuai.xi }
1030*53ee8cc1Swenshuai.xi else
1031*53ee8cc1Swenshuai.xi {
1032*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
1033*53ee8cc1Swenshuai.xi }
1034*53ee8cc1Swenshuai.xi #else
1035*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLWidth_U2(pu32PNLInst);
1036*53ee8cc1Swenshuai.xi #endif
1037*53ee8cc1Swenshuai.xi }
1038*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLHeight_U2(void * pInstance)1039*53ee8cc1Swenshuai.xi MS_U16 MAPI_PNL_GetPNLHeight_U2(void *pInstance)
1040*53ee8cc1Swenshuai.xi {
1041*53ee8cc1Swenshuai.xi MS_U16 u16Height = 0;
1042*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1043*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1044*53ee8cc1Swenshuai.xi
1045*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1046*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1047*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1048*53ee8cc1Swenshuai.xi u16Height = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Height;
1049*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1050*53ee8cc1Swenshuai.xi return u16Height;
1051*53ee8cc1Swenshuai.xi }
1052*53ee8cc1Swenshuai.xi
_getPanelHeight(void)1053*53ee8cc1Swenshuai.xi static MS_U16 _getPanelHeight(void)
1054*53ee8cc1Swenshuai.xi {
1055*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1056*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1057*53ee8cc1Swenshuai.xi {
1058*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1059*53ee8cc1Swenshuai.xi {
1060*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1061*53ee8cc1Swenshuai.xi return FALSE;
1062*53ee8cc1Swenshuai.xi }
1063*53ee8cc1Swenshuai.xi }
1064*53ee8cc1Swenshuai.xi
1065*53ee8cc1Swenshuai.xi stPNL_GetHeight PNLArgs;
1066*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
1067*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETHEIGHT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1068*53ee8cc1Swenshuai.xi {
1069*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1070*53ee8cc1Swenshuai.xi return 0;
1071*53ee8cc1Swenshuai.xi }
1072*53ee8cc1Swenshuai.xi else
1073*53ee8cc1Swenshuai.xi {
1074*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
1075*53ee8cc1Swenshuai.xi }
1076*53ee8cc1Swenshuai.xi #else
1077*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLHeight_U2(pu32PNLInst);
1078*53ee8cc1Swenshuai.xi #endif
1079*53ee8cc1Swenshuai.xi }
1080*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLHtotal_U2(void * pInstance)1081*53ee8cc1Swenshuai.xi MS_U16 MAPI_PNL_GetPNLHtotal_U2(void *pInstance)
1082*53ee8cc1Swenshuai.xi {
1083*53ee8cc1Swenshuai.xi MS_U16 u16HTotal = 0;
1084*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1085*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1086*53ee8cc1Swenshuai.xi
1087*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1088*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1089*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1090*53ee8cc1Swenshuai.xi u16HTotal = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16HTotal;
1091*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1092*53ee8cc1Swenshuai.xi return u16HTotal;
1093*53ee8cc1Swenshuai.xi }
1094*53ee8cc1Swenshuai.xi
_getPanelhtotal(void)1095*53ee8cc1Swenshuai.xi static MS_U16 _getPanelhtotal(void)
1096*53ee8cc1Swenshuai.xi {
1097*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1098*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1099*53ee8cc1Swenshuai.xi {
1100*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1101*53ee8cc1Swenshuai.xi {
1102*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1103*53ee8cc1Swenshuai.xi return FALSE;
1104*53ee8cc1Swenshuai.xi }
1105*53ee8cc1Swenshuai.xi }
1106*53ee8cc1Swenshuai.xi
1107*53ee8cc1Swenshuai.xi stPNL_GetHtotal PNLArgs;
1108*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
1109*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETHTOTAL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1110*53ee8cc1Swenshuai.xi {
1111*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1112*53ee8cc1Swenshuai.xi return 0;
1113*53ee8cc1Swenshuai.xi }
1114*53ee8cc1Swenshuai.xi else
1115*53ee8cc1Swenshuai.xi {
1116*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
1117*53ee8cc1Swenshuai.xi }
1118*53ee8cc1Swenshuai.xi #else
1119*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLHtotal_U2(pu32PNLInst);
1120*53ee8cc1Swenshuai.xi #endif
1121*53ee8cc1Swenshuai.xi }
1122*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLVtotal_U2(void * pInstance)1123*53ee8cc1Swenshuai.xi MS_U16 MAPI_PNL_GetPNLVtotal_U2(void *pInstance)
1124*53ee8cc1Swenshuai.xi {
1125*53ee8cc1Swenshuai.xi MS_U16 u16VTotal = 0;
1126*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1127*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1128*53ee8cc1Swenshuai.xi
1129*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1130*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1131*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1132*53ee8cc1Swenshuai.xi u16VTotal = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16VTotal;
1133*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1134*53ee8cc1Swenshuai.xi return u16VTotal;
1135*53ee8cc1Swenshuai.xi }
1136*53ee8cc1Swenshuai.xi
_getPanelVtotal(void)1137*53ee8cc1Swenshuai.xi static MS_U16 _getPanelVtotal(void)
1138*53ee8cc1Swenshuai.xi {
1139*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1140*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1141*53ee8cc1Swenshuai.xi {
1142*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1143*53ee8cc1Swenshuai.xi {
1144*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1145*53ee8cc1Swenshuai.xi return FALSE;
1146*53ee8cc1Swenshuai.xi }
1147*53ee8cc1Swenshuai.xi }
1148*53ee8cc1Swenshuai.xi
1149*53ee8cc1Swenshuai.xi stPNL_GetVtotal PNLArgs;
1150*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
1151*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETVTOTAL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1152*53ee8cc1Swenshuai.xi {
1153*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1154*53ee8cc1Swenshuai.xi return 0;
1155*53ee8cc1Swenshuai.xi }
1156*53ee8cc1Swenshuai.xi else
1157*53ee8cc1Swenshuai.xi {
1158*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
1159*53ee8cc1Swenshuai.xi }
1160*53ee8cc1Swenshuai.xi #else
1161*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLVtotal_U2(pu32PNLInst);
1162*53ee8cc1Swenshuai.xi #endif
1163*53ee8cc1Swenshuai.xi }
1164*53ee8cc1Swenshuai.xi
MApi_PNL_GetMinSET_U2(void * pInstance)1165*53ee8cc1Swenshuai.xi MS_U32 MApi_PNL_GetMinSET_U2(void *pInstance)
1166*53ee8cc1Swenshuai.xi {
1167*53ee8cc1Swenshuai.xi MS_U32 u32MinSET = 0;
1168*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1169*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1170*53ee8cc1Swenshuai.xi
1171*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1172*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1173*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1174*53ee8cc1Swenshuai.xi u32MinSET = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32MinSET;
1175*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1176*53ee8cc1Swenshuai.xi return u32MinSET;
1177*53ee8cc1Swenshuai.xi }
1178*53ee8cc1Swenshuai.xi
_getPanelMinSET(void)1179*53ee8cc1Swenshuai.xi static MS_U32 _getPanelMinSET(void)
1180*53ee8cc1Swenshuai.xi {
1181*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1182*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1183*53ee8cc1Swenshuai.xi {
1184*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1185*53ee8cc1Swenshuai.xi {
1186*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1187*53ee8cc1Swenshuai.xi return FALSE;
1188*53ee8cc1Swenshuai.xi }
1189*53ee8cc1Swenshuai.xi }
1190*53ee8cc1Swenshuai.xi
1191*53ee8cc1Swenshuai.xi stPNL_GetMinSET PNLArgs;
1192*53ee8cc1Swenshuai.xi PNLArgs.u32Return = 0;
1193*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETMINSET, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1194*53ee8cc1Swenshuai.xi {
1195*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1196*53ee8cc1Swenshuai.xi return 0;
1197*53ee8cc1Swenshuai.xi }
1198*53ee8cc1Swenshuai.xi else
1199*53ee8cc1Swenshuai.xi {
1200*53ee8cc1Swenshuai.xi return PNLArgs.u32Return;
1201*53ee8cc1Swenshuai.xi }
1202*53ee8cc1Swenshuai.xi #else
1203*53ee8cc1Swenshuai.xi return MApi_PNL_GetMinSET_U2(pu32PNLInst);
1204*53ee8cc1Swenshuai.xi #endif
1205*53ee8cc1Swenshuai.xi }
1206*53ee8cc1Swenshuai.xi
MApi_PNL_GetMaxSET_U2(void * pInstance)1207*53ee8cc1Swenshuai.xi MS_U32 MApi_PNL_GetMaxSET_U2(void *pInstance)
1208*53ee8cc1Swenshuai.xi {
1209*53ee8cc1Swenshuai.xi MS_U32 u32MaxSET = 0;
1210*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1211*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1212*53ee8cc1Swenshuai.xi
1213*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1214*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1215*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1216*53ee8cc1Swenshuai.xi u32MaxSET = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32MaxSET;
1217*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1218*53ee8cc1Swenshuai.xi return u32MaxSET;
1219*53ee8cc1Swenshuai.xi }
1220*53ee8cc1Swenshuai.xi
_getPanelMaxSET(void)1221*53ee8cc1Swenshuai.xi static MS_U32 _getPanelMaxSET(void)
1222*53ee8cc1Swenshuai.xi {
1223*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1224*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1225*53ee8cc1Swenshuai.xi {
1226*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1227*53ee8cc1Swenshuai.xi {
1228*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1229*53ee8cc1Swenshuai.xi return FALSE;
1230*53ee8cc1Swenshuai.xi }
1231*53ee8cc1Swenshuai.xi }
1232*53ee8cc1Swenshuai.xi
1233*53ee8cc1Swenshuai.xi stPNL_GetMaxSET PNLArgs;
1234*53ee8cc1Swenshuai.xi PNLArgs.u32Return = 0;
1235*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETMAXSET, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1236*53ee8cc1Swenshuai.xi {
1237*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1238*53ee8cc1Swenshuai.xi return FALSE;
1239*53ee8cc1Swenshuai.xi }
1240*53ee8cc1Swenshuai.xi else
1241*53ee8cc1Swenshuai.xi {
1242*53ee8cc1Swenshuai.xi return PNLArgs.u32Return;
1243*53ee8cc1Swenshuai.xi }
1244*53ee8cc1Swenshuai.xi #else
1245*53ee8cc1Swenshuai.xi return MApi_PNL_GetMaxSET_U2(pu32PNLInst);
1246*53ee8cc1Swenshuai.xi #endif
1247*53ee8cc1Swenshuai.xi }
1248*53ee8cc1Swenshuai.xi
_getPanelDefVFreq(void)1249*53ee8cc1Swenshuai.xi static MS_U16 _getPanelDefVFreq(void)
1250*53ee8cc1Swenshuai.xi {
1251*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1252*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1253*53ee8cc1Swenshuai.xi {
1254*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1255*53ee8cc1Swenshuai.xi {
1256*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1257*53ee8cc1Swenshuai.xi return FALSE;
1258*53ee8cc1Swenshuai.xi }
1259*53ee8cc1Swenshuai.xi }
1260*53ee8cc1Swenshuai.xi
1261*53ee8cc1Swenshuai.xi stPNL_GetDefVFreq PNLArgs;
1262*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
1263*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETDEFVFREQ, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1264*53ee8cc1Swenshuai.xi {
1265*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1266*53ee8cc1Swenshuai.xi return 0;
1267*53ee8cc1Swenshuai.xi }
1268*53ee8cc1Swenshuai.xi else
1269*53ee8cc1Swenshuai.xi {
1270*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
1271*53ee8cc1Swenshuai.xi }
1272*53ee8cc1Swenshuai.xi #else
1273*53ee8cc1Swenshuai.xi return MApi_PNL_GetDefVFreq_U2(pu32PNLInst);
1274*53ee8cc1Swenshuai.xi #endif
1275*53ee8cc1Swenshuai.xi }
1276*53ee8cc1Swenshuai.xi
_getPanel_LPLL_Mode(void)1277*53ee8cc1Swenshuai.xi static MS_U8 _getPanel_LPLL_Mode(void)
1278*53ee8cc1Swenshuai.xi {
1279*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1280*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1281*53ee8cc1Swenshuai.xi {
1282*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1283*53ee8cc1Swenshuai.xi {
1284*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1285*53ee8cc1Swenshuai.xi return FALSE;
1286*53ee8cc1Swenshuai.xi }
1287*53ee8cc1Swenshuai.xi }
1288*53ee8cc1Swenshuai.xi
1289*53ee8cc1Swenshuai.xi stPNL_GetLPLLMode PNLArgs;
1290*53ee8cc1Swenshuai.xi PNLArgs.u8Return = E_PNL_MODE_SINGLE;
1291*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETLPLLMODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1292*53ee8cc1Swenshuai.xi {
1293*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1294*53ee8cc1Swenshuai.xi return E_PNL_MODE_SINGLE;
1295*53ee8cc1Swenshuai.xi }
1296*53ee8cc1Swenshuai.xi else
1297*53ee8cc1Swenshuai.xi {
1298*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
1299*53ee8cc1Swenshuai.xi }
1300*53ee8cc1Swenshuai.xi #else
1301*53ee8cc1Swenshuai.xi return MApi_PNL_GetLPLLMode_U2(pu32PNLInst);
1302*53ee8cc1Swenshuai.xi #endif
1303*53ee8cc1Swenshuai.xi }
1304*53ee8cc1Swenshuai.xi
MApi_PNL_GetLPLLType_U2(void * pInstance)1305*53ee8cc1Swenshuai.xi MS_U8 MApi_PNL_GetLPLLType_U2(void *pInstance)
1306*53ee8cc1Swenshuai.xi {
1307*53ee8cc1Swenshuai.xi MS_U8 u8LPLL_Type = 0;
1308*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1309*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1310*53ee8cc1Swenshuai.xi
1311*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1312*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1313*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1314*53ee8cc1Swenshuai.xi u8LPLL_Type = pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type;
1315*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1316*53ee8cc1Swenshuai.xi return u8LPLL_Type;
1317*53ee8cc1Swenshuai.xi }
1318*53ee8cc1Swenshuai.xi
_getPanel_LPLL_Type(void)1319*53ee8cc1Swenshuai.xi static MS_U8 _getPanel_LPLL_Type(void)
1320*53ee8cc1Swenshuai.xi {
1321*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1322*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1323*53ee8cc1Swenshuai.xi {
1324*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1325*53ee8cc1Swenshuai.xi {
1326*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1327*53ee8cc1Swenshuai.xi return FALSE;
1328*53ee8cc1Swenshuai.xi }
1329*53ee8cc1Swenshuai.xi }
1330*53ee8cc1Swenshuai.xi
1331*53ee8cc1Swenshuai.xi stPNL_GetLPLLType PNLArgs;
1332*53ee8cc1Swenshuai.xi PNLArgs.u8Return = 0;
1333*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETLPLLTYPE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1334*53ee8cc1Swenshuai.xi {
1335*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1336*53ee8cc1Swenshuai.xi return E_PNL_MODE_SINGLE;
1337*53ee8cc1Swenshuai.xi }
1338*53ee8cc1Swenshuai.xi else
1339*53ee8cc1Swenshuai.xi {
1340*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
1341*53ee8cc1Swenshuai.xi }
1342*53ee8cc1Swenshuai.xi #else
1343*53ee8cc1Swenshuai.xi return MApi_PNL_GetLPLLType_U2(pu32PNLInst);
1344*53ee8cc1Swenshuai.xi #endif
1345*53ee8cc1Swenshuai.xi }
1346*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLHsyncWidth_U2(void * pInstance)1347*53ee8cc1Swenshuai.xi MS_U8 MAPI_PNL_GetPNLHsyncWidth_U2(void *pInstance)
1348*53ee8cc1Swenshuai.xi {
1349*53ee8cc1Swenshuai.xi MS_U8 u8HSyncWidth = 0;
1350*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1351*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1352*53ee8cc1Swenshuai.xi
1353*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1354*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1355*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1356*53ee8cc1Swenshuai.xi u8HSyncWidth = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8HSyncWidth;
1357*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1358*53ee8cc1Swenshuai.xi return u8HSyncWidth;
1359*53ee8cc1Swenshuai.xi }
1360*53ee8cc1Swenshuai.xi
_getPanelHSyncWidth(void)1361*53ee8cc1Swenshuai.xi static MS_U8 _getPanelHSyncWidth(void)
1362*53ee8cc1Swenshuai.xi {
1363*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1364*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1365*53ee8cc1Swenshuai.xi {
1366*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1367*53ee8cc1Swenshuai.xi {
1368*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1369*53ee8cc1Swenshuai.xi return FALSE;
1370*53ee8cc1Swenshuai.xi }
1371*53ee8cc1Swenshuai.xi }
1372*53ee8cc1Swenshuai.xi
1373*53ee8cc1Swenshuai.xi stPNL_GetHsyncWidth PNLArgs;
1374*53ee8cc1Swenshuai.xi PNLArgs.u8Return = 0;
1375*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETHSYNCWIDTH, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1376*53ee8cc1Swenshuai.xi {
1377*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1378*53ee8cc1Swenshuai.xi return 0;
1379*53ee8cc1Swenshuai.xi }
1380*53ee8cc1Swenshuai.xi else
1381*53ee8cc1Swenshuai.xi {
1382*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
1383*53ee8cc1Swenshuai.xi }
1384*53ee8cc1Swenshuai.xi #else
1385*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLHsyncWidth_U2(pu32PNLInst);
1386*53ee8cc1Swenshuai.xi #endif
1387*53ee8cc1Swenshuai.xi }
1388*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLHsyncBackPorch_U2(void * pInstance)1389*53ee8cc1Swenshuai.xi MS_U8 MAPI_PNL_GetPNLHsyncBackPorch_U2(void *pInstance)
1390*53ee8cc1Swenshuai.xi {
1391*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncBackPorch = 0;
1392*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1393*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1394*53ee8cc1Swenshuai.xi
1395*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1396*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1397*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1398*53ee8cc1Swenshuai.xi u8PanelHSyncBackPorch = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelHSyncBackPorch;
1399*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1400*53ee8cc1Swenshuai.xi return u8PanelHSyncBackPorch;
1401*53ee8cc1Swenshuai.xi }
1402*53ee8cc1Swenshuai.xi
_getPanelHSyncBackPorch(void)1403*53ee8cc1Swenshuai.xi static MS_U8 _getPanelHSyncBackPorch(void)
1404*53ee8cc1Swenshuai.xi {
1405*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1406*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1407*53ee8cc1Swenshuai.xi {
1408*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1409*53ee8cc1Swenshuai.xi {
1410*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1411*53ee8cc1Swenshuai.xi return FALSE;
1412*53ee8cc1Swenshuai.xi }
1413*53ee8cc1Swenshuai.xi }
1414*53ee8cc1Swenshuai.xi
1415*53ee8cc1Swenshuai.xi stPNL_GetHsyncBackPorch PNLArgs;
1416*53ee8cc1Swenshuai.xi PNLArgs.u8Return = 0;
1417*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETHSYNCBACKPORCH, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1418*53ee8cc1Swenshuai.xi {
1419*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1420*53ee8cc1Swenshuai.xi return 0;
1421*53ee8cc1Swenshuai.xi }
1422*53ee8cc1Swenshuai.xi else
1423*53ee8cc1Swenshuai.xi {
1424*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
1425*53ee8cc1Swenshuai.xi }
1426*53ee8cc1Swenshuai.xi #else
1427*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLHsyncBackPorch_U2(pu32PNLInst);
1428*53ee8cc1Swenshuai.xi #endif
1429*53ee8cc1Swenshuai.xi }
1430*53ee8cc1Swenshuai.xi
MAPI_PNL_GetPNLVsyncBackPorch_U2(void * pInstance)1431*53ee8cc1Swenshuai.xi MS_U8 MAPI_PNL_GetPNLVsyncBackPorch_U2(void *pInstance)
1432*53ee8cc1Swenshuai.xi {
1433*53ee8cc1Swenshuai.xi MS_U8 u8PanelVBackPorch = 0;
1434*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1435*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1436*53ee8cc1Swenshuai.xi
1437*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1438*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1439*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1440*53ee8cc1Swenshuai.xi u8PanelVBackPorch = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelVBackPorch;
1441*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1442*53ee8cc1Swenshuai.xi return u8PanelVBackPorch;
1443*53ee8cc1Swenshuai.xi }
1444*53ee8cc1Swenshuai.xi
_getPanelVSyncBackPorch(void)1445*53ee8cc1Swenshuai.xi static MS_U8 _getPanelVSyncBackPorch(void)
1446*53ee8cc1Swenshuai.xi {
1447*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1448*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1449*53ee8cc1Swenshuai.xi {
1450*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1451*53ee8cc1Swenshuai.xi {
1452*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1453*53ee8cc1Swenshuai.xi return FALSE;
1454*53ee8cc1Swenshuai.xi }
1455*53ee8cc1Swenshuai.xi }
1456*53ee8cc1Swenshuai.xi
1457*53ee8cc1Swenshuai.xi stPNL_GetVsyncBackPorch PNLArgs;
1458*53ee8cc1Swenshuai.xi PNLArgs.u8Return = 0;
1459*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETVSYNCBACKPORCH, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1460*53ee8cc1Swenshuai.xi {
1461*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1462*53ee8cc1Swenshuai.xi return 0;
1463*53ee8cc1Swenshuai.xi }
1464*53ee8cc1Swenshuai.xi else
1465*53ee8cc1Swenshuai.xi {
1466*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
1467*53ee8cc1Swenshuai.xi }
1468*53ee8cc1Swenshuai.xi #else
1469*53ee8cc1Swenshuai.xi return MAPI_PNL_GetPNLVsyncBackPorch_U2(pu32PNLInst);
1470*53ee8cc1Swenshuai.xi #endif
1471*53ee8cc1Swenshuai.xi }
1472*53ee8cc1Swenshuai.xi
MApi_PNL_GetName_U2(void * pInstance)1473*53ee8cc1Swenshuai.xi const char* MApi_PNL_GetName_U2(void *pInstance)
1474*53ee8cc1Swenshuai.xi {
1475*53ee8cc1Swenshuai.xi const char* pPanelName;
1476*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1477*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1478*53ee8cc1Swenshuai.xi
1479*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1480*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1481*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1482*53ee8cc1Swenshuai.xi pPanelName = pPNLResourcePrivate->stdrvPNL._stPnlInitData.pPanelName;
1483*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1484*53ee8cc1Swenshuai.xi return pPanelName;
1485*53ee8cc1Swenshuai.xi }
1486*53ee8cc1Swenshuai.xi
_getPanelName(void)1487*53ee8cc1Swenshuai.xi static const char* _getPanelName(void)
1488*53ee8cc1Swenshuai.xi {
1489*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1490*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1491*53ee8cc1Swenshuai.xi {
1492*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1493*53ee8cc1Swenshuai.xi {
1494*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1495*53ee8cc1Swenshuai.xi return FALSE;
1496*53ee8cc1Swenshuai.xi }
1497*53ee8cc1Swenshuai.xi }
1498*53ee8cc1Swenshuai.xi static char panelName[20];
1499*53ee8cc1Swenshuai.xi stPNL_GetName PNLArgs;
1500*53ee8cc1Swenshuai.xi PNLArgs.pPNLName = panelName;
1501*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETPANELNAME, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1502*53ee8cc1Swenshuai.xi {
1503*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1504*53ee8cc1Swenshuai.xi return NULL;
1505*53ee8cc1Swenshuai.xi }
1506*53ee8cc1Swenshuai.xi else
1507*53ee8cc1Swenshuai.xi {
1508*53ee8cc1Swenshuai.xi return PNLArgs.pPNLName;
1509*53ee8cc1Swenshuai.xi }
1510*53ee8cc1Swenshuai.xi #else
1511*53ee8cc1Swenshuai.xi return MApi_PNL_GetName_U2(pu32PNLInst);
1512*53ee8cc1Swenshuai.xi #endif
1513*53ee8cc1Swenshuai.xi }
1514*53ee8cc1Swenshuai.xi
MApi_PNL_GetARC_U2(void * pInstance)1515*53ee8cc1Swenshuai.xi E_PNL_ASPECT_RATIO MApi_PNL_GetARC_U2(void *pInstance)
1516*53ee8cc1Swenshuai.xi {
1517*53ee8cc1Swenshuai.xi E_PNL_ASPECT_RATIO ePanelAspectRatio = E_PNL_ASPECT_RATIO_OTHER;
1518*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1519*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1520*53ee8cc1Swenshuai.xi
1521*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1522*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1523*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1524*53ee8cc1Swenshuai.xi ePanelAspectRatio = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelAspectRatio;
1525*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1526*53ee8cc1Swenshuai.xi return ePanelAspectRatio;
1527*53ee8cc1Swenshuai.xi }
1528*53ee8cc1Swenshuai.xi
_getPanel_ARC(void)1529*53ee8cc1Swenshuai.xi static E_PNL_ASPECT_RATIO _getPanel_ARC(void)
1530*53ee8cc1Swenshuai.xi {
1531*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1532*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1533*53ee8cc1Swenshuai.xi {
1534*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1535*53ee8cc1Swenshuai.xi {
1536*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1537*53ee8cc1Swenshuai.xi return FALSE;
1538*53ee8cc1Swenshuai.xi }
1539*53ee8cc1Swenshuai.xi }
1540*53ee8cc1Swenshuai.xi
1541*53ee8cc1Swenshuai.xi stPNL_GetARC PNLArgs;
1542*53ee8cc1Swenshuai.xi PNLArgs.ePanelAspectRatio = E_PNL_ASPECT_RATIO_OTHER;
1543*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETARC, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1544*53ee8cc1Swenshuai.xi {
1545*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1546*53ee8cc1Swenshuai.xi return E_PNL_MODE_SINGLE;
1547*53ee8cc1Swenshuai.xi }
1548*53ee8cc1Swenshuai.xi else
1549*53ee8cc1Swenshuai.xi {
1550*53ee8cc1Swenshuai.xi return PNLArgs.ePanelAspectRatio;
1551*53ee8cc1Swenshuai.xi }
1552*53ee8cc1Swenshuai.xi #else
1553*53ee8cc1Swenshuai.xi return MApi_PNL_GetARC_U2(pu32PNLInst);
1554*53ee8cc1Swenshuai.xi #endif
1555*53ee8cc1Swenshuai.xi }
1556*53ee8cc1Swenshuai.xi
MApi_PNL_GetOutTimingMode_U2(void * pInstance)1557*53ee8cc1Swenshuai.xi APIPNL_OUT_TIMING_MODE MApi_PNL_GetOutTimingMode_U2(void *pInstance)
1558*53ee8cc1Swenshuai.xi {
1559*53ee8cc1Swenshuai.xi APIPNL_OUT_TIMING_MODE ePanelOutTimingMode;
1560*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1561*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1562*53ee8cc1Swenshuai.xi
1563*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1564*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1565*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1566*53ee8cc1Swenshuai.xi ePanelOutTimingMode = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOutTimingMode;
1567*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1568*53ee8cc1Swenshuai.xi return ePanelOutTimingMode;
1569*53ee8cc1Swenshuai.xi }
1570*53ee8cc1Swenshuai.xi
_getOutTimingMode(void)1571*53ee8cc1Swenshuai.xi static APIPNL_OUT_TIMING_MODE _getOutTimingMode(void)
1572*53ee8cc1Swenshuai.xi {
1573*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1574*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1575*53ee8cc1Swenshuai.xi {
1576*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1577*53ee8cc1Swenshuai.xi {
1578*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1579*53ee8cc1Swenshuai.xi return FALSE;
1580*53ee8cc1Swenshuai.xi }
1581*53ee8cc1Swenshuai.xi }
1582*53ee8cc1Swenshuai.xi
1583*53ee8cc1Swenshuai.xi stPNL_GetOutTimingMode PNLArgs;
1584*53ee8cc1Swenshuai.xi PNLArgs.ePanelOutTimingMode = 0;
1585*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETOUTTIMINGMODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1586*53ee8cc1Swenshuai.xi {
1587*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1588*53ee8cc1Swenshuai.xi return FALSE;
1589*53ee8cc1Swenshuai.xi }
1590*53ee8cc1Swenshuai.xi else
1591*53ee8cc1Swenshuai.xi {
1592*53ee8cc1Swenshuai.xi return PNLArgs.ePanelOutTimingMode;
1593*53ee8cc1Swenshuai.xi }
1594*53ee8cc1Swenshuai.xi #else
1595*53ee8cc1Swenshuai.xi return MApi_PNL_GetOutTimingMode_U2(pu32PNLInst);
1596*53ee8cc1Swenshuai.xi #endif
1597*53ee8cc1Swenshuai.xi }
1598*53ee8cc1Swenshuai.xi
1599*53ee8cc1Swenshuai.xi
1600*53ee8cc1Swenshuai.xi XC_PNL_OBJ g_IPanel =
1601*53ee8cc1Swenshuai.xi {
1602*53ee8cc1Swenshuai.xi //
1603*53ee8cc1Swenshuai.xi // Data
1604*53ee8cc1Swenshuai.xi //
1605*53ee8cc1Swenshuai.xi .Name = _getPanelName,
1606*53ee8cc1Swenshuai.xi .HStart = _getPanelHstart,
1607*53ee8cc1Swenshuai.xi .VStart = _getPanelVstart,
1608*53ee8cc1Swenshuai.xi .Width = _getPanelWidth,
1609*53ee8cc1Swenshuai.xi .Height = _getPanelHeight,
1610*53ee8cc1Swenshuai.xi .HTotal = _getPanelhtotal,
1611*53ee8cc1Swenshuai.xi .VTotal = _getPanelVtotal,
1612*53ee8cc1Swenshuai.xi .HSynWidth = _getPanelHSyncWidth,
1613*53ee8cc1Swenshuai.xi .HSynBackPorch = _getPanelHSyncBackPorch,
1614*53ee8cc1Swenshuai.xi .VSynBackPorch = _getPanelVSyncBackPorch,
1615*53ee8cc1Swenshuai.xi .DefaultVFreq = _getPanelDefVFreq,
1616*53ee8cc1Swenshuai.xi .LPLL_Mode = _getPanel_LPLL_Mode, /* 0: single, 1: dual mode */
1617*53ee8cc1Swenshuai.xi .LPLL_Type = _getPanel_LPLL_Type,
1618*53ee8cc1Swenshuai.xi .AspectRatio = _getPanel_ARC,
1619*53ee8cc1Swenshuai.xi .MinSET = _getPanelMinSET,
1620*53ee8cc1Swenshuai.xi .MaxSET = _getPanelMaxSET,
1621*53ee8cc1Swenshuai.xi .OutTimingMode = _getOutTimingMode,
1622*53ee8cc1Swenshuai.xi // Manipulation
1623*53ee8cc1Swenshuai.xi //
1624*53ee8cc1Swenshuai.xi .SetSSC = MApi_PNL_SetSSC,
1625*53ee8cc1Swenshuai.xi .Enable = MApi_PNL_EnablePanel,
1626*53ee8cc1Swenshuai.xi .SetGammaTbl = MApi_PNL_SetGammaTbl,
1627*53ee8cc1Swenshuai.xi .GammaTab = MApi_PNL_GetAllGammaTbl,
1628*53ee8cc1Swenshuai.xi .Dump = MApi_PNL_DumpPanelData,
1629*53ee8cc1Swenshuai.xi .DimCtrl = MApi_PNL_GetPanelDimCtrl,
1630*53ee8cc1Swenshuai.xi .OnTiming = MApi_PNL_GetPanelOnTiming,
1631*53ee8cc1Swenshuai.xi .OffTiming = MApi_PNL_GetPanelOffTiming,
1632*53ee8cc1Swenshuai.xi //
1633*53ee8cc1Swenshuai.xi // Custimized methods, can be provided by clinets.
1634*53ee8cc1Swenshuai.xi //
1635*53ee8cc1Swenshuai.xi .TurnBackLightOn = _EmptyMethod,
1636*53ee8cc1Swenshuai.xi .SetGammaValue = MApi_PNL_SetGammaValue,
1637*53ee8cc1Swenshuai.xi .GetGammaTbl = MApi_PNL_GetGammaTbl,
1638*53ee8cc1Swenshuai.xi };
1639*53ee8cc1Swenshuai.xi
1640*53ee8cc1Swenshuai.xi
1641*53ee8cc1Swenshuai.xi /******************************************************************************/
1642*53ee8cc1Swenshuai.xi // Public function
1643*53ee8cc1Swenshuai.xi //
1644*53ee8cc1Swenshuai.xi /******************************************************************************/
1645*53ee8cc1Swenshuai.xi
1646*53ee8cc1Swenshuai.xi
1647*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1648*53ee8cc1Swenshuai.xi /// @brief Get the version of apiPNL lib, (without Mutex protect)
1649*53ee8cc1Swenshuai.xi /// @param[out] ppVersion \b output apiPNL lib version
1650*53ee8cc1Swenshuai.xi /// @return @ref APIPNL_Result
1651*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MApi_PNL_GetLibVer_U2(void * pInstance,const MSIF_Version ** ppVersion)1652*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_GetLibVer_U2(void *pInstance, const MSIF_Version **ppVersion)
1653*53ee8cc1Swenshuai.xi {
1654*53ee8cc1Swenshuai.xi if (!ppVersion)
1655*53ee8cc1Swenshuai.xi {
1656*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
1657*53ee8cc1Swenshuai.xi }
1658*53ee8cc1Swenshuai.xi
1659*53ee8cc1Swenshuai.xi *ppVersion = &_api_pnl_version;
1660*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
1661*53ee8cc1Swenshuai.xi }
1662*53ee8cc1Swenshuai.xi
MApi_PNL_GetLibVer(const MSIF_Version ** ppVersion)1663*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_GetLibVer(const MSIF_Version **ppVersion)
1664*53ee8cc1Swenshuai.xi {
1665*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1666*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1667*53ee8cc1Swenshuai.xi {
1668*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1669*53ee8cc1Swenshuai.xi {
1670*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1671*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
1672*53ee8cc1Swenshuai.xi }
1673*53ee8cc1Swenshuai.xi }
1674*53ee8cc1Swenshuai.xi
1675*53ee8cc1Swenshuai.xi stPNL_GetLibVer PNLArgs;
1676*53ee8cc1Swenshuai.xi PNLArgs.ppVersion = ppVersion;
1677*53ee8cc1Swenshuai.xi PNLArgs.eResult = E_APIPNL_FAIL;
1678*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETLIBVER, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1679*53ee8cc1Swenshuai.xi {
1680*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1681*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
1682*53ee8cc1Swenshuai.xi }
1683*53ee8cc1Swenshuai.xi else
1684*53ee8cc1Swenshuai.xi {
1685*53ee8cc1Swenshuai.xi return PNLArgs.eResult;
1686*53ee8cc1Swenshuai.xi }
1687*53ee8cc1Swenshuai.xi #else
1688*53ee8cc1Swenshuai.xi return MApi_PNL_GetLibVer_U2(pu32PNLInst, ppVersion);
1689*53ee8cc1Swenshuai.xi #endif
1690*53ee8cc1Swenshuai.xi }
1691*53ee8cc1Swenshuai.xi
MApi_PNL_GetInfo_U2(void * pInstance)1692*53ee8cc1Swenshuai.xi const PNL_ApiInfo* MApi_PNL_GetInfo_U2(void *pInstance) ///< Get info from driver
1693*53ee8cc1Swenshuai.xi {
1694*53ee8cc1Swenshuai.xi ST_PNL_DRV_INFO stPNLDRVInfo = MDrv_PNL_GetInfo(pInstance);
1695*53ee8cc1Swenshuai.xi PNL_ApiInfo* pstReturnInfo = NULL;
1696*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1697*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1698*53ee8cc1Swenshuai.xi
1699*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1700*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1701*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1702*53ee8cc1Swenshuai.xi if ((stPNLDRVInfo.u8SupportGammaType & E_DRVPNL_GAMMA_10BIT) && (stPNLDRVInfo.u8SupportGammaType & E_DRVPNL_GAMMA_12BIT))
1703*53ee8cc1Swenshuai.xi {
1704*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._cstPnlInfo.eSupportGammaType = E_APIPNL_GAMMA_ALL;
1705*53ee8cc1Swenshuai.xi }
1706*53ee8cc1Swenshuai.xi else if ( stPNLDRVInfo.u8SupportGammaType & E_DRVPNL_GAMMA_12BIT )
1707*53ee8cc1Swenshuai.xi {
1708*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._cstPnlInfo.eSupportGammaType = E_APIPNL_GAMMA_12BIT;
1709*53ee8cc1Swenshuai.xi }
1710*53ee8cc1Swenshuai.xi else if ( stPNLDRVInfo.u8SupportGammaType & E_DRVPNL_GAMMA_10BIT )
1711*53ee8cc1Swenshuai.xi {
1712*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._cstPnlInfo.eSupportGammaType = E_APIPNL_GAMMA_10BIT;
1713*53ee8cc1Swenshuai.xi }
1714*53ee8cc1Swenshuai.xi else
1715*53ee8cc1Swenshuai.xi {
1716*53ee8cc1Swenshuai.xi PNL_ASSERT(0, "[%s] fails Invalid eSupportGammaType( %d ) found, please check your library.\n",
1717*53ee8cc1Swenshuai.xi __FUNCTION__, stPNLDRVInfo.u8SupportGammaType );
1718*53ee8cc1Swenshuai.xi }
1719*53ee8cc1Swenshuai.xi
1720*53ee8cc1Swenshuai.xi pstReturnInfo = &pPNLResourcePrivate->stapiPNL._cstPnlInfo;
1721*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1722*53ee8cc1Swenshuai.xi
1723*53ee8cc1Swenshuai.xi return pstReturnInfo;
1724*53ee8cc1Swenshuai.xi }
1725*53ee8cc1Swenshuai.xi
MApi_PNL_GetInfo(void)1726*53ee8cc1Swenshuai.xi const PNL_ApiInfo* MApi_PNL_GetInfo(void) ///< Get info from driver
1727*53ee8cc1Swenshuai.xi {
1728*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1729*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1730*53ee8cc1Swenshuai.xi {
1731*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1732*53ee8cc1Swenshuai.xi {
1733*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1734*53ee8cc1Swenshuai.xi return NULL;
1735*53ee8cc1Swenshuai.xi }
1736*53ee8cc1Swenshuai.xi }
1737*53ee8cc1Swenshuai.xi
1738*53ee8cc1Swenshuai.xi stPNL_GetInfo PNLArgs;
1739*53ee8cc1Swenshuai.xi PNLArgs.pApiInfo = NULL;
1740*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETINFO, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1741*53ee8cc1Swenshuai.xi {
1742*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1743*53ee8cc1Swenshuai.xi return NULL;
1744*53ee8cc1Swenshuai.xi }
1745*53ee8cc1Swenshuai.xi else
1746*53ee8cc1Swenshuai.xi {
1747*53ee8cc1Swenshuai.xi return PNLArgs.pApiInfo;
1748*53ee8cc1Swenshuai.xi }
1749*53ee8cc1Swenshuai.xi #else
1750*53ee8cc1Swenshuai.xi return MApi_PNL_GetInfo_U2(pu32PNLInst);
1751*53ee8cc1Swenshuai.xi #endif
1752*53ee8cc1Swenshuai.xi }
1753*53ee8cc1Swenshuai.xi
1754*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1755*53ee8cc1Swenshuai.xi /// @brief Extended API of getting current panel status
1756*53ee8cc1Swenshuai.xi /// @param[in] pPnlExtStatus @ref PNL_ApiExtStatus
1757*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MApi_PNL_GetStatusEx_U2(void * pInstance,PNL_ApiExtStatus * pPnlExtStatus)1758*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetStatusEx_U2(void *pInstance, PNL_ApiExtStatus *pPnlExtStatus)
1759*53ee8cc1Swenshuai.xi {
1760*53ee8cc1Swenshuai.xi PNL_TimingInfo stPNLTiming;
1761*53ee8cc1Swenshuai.xi PNL_ApiExtStatus stPnlExtStatus;
1762*53ee8cc1Swenshuai.xi MS_U16 u16CopyLength = sizeof(PNL_ApiExtStatus);
1763*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1764*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1765*53ee8cc1Swenshuai.xi
1766*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1767*53ee8cc1Swenshuai.xi
1768*53ee8cc1Swenshuai.xi if((NULL == pPnlExtStatus) || (pPnlExtStatus->u16ApiStatusEX_Length == 0))
1769*53ee8cc1Swenshuai.xi {
1770*53ee8cc1Swenshuai.xi //Invalid input parameter
1771*53ee8cc1Swenshuai.xi return FALSE;
1772*53ee8cc1Swenshuai.xi }
1773*53ee8cc1Swenshuai.xi memset(&stPNLTiming,0,sizeof(PNL_TimingInfo));
1774*53ee8cc1Swenshuai.xi memset(&stPnlExtStatus,0,sizeof(PNL_ApiExtStatus));
1775*53ee8cc1Swenshuai.xi
1776*53ee8cc1Swenshuai.xi if(pPnlExtStatus->u16ApiStatusEX_Length < u16CopyLength) //Lib structure size > AP's using structure size ?
1777*53ee8cc1Swenshuai.xi {
1778*53ee8cc1Swenshuai.xi //Only copy the AP recongnized member
1779*53ee8cc1Swenshuai.xi u16CopyLength = pPnlExtStatus->u16ApiStatusEX_Length;
1780*53ee8cc1Swenshuai.xi }
1781*53ee8cc1Swenshuai.xi
1782*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1783*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1784*53ee8cc1Swenshuai.xi stPnlExtStatus.bPNLInitialize= pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized;
1785*53ee8cc1Swenshuai.xi stPnlExtStatus.bPNLEnable = pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Enabled;
1786*53ee8cc1Swenshuai.xi
1787*53ee8cc1Swenshuai.xi if(MDrv_PNL_GetDataFromRegister(pInstance, &stPNLTiming))
1788*53ee8cc1Swenshuai.xi {
1789*53ee8cc1Swenshuai.xi // Vertical
1790*53ee8cc1Swenshuai.xi stPnlExtStatus.u16VTotal = stPNLTiming.u16VTotal+1; //Total +1
1791*53ee8cc1Swenshuai.xi stPnlExtStatus.u16DEVStart = stPNLTiming.u16DEVStart;
1792*53ee8cc1Swenshuai.xi stPnlExtStatus.u16DEVEnd = stPNLTiming.u16DEVEnd;
1793*53ee8cc1Swenshuai.xi stPnlExtStatus.u16VSyncStart= stPNLTiming.u16VSyncStart;
1794*53ee8cc1Swenshuai.xi stPnlExtStatus.u16VSyncEnd = stPNLTiming.u16VSyncEnd+1;//For SyncWidth need + 1
1795*53ee8cc1Swenshuai.xi
1796*53ee8cc1Swenshuai.xi // Horizontal
1797*53ee8cc1Swenshuai.xi stPnlExtStatus.u16HTotal = stPNLTiming.u16HTotal+1; //Total +1
1798*53ee8cc1Swenshuai.xi stPnlExtStatus.u16DEHStart = stPNLTiming.u16DEHStart ;
1799*53ee8cc1Swenshuai.xi stPnlExtStatus.u16DEHEnd = stPNLTiming.u16DEHEnd ;
1800*53ee8cc1Swenshuai.xi stPnlExtStatus.u16HSyncWidth= stPNLTiming.u16HSyncWidth+1;//For SyncWidth need + 1
1801*53ee8cc1Swenshuai.xi stPnlExtStatus.bIsPanelManualVysncMode = stPNLTiming.bIsPanelManualVysncMode ;
1802*53ee8cc1Swenshuai.xi stPnlExtStatus.bInterlaceOutput = stPNLTiming.bInterlaceOutput;
1803*53ee8cc1Swenshuai.xi stPnlExtStatus.bYUVOutput = MDrv_PNL_isYUVOutput(pInstance);
1804*53ee8cc1Swenshuai.xi }
1805*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1806*53ee8cc1Swenshuai.xi memcpy(pPnlExtStatus, &stPnlExtStatus, u16CopyLength);
1807*53ee8cc1Swenshuai.xi return TRUE;
1808*53ee8cc1Swenshuai.xi }
1809*53ee8cc1Swenshuai.xi
MApi_PNL_GetStatusEx(PNL_ApiExtStatus * pPnlExtStatus)1810*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetStatusEx(PNL_ApiExtStatus *pPnlExtStatus)
1811*53ee8cc1Swenshuai.xi {
1812*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1813*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1814*53ee8cc1Swenshuai.xi {
1815*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1816*53ee8cc1Swenshuai.xi {
1817*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1818*53ee8cc1Swenshuai.xi return FALSE;
1819*53ee8cc1Swenshuai.xi }
1820*53ee8cc1Swenshuai.xi }
1821*53ee8cc1Swenshuai.xi
1822*53ee8cc1Swenshuai.xi stPNL_GetStatusEx PNLArgs;
1823*53ee8cc1Swenshuai.xi PNLArgs.pPnlExtStatus = pPnlExtStatus;
1824*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
1825*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETSTATUSEX, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1826*53ee8cc1Swenshuai.xi {
1827*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1828*53ee8cc1Swenshuai.xi return FALSE;
1829*53ee8cc1Swenshuai.xi }
1830*53ee8cc1Swenshuai.xi else
1831*53ee8cc1Swenshuai.xi {
1832*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
1833*53ee8cc1Swenshuai.xi }
1834*53ee8cc1Swenshuai.xi #else
1835*53ee8cc1Swenshuai.xi return MApi_PNL_GetStatusEx_U2(pu32PNLInst, pPnlExtStatus);
1836*53ee8cc1Swenshuai.xi #endif
1837*53ee8cc1Swenshuai.xi }
1838*53ee8cc1Swenshuai.xi
1839*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1840*53ee8cc1Swenshuai.xi /// @brief Get current panel status
1841*53ee8cc1Swenshuai.xi /// @param[in] pPnlStatus @ref PNL_ApiStatus
1842*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
MApi_PNL_GetStatus_U2(void * pInstance,PNL_ApiStatus * pPnlStatus)1843*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetStatus_U2(void *pInstance, PNL_ApiStatus *pPnlStatus)
1844*53ee8cc1Swenshuai.xi {
1845*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1846*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
1847*53ee8cc1Swenshuai.xi
1848*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
1849*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1850*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
1851*53ee8cc1Swenshuai.xi
1852*53ee8cc1Swenshuai.xi pPnlStatus->bPanel_Initialized = pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized;
1853*53ee8cc1Swenshuai.xi pPnlStatus->bPanel_Enabled = pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Enabled;
1854*53ee8cc1Swenshuai.xi
1855*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
1856*53ee8cc1Swenshuai.xi return TRUE;
1857*53ee8cc1Swenshuai.xi }
1858*53ee8cc1Swenshuai.xi
MApi_PNL_GetStatus(PNL_ApiStatus * pPnlStatus)1859*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetStatus(PNL_ApiStatus *pPnlStatus)
1860*53ee8cc1Swenshuai.xi {
1861*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1862*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1863*53ee8cc1Swenshuai.xi {
1864*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1865*53ee8cc1Swenshuai.xi {
1866*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1867*53ee8cc1Swenshuai.xi return FALSE;
1868*53ee8cc1Swenshuai.xi }
1869*53ee8cc1Swenshuai.xi }
1870*53ee8cc1Swenshuai.xi
1871*53ee8cc1Swenshuai.xi stPNL_GetStatus PNLArgs;
1872*53ee8cc1Swenshuai.xi PNLArgs.pPnlStatus = pPnlStatus;
1873*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
1874*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETSTATUS, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1875*53ee8cc1Swenshuai.xi {
1876*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1877*53ee8cc1Swenshuai.xi return FALSE;
1878*53ee8cc1Swenshuai.xi }
1879*53ee8cc1Swenshuai.xi else
1880*53ee8cc1Swenshuai.xi {
1881*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
1882*53ee8cc1Swenshuai.xi }
1883*53ee8cc1Swenshuai.xi #else
1884*53ee8cc1Swenshuai.xi return MApi_PNL_GetStatus_U2(pu32PNLInst, pPnlStatus);
1885*53ee8cc1Swenshuai.xi #endif
1886*53ee8cc1Swenshuai.xi }
1887*53ee8cc1Swenshuai.xi
1888*53ee8cc1Swenshuai.xi /// Set debug level (without Mutex protect)
MApi_PNL_SetDbgLevel_U2(void * pInstance,MS_U16 u16DbgSwitch)1889*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetDbgLevel_U2(void *pInstance, MS_U16 u16DbgSwitch)
1890*53ee8cc1Swenshuai.xi {
1891*53ee8cc1Swenshuai.xi _u16PnlDbgSwitch = u16DbgSwitch;
1892*53ee8cc1Swenshuai.xi return TRUE;
1893*53ee8cc1Swenshuai.xi }
1894*53ee8cc1Swenshuai.xi
MApi_PNL_SetDbgLevel(MS_U16 u16DbgSwitch)1895*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetDbgLevel(MS_U16 u16DbgSwitch)
1896*53ee8cc1Swenshuai.xi {
1897*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1898*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1899*53ee8cc1Swenshuai.xi {
1900*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1901*53ee8cc1Swenshuai.xi {
1902*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1903*53ee8cc1Swenshuai.xi return FALSE;
1904*53ee8cc1Swenshuai.xi }
1905*53ee8cc1Swenshuai.xi }
1906*53ee8cc1Swenshuai.xi
1907*53ee8cc1Swenshuai.xi stPNL_SetDbgLevel PNLArgs;
1908*53ee8cc1Swenshuai.xi PNLArgs.u16DbgSwitch = u16DbgSwitch;
1909*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
1910*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETDBGLEVEL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1911*53ee8cc1Swenshuai.xi {
1912*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1913*53ee8cc1Swenshuai.xi return FALSE;
1914*53ee8cc1Swenshuai.xi }
1915*53ee8cc1Swenshuai.xi else
1916*53ee8cc1Swenshuai.xi {
1917*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
1918*53ee8cc1Swenshuai.xi }
1919*53ee8cc1Swenshuai.xi #else
1920*53ee8cc1Swenshuai.xi return MApi_PNL_SetDbgLevel_U2(pu32PNLInst, u16DbgSwitch);
1921*53ee8cc1Swenshuai.xi #endif
1922*53ee8cc1Swenshuai.xi }
1923*53ee8cc1Swenshuai.xi
MApi_PNL_IOMapBaseInit_U2(void * pInstance)1924*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_IOMapBaseInit_U2(void *pInstance)
1925*53ee8cc1Swenshuai.xi {
1926*53ee8cc1Swenshuai.xi MS_BOOL bResult = FALSE;
1927*53ee8cc1Swenshuai.xi if (-1==_s32PNLMutex)
1928*53ee8cc1Swenshuai.xi {
1929*53ee8cc1Swenshuai.xi _s32PNLMutex = MsOS_CreateMutex(E_MSOS_FIFO, "_PNL_Mutex", MSOS_PROCESS_SHARED);
1930*53ee8cc1Swenshuai.xi if (-1 == _s32PNLMutex)
1931*53ee8cc1Swenshuai.xi {
1932*53ee8cc1Swenshuai.xi MS_CRITICAL_MSG(printf("[MAPI PNL][%06d] create mutex fail\n", __LINE__));
1933*53ee8cc1Swenshuai.xi return FALSE;
1934*53ee8cc1Swenshuai.xi }
1935*53ee8cc1Swenshuai.xi }
1936*53ee8cc1Swenshuai.xi
1937*53ee8cc1Swenshuai.xi bResult =(MDrv_PNL_Init(pInstance) == E_PNL_OK);
1938*53ee8cc1Swenshuai.xi
1939*53ee8cc1Swenshuai.xi return bResult;
1940*53ee8cc1Swenshuai.xi }
1941*53ee8cc1Swenshuai.xi
1942*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX
1943*53ee8cc1Swenshuai.xi //those code is temporary just for MWB warning software patch.
1944*53ee8cc1Swenshuai.xi //if utopia_init will has be refined in the future, those code will be deleted.
1945*53ee8cc1Swenshuai.xi extern void XCRegisterToUtopia(FUtopiaOpen ModuleType);
1946*53ee8cc1Swenshuai.xi extern void GOPRegisterToUtopia(void);
1947*53ee8cc1Swenshuai.xi extern void GFXRegisterToUtopia(FUtopiaOpen ModuleType);
1948*53ee8cc1Swenshuai.xi #endif
1949*53ee8cc1Swenshuai.xi
MApi_PNL_IOMapBaseInit(void)1950*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_IOMapBaseInit(void)
1951*53ee8cc1Swenshuai.xi {
1952*53ee8cc1Swenshuai.xi
1953*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX
1954*53ee8cc1Swenshuai.xi //those code is temporary just for MWB warning software patch.
1955*53ee8cc1Swenshuai.xi //if utopia_init will has be refined in the future, those code will be deleted.
1956*53ee8cc1Swenshuai.xi PNLRegisterToUtopia(NULL);
1957*53ee8cc1Swenshuai.xi XCRegisterToUtopia((FUtopiaOpen)XCOpenFull);
1958*53ee8cc1Swenshuai.xi GOPRegisterToUtopia();
1959*53ee8cc1Swenshuai.xi GFXRegisterToUtopia((FUtopiaOpen) GFXOpen);
1960*53ee8cc1Swenshuai.xi #endif
1961*53ee8cc1Swenshuai.xi
1962*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
1963*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
1964*53ee8cc1Swenshuai.xi {
1965*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
1966*53ee8cc1Swenshuai.xi {
1967*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
1968*53ee8cc1Swenshuai.xi return FALSE;
1969*53ee8cc1Swenshuai.xi }
1970*53ee8cc1Swenshuai.xi }
1971*53ee8cc1Swenshuai.xi
1972*53ee8cc1Swenshuai.xi stPNL_IOMapBaseInit PNLArgs;
1973*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
1974*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_IOMAPBASEINIT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
1975*53ee8cc1Swenshuai.xi {
1976*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
1977*53ee8cc1Swenshuai.xi return FALSE;
1978*53ee8cc1Swenshuai.xi }
1979*53ee8cc1Swenshuai.xi else
1980*53ee8cc1Swenshuai.xi {
1981*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
1982*53ee8cc1Swenshuai.xi }
1983*53ee8cc1Swenshuai.xi #else
1984*53ee8cc1Swenshuai.xi return MApi_PNL_IOMapBaseInit_U2(pu32PNLInst);
1985*53ee8cc1Swenshuai.xi #endif
1986*53ee8cc1Swenshuai.xi }
1987*53ee8cc1Swenshuai.xi
1988*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////
1989*53ee8cc1Swenshuai.xi /**
1990*53ee8cc1Swenshuai.xi *
1991*53ee8cc1Swenshuai.xi * @brief Give some options for panel init.
1992*53ee8cc1Swenshuai.xi *
1993*53ee8cc1Swenshuai.xi * @param[in] pSelPanelType a given panel type choosed by user.
1994*53ee8cc1Swenshuai.xi *
1995*53ee8cc1Swenshuai.xi */
MApi_PNL_PreInit_U2(void * pInstance,E_PNL_PREINIT_OPTIONS eInitParam)1996*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_PreInit_U2(void *pInstance, E_PNL_PREINIT_OPTIONS eInitParam)
1997*53ee8cc1Swenshuai.xi {
1998*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
1999*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2000*53ee8cc1Swenshuai.xi
2001*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2002*53ee8cc1Swenshuai.xi if ( eInitParam == E_PNL_NO_OUTPUT)
2003*53ee8cc1Swenshuai.xi {
2004*53ee8cc1Swenshuai.xi MDrv_PNL_PreInit(pInstance, E_PNL_OUTPUT_NO_OUTPUT);
2005*53ee8cc1Swenshuai.xi }
2006*53ee8cc1Swenshuai.xi else if ( eInitParam == E_PNL_CLK_ONLY)
2007*53ee8cc1Swenshuai.xi {
2008*53ee8cc1Swenshuai.xi MDrv_PNL_PreInit(pInstance, E_PNL_OUTPUT_CLK_ONLY);
2009*53ee8cc1Swenshuai.xi }
2010*53ee8cc1Swenshuai.xi else if ( eInitParam == E_PNL_CLK_DATA)
2011*53ee8cc1Swenshuai.xi {
2012*53ee8cc1Swenshuai.xi MDrv_PNL_PreInit(pInstance, E_PNL_OUTPUT_CLK_DATA);
2013*53ee8cc1Swenshuai.xi }
2014*53ee8cc1Swenshuai.xi else
2015*53ee8cc1Swenshuai.xi {
2016*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2017*53ee8cc1Swenshuai.xi return FALSE;
2018*53ee8cc1Swenshuai.xi }
2019*53ee8cc1Swenshuai.xi
2020*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2021*53ee8cc1Swenshuai.xi return TRUE;
2022*53ee8cc1Swenshuai.xi }
2023*53ee8cc1Swenshuai.xi
MApi_PNL_PreInit(E_PNL_PREINIT_OPTIONS eInitParam)2024*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_PreInit(E_PNL_PREINIT_OPTIONS eInitParam)
2025*53ee8cc1Swenshuai.xi {
2026*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2027*53ee8cc1Swenshuai.xi {
2028*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2029*53ee8cc1Swenshuai.xi {
2030*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2031*53ee8cc1Swenshuai.xi return FALSE;
2032*53ee8cc1Swenshuai.xi }
2033*53ee8cc1Swenshuai.xi }
2034*53ee8cc1Swenshuai.xi
2035*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2036*53ee8cc1Swenshuai.xi stPNL_PreInit PNLArgs;
2037*53ee8cc1Swenshuai.xi PNLArgs.eInitParam = eInitParam;
2038*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2039*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_PREINIT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2040*53ee8cc1Swenshuai.xi {
2041*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2042*53ee8cc1Swenshuai.xi return FALSE;
2043*53ee8cc1Swenshuai.xi }
2044*53ee8cc1Swenshuai.xi else
2045*53ee8cc1Swenshuai.xi {
2046*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2047*53ee8cc1Swenshuai.xi }
2048*53ee8cc1Swenshuai.xi #else
2049*53ee8cc1Swenshuai.xi return MApi_PNL_PreInit_U2(pu32PNLInst, eInitParam);
2050*53ee8cc1Swenshuai.xi #endif
2051*53ee8cc1Swenshuai.xi }
2052*53ee8cc1Swenshuai.xi
2053*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////
2054*53ee8cc1Swenshuai.xi /**
2055*53ee8cc1Swenshuai.xi *
2056*53ee8cc1Swenshuai.xi * @brief Initialize the global panel object with a given PanelType
2057*53ee8cc1Swenshuai.xi *
2058*53ee8cc1Swenshuai.xi * @param[in] pSelPanelType a given panel type choosed by user.
2059*53ee8cc1Swenshuai.xi *
2060*53ee8cc1Swenshuai.xi */
MApi_PNL_Init_U2(void * pInstance,PanelType * pSelPanelType)2061*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Init_U2(void *pInstance, PanelType *pSelPanelType/* <in > */)
2062*53ee8cc1Swenshuai.xi {
2063*53ee8cc1Swenshuai.xi if (-1==_s32PNLMutex)
2064*53ee8cc1Swenshuai.xi {
2065*53ee8cc1Swenshuai.xi _s32PNLMutex = MsOS_CreateMutex(E_MSOS_FIFO, "_PNL_Mutex", MSOS_PROCESS_SHARED);
2066*53ee8cc1Swenshuai.xi if (-1 == _s32PNLMutex)
2067*53ee8cc1Swenshuai.xi {
2068*53ee8cc1Swenshuai.xi MS_CRITICAL_MSG(printf("[MAPI PNL][%06d] create mutex fail\n", __LINE__));
2069*53ee8cc1Swenshuai.xi return FALSE;
2070*53ee8cc1Swenshuai.xi }
2071*53ee8cc1Swenshuai.xi }
2072*53ee8cc1Swenshuai.xi #if (KERNEL_DRIVER_PNL_STR_PATCH == 1)
2073*53ee8cc1Swenshuai.xi void *pModule;
2074*53ee8cc1Swenshuai.xi UtopiaInstanceGetModule(pInstance, &pModule);
2075*53ee8cc1Swenshuai.xi PNL_REGS_SAVE_AREA *pPNLResourceStr = NULL;
2076*53ee8cc1Swenshuai.xi UtopiaModuleGetSTRPrivate(pModule, (void**)&pPNLResourceStr);
2077*53ee8cc1Swenshuai.xi memcpy(&pPNLResourceStr->pSelPanelType,pSelPanelType,sizeof(PanelType));
2078*53ee8cc1Swenshuai.xi #endif
2079*53ee8cc1Swenshuai.xi
2080*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2081*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2082*53ee8cc1Swenshuai.xi
2083*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2084*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2085*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2086*53ee8cc1Swenshuai.xi //MApi_XC_PNL_Init(&g_IPanel, outPanelInfo);//_MApi_XC_Panel_Init(&(sXC_InitData.sPanelInfo));
2087*53ee8cc1Swenshuai.xi if(MDrv_PNL_Init(pInstance) != E_PNL_OK) //Init MMIO and gamma clk
2088*53ee8cc1Swenshuai.xi {
2089*53ee8cc1Swenshuai.xi OS_DELETE_MUTEX(_s32PNLMutex);
2090*53ee8cc1Swenshuai.xi
2091*53ee8cc1Swenshuai.xi MS_CRITICAL_MSG(printf("Panel init error, check the message from driver\n"));
2092*53ee8cc1Swenshuai.xi
2093*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2094*53ee8cc1Swenshuai.xi return FALSE;
2095*53ee8cc1Swenshuai.xi }
2096*53ee8cc1Swenshuai.xi
2097*53ee8cc1Swenshuai.xi if(pSelPanelType)
2098*53ee8cc1Swenshuai.xi {
2099*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2100*53ee8cc1Swenshuai.xi _SetPanelParams(pInstance, pSelPanelType);
2101*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized = TRUE;
2102*53ee8cc1Swenshuai.xi _PNL_RETURN();
2103*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2104*53ee8cc1Swenshuai.xi return TRUE;
2105*53ee8cc1Swenshuai.xi }
2106*53ee8cc1Swenshuai.xi else
2107*53ee8cc1Swenshuai.xi {
2108*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2109*53ee8cc1Swenshuai.xi return FALSE;
2110*53ee8cc1Swenshuai.xi }
2111*53ee8cc1Swenshuai.xi }
2112*53ee8cc1Swenshuai.xi
MApi_PNL_Init(PanelType * pSelPanelType)2113*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Init(PanelType *pSelPanelType/* <in > */)
2114*53ee8cc1Swenshuai.xi {
2115*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2116*53ee8cc1Swenshuai.xi {
2117*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2118*53ee8cc1Swenshuai.xi {
2119*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2120*53ee8cc1Swenshuai.xi return FALSE;
2121*53ee8cc1Swenshuai.xi }
2122*53ee8cc1Swenshuai.xi }
2123*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2124*53ee8cc1Swenshuai.xi stPNL_Init PNLArgs;
2125*53ee8cc1Swenshuai.xi PNLArgs.pSelPanelType = pSelPanelType;
2126*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2127*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_INIT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2128*53ee8cc1Swenshuai.xi {
2129*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2130*53ee8cc1Swenshuai.xi return FALSE;
2131*53ee8cc1Swenshuai.xi }
2132*53ee8cc1Swenshuai.xi else
2133*53ee8cc1Swenshuai.xi {
2134*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2135*53ee8cc1Swenshuai.xi }
2136*53ee8cc1Swenshuai.xi #else
2137*53ee8cc1Swenshuai.xi return MApi_PNL_Init_U2(pu32PNLInst, pSelPanelType);
2138*53ee8cc1Swenshuai.xi #endif
2139*53ee8cc1Swenshuai.xi
2140*53ee8cc1Swenshuai.xi }
2141*53ee8cc1Swenshuai.xi
2142*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////
2143*53ee8cc1Swenshuai.xi //
2144*53ee8cc1Swenshuai.xi //
2145*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////
MApi_PNL_Init_Ex_U2(void * pInstance,PanelType * pSelPanelType,MSIF_Version LIBVER)2146*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Init_Ex_U2(void *pInstance, PanelType *pSelPanelType/* <in > */, MSIF_Version LIBVER)
2147*53ee8cc1Swenshuai.xi {
2148*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2149*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2150*53ee8cc1Swenshuai.xi
2151*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2152*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2153*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2154*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2155*53ee8cc1Swenshuai.xi
2156*53ee8cc1Swenshuai.xi // save version info
2157*53ee8cc1Swenshuai.xi {
2158*53ee8cc1Swenshuai.xi memcpy(( MS_U8* )&pPNLResourcePrivate->_api_pnl_version_sel, ( MS_U8* )(&LIBVER), sizeof( MSIF_Version) );
2159*53ee8cc1Swenshuai.xi }
2160*53ee8cc1Swenshuai.xi
2161*53ee8cc1Swenshuai.xi return MApi_PNL_Init_U2(pInstance, pSelPanelType);
2162*53ee8cc1Swenshuai.xi }
2163*53ee8cc1Swenshuai.xi
MApi_PNL_Init_Ex(PanelType * pSelPanelType,MSIF_Version LIBVER)2164*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Init_Ex(PanelType *pSelPanelType/* <in > */, MSIF_Version LIBVER)
2165*53ee8cc1Swenshuai.xi {
2166*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2167*53ee8cc1Swenshuai.xi {
2168*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2169*53ee8cc1Swenshuai.xi {
2170*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2171*53ee8cc1Swenshuai.xi return FALSE;
2172*53ee8cc1Swenshuai.xi }
2173*53ee8cc1Swenshuai.xi }
2174*53ee8cc1Swenshuai.xi
2175*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2176*53ee8cc1Swenshuai.xi stPNL_Init_Ex PNLArgs;
2177*53ee8cc1Swenshuai.xi PNLArgs.pSelPanelType = pSelPanelType;
2178*53ee8cc1Swenshuai.xi PNLArgs.LIBVER = LIBVER;
2179*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2180*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_INIT_EX, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2181*53ee8cc1Swenshuai.xi {
2182*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2183*53ee8cc1Swenshuai.xi return FALSE;
2184*53ee8cc1Swenshuai.xi }
2185*53ee8cc1Swenshuai.xi else
2186*53ee8cc1Swenshuai.xi {
2187*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2188*53ee8cc1Swenshuai.xi }
2189*53ee8cc1Swenshuai.xi #else
2190*53ee8cc1Swenshuai.xi return MApi_PNL_Init_Ex_U2(pu32PNLInst, pSelPanelType, LIBVER);
2191*53ee8cc1Swenshuai.xi #endif
2192*53ee8cc1Swenshuai.xi }
2193*53ee8cc1Swenshuai.xi
MApi_PNL_GetConfig_U2(void * pInstance,PanelType * pSelPanelType)2194*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_GetConfig_U2(void *pInstance, PanelType *pSelPanelType)
2195*53ee8cc1Swenshuai.xi {
2196*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2197*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2198*53ee8cc1Swenshuai.xi
2199*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2200*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2201*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2202*53ee8cc1Swenshuai.xi if(pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized)
2203*53ee8cc1Swenshuai.xi {
2204*53ee8cc1Swenshuai.xi memcpy(pSelPanelType, &(pPNLResourcePrivate->stapiPNL._stPanelTypeSaved), sizeof(PanelType));
2205*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2206*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
2207*53ee8cc1Swenshuai.xi }
2208*53ee8cc1Swenshuai.xi else
2209*53ee8cc1Swenshuai.xi {
2210*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2211*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2212*53ee8cc1Swenshuai.xi
2213*53ee8cc1Swenshuai.xi }
2214*53ee8cc1Swenshuai.xi }
2215*53ee8cc1Swenshuai.xi
MApi_PNL_GetConfig(PanelType * pSelPanelType)2216*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_GetConfig(PanelType *pSelPanelType)
2217*53ee8cc1Swenshuai.xi {
2218*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2219*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2220*53ee8cc1Swenshuai.xi {
2221*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2222*53ee8cc1Swenshuai.xi {
2223*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2224*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2225*53ee8cc1Swenshuai.xi }
2226*53ee8cc1Swenshuai.xi }
2227*53ee8cc1Swenshuai.xi
2228*53ee8cc1Swenshuai.xi stPNL_GetConfig PNLArgs;
2229*53ee8cc1Swenshuai.xi PNLArgs.pSelPanelType = pSelPanelType;
2230*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
2231*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GET_CONFIG, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2232*53ee8cc1Swenshuai.xi {
2233*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2234*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2235*53ee8cc1Swenshuai.xi }
2236*53ee8cc1Swenshuai.xi else
2237*53ee8cc1Swenshuai.xi {
2238*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
2239*53ee8cc1Swenshuai.xi }
2240*53ee8cc1Swenshuai.xi #else
2241*53ee8cc1Swenshuai.xi return MApi_PNL_GetConfig_U2(pu32PNLInst, pSelPanelType);
2242*53ee8cc1Swenshuai.xi #endif
2243*53ee8cc1Swenshuai.xi }
2244*53ee8cc1Swenshuai.xi
MApi_PNL_Control_Out_Swing_U2(void * pInstance,MS_U16 u16Swing_Level)2245*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Control_Out_Swing_U2(void *pInstance, MS_U16 u16Swing_Level)
2246*53ee8cc1Swenshuai.xi {
2247*53ee8cc1Swenshuai.xi #if 0
2248*53ee8cc1Swenshuai.xi if((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type_Ext == E_PNL_LPLL_VBY1_10BIT_4LANE)
2249*53ee8cc1Swenshuai.xi ||(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type_Ext == E_PNL_LPLL_VBY1_10BIT_2LANE))
2250*53ee8cc1Swenshuai.xi {
2251*53ee8cc1Swenshuai.xi u16Swing_Level = 600;
2252*53ee8cc1Swenshuai.xi }
2253*53ee8cc1Swenshuai.xi #endif
2254*53ee8cc1Swenshuai.xi MS_BOOL bReturn = FALSE;
2255*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2256*53ee8cc1Swenshuai.xi
2257*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2258*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2259*53ee8cc1Swenshuai.xi bReturn = MDrv_PNL_Control_Out_Swing(pInstance, u16Swing_Level);
2260*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2261*53ee8cc1Swenshuai.xi
2262*53ee8cc1Swenshuai.xi return bReturn;
2263*53ee8cc1Swenshuai.xi }
2264*53ee8cc1Swenshuai.xi
MApi_PNL_Control_Out_Swing(MS_U16 u16Swing_Level)2265*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Control_Out_Swing(MS_U16 u16Swing_Level)
2266*53ee8cc1Swenshuai.xi {
2267*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2268*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2269*53ee8cc1Swenshuai.xi {
2270*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2271*53ee8cc1Swenshuai.xi {
2272*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2273*53ee8cc1Swenshuai.xi return FALSE;
2274*53ee8cc1Swenshuai.xi }
2275*53ee8cc1Swenshuai.xi }
2276*53ee8cc1Swenshuai.xi
2277*53ee8cc1Swenshuai.xi stPNL_Control_Out_Swing PNLArgs;
2278*53ee8cc1Swenshuai.xi PNLArgs.u16Swing_Level = u16Swing_Level;
2279*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2280*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_CONTROL_OUT_SWING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2281*53ee8cc1Swenshuai.xi {
2282*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2283*53ee8cc1Swenshuai.xi return FALSE;
2284*53ee8cc1Swenshuai.xi }
2285*53ee8cc1Swenshuai.xi else
2286*53ee8cc1Swenshuai.xi {
2287*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2288*53ee8cc1Swenshuai.xi }
2289*53ee8cc1Swenshuai.xi #else
2290*53ee8cc1Swenshuai.xi return MApi_PNL_Control_Out_Swing_U2(pu32PNLInst, u16Swing_Level);
2291*53ee8cc1Swenshuai.xi #endif
2292*53ee8cc1Swenshuai.xi }
2293*53ee8cc1Swenshuai.xi
MApi_PNL_ForceSetPanelDCLK_U2(void * pInstance,MS_U16 u16PanelDCLK,MS_BOOL bSetDCLKEnable)2294*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_ForceSetPanelDCLK_U2(void *pInstance, MS_U16 u16PanelDCLK ,MS_BOOL bSetDCLKEnable)
2295*53ee8cc1Swenshuai.xi {
2296*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2297*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2298*53ee8cc1Swenshuai.xi
2299*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2300*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2301*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2302*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._u16PanelDCLK = u16PanelDCLK;
2303*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._bForceSetDCLKEnable = bSetDCLKEnable;
2304*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2305*53ee8cc1Swenshuai.xi return TRUE;
2306*53ee8cc1Swenshuai.xi }
2307*53ee8cc1Swenshuai.xi
MApi_PNL_ForceSetPanelDCLK(MS_U16 u16PanelDCLK,MS_BOOL bSetDCLKEnable)2308*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_ForceSetPanelDCLK(MS_U16 u16PanelDCLK ,MS_BOOL bSetDCLKEnable)
2309*53ee8cc1Swenshuai.xi {
2310*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2311*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2312*53ee8cc1Swenshuai.xi {
2313*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2314*53ee8cc1Swenshuai.xi {
2315*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2316*53ee8cc1Swenshuai.xi return FALSE;
2317*53ee8cc1Swenshuai.xi }
2318*53ee8cc1Swenshuai.xi }
2319*53ee8cc1Swenshuai.xi
2320*53ee8cc1Swenshuai.xi stPNL_ForceSetPanelDCLK PNLArgs;
2321*53ee8cc1Swenshuai.xi PNLArgs.u16PanelDCLK = u16PanelDCLK;
2322*53ee8cc1Swenshuai.xi PNLArgs.bSetDCLKEnable = bSetDCLKEnable;
2323*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2324*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_FORCESETPANELDCLK, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2325*53ee8cc1Swenshuai.xi {
2326*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2327*53ee8cc1Swenshuai.xi return FALSE;
2328*53ee8cc1Swenshuai.xi }
2329*53ee8cc1Swenshuai.xi else
2330*53ee8cc1Swenshuai.xi {
2331*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2332*53ee8cc1Swenshuai.xi }
2333*53ee8cc1Swenshuai.xi #else
2334*53ee8cc1Swenshuai.xi return MApi_PNL_ForceSetPanelDCLK_U2(pu32PNLInst, u16PanelDCLK, bSetDCLKEnable);
2335*53ee8cc1Swenshuai.xi #endif
2336*53ee8cc1Swenshuai.xi }
2337*53ee8cc1Swenshuai.xi
MApi_PNL_ForceSetPanelHStart_U2(void * pInstance,MS_U16 u16PanelHStart,MS_BOOL bSetHStartEnable)2338*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_ForceSetPanelHStart_U2(void *pInstance, MS_U16 u16PanelHStart ,MS_BOOL bSetHStartEnable)
2339*53ee8cc1Swenshuai.xi {
2340*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2341*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2342*53ee8cc1Swenshuai.xi
2343*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2344*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2345*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2346*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._u16PanelHStart = u16PanelHStart;
2347*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._bForceSetHStartEnable = bSetHStartEnable;
2348*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2349*53ee8cc1Swenshuai.xi return TRUE;
2350*53ee8cc1Swenshuai.xi }
2351*53ee8cc1Swenshuai.xi
MApi_PNL_ForceSetPanelHStart(MS_U16 u16PanelHStart,MS_BOOL bSetHStartEnable)2352*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_ForceSetPanelHStart(MS_U16 u16PanelHStart ,MS_BOOL bSetHStartEnable)
2353*53ee8cc1Swenshuai.xi {
2354*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2355*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2356*53ee8cc1Swenshuai.xi {
2357*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2358*53ee8cc1Swenshuai.xi {
2359*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2360*53ee8cc1Swenshuai.xi return FALSE;
2361*53ee8cc1Swenshuai.xi }
2362*53ee8cc1Swenshuai.xi }
2363*53ee8cc1Swenshuai.xi
2364*53ee8cc1Swenshuai.xi stPNL_ForceSetPanelHStart PNLArgs;
2365*53ee8cc1Swenshuai.xi PNLArgs.u16PanelHStart = u16PanelHStart;
2366*53ee8cc1Swenshuai.xi PNLArgs.bSetHStartEnable = bSetHStartEnable;
2367*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2368*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_FORCESETPANELHSTART, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2369*53ee8cc1Swenshuai.xi {
2370*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2371*53ee8cc1Swenshuai.xi return FALSE;
2372*53ee8cc1Swenshuai.xi }
2373*53ee8cc1Swenshuai.xi else
2374*53ee8cc1Swenshuai.xi {
2375*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2376*53ee8cc1Swenshuai.xi }
2377*53ee8cc1Swenshuai.xi #else
2378*53ee8cc1Swenshuai.xi return MApi_PNL_ForceSetPanelHStart_U2(pu32PNLInst, u16PanelHStart, bSetHStartEnable);
2379*53ee8cc1Swenshuai.xi #endif
2380*53ee8cc1Swenshuai.xi }
2381*53ee8cc1Swenshuai.xi
MApi_PNL_SetOutput_U2(void * pInstance,APIPNL_OUTPUT_MODE eOutputMode)2382*53ee8cc1Swenshuai.xi void MApi_PNL_SetOutput_U2(void *pInstance, APIPNL_OUTPUT_MODE eOutputMode)
2383*53ee8cc1Swenshuai.xi {
2384*53ee8cc1Swenshuai.xi PNL_OUTPUT_MODE ePnlOutputMode;
2385*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2386*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2387*53ee8cc1Swenshuai.xi
2388*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2389*53ee8cc1Swenshuai.xi
2390*53ee8cc1Swenshuai.xi switch(eOutputMode)
2391*53ee8cc1Swenshuai.xi {
2392*53ee8cc1Swenshuai.xi case E_APIPNL_OUTPUT_NO_OUTPUT:
2393*53ee8cc1Swenshuai.xi ePnlOutputMode = E_PNL_OUTPUT_NO_OUTPUT;
2394*53ee8cc1Swenshuai.xi break;
2395*53ee8cc1Swenshuai.xi
2396*53ee8cc1Swenshuai.xi case E_APIPNL_OUTPUT_CLK_ONLY:
2397*53ee8cc1Swenshuai.xi ePnlOutputMode = E_PNL_OUTPUT_CLK_ONLY;
2398*53ee8cc1Swenshuai.xi break;
2399*53ee8cc1Swenshuai.xi
2400*53ee8cc1Swenshuai.xi case E_APIPNL_OUTPUT_DATA_ONLY:
2401*53ee8cc1Swenshuai.xi ePnlOutputMode = E_PNL_OUTPUT_DATA_ONLY;
2402*53ee8cc1Swenshuai.xi break;
2403*53ee8cc1Swenshuai.xi
2404*53ee8cc1Swenshuai.xi case E_APIPNL_OUTPUT_CLK_DATA:
2405*53ee8cc1Swenshuai.xi default:
2406*53ee8cc1Swenshuai.xi ePnlOutputMode = E_PNL_OUTPUT_CLK_DATA;
2407*53ee8cc1Swenshuai.xi break;
2408*53ee8cc1Swenshuai.xi }
2409*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2410*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2411*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2412*53ee8cc1Swenshuai.xi if(pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized == TRUE)
2413*53ee8cc1Swenshuai.xi {
2414*53ee8cc1Swenshuai.xi MDrv_PNL_SetOutputType(pInstance, ePnlOutputMode, pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type);
2415*53ee8cc1Swenshuai.xi MDrv_PNL_MISC_Control(pInstance, pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC);
2416*53ee8cc1Swenshuai.xi }
2417*53ee8cc1Swenshuai.xi else
2418*53ee8cc1Swenshuai.xi {
2419*53ee8cc1Swenshuai.xi MS_CRITICAL_MSG(printf("Must call MApi_PNL_Init() first\n"));
2420*53ee8cc1Swenshuai.xi }
2421*53ee8cc1Swenshuai.xi _PNL_RETURN();
2422*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2423*53ee8cc1Swenshuai.xi }
2424*53ee8cc1Swenshuai.xi
MApi_PNL_SetOutput(APIPNL_OUTPUT_MODE eOutputMode)2425*53ee8cc1Swenshuai.xi void MApi_PNL_SetOutput(APIPNL_OUTPUT_MODE eOutputMode)
2426*53ee8cc1Swenshuai.xi {
2427*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2428*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2429*53ee8cc1Swenshuai.xi {
2430*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2431*53ee8cc1Swenshuai.xi {
2432*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2433*53ee8cc1Swenshuai.xi return;
2434*53ee8cc1Swenshuai.xi }
2435*53ee8cc1Swenshuai.xi }
2436*53ee8cc1Swenshuai.xi
2437*53ee8cc1Swenshuai.xi stPNL_SetOutput PNLArgs;
2438*53ee8cc1Swenshuai.xi PNLArgs.eOutputMode = eOutputMode;
2439*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETOUTPUT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2440*53ee8cc1Swenshuai.xi {
2441*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2442*53ee8cc1Swenshuai.xi }
2443*53ee8cc1Swenshuai.xi #else
2444*53ee8cc1Swenshuai.xi MApi_PNL_SetOutput_U2(pu32PNLInst, eOutputMode);
2445*53ee8cc1Swenshuai.xi #endif
2446*53ee8cc1Swenshuai.xi }
2447*53ee8cc1Swenshuai.xi
MApi_PNL_ChangePanelType_U2(void * pInstance,PanelType * pSelPanelType)2448*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_ChangePanelType_U2(void *pInstance, PanelType *pSelPanelType)
2449*53ee8cc1Swenshuai.xi {
2450*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2451*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
2452*53ee8cc1Swenshuai.xi
2453*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2454*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2455*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
2456*53ee8cc1Swenshuai.xi if (pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized == FALSE)
2457*53ee8cc1Swenshuai.xi {
2458*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2459*53ee8cc1Swenshuai.xi return FALSE;
2460*53ee8cc1Swenshuai.xi }
2461*53ee8cc1Swenshuai.xi
2462*53ee8cc1Swenshuai.xi if(pSelPanelType == NULL)
2463*53ee8cc1Swenshuai.xi {
2464*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2465*53ee8cc1Swenshuai.xi return FALSE;
2466*53ee8cc1Swenshuai.xi }
2467*53ee8cc1Swenshuai.xi
2468*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2469*53ee8cc1Swenshuai.xi _SetPanelParams(pInstance, pSelPanelType);
2470*53ee8cc1Swenshuai.xi _PNL_RETURN();
2471*53ee8cc1Swenshuai.xi
2472*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2473*53ee8cc1Swenshuai.xi return TRUE;
2474*53ee8cc1Swenshuai.xi }
2475*53ee8cc1Swenshuai.xi
MApi_PNL_ChangePanelType(PanelType * pSelPanelType)2476*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_ChangePanelType(PanelType *pSelPanelType)
2477*53ee8cc1Swenshuai.xi {
2478*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2479*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2480*53ee8cc1Swenshuai.xi {
2481*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2482*53ee8cc1Swenshuai.xi {
2483*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2484*53ee8cc1Swenshuai.xi return FALSE;
2485*53ee8cc1Swenshuai.xi }
2486*53ee8cc1Swenshuai.xi }
2487*53ee8cc1Swenshuai.xi
2488*53ee8cc1Swenshuai.xi stPNL_ChangePanelType PNLArgs;
2489*53ee8cc1Swenshuai.xi PNLArgs.pSelPanelType = pSelPanelType;
2490*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2491*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_CHANGEPANELTYPE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2492*53ee8cc1Swenshuai.xi {
2493*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2494*53ee8cc1Swenshuai.xi return FALSE;
2495*53ee8cc1Swenshuai.xi }
2496*53ee8cc1Swenshuai.xi else
2497*53ee8cc1Swenshuai.xi {
2498*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2499*53ee8cc1Swenshuai.xi }
2500*53ee8cc1Swenshuai.xi #else
2501*53ee8cc1Swenshuai.xi return MApi_PNL_ChangePanelType_U2(pu32PNLInst, pSelPanelType);
2502*53ee8cc1Swenshuai.xi #endif
2503*53ee8cc1Swenshuai.xi }
2504*53ee8cc1Swenshuai.xi
MApi_PNL_TCONMAP_DumpTable_U2(void * pInstance,MS_U8 * pTCONTable,MS_U8 u8Tcontype)2505*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_TCONMAP_DumpTable_U2(void *pInstance, MS_U8 *pTCONTable, MS_U8 u8Tcontype)
2506*53ee8cc1Swenshuai.xi {
2507*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2508*53ee8cc1Swenshuai.xi
2509*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2510*53ee8cc1Swenshuai.xi
2511*53ee8cc1Swenshuai.xi switch(u8Tcontype)
2512*53ee8cc1Swenshuai.xi {
2513*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_GENERAL:
2514*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_GPIO:
2515*53ee8cc1Swenshuai.xi MDrv_PNL_TCON_DumpGENRegTab(pInstance, pTCONTable);
2516*53ee8cc1Swenshuai.xi break;
2517*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_SCALER:
2518*53ee8cc1Swenshuai.xi MDrv_PNL_TCON_DumpSCRegTab(pInstance, pTCONTable);
2519*53ee8cc1Swenshuai.xi break;
2520*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_MOD:
2521*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2522*53ee8cc1Swenshuai.xi MDrv_PNL_TCON_DumpMODRegTab(pInstance, pTCONTable);
2523*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2524*53ee8cc1Swenshuai.xi break;
2525*53ee8cc1Swenshuai.xi
2526*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_POWER_SEQUENCE_ON:
2527*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_POWER_SEQUENCE_OFF:
2528*53ee8cc1Swenshuai.xi //_MDrv_PNL_TCON_DumpPSRegTab(pTCONTable);
2529*53ee8cc1Swenshuai.xi break;
2530*53ee8cc1Swenshuai.xi
2531*53ee8cc1Swenshuai.xi case E_APIPNL_TCON_TAB_TYPE_GAMMA:
2532*53ee8cc1Swenshuai.xi break;
2533*53ee8cc1Swenshuai.xi
2534*53ee8cc1Swenshuai.xi default:
2535*53ee8cc1Swenshuai.xi printf("GetTable: unknown tcon type=%u> \n", u8Tcontype);
2536*53ee8cc1Swenshuai.xi break;
2537*53ee8cc1Swenshuai.xi }
2538*53ee8cc1Swenshuai.xi
2539*53ee8cc1Swenshuai.xi return TRUE;
2540*53ee8cc1Swenshuai.xi }
2541*53ee8cc1Swenshuai.xi
MApi_PNL_TCONMAP_DumpTable(MS_U8 * pTCONTable,MS_U8 u8Tcontype)2542*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_TCONMAP_DumpTable(MS_U8 *pTCONTable, MS_U8 u8Tcontype)
2543*53ee8cc1Swenshuai.xi {
2544*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2545*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2546*53ee8cc1Swenshuai.xi {
2547*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2548*53ee8cc1Swenshuai.xi {
2549*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2550*53ee8cc1Swenshuai.xi return FALSE;
2551*53ee8cc1Swenshuai.xi }
2552*53ee8cc1Swenshuai.xi }
2553*53ee8cc1Swenshuai.xi
2554*53ee8cc1Swenshuai.xi stPNL_TCONMAP_DumpTable PNLArgs;
2555*53ee8cc1Swenshuai.xi PNLArgs.pTCONTable = pTCONTable;
2556*53ee8cc1Swenshuai.xi PNLArgs.u8Tcontype = u8Tcontype;
2557*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2558*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_TCONMAP_DUMPTABLE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2559*53ee8cc1Swenshuai.xi {
2560*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2561*53ee8cc1Swenshuai.xi return FALSE;
2562*53ee8cc1Swenshuai.xi }
2563*53ee8cc1Swenshuai.xi else
2564*53ee8cc1Swenshuai.xi {
2565*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2566*53ee8cc1Swenshuai.xi }
2567*53ee8cc1Swenshuai.xi #else
2568*53ee8cc1Swenshuai.xi return MApi_PNL_TCONMAP_DumpTable_U2(pu32PNLInst, pTCONTable, u8Tcontype);
2569*53ee8cc1Swenshuai.xi #endif
2570*53ee8cc1Swenshuai.xi }
2571*53ee8cc1Swenshuai.xi
MApi_PNL_TCONMAP_Power_Sequence_U2(void * pInstance,MS_U8 * pTCONTable,MS_BOOL bEnable)2572*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_TCONMAP_Power_Sequence_U2(void *pInstance, MS_U8 *pTCONTable, MS_BOOL bEnable)
2573*53ee8cc1Swenshuai.xi {
2574*53ee8cc1Swenshuai.xi // Move to APP
2575*53ee8cc1Swenshuai.xi #if 0
2576*53ee8cc1Swenshuai.xi MDrv_PNL_TCONMAP_Power_Sequence(pTCONTable, bEnable);
2577*53ee8cc1Swenshuai.xi #endif
2578*53ee8cc1Swenshuai.xi printf("\n\n!![Alert]Don't ued this function. It is removed!!\n\n");
2579*53ee8cc1Swenshuai.xi return FALSE;
2580*53ee8cc1Swenshuai.xi }
2581*53ee8cc1Swenshuai.xi
MApi_PNL_TCONMAP_Power_Sequence(MS_U8 * pTCONTable,MS_BOOL bEnable)2582*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_TCONMAP_Power_Sequence(MS_U8 *pTCONTable, MS_BOOL bEnable)
2583*53ee8cc1Swenshuai.xi {
2584*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2585*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2586*53ee8cc1Swenshuai.xi {
2587*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2588*53ee8cc1Swenshuai.xi {
2589*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2590*53ee8cc1Swenshuai.xi return FALSE;
2591*53ee8cc1Swenshuai.xi }
2592*53ee8cc1Swenshuai.xi }
2593*53ee8cc1Swenshuai.xi
2594*53ee8cc1Swenshuai.xi stPNL_TCONMAP_Power_Sequence PNLArgs;
2595*53ee8cc1Swenshuai.xi PNLArgs.pTCONTable = pTCONTable;
2596*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
2597*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2598*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_TCONMAP_POWER_SEQUENCE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2599*53ee8cc1Swenshuai.xi {
2600*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2601*53ee8cc1Swenshuai.xi return FALSE;
2602*53ee8cc1Swenshuai.xi }
2603*53ee8cc1Swenshuai.xi else
2604*53ee8cc1Swenshuai.xi {
2605*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2606*53ee8cc1Swenshuai.xi }
2607*53ee8cc1Swenshuai.xi #else
2608*53ee8cc1Swenshuai.xi return MApi_PNL_TCONMAP_Power_Sequence_U2(pu32PNLInst, pTCONTable, bEnable);
2609*53ee8cc1Swenshuai.xi #endif
2610*53ee8cc1Swenshuai.xi }
2611*53ee8cc1Swenshuai.xi
MApi_PNL_SetOutputPattern_U2(void * pInstance,MS_BOOL bEnable,MS_U16 u16Red,MS_U16 u16Green,MS_U16 u16Blue)2612*53ee8cc1Swenshuai.xi void MApi_PNL_SetOutputPattern_U2(void *pInstance, MS_BOOL bEnable, MS_U16 u16Red , MS_U16 u16Green, MS_U16 u16Blue)
2613*53ee8cc1Swenshuai.xi {
2614*53ee8cc1Swenshuai.xi MDrv_PNL_SetOutputPattern(pInstance, bEnable,u16Red,u16Green,u16Blue);
2615*53ee8cc1Swenshuai.xi }
2616*53ee8cc1Swenshuai.xi
MApi_PNL_SetOutputPattern(MS_BOOL bEnable,MS_U16 u16Red,MS_U16 u16Green,MS_U16 u16Blue)2617*53ee8cc1Swenshuai.xi void MApi_PNL_SetOutputPattern(MS_BOOL bEnable, MS_U16 u16Red , MS_U16 u16Green, MS_U16 u16Blue)
2618*53ee8cc1Swenshuai.xi {
2619*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2620*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2621*53ee8cc1Swenshuai.xi {
2622*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2623*53ee8cc1Swenshuai.xi {
2624*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2625*53ee8cc1Swenshuai.xi return;
2626*53ee8cc1Swenshuai.xi }
2627*53ee8cc1Swenshuai.xi }
2628*53ee8cc1Swenshuai.xi
2629*53ee8cc1Swenshuai.xi stPNL_SetOutputPattern PNLArgs;
2630*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
2631*53ee8cc1Swenshuai.xi PNLArgs.u16Red = u16Red;
2632*53ee8cc1Swenshuai.xi PNLArgs.u16Green = u16Green;
2633*53ee8cc1Swenshuai.xi PNLArgs.u16Blue = u16Blue;
2634*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SET_OUTPUT_PATTERN, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2635*53ee8cc1Swenshuai.xi {
2636*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2637*53ee8cc1Swenshuai.xi }
2638*53ee8cc1Swenshuai.xi #else
2639*53ee8cc1Swenshuai.xi MApi_PNL_SetOutputPattern_U2(pu32PNLInst, bEnable, u16Red, u16Green, u16Blue);
2640*53ee8cc1Swenshuai.xi #endif
2641*53ee8cc1Swenshuai.xi }
2642*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2643*53ee8cc1Swenshuai.xi /// Setup TCON Count Reset ON/OFF
2644*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable
2645*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_TCON_Count_Reset_U2(void * pInstance,MS_BOOL bEnable)2646*53ee8cc1Swenshuai.xi void MApi_PNL_TCON_Count_Reset_U2 (void *pInstance, MS_BOOL bEnable )
2647*53ee8cc1Swenshuai.xi {
2648*53ee8cc1Swenshuai.xi MDrv_PNL_TCON_Count_Reset(pInstance, bEnable);
2649*53ee8cc1Swenshuai.xi }
2650*53ee8cc1Swenshuai.xi
MApi_PNL_TCON_Count_Reset(MS_BOOL bEnable)2651*53ee8cc1Swenshuai.xi void MApi_PNL_TCON_Count_Reset (MS_BOOL bEnable)
2652*53ee8cc1Swenshuai.xi {
2653*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2654*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2655*53ee8cc1Swenshuai.xi {
2656*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2657*53ee8cc1Swenshuai.xi {
2658*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2659*53ee8cc1Swenshuai.xi return;
2660*53ee8cc1Swenshuai.xi }
2661*53ee8cc1Swenshuai.xi }
2662*53ee8cc1Swenshuai.xi
2663*53ee8cc1Swenshuai.xi stPNL_TCON_Count_Reset PNLArgs;
2664*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
2665*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_TCON_COUNT_RESET, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2666*53ee8cc1Swenshuai.xi {
2667*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2668*53ee8cc1Swenshuai.xi }
2669*53ee8cc1Swenshuai.xi #else
2670*53ee8cc1Swenshuai.xi MApi_PNL_TCON_Count_Reset_U2(pu32PNLInst, bEnable);
2671*53ee8cc1Swenshuai.xi #endif
2672*53ee8cc1Swenshuai.xi }
2673*53ee8cc1Swenshuai.xi
MApi_PNL_TCON_Init_U2(void * pInstance)2674*53ee8cc1Swenshuai.xi void MApi_PNL_TCON_Init_U2(void *pInstance)
2675*53ee8cc1Swenshuai.xi {
2676*53ee8cc1Swenshuai.xi MDrv_PNL_TCON_Init(pInstance);
2677*53ee8cc1Swenshuai.xi }
2678*53ee8cc1Swenshuai.xi
MApi_PNL_TCON_Init(void)2679*53ee8cc1Swenshuai.xi void MApi_PNL_TCON_Init( void )
2680*53ee8cc1Swenshuai.xi {
2681*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2682*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2683*53ee8cc1Swenshuai.xi {
2684*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2685*53ee8cc1Swenshuai.xi {
2686*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2687*53ee8cc1Swenshuai.xi return;
2688*53ee8cc1Swenshuai.xi }
2689*53ee8cc1Swenshuai.xi }
2690*53ee8cc1Swenshuai.xi
2691*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_TCON_INIT, NULL) != UTOPIA_STATUS_SUCCESS)
2692*53ee8cc1Swenshuai.xi {
2693*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2694*53ee8cc1Swenshuai.xi }
2695*53ee8cc1Swenshuai.xi #else
2696*53ee8cc1Swenshuai.xi MApi_PNL_TCON_Init_U2(pu32PNLInst);
2697*53ee8cc1Swenshuai.xi #endif
2698*53ee8cc1Swenshuai.xi }
2699*53ee8cc1Swenshuai.xi
MApi_PNL_GetDstInfo_U2(void * pInstance,MS_PNL_DST_DispInfo * pDstInfo,MS_U32 u32SizeofDstInfo)2700*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetDstInfo_U2(void *pInstance, MS_PNL_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo)
2701*53ee8cc1Swenshuai.xi {
2702*53ee8cc1Swenshuai.xi PNL_TimingInfo PNL_Data;
2703*53ee8cc1Swenshuai.xi MS_BOOL bReturn = FALSE;
2704*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2705*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2706*53ee8cc1Swenshuai.xi
2707*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2708*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2709*53ee8cc1Swenshuai.xi
2710*53ee8cc1Swenshuai.xi if(NULL == pDstInfo)
2711*53ee8cc1Swenshuai.xi {
2712*53ee8cc1Swenshuai.xi PNL_DBG_MSG("MApi_PNL_GetDstInfo():pDstInfo is NULL\n");
2713*53ee8cc1Swenshuai.xi bReturn = FALSE;
2714*53ee8cc1Swenshuai.xi }
2715*53ee8cc1Swenshuai.xi else if(u32SizeofDstInfo != sizeof(MS_PNL_DST_DispInfo))
2716*53ee8cc1Swenshuai.xi {
2717*53ee8cc1Swenshuai.xi PNL_DBG_MSG("MApi_PNL_GetDstInfo():u16SizeofDstInfo is different from the MS_PNL_DST_DispInfo defined, check header file!\n");
2718*53ee8cc1Swenshuai.xi bReturn = FALSE;
2719*53ee8cc1Swenshuai.xi }
2720*53ee8cc1Swenshuai.xi else if(MDrv_PNL_GetDataFromRegister(pInstance, &PNL_Data))
2721*53ee8cc1Swenshuai.xi {
2722*53ee8cc1Swenshuai.xi pDstInfo->VDTOT = PNL_Data.u16VTotal;
2723*53ee8cc1Swenshuai.xi pDstInfo->HDTOT = PNL_Data.u16HTotal;
2724*53ee8cc1Swenshuai.xi pDstInfo->DEHST = PNL_Data.u16DEHStart;
2725*53ee8cc1Swenshuai.xi pDstInfo->DEHEND= PNL_Data.u16DEHEnd;
2726*53ee8cc1Swenshuai.xi pDstInfo->DEVST= PNL_Data.u16DEVStart;
2727*53ee8cc1Swenshuai.xi pDstInfo->DEVEND= PNL_Data.u16DEVEnd;
2728*53ee8cc1Swenshuai.xi pDstInfo->bYUVOutput = MDrv_PNL_isYUVOutput(pInstance);
2729*53ee8cc1Swenshuai.xi pDstInfo->bInterlaceMode = PNL_Data.bInterlaceOutput;
2730*53ee8cc1Swenshuai.xi bReturn = TRUE;
2731*53ee8cc1Swenshuai.xi }
2732*53ee8cc1Swenshuai.xi else
2733*53ee8cc1Swenshuai.xi {
2734*53ee8cc1Swenshuai.xi pDstInfo->VDTOT = 0;
2735*53ee8cc1Swenshuai.xi pDstInfo->HDTOT = 0;
2736*53ee8cc1Swenshuai.xi pDstInfo->DEHST = 0;
2737*53ee8cc1Swenshuai.xi pDstInfo->DEHEND= 0;
2738*53ee8cc1Swenshuai.xi pDstInfo->DEVST= 0;
2739*53ee8cc1Swenshuai.xi pDstInfo->DEVEND= 0;
2740*53ee8cc1Swenshuai.xi pDstInfo->bInterlaceMode = FALSE;
2741*53ee8cc1Swenshuai.xi pDstInfo->bYUVOutput = FALSE;
2742*53ee8cc1Swenshuai.xi bReturn = FALSE;
2743*53ee8cc1Swenshuai.xi }
2744*53ee8cc1Swenshuai.xi
2745*53ee8cc1Swenshuai.xi _PNL_RETURN();
2746*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2747*53ee8cc1Swenshuai.xi return bReturn;
2748*53ee8cc1Swenshuai.xi }
2749*53ee8cc1Swenshuai.xi
MApi_PNL_GetDstInfo(MS_PNL_DST_DispInfo * pDstInfo,MS_U32 u32SizeofDstInfo)2750*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetDstInfo(MS_PNL_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo)
2751*53ee8cc1Swenshuai.xi {
2752*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2753*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2754*53ee8cc1Swenshuai.xi {
2755*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2756*53ee8cc1Swenshuai.xi {
2757*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2758*53ee8cc1Swenshuai.xi return FALSE;
2759*53ee8cc1Swenshuai.xi }
2760*53ee8cc1Swenshuai.xi }
2761*53ee8cc1Swenshuai.xi
2762*53ee8cc1Swenshuai.xi stPNL_GetDstInfo PNLArgs;
2763*53ee8cc1Swenshuai.xi PNLArgs.pDstInfo = pDstInfo;
2764*53ee8cc1Swenshuai.xi PNLArgs.u32SizeofDstInfo = u32SizeofDstInfo;
2765*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2766*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETDSTINFO, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2767*53ee8cc1Swenshuai.xi {
2768*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2769*53ee8cc1Swenshuai.xi return FALSE;
2770*53ee8cc1Swenshuai.xi }
2771*53ee8cc1Swenshuai.xi else
2772*53ee8cc1Swenshuai.xi {
2773*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2774*53ee8cc1Swenshuai.xi }
2775*53ee8cc1Swenshuai.xi #else
2776*53ee8cc1Swenshuai.xi return MApi_PNL_GetDstInfo_U2(pu32PNLInst, pDstInfo, u32SizeofDstInfo);
2777*53ee8cc1Swenshuai.xi #endif
2778*53ee8cc1Swenshuai.xi }
2779*53ee8cc1Swenshuai.xi
MApi_Mod_Calibration_Setting_U2(void * pInstance,MS_PNL_ModCaliInfo * pstModCaliInfo)2780*53ee8cc1Swenshuai.xi MS_BOOL MApi_Mod_Calibration_Setting_U2(void *pInstance, MS_PNL_ModCaliInfo *pstModCaliInfo)
2781*53ee8cc1Swenshuai.xi {
2782*53ee8cc1Swenshuai.xi PNL_ModCali_InitData stModCaliInitData;
2783*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2784*53ee8cc1Swenshuai.xi
2785*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2786*53ee8cc1Swenshuai.xi memset(&stModCaliInitData, 0 , sizeof(PNL_ModCali_InitData));
2787*53ee8cc1Swenshuai.xi
2788*53ee8cc1Swenshuai.xi if(pstModCaliInfo == NULL)
2789*53ee8cc1Swenshuai.xi {
2790*53ee8cc1Swenshuai.xi return FALSE;
2791*53ee8cc1Swenshuai.xi }
2792*53ee8cc1Swenshuai.xi
2793*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2794*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2795*53ee8cc1Swenshuai.xi stModCaliInitData.u16ExpectSwingLevel = pstModCaliInfo->m_u16ExpectSwingLevel;
2796*53ee8cc1Swenshuai.xi stModCaliInitData.u8ModCaliPairSel = pstModCaliInfo->m_u8ModCaliPairSel;
2797*53ee8cc1Swenshuai.xi stModCaliInitData.u8ModCaliTarget = pstModCaliInfo->m_u8ModCaliTarget;
2798*53ee8cc1Swenshuai.xi stModCaliInitData.s8ModCaliOffset = pstModCaliInfo->m_s8ModCaliOffset;
2799*53ee8cc1Swenshuai.xi stModCaliInitData.bPVDD_2V5 = pstModCaliInfo->m_bPVDD_2V5;
2800*53ee8cc1Swenshuai.xi MDrv_Mod_Calibration_Init(pInstance, &stModCaliInitData);
2801*53ee8cc1Swenshuai.xi _PNL_RETURN();
2802*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2803*53ee8cc1Swenshuai.xi
2804*53ee8cc1Swenshuai.xi return TRUE;
2805*53ee8cc1Swenshuai.xi }
2806*53ee8cc1Swenshuai.xi
MApi_Mod_Calibration_Setting(MS_PNL_ModCaliInfo * pstModCaliInfo)2807*53ee8cc1Swenshuai.xi MS_BOOL MApi_Mod_Calibration_Setting(MS_PNL_ModCaliInfo *pstModCaliInfo)
2808*53ee8cc1Swenshuai.xi {
2809*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2810*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2811*53ee8cc1Swenshuai.xi {
2812*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2813*53ee8cc1Swenshuai.xi {
2814*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2815*53ee8cc1Swenshuai.xi return FALSE;
2816*53ee8cc1Swenshuai.xi }
2817*53ee8cc1Swenshuai.xi }
2818*53ee8cc1Swenshuai.xi
2819*53ee8cc1Swenshuai.xi if(pstModCaliInfo == NULL)
2820*53ee8cc1Swenshuai.xi {
2821*53ee8cc1Swenshuai.xi printf("MOD Calibration config setting is NULL\n");
2822*53ee8cc1Swenshuai.xi return FALSE;
2823*53ee8cc1Swenshuai.xi }
2824*53ee8cc1Swenshuai.xi
2825*53ee8cc1Swenshuai.xi stPNL_Mod_Calibration_Setting PNLArgs;
2826*53ee8cc1Swenshuai.xi PNLArgs.pstModCaliInfo = pstModCaliInfo;
2827*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2828*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_MOD_CALIBRATION_SETTING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2829*53ee8cc1Swenshuai.xi {
2830*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2831*53ee8cc1Swenshuai.xi return FALSE;
2832*53ee8cc1Swenshuai.xi }
2833*53ee8cc1Swenshuai.xi else
2834*53ee8cc1Swenshuai.xi {
2835*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2836*53ee8cc1Swenshuai.xi }
2837*53ee8cc1Swenshuai.xi #else
2838*53ee8cc1Swenshuai.xi return MApi_Mod_Calibration_Setting_U2(pu32PNLInst, pstModCaliInfo);
2839*53ee8cc1Swenshuai.xi #endif
2840*53ee8cc1Swenshuai.xi }
2841*53ee8cc1Swenshuai.xi
MApi_Mod_Do_Calibration_U2(void * pInstance)2842*53ee8cc1Swenshuai.xi MS_BOOL MApi_Mod_Do_Calibration_U2(void *pInstance)
2843*53ee8cc1Swenshuai.xi {
2844*53ee8cc1Swenshuai.xi MS_BOOL bResult = FALSE;
2845*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2846*53ee8cc1Swenshuai.xi
2847*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2848*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2849*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2850*53ee8cc1Swenshuai.xi if ( E_PNL_OK == MDrv_PNL_MOD_Calibration(pInstance) )
2851*53ee8cc1Swenshuai.xi bResult = TRUE;
2852*53ee8cc1Swenshuai.xi else
2853*53ee8cc1Swenshuai.xi bResult = FALSE;
2854*53ee8cc1Swenshuai.xi _PNL_RETURN();
2855*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2856*53ee8cc1Swenshuai.xi return bResult;
2857*53ee8cc1Swenshuai.xi }
2858*53ee8cc1Swenshuai.xi
MApi_Mod_Do_Calibration(void)2859*53ee8cc1Swenshuai.xi MS_BOOL MApi_Mod_Do_Calibration(void)
2860*53ee8cc1Swenshuai.xi {
2861*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2862*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2863*53ee8cc1Swenshuai.xi {
2864*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2865*53ee8cc1Swenshuai.xi {
2866*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2867*53ee8cc1Swenshuai.xi return FALSE;
2868*53ee8cc1Swenshuai.xi }
2869*53ee8cc1Swenshuai.xi }
2870*53ee8cc1Swenshuai.xi
2871*53ee8cc1Swenshuai.xi stPNL_Mod_Do_Calibration PNLArgs;
2872*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
2873*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_MOD_DO_CALIBRATION, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2874*53ee8cc1Swenshuai.xi {
2875*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2876*53ee8cc1Swenshuai.xi return FALSE;
2877*53ee8cc1Swenshuai.xi }
2878*53ee8cc1Swenshuai.xi else
2879*53ee8cc1Swenshuai.xi {
2880*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
2881*53ee8cc1Swenshuai.xi }
2882*53ee8cc1Swenshuai.xi #else
2883*53ee8cc1Swenshuai.xi return MApi_Mod_Do_Calibration_U2(pu32PNLInst);
2884*53ee8cc1Swenshuai.xi #endif
2885*53ee8cc1Swenshuai.xi }
2886*53ee8cc1Swenshuai.xi
MApi_BD_LVDS_Output_Type_U2(void * pInstance,MS_U16 Type)2887*53ee8cc1Swenshuai.xi void MApi_BD_LVDS_Output_Type_U2(void *pInstance, MS_U16 Type)
2888*53ee8cc1Swenshuai.xi {
2889*53ee8cc1Swenshuai.xi #if (KERNEL_DRIVER_PNL_STR_PATCH == 1)
2890*53ee8cc1Swenshuai.xi void *pModule;
2891*53ee8cc1Swenshuai.xi UtopiaInstanceGetModule(pInstance, &pModule);
2892*53ee8cc1Swenshuai.xi PNL_REGS_SAVE_AREA *pPNLResourceStr = NULL;
2893*53ee8cc1Swenshuai.xi UtopiaModuleGetSTRPrivate(pModule, (void**)&pPNLResourceStr);
2894*53ee8cc1Swenshuai.xi pPNLResourceStr->BD_LVDS_Output_Type = Type;
2895*53ee8cc1Swenshuai.xi #endif
2896*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
2897*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
2898*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2899*53ee8cc1Swenshuai.xi MDrv_BD_LVDS_Output_Type(pInstance, Type);
2900*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
2901*53ee8cc1Swenshuai.xi }
2902*53ee8cc1Swenshuai.xi
MApi_BD_LVDS_Output_Type(MS_U16 Type)2903*53ee8cc1Swenshuai.xi void MApi_BD_LVDS_Output_Type(MS_U16 Type)
2904*53ee8cc1Swenshuai.xi {
2905*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2906*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2907*53ee8cc1Swenshuai.xi {
2908*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2909*53ee8cc1Swenshuai.xi {
2910*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2911*53ee8cc1Swenshuai.xi return;
2912*53ee8cc1Swenshuai.xi }
2913*53ee8cc1Swenshuai.xi }
2914*53ee8cc1Swenshuai.xi
2915*53ee8cc1Swenshuai.xi stPNL_BD_LVDS_Output_Type PNLArgs;
2916*53ee8cc1Swenshuai.xi PNLArgs.Type = Type;
2917*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_BD_LVDS_OUTPUT_TYPE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2918*53ee8cc1Swenshuai.xi {
2919*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2920*53ee8cc1Swenshuai.xi }
2921*53ee8cc1Swenshuai.xi #else
2922*53ee8cc1Swenshuai.xi MApi_BD_LVDS_Output_Type_U2(pu32PNLInst, Type);
2923*53ee8cc1Swenshuai.xi #endif
2924*53ee8cc1Swenshuai.xi }
2925*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_En_U2(void * pInstance,MS_BOOL bEnable)2926*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetSSC_En_U2(void *pInstance, MS_BOOL bEnable)
2927*53ee8cc1Swenshuai.xi {
2928*53ee8cc1Swenshuai.xi #if 1
2929*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2930*53ee8cc1Swenshuai.xi MDrv_PNL_SetSSC_En(pInstance, bEnable);
2931*53ee8cc1Swenshuai.xi _PNL_RETURN();
2932*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
2933*53ee8cc1Swenshuai.xi #endif
2934*53ee8cc1Swenshuai.xi }
2935*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_En(MS_BOOL bEnable)2936*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetSSC_En(MS_BOOL bEnable)
2937*53ee8cc1Swenshuai.xi {
2938*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2939*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2940*53ee8cc1Swenshuai.xi {
2941*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2942*53ee8cc1Swenshuai.xi {
2943*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2944*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2945*53ee8cc1Swenshuai.xi }
2946*53ee8cc1Swenshuai.xi }
2947*53ee8cc1Swenshuai.xi
2948*53ee8cc1Swenshuai.xi stPNL_SetSSC_En PNLArgs;
2949*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
2950*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
2951*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETSSC_EN, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
2952*53ee8cc1Swenshuai.xi {
2953*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
2954*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2955*53ee8cc1Swenshuai.xi }
2956*53ee8cc1Swenshuai.xi else
2957*53ee8cc1Swenshuai.xi {
2958*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
2959*53ee8cc1Swenshuai.xi }
2960*53ee8cc1Swenshuai.xi #else
2961*53ee8cc1Swenshuai.xi return MApi_PNL_SetSSC_En_U2(pu32PNLInst, bEnable);
2962*53ee8cc1Swenshuai.xi #endif
2963*53ee8cc1Swenshuai.xi }
2964*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_Fmodulation_U2(void * pInstance,MS_U16 u16Fmodulation)2965*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetSSC_Fmodulation_U2(void *pInstance, MS_U16 u16Fmodulation)
2966*53ee8cc1Swenshuai.xi {
2967*53ee8cc1Swenshuai.xi #if 1
2968*53ee8cc1Swenshuai.xi if(u16Fmodulation)
2969*53ee8cc1Swenshuai.xi {
2970*53ee8cc1Swenshuai.xi _PNL_ENTRY();
2971*53ee8cc1Swenshuai.xi
2972*53ee8cc1Swenshuai.xi MDrv_PNL_SetSSC_Fmodulation(pInstance, u16Fmodulation);
2973*53ee8cc1Swenshuai.xi
2974*53ee8cc1Swenshuai.xi _PNL_RETURN();
2975*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
2976*53ee8cc1Swenshuai.xi }
2977*53ee8cc1Swenshuai.xi else
2978*53ee8cc1Swenshuai.xi {
2979*53ee8cc1Swenshuai.xi printf("\n\n!![Alert]zero u16Fmodulation (Lvds_SscSpan)!!\n\n");
2980*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2981*53ee8cc1Swenshuai.xi }
2982*53ee8cc1Swenshuai.xi #endif
2983*53ee8cc1Swenshuai.xi }
2984*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_Fmodulation(MS_U16 u16Fmodulation)2985*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetSSC_Fmodulation(MS_U16 u16Fmodulation)
2986*53ee8cc1Swenshuai.xi {
2987*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
2988*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
2989*53ee8cc1Swenshuai.xi {
2990*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
2991*53ee8cc1Swenshuai.xi {
2992*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
2993*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
2994*53ee8cc1Swenshuai.xi }
2995*53ee8cc1Swenshuai.xi }
2996*53ee8cc1Swenshuai.xi
2997*53ee8cc1Swenshuai.xi stPNL_SetSSC_Fmodulation PNLArgs;
2998*53ee8cc1Swenshuai.xi PNLArgs.u16Fmodulation = u16Fmodulation;
2999*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
3000*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETSSC_FMODULATION, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3001*53ee8cc1Swenshuai.xi {
3002*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3003*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3004*53ee8cc1Swenshuai.xi }
3005*53ee8cc1Swenshuai.xi else
3006*53ee8cc1Swenshuai.xi {
3007*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
3008*53ee8cc1Swenshuai.xi }
3009*53ee8cc1Swenshuai.xi #else
3010*53ee8cc1Swenshuai.xi return MApi_PNL_SetSSC_Fmodulation_U2(pu32PNLInst, u16Fmodulation);
3011*53ee8cc1Swenshuai.xi #endif
3012*53ee8cc1Swenshuai.xi }
3013*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_Rdeviation_U2(void * pInstance,MS_U16 u16Rdeviation)3014*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetSSC_Rdeviation_U2(void *pInstance, MS_U16 u16Rdeviation)
3015*53ee8cc1Swenshuai.xi {
3016*53ee8cc1Swenshuai.xi #if 1
3017*53ee8cc1Swenshuai.xi if(u16Rdeviation)
3018*53ee8cc1Swenshuai.xi {
3019*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3020*53ee8cc1Swenshuai.xi MDrv_PNL_SetSSC_Rdeviation(pInstance, u16Rdeviation);
3021*53ee8cc1Swenshuai.xi _PNL_RETURN();
3022*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3023*53ee8cc1Swenshuai.xi }
3024*53ee8cc1Swenshuai.xi else
3025*53ee8cc1Swenshuai.xi {
3026*53ee8cc1Swenshuai.xi printf("\n\n!![Alert]zero u16Rdeviation (Lvds_SscStep)!!\n\n");
3027*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3028*53ee8cc1Swenshuai.xi }
3029*53ee8cc1Swenshuai.xi #endif
3030*53ee8cc1Swenshuai.xi }
3031*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_Rdeviation(MS_U16 u16Rdeviation)3032*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetSSC_Rdeviation(MS_U16 u16Rdeviation)
3033*53ee8cc1Swenshuai.xi {
3034*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3035*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3036*53ee8cc1Swenshuai.xi {
3037*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3038*53ee8cc1Swenshuai.xi {
3039*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3040*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3041*53ee8cc1Swenshuai.xi }
3042*53ee8cc1Swenshuai.xi }
3043*53ee8cc1Swenshuai.xi
3044*53ee8cc1Swenshuai.xi stPNL_SetSSC_Rdeviation PNLArgs;
3045*53ee8cc1Swenshuai.xi PNLArgs.u16Rdeviation = u16Rdeviation;
3046*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
3047*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETSSC_RDEVIATION, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3048*53ee8cc1Swenshuai.xi {
3049*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3050*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3051*53ee8cc1Swenshuai.xi }
3052*53ee8cc1Swenshuai.xi else
3053*53ee8cc1Swenshuai.xi {
3054*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
3055*53ee8cc1Swenshuai.xi }
3056*53ee8cc1Swenshuai.xi #else
3057*53ee8cc1Swenshuai.xi return MApi_PNL_SetSSC_Rdeviation_U2(pu32PNLInst, u16Rdeviation);
3058*53ee8cc1Swenshuai.xi #endif
3059*53ee8cc1Swenshuai.xi }
3060*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDSSC_En_U2(void * pInstance,MS_BOOL bEnable)3061*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOSDSSC_En_U2(void *pInstance, MS_BOOL bEnable)
3062*53ee8cc1Swenshuai.xi {
3063*53ee8cc1Swenshuai.xi #if 1
3064*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3065*53ee8cc1Swenshuai.xi MDrv_PNL_SetOSDSSC_En(pInstance, bEnable);
3066*53ee8cc1Swenshuai.xi _PNL_RETURN();
3067*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3068*53ee8cc1Swenshuai.xi #endif
3069*53ee8cc1Swenshuai.xi }
3070*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDSSC_En(MS_BOOL bEnable)3071*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOSDSSC_En(MS_BOOL bEnable)
3072*53ee8cc1Swenshuai.xi {
3073*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3074*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3075*53ee8cc1Swenshuai.xi {
3076*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3077*53ee8cc1Swenshuai.xi {
3078*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3079*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3080*53ee8cc1Swenshuai.xi }
3081*53ee8cc1Swenshuai.xi }
3082*53ee8cc1Swenshuai.xi
3083*53ee8cc1Swenshuai.xi stPNL_SetOSDSSC_En PNLArgs;
3084*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
3085*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
3086*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETOSDSSC_EN, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3087*53ee8cc1Swenshuai.xi {
3088*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3089*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3090*53ee8cc1Swenshuai.xi }
3091*53ee8cc1Swenshuai.xi else
3092*53ee8cc1Swenshuai.xi {
3093*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
3094*53ee8cc1Swenshuai.xi }
3095*53ee8cc1Swenshuai.xi #else
3096*53ee8cc1Swenshuai.xi return MApi_PNL_SetOSDSSC_En_U2(pu32PNLInst, bEnable);
3097*53ee8cc1Swenshuai.xi #endif
3098*53ee8cc1Swenshuai.xi }
3099*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDSSC_Fmodulation_U2(void * pInstance,MS_U16 u16Fmodulation)3100*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOSDSSC_Fmodulation_U2(void *pInstance, MS_U16 u16Fmodulation)
3101*53ee8cc1Swenshuai.xi {
3102*53ee8cc1Swenshuai.xi #if 1
3103*53ee8cc1Swenshuai.xi if(u16Fmodulation)
3104*53ee8cc1Swenshuai.xi {
3105*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3106*53ee8cc1Swenshuai.xi
3107*53ee8cc1Swenshuai.xi MDrv_PNL_SetOSDSSC_Fmodulation(pInstance, u16Fmodulation);
3108*53ee8cc1Swenshuai.xi
3109*53ee8cc1Swenshuai.xi _PNL_RETURN();
3110*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3111*53ee8cc1Swenshuai.xi }
3112*53ee8cc1Swenshuai.xi else
3113*53ee8cc1Swenshuai.xi {
3114*53ee8cc1Swenshuai.xi printf("\n\n!![Alert]zero OSD u16Fmodulation (Lvds_SscSpan)!!\n\n");
3115*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3116*53ee8cc1Swenshuai.xi }
3117*53ee8cc1Swenshuai.xi #endif
3118*53ee8cc1Swenshuai.xi }
3119*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDSSC_Fmodulation(MS_U16 u16Fmodulation)3120*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOSDSSC_Fmodulation(MS_U16 u16Fmodulation)
3121*53ee8cc1Swenshuai.xi {
3122*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3123*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3124*53ee8cc1Swenshuai.xi {
3125*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3126*53ee8cc1Swenshuai.xi {
3127*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3128*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3129*53ee8cc1Swenshuai.xi }
3130*53ee8cc1Swenshuai.xi }
3131*53ee8cc1Swenshuai.xi
3132*53ee8cc1Swenshuai.xi stPNL_SetOSDSSC_Fmodulation PNLArgs;
3133*53ee8cc1Swenshuai.xi PNLArgs.u16Fmodulation = u16Fmodulation;
3134*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
3135*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETOSDSSC_FMODULATION, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3136*53ee8cc1Swenshuai.xi {
3137*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3138*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3139*53ee8cc1Swenshuai.xi }
3140*53ee8cc1Swenshuai.xi else
3141*53ee8cc1Swenshuai.xi {
3142*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
3143*53ee8cc1Swenshuai.xi }
3144*53ee8cc1Swenshuai.xi #else
3145*53ee8cc1Swenshuai.xi return MApi_PNL_SetOSDSSC_Fmodulation_U2(pu32PNLInst, u16Fmodulation);
3146*53ee8cc1Swenshuai.xi #endif
3147*53ee8cc1Swenshuai.xi }
3148*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDSSC_Rdeviation_U2(void * pInstance,MS_U16 u16Rdeviation)3149*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOSDSSC_Rdeviation_U2(void *pInstance, MS_U16 u16Rdeviation)
3150*53ee8cc1Swenshuai.xi {
3151*53ee8cc1Swenshuai.xi #if 1
3152*53ee8cc1Swenshuai.xi if(u16Rdeviation)
3153*53ee8cc1Swenshuai.xi {
3154*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3155*53ee8cc1Swenshuai.xi MDrv_PNL_SetOSDSSC_Rdeviation(pInstance, u16Rdeviation);
3156*53ee8cc1Swenshuai.xi _PNL_RETURN();
3157*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3158*53ee8cc1Swenshuai.xi }
3159*53ee8cc1Swenshuai.xi else
3160*53ee8cc1Swenshuai.xi {
3161*53ee8cc1Swenshuai.xi printf("\n\n!![Alert]zero OSD u16Rdeviation (Lvds_SscStep)!!\n\n");
3162*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3163*53ee8cc1Swenshuai.xi }
3164*53ee8cc1Swenshuai.xi #endif
3165*53ee8cc1Swenshuai.xi }
3166*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSSSC_Rdeviation(MS_U16 u16Rdeviation)3167*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOSSSC_Rdeviation(MS_U16 u16Rdeviation)
3168*53ee8cc1Swenshuai.xi {
3169*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3170*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3171*53ee8cc1Swenshuai.xi {
3172*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3173*53ee8cc1Swenshuai.xi {
3174*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3175*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3176*53ee8cc1Swenshuai.xi }
3177*53ee8cc1Swenshuai.xi }
3178*53ee8cc1Swenshuai.xi
3179*53ee8cc1Swenshuai.xi stPNL_SetOSDSSC_Rdeviation PNLArgs;
3180*53ee8cc1Swenshuai.xi PNLArgs.u16Rdeviation = u16Rdeviation;
3181*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
3182*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETOSDSSC_RDEVIATION, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3183*53ee8cc1Swenshuai.xi {
3184*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3185*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3186*53ee8cc1Swenshuai.xi }
3187*53ee8cc1Swenshuai.xi else
3188*53ee8cc1Swenshuai.xi {
3189*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
3190*53ee8cc1Swenshuai.xi }
3191*53ee8cc1Swenshuai.xi #else
3192*53ee8cc1Swenshuai.xi return MApi_PNL_SetOSDSSC_Rdeviation_U2(pu32PNLInst, u16Rdeviation);
3193*53ee8cc1Swenshuai.xi #endif
3194*53ee8cc1Swenshuai.xi }
3195*53ee8cc1Swenshuai.xi
MApi_PNL_SetLPLLTypeExt_U2(void * pInstance,APIPNL_LINK_EXT_TYPE eLPLL_TypeExt)3196*53ee8cc1Swenshuai.xi void MApi_PNL_SetLPLLTypeExt_U2(void *pInstance, APIPNL_LINK_EXT_TYPE eLPLL_TypeExt)
3197*53ee8cc1Swenshuai.xi {
3198*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3199*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3200*53ee8cc1Swenshuai.xi
3201*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3202*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3203*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3204*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type_Ext = _TransToDriver_APIPNL_LINK_EXT_TYPE_To_PNL_TYPE(eLPLL_TypeExt);
3205*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3206*53ee8cc1Swenshuai.xi }
3207*53ee8cc1Swenshuai.xi
MApi_PNL_SetLPLLTypeExt(APIPNL_LINK_EXT_TYPE eLPLL_TypeExt)3208*53ee8cc1Swenshuai.xi void MApi_PNL_SetLPLLTypeExt(APIPNL_LINK_EXT_TYPE eLPLL_TypeExt)
3209*53ee8cc1Swenshuai.xi {
3210*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3211*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3212*53ee8cc1Swenshuai.xi {
3213*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3214*53ee8cc1Swenshuai.xi {
3215*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3216*53ee8cc1Swenshuai.xi return;
3217*53ee8cc1Swenshuai.xi }
3218*53ee8cc1Swenshuai.xi }
3219*53ee8cc1Swenshuai.xi
3220*53ee8cc1Swenshuai.xi stPNL_SetLPLLTypeExt PNLArgs;
3221*53ee8cc1Swenshuai.xi PNLArgs.eLPLL_TypeExt = eLPLL_TypeExt;
3222*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETLPLLTYPEEXT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3223*53ee8cc1Swenshuai.xi {
3224*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3225*53ee8cc1Swenshuai.xi }
3226*53ee8cc1Swenshuai.xi #else
3227*53ee8cc1Swenshuai.xi MApi_PNL_SetLPLLTypeExt_U2(pu32PNLInst, eLPLL_TypeExt);
3228*53ee8cc1Swenshuai.xi #endif
3229*53ee8cc1Swenshuai.xi }
3230*53ee8cc1Swenshuai.xi
MApi_PNL_Init_MISC_U2(void * pInstance,APIPNL_MISC ePNL_MISC)3231*53ee8cc1Swenshuai.xi void MApi_PNL_Init_MISC_U2(void *pInstance, APIPNL_MISC ePNL_MISC)
3232*53ee8cc1Swenshuai.xi {
3233*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3234*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3235*53ee8cc1Swenshuai.xi
3236*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3237*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3238*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3239*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC = ePNL_MISC;
3240*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3241*53ee8cc1Swenshuai.xi }
3242*53ee8cc1Swenshuai.xi
MApi_PNL_Init_MISC(APIPNL_MISC ePNL_MISC)3243*53ee8cc1Swenshuai.xi void MApi_PNL_Init_MISC(APIPNL_MISC ePNL_MISC)
3244*53ee8cc1Swenshuai.xi {
3245*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3246*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3247*53ee8cc1Swenshuai.xi {
3248*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3249*53ee8cc1Swenshuai.xi {
3250*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3251*53ee8cc1Swenshuai.xi return;
3252*53ee8cc1Swenshuai.xi }
3253*53ee8cc1Swenshuai.xi }
3254*53ee8cc1Swenshuai.xi
3255*53ee8cc1Swenshuai.xi stPNL_Init_MISC PNLArgs;
3256*53ee8cc1Swenshuai.xi PNLArgs.ePNL_MISC = ePNL_MISC;
3257*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_INIT_MISC, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3258*53ee8cc1Swenshuai.xi {
3259*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3260*53ee8cc1Swenshuai.xi }
3261*53ee8cc1Swenshuai.xi #else
3262*53ee8cc1Swenshuai.xi MApi_PNL_Init_MISC_U2(pu32PNLInst, ePNL_MISC);
3263*53ee8cc1Swenshuai.xi #endif
3264*53ee8cc1Swenshuai.xi }
3265*53ee8cc1Swenshuai.xi
MApi_PNL_GetMiscStatus_U2(void * pInstance)3266*53ee8cc1Swenshuai.xi MS_U32 MApi_PNL_GetMiscStatus_U2(void* pInstance)
3267*53ee8cc1Swenshuai.xi {
3268*53ee8cc1Swenshuai.xi MS_U32 u32PNL_Misc = 0;
3269*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3270*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3271*53ee8cc1Swenshuai.xi
3272*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3273*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3274*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3275*53ee8cc1Swenshuai.xi u32PNL_Misc = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC;
3276*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3277*53ee8cc1Swenshuai.xi
3278*53ee8cc1Swenshuai.xi return u32PNL_Misc;
3279*53ee8cc1Swenshuai.xi }
3280*53ee8cc1Swenshuai.xi
MApi_PNL_GetMiscStatus(void)3281*53ee8cc1Swenshuai.xi MS_U32 MApi_PNL_GetMiscStatus(void)
3282*53ee8cc1Swenshuai.xi {
3283*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3284*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3285*53ee8cc1Swenshuai.xi {
3286*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3287*53ee8cc1Swenshuai.xi {
3288*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3289*53ee8cc1Swenshuai.xi return 0;
3290*53ee8cc1Swenshuai.xi }
3291*53ee8cc1Swenshuai.xi }
3292*53ee8cc1Swenshuai.xi stPNL_Get_MISC_Status PNLArgs;
3293*53ee8cc1Swenshuai.xi PNLArgs.u32Status = 0;
3294*53ee8cc1Swenshuai.xi
3295*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GET_MISC_STATUS, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3296*53ee8cc1Swenshuai.xi {
3297*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3298*53ee8cc1Swenshuai.xi return 0;
3299*53ee8cc1Swenshuai.xi }
3300*53ee8cc1Swenshuai.xi else
3301*53ee8cc1Swenshuai.xi {
3302*53ee8cc1Swenshuai.xi return PNLArgs.u32Status;
3303*53ee8cc1Swenshuai.xi }
3304*53ee8cc1Swenshuai.xi #else
3305*53ee8cc1Swenshuai.xi return MApi_PNL_GetMiscStatus_U2(pu32PNLInst);
3306*53ee8cc1Swenshuai.xi #endif
3307*53ee8cc1Swenshuai.xi }
3308*53ee8cc1Swenshuai.xi
MApi_PNL_MOD_OutputConfig_User_U2(void * pInstance,MS_U32 u32OutputCFG0_7,MS_U32 u32OutputCFG8_15,MS_U32 u32OutputCFG16_21)3309*53ee8cc1Swenshuai.xi void MApi_PNL_MOD_OutputConfig_User_U2(void *pInstance, MS_U32 u32OutputCFG0_7, MS_U32 u32OutputCFG8_15, MS_U32 u32OutputCFG16_21)
3310*53ee8cc1Swenshuai.xi {
3311*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3312*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3313*53ee8cc1Swenshuai.xi
3314*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3315*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3316*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3317*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "[%s][%d]\n", __FUNCTION__, __LINE__);
3318*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u32OutputCFG0_7 = %tx\n",(ptrdiff_t)u32OutputCFG0_7);
3319*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u32OutputCFG8_15 = %tx\n",(ptrdiff_t)u32OutputCFG8_15);
3320*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u32OutputCFG16_21 = %tx\n",(ptrdiff_t)u32OutputCFG16_21);
3321*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputCFG0_7 = u32OutputCFG0_7;
3322*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputCFG8_15 = u32OutputCFG8_15;
3323*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputCFG16_21 = u32OutputCFG16_21;
3324*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3325*53ee8cc1Swenshuai.xi }
3326*53ee8cc1Swenshuai.xi
MApi_PNL_MOD_OutputConfig_User(MS_U32 u32OutputCFG0_7,MS_U32 u32OutputCFG8_15,MS_U32 u32OutputCFG16_21)3327*53ee8cc1Swenshuai.xi void MApi_PNL_MOD_OutputConfig_User(MS_U32 u32OutputCFG0_7, MS_U32 u32OutputCFG8_15, MS_U32 u32OutputCFG16_21)
3328*53ee8cc1Swenshuai.xi {
3329*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3330*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3331*53ee8cc1Swenshuai.xi {
3332*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3333*53ee8cc1Swenshuai.xi {
3334*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3335*53ee8cc1Swenshuai.xi return;
3336*53ee8cc1Swenshuai.xi }
3337*53ee8cc1Swenshuai.xi }
3338*53ee8cc1Swenshuai.xi
3339*53ee8cc1Swenshuai.xi stPNL_MOD_OutputConfig_User PNLArgs;
3340*53ee8cc1Swenshuai.xi PNLArgs.u32OutputCFG0_7 = u32OutputCFG0_7;
3341*53ee8cc1Swenshuai.xi PNLArgs.u32OutputCFG8_15 = u32OutputCFG8_15;
3342*53ee8cc1Swenshuai.xi PNLArgs.u32OutputCFG16_21 = u32OutputCFG16_21;
3343*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_MOD_OUTPUTCONFIG_USER, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3344*53ee8cc1Swenshuai.xi {
3345*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3346*53ee8cc1Swenshuai.xi }
3347*53ee8cc1Swenshuai.xi #else
3348*53ee8cc1Swenshuai.xi MApi_PNL_MOD_OutputConfig_User_U2(pu32PNLInst, u32OutputCFG0_7, u32OutputCFG8_15, u32OutputCFG16_21);
3349*53ee8cc1Swenshuai.xi #endif
3350*53ee8cc1Swenshuai.xi }
3351*53ee8cc1Swenshuai.xi
MApi_PNL_MOD_OutputChannelOrder_U2(void * pInstance,MS_U8 u8OutputOrderType,MS_U16 u16OutputOrder0_3,MS_U16 u16OutputOrder4_7,MS_U16 u16OutputOrder8_11,MS_U16 u16OutputOrder12_13)3352*53ee8cc1Swenshuai.xi void MApi_PNL_MOD_OutputChannelOrder_U2(void* pInstance,
3353*53ee8cc1Swenshuai.xi MS_U8 u8OutputOrderType,
3354*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder0_3,
3355*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder4_7,
3356*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder8_11,
3357*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder12_13)
3358*53ee8cc1Swenshuai.xi {
3359*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3360*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3361*53ee8cc1Swenshuai.xi
3362*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3363*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3364*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3365*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "[%s][%d]\n", __FUNCTION__, __LINE__);
3366*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u8OutputOrderType = %x\n", (unsigned int)u8OutputOrderType);
3367*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u16OutputOrder0_3 = %x\n", (unsigned int)u16OutputOrder0_3);
3368*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u16OutputOrder4_7 = %x\n", (unsigned int)u16OutputOrder4_7);
3369*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u16OutputOrder8_11 = %x\n", (unsigned int)u16OutputOrder8_11);
3370*53ee8cc1Swenshuai.xi PNL_DBG(PNL_DBGLEVEL_INIT, "u16OutputOrder12_13 = %x\n", (unsigned int)u16OutputOrder12_13);
3371*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u8OutputOrderType = u8OutputOrderType;
3372*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputOrder0_3 = u16OutputOrder0_3;
3373*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputOrder4_7 = u16OutputOrder4_7;
3374*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputOrder8_11 = u16OutputOrder8_11;
3375*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputOrder12_13 = u16OutputOrder12_13;
3376*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3377*53ee8cc1Swenshuai.xi }
3378*53ee8cc1Swenshuai.xi
MApi_PNL_MOD_OutputChannelOrder(MS_U8 u8OutputOrderType,MS_U16 u16OutputOrder0_3,MS_U16 u16OutputOrder4_7,MS_U16 u16OutputOrder8_11,MS_U16 u16OutputOrder12_13)3379*53ee8cc1Swenshuai.xi void MApi_PNL_MOD_OutputChannelOrder(MS_U8 u8OutputOrderType,
3380*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder0_3,
3381*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder4_7,
3382*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder8_11,
3383*53ee8cc1Swenshuai.xi MS_U16 u16OutputOrder12_13)
3384*53ee8cc1Swenshuai.xi {
3385*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3386*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3387*53ee8cc1Swenshuai.xi {
3388*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3389*53ee8cc1Swenshuai.xi {
3390*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3391*53ee8cc1Swenshuai.xi return;
3392*53ee8cc1Swenshuai.xi }
3393*53ee8cc1Swenshuai.xi }
3394*53ee8cc1Swenshuai.xi
3395*53ee8cc1Swenshuai.xi stPNL_MOD_OutputChannelOrder PNLArgs;
3396*53ee8cc1Swenshuai.xi PNLArgs.u8OutputOrderType = u8OutputOrderType;
3397*53ee8cc1Swenshuai.xi PNLArgs.u16OutputOrder0_3 = u16OutputOrder0_3;
3398*53ee8cc1Swenshuai.xi PNLArgs.u16OutputOrder4_7 = u16OutputOrder4_7;
3399*53ee8cc1Swenshuai.xi PNLArgs.u16OutputOrder8_11 = u16OutputOrder8_11;
3400*53ee8cc1Swenshuai.xi PNLArgs.u16OutputOrder12_13 = u16OutputOrder12_13;
3401*53ee8cc1Swenshuai.xi
3402*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_MOD_OUTPUT_CHANNEL_ORDER, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3403*53ee8cc1Swenshuai.xi {
3404*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3405*53ee8cc1Swenshuai.xi }
3406*53ee8cc1Swenshuai.xi #else
3407*53ee8cc1Swenshuai.xi MApi_PNL_MOD_OutputChannelOrder_U2(pu32PNLInst, u8OutputOrderType, u16OutputOrder0_3, u16OutputOrder4_7, u16OutputOrder8_11, u16OutputOrder12_13);
3408*53ee8cc1Swenshuai.xi #endif
3409*53ee8cc1Swenshuai.xi }
3410*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3411*53ee8cc1Swenshuai.xi /// Set Flag to bypass timing change in MApi_PNL_Init()
3412*53ee8cc1Swenshuai.xi /// @param bFlag \b IN: TRUE: initialize XC by skipping SW reset; FALSE: initialize XC in normal case
3413*53ee8cc1Swenshuai.xi /// @return APIPNL_Result
3414*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_SkipTimingChange_U2(void * pInstance,MS_BOOL bFlag)3415*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SkipTimingChange_U2(void *pInstance, MS_BOOL bFlag)
3416*53ee8cc1Swenshuai.xi {
3417*53ee8cc1Swenshuai.xi MS_BOOL bCap = MDrv_PNL_SkipTimingChange_GetCaps(pInstance);
3418*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3419*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3420*53ee8cc1Swenshuai.xi
3421*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3422*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3423*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3424*53ee8cc1Swenshuai.xi if( (bFlag == TRUE) && (bCap == TRUE) )
3425*53ee8cc1Swenshuai.xi {
3426*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._bSkipTimingChange = TRUE;
3427*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3428*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3429*53ee8cc1Swenshuai.xi }
3430*53ee8cc1Swenshuai.xi else
3431*53ee8cc1Swenshuai.xi {
3432*53ee8cc1Swenshuai.xi //else, not supported
3433*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._bSkipTimingChange = FALSE;
3434*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3435*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3436*53ee8cc1Swenshuai.xi }
3437*53ee8cc1Swenshuai.xi }
3438*53ee8cc1Swenshuai.xi
MApi_PNL_SkipTimingChange(MS_BOOL bFlag)3439*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SkipTimingChange(MS_BOOL bFlag)
3440*53ee8cc1Swenshuai.xi {
3441*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3442*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3443*53ee8cc1Swenshuai.xi {
3444*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3445*53ee8cc1Swenshuai.xi {
3446*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3447*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3448*53ee8cc1Swenshuai.xi }
3449*53ee8cc1Swenshuai.xi }
3450*53ee8cc1Swenshuai.xi
3451*53ee8cc1Swenshuai.xi stPNL_SkipTimingChange PNLArgs;
3452*53ee8cc1Swenshuai.xi PNLArgs.bFlag = bFlag;
3453*53ee8cc1Swenshuai.xi PNLArgs.eResult = E_APIPNL_FAIL;
3454*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SKIPTIMINGCHANGE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3455*53ee8cc1Swenshuai.xi {
3456*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3457*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3458*53ee8cc1Swenshuai.xi }
3459*53ee8cc1Swenshuai.xi else
3460*53ee8cc1Swenshuai.xi {
3461*53ee8cc1Swenshuai.xi return PNLArgs.eResult;
3462*53ee8cc1Swenshuai.xi }
3463*53ee8cc1Swenshuai.xi #else
3464*53ee8cc1Swenshuai.xi return MApi_PNL_SkipTimingChange_U2(pu32PNLInst, bFlag);
3465*53ee8cc1Swenshuai.xi #endif
3466*53ee8cc1Swenshuai.xi }
3467*53ee8cc1Swenshuai.xi
3468*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3469*53ee8cc1Swenshuai.xi /// Set Pre Set Mode On
3470*53ee8cc1Swenshuai.xi /// @param bSetMode \b IN: TRUE: when set mode on t; FALSE: when set mode off
3471*53ee8cc1Swenshuai.xi /// @return E_APIPNL_OK or E_APIPNL_FAIL
3472*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_PreSetModeOn_U2(void * pInstance,MS_BOOL bSetModeOn)3473*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_PreSetModeOn_U2(void *pInstance, MS_BOOL bSetModeOn)
3474*53ee8cc1Swenshuai.xi {
3475*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3476*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3477*53ee8cc1Swenshuai.xi
3478*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3479*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3480*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3481*53ee8cc1Swenshuai.xi
3482*53ee8cc1Swenshuai.xi if( IsVBY1(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type) )
3483*53ee8cc1Swenshuai.xi {
3484*53ee8cc1Swenshuai.xi MDrv_PNL_PreSetModeOn(pInstance, bSetModeOn);
3485*53ee8cc1Swenshuai.xi }
3486*53ee8cc1Swenshuai.xi else if((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE) ||
3487*53ee8cc1Swenshuai.xi (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE))
3488*53ee8cc1Swenshuai.xi {
3489*53ee8cc1Swenshuai.xi MDrv_PNL_PreSetModeOn(pInstance, bSetModeOn);
3490*53ee8cc1Swenshuai.xi }
3491*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3492*53ee8cc1Swenshuai.xi
3493*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3494*53ee8cc1Swenshuai.xi }
3495*53ee8cc1Swenshuai.xi
MApi_PNL_PreSetModeOn(MS_BOOL bSetModeOn)3496*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_PreSetModeOn(MS_BOOL bSetModeOn)
3497*53ee8cc1Swenshuai.xi {
3498*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3499*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3500*53ee8cc1Swenshuai.xi {
3501*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3502*53ee8cc1Swenshuai.xi {
3503*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3504*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3505*53ee8cc1Swenshuai.xi }
3506*53ee8cc1Swenshuai.xi }
3507*53ee8cc1Swenshuai.xi
3508*53ee8cc1Swenshuai.xi stPNL_PreSetModeOn PNLArgs;
3509*53ee8cc1Swenshuai.xi PNLArgs.bSetMode = bSetModeOn;
3510*53ee8cc1Swenshuai.xi PNLArgs.eResult = E_APIPNL_FAIL;
3511*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_PRE_SET_MODE_ON, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3512*53ee8cc1Swenshuai.xi {
3513*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3514*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3515*53ee8cc1Swenshuai.xi }
3516*53ee8cc1Swenshuai.xi else
3517*53ee8cc1Swenshuai.xi {
3518*53ee8cc1Swenshuai.xi return PNLArgs.eResult;
3519*53ee8cc1Swenshuai.xi }
3520*53ee8cc1Swenshuai.xi #else
3521*53ee8cc1Swenshuai.xi return MApi_PNL_PreSetModeOn_U2(pu32PNLInst, bSetModeOn);
3522*53ee8cc1Swenshuai.xi #endif
3523*53ee8cc1Swenshuai.xi }
3524*53ee8cc1Swenshuai.xi
MApi_PNL_HWLVDSReservedtoLRFlag_U2(void * pInstance,MS_PNL_HW_LVDSResInfo lvdsresinfo)3525*53ee8cc1Swenshuai.xi void MApi_PNL_HWLVDSReservedtoLRFlag_U2(void *pInstance, MS_PNL_HW_LVDSResInfo lvdsresinfo)
3526*53ee8cc1Swenshuai.xi {
3527*53ee8cc1Swenshuai.xi PNL_DrvHW_LVDSResInfo drv_lvdsinfo;
3528*53ee8cc1Swenshuai.xi drv_lvdsinfo.u32pair = lvdsresinfo.u32pair;
3529*53ee8cc1Swenshuai.xi drv_lvdsinfo.u16channel = lvdsresinfo.u16channel;
3530*53ee8cc1Swenshuai.xi drv_lvdsinfo.bEnable = lvdsresinfo.bEnable;
3531*53ee8cc1Swenshuai.xi MDrv_PNL_HWLVDSReservedtoLRFlag(pInstance, drv_lvdsinfo);
3532*53ee8cc1Swenshuai.xi }
3533*53ee8cc1Swenshuai.xi
MApi_PNL_HWLVDSReservedtoLRFlag(MS_PNL_HW_LVDSResInfo lvdsresinfo)3534*53ee8cc1Swenshuai.xi void MApi_PNL_HWLVDSReservedtoLRFlag(MS_PNL_HW_LVDSResInfo lvdsresinfo)
3535*53ee8cc1Swenshuai.xi {
3536*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3537*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3538*53ee8cc1Swenshuai.xi {
3539*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3540*53ee8cc1Swenshuai.xi {
3541*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3542*53ee8cc1Swenshuai.xi return;
3543*53ee8cc1Swenshuai.xi }
3544*53ee8cc1Swenshuai.xi }
3545*53ee8cc1Swenshuai.xi
3546*53ee8cc1Swenshuai.xi stPNL_HWLVDSReservedtoLRFlag PNLArgs;
3547*53ee8cc1Swenshuai.xi PNLArgs.lvdsresinfo = lvdsresinfo;
3548*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_HWLVDSRESERVEDTOLRFLAG, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3549*53ee8cc1Swenshuai.xi {
3550*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3551*53ee8cc1Swenshuai.xi }
3552*53ee8cc1Swenshuai.xi #else
3553*53ee8cc1Swenshuai.xi MApi_PNL_HWLVDSReservedtoLRFlag_U2(pu32PNLInst, lvdsresinfo);
3554*53ee8cc1Swenshuai.xi #endif
3555*53ee8cc1Swenshuai.xi }
3556*53ee8cc1Swenshuai.xi
3557*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////
3558*53ee8cc1Swenshuai.xi // Turn OD function
3559*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////
3560*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3561*53ee8cc1Swenshuai.xi /// Initialize OverDrive
3562*53ee8cc1Swenshuai.xi /// @param pXC_ODInitData \b IN: the Initialized Data
3563*53ee8cc1Swenshuai.xi /// @param u32ODInitDataLen \b IN: the length of the initialized data
3564*53ee8cc1Swenshuai.xi /// @return E_APIPNL_OK or E_APIPNL_FAIL
3565*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_OverDriver_Init_U2(void * pInstance,MS_PNL_OD_INITDATA * pPNL_ODInitData,MS_U32 u32ODInitDataLen)3566*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_OverDriver_Init_U2(void *pInstance, MS_PNL_OD_INITDATA *pPNL_ODInitData, MS_U32 u32ODInitDataLen)
3567*53ee8cc1Swenshuai.xi {
3568*53ee8cc1Swenshuai.xi if(u32ODInitDataLen != sizeof(MS_PNL_OD_INITDATA))
3569*53ee8cc1Swenshuai.xi {
3570*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3571*53ee8cc1Swenshuai.xi }
3572*53ee8cc1Swenshuai.xi
3573*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3574*53ee8cc1Swenshuai.xi MDrv_PNL_OverDriver_Init(pInstance, pPNL_ODInitData->u32OD_MSB_Addr, pPNL_ODInitData->u32OD_LSB_Addr, pPNL_ODInitData->u8ODTbl);
3575*53ee8cc1Swenshuai.xi _PNL_RETURN();
3576*53ee8cc1Swenshuai.xi
3577*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3578*53ee8cc1Swenshuai.xi }
3579*53ee8cc1Swenshuai.xi
MApi_PNL_OverDriver_Init(MS_PNL_OD_INITDATA * pPNL_ODInitData,MS_U32 u32ODInitDataLen)3580*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_OverDriver_Init(MS_PNL_OD_INITDATA *pPNL_ODInitData, MS_U32 u32ODInitDataLen)
3581*53ee8cc1Swenshuai.xi {
3582*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3583*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3584*53ee8cc1Swenshuai.xi {
3585*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3586*53ee8cc1Swenshuai.xi {
3587*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3588*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3589*53ee8cc1Swenshuai.xi }
3590*53ee8cc1Swenshuai.xi }
3591*53ee8cc1Swenshuai.xi
3592*53ee8cc1Swenshuai.xi stPNL_OverDriver_Init PNLArgs;
3593*53ee8cc1Swenshuai.xi PNLArgs.pPNL_ODInitData = pPNL_ODInitData;
3594*53ee8cc1Swenshuai.xi PNLArgs.u32ODInitDataLen = u32ODInitDataLen;
3595*53ee8cc1Swenshuai.xi PNLArgs.eResult = E_APIPNL_FAIL;
3596*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_OVERDRIVER_INIT, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3597*53ee8cc1Swenshuai.xi {
3598*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3599*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3600*53ee8cc1Swenshuai.xi }
3601*53ee8cc1Swenshuai.xi else
3602*53ee8cc1Swenshuai.xi {
3603*53ee8cc1Swenshuai.xi return PNLArgs.eResult;
3604*53ee8cc1Swenshuai.xi }
3605*53ee8cc1Swenshuai.xi #else
3606*53ee8cc1Swenshuai.xi return MApi_PNL_OverDriver_Init_U2(pu32PNLInst, pPNL_ODInitData, u32ODInitDataLen);
3607*53ee8cc1Swenshuai.xi #endif
3608*53ee8cc1Swenshuai.xi }
3609*53ee8cc1Swenshuai.xi
3610*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3611*53ee8cc1Swenshuai.xi /// OverDrive Enable
3612*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable OverDrive; FALSE: Disable OverDrive
3613*53ee8cc1Swenshuai.xi /// @return E_APIPNL_OK or E_APIPNL_FAIL
3614*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_OverDriver_Enable_U2(void * pInstance,MS_BOOL bEnable)3615*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_OverDriver_Enable_U2(void *pInstance, MS_BOOL bEnable)
3616*53ee8cc1Swenshuai.xi {
3617*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3618*53ee8cc1Swenshuai.xi MDrv_PNL_OverDriver_Enable(pInstance, bEnable);
3619*53ee8cc1Swenshuai.xi _PNL_RETURN();
3620*53ee8cc1Swenshuai.xi return E_APIPNL_OK;
3621*53ee8cc1Swenshuai.xi }
3622*53ee8cc1Swenshuai.xi
MApi_PNL_OverDriver_Enable(MS_BOOL bEnable)3623*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_OverDriver_Enable(MS_BOOL bEnable)
3624*53ee8cc1Swenshuai.xi {
3625*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3626*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3627*53ee8cc1Swenshuai.xi {
3628*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3629*53ee8cc1Swenshuai.xi {
3630*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3631*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3632*53ee8cc1Swenshuai.xi }
3633*53ee8cc1Swenshuai.xi }
3634*53ee8cc1Swenshuai.xi
3635*53ee8cc1Swenshuai.xi stPNL_OverDriver_Enable PNLArgs;
3636*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
3637*53ee8cc1Swenshuai.xi PNLArgs.eResult = E_APIPNL_FAIL;
3638*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_OVERDRIVER_ENABLE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3639*53ee8cc1Swenshuai.xi {
3640*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3641*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
3642*53ee8cc1Swenshuai.xi }
3643*53ee8cc1Swenshuai.xi else
3644*53ee8cc1Swenshuai.xi {
3645*53ee8cc1Swenshuai.xi return PNLArgs.eResult;
3646*53ee8cc1Swenshuai.xi }
3647*53ee8cc1Swenshuai.xi #else
3648*53ee8cc1Swenshuai.xi return MApi_PNL_OverDriver_Enable_U2(pu32PNLInst, bEnable);
3649*53ee8cc1Swenshuai.xi #endif
3650*53ee8cc1Swenshuai.xi }
3651*53ee8cc1Swenshuai.xi
MApi_MOD_PVDD_Power_Setting_U2(void * pInstance,MS_BOOL bIs2p5)3652*53ee8cc1Swenshuai.xi void MApi_MOD_PVDD_Power_Setting_U2(void *pInstance, MS_BOOL bIs2p5)
3653*53ee8cc1Swenshuai.xi {
3654*53ee8cc1Swenshuai.xi _PNL_ENTRY();
3655*53ee8cc1Swenshuai.xi MDrv_MOD_PVDD_Power_Setting(pInstance, bIs2p5);
3656*53ee8cc1Swenshuai.xi _PNL_RETURN();
3657*53ee8cc1Swenshuai.xi }
3658*53ee8cc1Swenshuai.xi
MApi_MOD_PVDD_Power_Setting(MS_BOOL bIs2p5)3659*53ee8cc1Swenshuai.xi void MApi_MOD_PVDD_Power_Setting(MS_BOOL bIs2p5)
3660*53ee8cc1Swenshuai.xi {
3661*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3662*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3663*53ee8cc1Swenshuai.xi {
3664*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3665*53ee8cc1Swenshuai.xi {
3666*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3667*53ee8cc1Swenshuai.xi return;
3668*53ee8cc1Swenshuai.xi }
3669*53ee8cc1Swenshuai.xi }
3670*53ee8cc1Swenshuai.xi
3671*53ee8cc1Swenshuai.xi stPNL_MOD_PVDD_Power_Setting PNLArgs;
3672*53ee8cc1Swenshuai.xi PNLArgs.bIs2p5 = bIs2p5;
3673*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_MOD_PVDD_POWER_SETTING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3674*53ee8cc1Swenshuai.xi {
3675*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3676*53ee8cc1Swenshuai.xi }
3677*53ee8cc1Swenshuai.xi #else
3678*53ee8cc1Swenshuai.xi MApi_MOD_PVDD_Power_Setting_U2(pu32PNLInst, bIs2p5);
3679*53ee8cc1Swenshuai.xi #endif
3680*53ee8cc1Swenshuai.xi }
3681*53ee8cc1Swenshuai.xi
3682*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3683*53ee8cc1Swenshuai.xi ///-obosolte!! use MApi_PNL_Control_Out_Swing instead
3684*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_SetDiffSwingLevel_U2(void * pInstance,MS_U8 u8Swing_Level)3685*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetDiffSwingLevel_U2(void *pInstance, MS_U8 u8Swing_Level)
3686*53ee8cc1Swenshuai.xi {
3687*53ee8cc1Swenshuai.xi return FALSE;
3688*53ee8cc1Swenshuai.xi }
3689*53ee8cc1Swenshuai.xi
MApi_PNL_SetDiffSwingLevel(MS_U8 u8Swing_Level)3690*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetDiffSwingLevel(MS_U8 u8Swing_Level)
3691*53ee8cc1Swenshuai.xi {
3692*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3693*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3694*53ee8cc1Swenshuai.xi {
3695*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3696*53ee8cc1Swenshuai.xi {
3697*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3698*53ee8cc1Swenshuai.xi return FALSE;
3699*53ee8cc1Swenshuai.xi }
3700*53ee8cc1Swenshuai.xi }
3701*53ee8cc1Swenshuai.xi
3702*53ee8cc1Swenshuai.xi stPNL_SetDiffSwingLevel PNLArgs;
3703*53ee8cc1Swenshuai.xi PNLArgs.u8Swing_Level = u8Swing_Level;
3704*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
3705*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETDIFFSWINGLEVEL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3706*53ee8cc1Swenshuai.xi {
3707*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3708*53ee8cc1Swenshuai.xi return FALSE;
3709*53ee8cc1Swenshuai.xi }
3710*53ee8cc1Swenshuai.xi else
3711*53ee8cc1Swenshuai.xi {
3712*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
3713*53ee8cc1Swenshuai.xi }
3714*53ee8cc1Swenshuai.xi #else
3715*53ee8cc1Swenshuai.xi return MApi_PNL_SetDiffSwingLevel_U2(pu32PNLInst, u8Swing_Level);
3716*53ee8cc1Swenshuai.xi #endif
3717*53ee8cc1Swenshuai.xi }
3718*53ee8cc1Swenshuai.xi
3719*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3720*53ee8cc1Swenshuai.xi /// Get real LPLL type from driver
3721*53ee8cc1Swenshuai.xi /// @return MS_U8
3722*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_Pnl_Get_LPLL_Type_U2(void * pInstance)3723*53ee8cc1Swenshuai.xi MS_U8 MApi_Pnl_Get_LPLL_Type_U2(void *pInstance)
3724*53ee8cc1Swenshuai.xi {
3725*53ee8cc1Swenshuai.xi MS_U8 u8Value = 0;
3726*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3727*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3728*53ee8cc1Swenshuai.xi
3729*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3730*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3731*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3732*53ee8cc1Swenshuai.xi if (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type >= E_PNL_TYPE_EXT)
3733*53ee8cc1Swenshuai.xi {
3734*53ee8cc1Swenshuai.xi u8Value = pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type_Ext;
3735*53ee8cc1Swenshuai.xi }
3736*53ee8cc1Swenshuai.xi else
3737*53ee8cc1Swenshuai.xi {
3738*53ee8cc1Swenshuai.xi u8Value = pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type;
3739*53ee8cc1Swenshuai.xi }
3740*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3741*53ee8cc1Swenshuai.xi return u8Value;
3742*53ee8cc1Swenshuai.xi }
3743*53ee8cc1Swenshuai.xi
MApi_Pnl_Get_LPLL_Type(void)3744*53ee8cc1Swenshuai.xi MS_U8 MApi_Pnl_Get_LPLL_Type(void)
3745*53ee8cc1Swenshuai.xi {
3746*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3747*53ee8cc1Swenshuai.xi {
3748*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3749*53ee8cc1Swenshuai.xi {
3750*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3751*53ee8cc1Swenshuai.xi return LINK_TTL;
3752*53ee8cc1Swenshuai.xi }
3753*53ee8cc1Swenshuai.xi }
3754*53ee8cc1Swenshuai.xi
3755*53ee8cc1Swenshuai.xi stPNL_Get_LPLL_Type PNLArgs;
3756*53ee8cc1Swenshuai.xi PNLArgs.u8Return = LINK_TTL;
3757*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GET_LPLL_TYPE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3758*53ee8cc1Swenshuai.xi {
3759*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3760*53ee8cc1Swenshuai.xi return LINK_TTL;
3761*53ee8cc1Swenshuai.xi }
3762*53ee8cc1Swenshuai.xi else
3763*53ee8cc1Swenshuai.xi {
3764*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
3765*53ee8cc1Swenshuai.xi }
3766*53ee8cc1Swenshuai.xi }
3767*53ee8cc1Swenshuai.xi
3768*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3769*53ee8cc1Swenshuai.xi /// Get TCON capability
3770*53ee8cc1Swenshuai.xi /// @return MS_BOOL
3771*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_Get_TCON_Capability_U2(void * pInstance)3772*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Get_TCON_Capability_U2(void *pInstance)
3773*53ee8cc1Swenshuai.xi {
3774*53ee8cc1Swenshuai.xi return MDrv_PNL_Is_SupportTCON(pInstance);
3775*53ee8cc1Swenshuai.xi }
3776*53ee8cc1Swenshuai.xi
MApi_PNL_Get_TCON_Capability(void)3777*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Get_TCON_Capability(void)
3778*53ee8cc1Swenshuai.xi {
3779*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3780*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3781*53ee8cc1Swenshuai.xi {
3782*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3783*53ee8cc1Swenshuai.xi {
3784*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3785*53ee8cc1Swenshuai.xi return FALSE;
3786*53ee8cc1Swenshuai.xi }
3787*53ee8cc1Swenshuai.xi }
3788*53ee8cc1Swenshuai.xi
3789*53ee8cc1Swenshuai.xi stPNL_Get_TCON_Capability PNLArgs;
3790*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
3791*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GET_TCON_CAPABILITY, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3792*53ee8cc1Swenshuai.xi {
3793*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3794*53ee8cc1Swenshuai.xi return FALSE;
3795*53ee8cc1Swenshuai.xi }
3796*53ee8cc1Swenshuai.xi else
3797*53ee8cc1Swenshuai.xi {
3798*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
3799*53ee8cc1Swenshuai.xi }
3800*53ee8cc1Swenshuai.xi #else
3801*53ee8cc1Swenshuai.xi return MApi_PNL_Get_TCON_Capability_U2(pu32PNLInst);
3802*53ee8cc1Swenshuai.xi #endif
3803*53ee8cc1Swenshuai.xi }
3804*53ee8cc1Swenshuai.xi
3805*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3806*53ee8cc1Swenshuai.xi /// Set FRC MOD pair swap
3807*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: u8Polarity, (d:c:b:a)=([15:14],[13:12],[11:10],[9:8]) => (10,00,11,01), => (2,0,3,1)
3808*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_SetPairSwap_U2(void * pInstance,MS_U32 u32Polarity)3809*53ee8cc1Swenshuai.xi void MApi_PNL_SetPairSwap_U2(void *pInstance, MS_U32 u32Polarity)
3810*53ee8cc1Swenshuai.xi {
3811*53ee8cc1Swenshuai.xi if(MDrv_PNL_Is_SupportFRC(pInstance))
3812*53ee8cc1Swenshuai.xi MDrv_FRC_MOD_ForcePairSwap(pInstance, u32Polarity);
3813*53ee8cc1Swenshuai.xi }
3814*53ee8cc1Swenshuai.xi
MApi_PNL_SetPairSwap(MS_U32 u32Polarity)3815*53ee8cc1Swenshuai.xi void MApi_PNL_SetPairSwap(MS_U32 u32Polarity)
3816*53ee8cc1Swenshuai.xi {
3817*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3818*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3819*53ee8cc1Swenshuai.xi {
3820*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3821*53ee8cc1Swenshuai.xi {
3822*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3823*53ee8cc1Swenshuai.xi return;
3824*53ee8cc1Swenshuai.xi }
3825*53ee8cc1Swenshuai.xi }
3826*53ee8cc1Swenshuai.xi
3827*53ee8cc1Swenshuai.xi stPNL_SetPairSwap PNLArgs;
3828*53ee8cc1Swenshuai.xi PNLArgs.u32Polarity = u32Polarity;
3829*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETPAIRSWAP, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3830*53ee8cc1Swenshuai.xi {
3831*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3832*53ee8cc1Swenshuai.xi }
3833*53ee8cc1Swenshuai.xi #else
3834*53ee8cc1Swenshuai.xi MApi_PNL_SetPairSwap_U2(pu32PNLInst, u32Polarity);
3835*53ee8cc1Swenshuai.xi #endif
3836*53ee8cc1Swenshuai.xi }
3837*53ee8cc1Swenshuai.xi
MApi_PNL_SetExt_LPLL_Type_U2(void * pInstance,MS_U16 u16Ext_lpll_type)3838*53ee8cc1Swenshuai.xi void MApi_PNL_SetExt_LPLL_Type_U2(void *pInstance, MS_U16 u16Ext_lpll_type)
3839*53ee8cc1Swenshuai.xi {
3840*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3841*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3842*53ee8cc1Swenshuai.xi
3843*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3844*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3845*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3846*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Ext_LpllType = u16Ext_lpll_type;
3847*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3848*53ee8cc1Swenshuai.xi }
3849*53ee8cc1Swenshuai.xi
MApi_PNL_SetExt_LPLL_Type(MS_U16 u16Ext_lpll_type)3850*53ee8cc1Swenshuai.xi void MApi_PNL_SetExt_LPLL_Type(MS_U16 u16Ext_lpll_type)
3851*53ee8cc1Swenshuai.xi {
3852*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3853*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3854*53ee8cc1Swenshuai.xi {
3855*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3856*53ee8cc1Swenshuai.xi {
3857*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3858*53ee8cc1Swenshuai.xi return;
3859*53ee8cc1Swenshuai.xi }
3860*53ee8cc1Swenshuai.xi }
3861*53ee8cc1Swenshuai.xi
3862*53ee8cc1Swenshuai.xi stPNL_SetExt_LPLL_Type PNLArgs;
3863*53ee8cc1Swenshuai.xi PNLArgs.u16Ext_lpll_type = u16Ext_lpll_type;
3864*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SET_EXT_LPLL_TYPE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3865*53ee8cc1Swenshuai.xi {
3866*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3867*53ee8cc1Swenshuai.xi }
3868*53ee8cc1Swenshuai.xi #else
3869*53ee8cc1Swenshuai.xi MApi_PNL_SetExt_LPLL_Type_U2(pu32PNLInst, u16Ext_lpll_type);
3870*53ee8cc1Swenshuai.xi #endif
3871*53ee8cc1Swenshuai.xi }
3872*53ee8cc1Swenshuai.xi
3873*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3874*53ee8cc1Swenshuai.xi /// Cal Ext LPLL Set by DCLK
3875*53ee8cc1Swenshuai.xi /// @param ldHz \b IN: ldHz = Htt*Vtt*Vfreq
3876*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_CalExtLPLLSETbyDClk_U2(void * pInstance,MS_U32 ldHz)3877*53ee8cc1Swenshuai.xi void MApi_PNL_CalExtLPLLSETbyDClk_U2(void *pInstance, MS_U32 ldHz)
3878*53ee8cc1Swenshuai.xi {
3879*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3880*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3881*53ee8cc1Swenshuai.xi
3882*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3883*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3884*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3885*53ee8cc1Swenshuai.xi MDrv_PNL_CalExtLPLLSETbyDClk(pInstance, (MS_U8)pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Mode, (MS_U8)pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16Ext_LpllType, ldHz);
3886*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3887*53ee8cc1Swenshuai.xi }
3888*53ee8cc1Swenshuai.xi
MApi_PNL_CalExtLPLLSETbyDClk(MS_U32 ldHz)3889*53ee8cc1Swenshuai.xi void MApi_PNL_CalExtLPLLSETbyDClk(MS_U32 ldHz)
3890*53ee8cc1Swenshuai.xi {
3891*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3892*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3893*53ee8cc1Swenshuai.xi {
3894*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3895*53ee8cc1Swenshuai.xi {
3896*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3897*53ee8cc1Swenshuai.xi return;
3898*53ee8cc1Swenshuai.xi }
3899*53ee8cc1Swenshuai.xi }
3900*53ee8cc1Swenshuai.xi
3901*53ee8cc1Swenshuai.xi stPNL_CalExtLPLLSETbyDClk PNLArgs;
3902*53ee8cc1Swenshuai.xi PNLArgs.ldHz = ldHz;
3903*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_CALEXTLPLLSETBYDCLK, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
3904*53ee8cc1Swenshuai.xi {
3905*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
3906*53ee8cc1Swenshuai.xi }
3907*53ee8cc1Swenshuai.xi #else
3908*53ee8cc1Swenshuai.xi MApi_PNL_CalExtLPLLSETbyDClk_U2(pu32PNLInst, ldHz);
3909*53ee8cc1Swenshuai.xi #endif
3910*53ee8cc1Swenshuai.xi }
3911*53ee8cc1Swenshuai.xi
MApi_PNL_SetPowerState_U2(void * pInstance,EN_POWER_MODE ePowerState)3912*53ee8cc1Swenshuai.xi MS_U32 MApi_PNL_SetPowerState_U2(void *pInstance, EN_POWER_MODE ePowerState)
3913*53ee8cc1Swenshuai.xi {
3914*53ee8cc1Swenshuai.xi MS_U32 u32Return = UTOPIA_STATUS_FAIL;
3915*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
3916*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
3917*53ee8cc1Swenshuai.xi MS_U8 *tmp[3];
3918*53ee8cc1Swenshuai.xi
3919*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
3920*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3921*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
3922*53ee8cc1Swenshuai.xi #if (KERNEL_DRIVER_PNL_STR_PATCH == 1)
3923*53ee8cc1Swenshuai.xi void *pModule;
3924*53ee8cc1Swenshuai.xi UtopiaInstanceGetModule(pInstance, &pModule);
3925*53ee8cc1Swenshuai.xi PNL_REGS_SAVE_AREA *pPNLResourceStr = NULL;
3926*53ee8cc1Swenshuai.xi UtopiaModuleGetSTRPrivate(pModule, (void**)&pPNLResourceStr);
3927*53ee8cc1Swenshuai.xi #endif
3928*53ee8cc1Swenshuai.xi if (ePowerState == E_POWER_SUSPEND)
3929*53ee8cc1Swenshuai.xi {
3930*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL.ePrevPowerState = ePowerState;
3931*53ee8cc1Swenshuai.xi u32Return = UTOPIA_STATUS_SUCCESS;
3932*53ee8cc1Swenshuai.xi }
3933*53ee8cc1Swenshuai.xi else if (ePowerState == E_POWER_RESUME)
3934*53ee8cc1Swenshuai.xi {
3935*53ee8cc1Swenshuai.xi if (pPNLResourcePrivate->stapiPNL.ePrevPowerState == E_POWER_SUSPEND)
3936*53ee8cc1Swenshuai.xi {
3937*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)); //can not entry semaphore twice!
3938*53ee8cc1Swenshuai.xi #if (KERNEL_DRIVER_PNL_STR_PATCH == 1)
3939*53ee8cc1Swenshuai.xi if((pPNLResourceStr->pSelPanelType.m_ePanelLinkType == LINK_EXT)&&
3940*53ee8cc1Swenshuai.xi (pPNLResourceStr->pSelPanelType.m_wPanelWidth >= 3840)&&(pPNLResourceStr->pSelPanelType.m_wPanelHeight >= 2160))
3941*53ee8cc1Swenshuai.xi {
3942*53ee8cc1Swenshuai.xi MApi_PNL_MOD_OutputConfig_User_U2(pInstance,pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputCFG0_7,
3943*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputCFG8_15,
3944*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16OutputCFG16_21);
3945*53ee8cc1Swenshuai.xi MApi_BD_LVDS_Output_Type_U2(pInstance,pPNLResourceStr->BD_LVDS_Output_Type);
3946*53ee8cc1Swenshuai.xi MApi_PNL_ForceSetPanelDCLK_U2(pInstance,pPNLResourcePrivate->stapiPNL._u16PanelDCLK,pPNLResourcePrivate->stapiPNL._bForceSetDCLKEnable);
3947*53ee8cc1Swenshuai.xi }
3948*53ee8cc1Swenshuai.xi if(MApi_PNL_GetVideoHWTraining_Status_U2(pInstance))
3949*53ee8cc1Swenshuai.xi MApi_PNL_SetVideoHWTraining_U2(pInstance, TRUE);
3950*53ee8cc1Swenshuai.xi MApi_PNL_Init_U2(pInstance, &pPNLResourceStr->pSelPanelType);
3951*53ee8cc1Swenshuai.xi MApi_PNL_EnablePanel_U2(pInstance, TRUE);
3952*53ee8cc1Swenshuai.xi #endif
3953*53ee8cc1Swenshuai.xi if (!(pPNLResourcePrivate->stapiPNL._pu8GammaTab[0] == NULL ||
3954*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._pu8GammaTab[1] == NULL ||
3955*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._pu8GammaTab[2] == NULL))
3956*53ee8cc1Swenshuai.xi {
3957*53ee8cc1Swenshuai.xi tmp[0]=&(pPNLResourcePrivate->stapiPNL._pu8GammaTab[0][0]);
3958*53ee8cc1Swenshuai.xi tmp[1]=&(pPNLResourcePrivate->stapiPNL._pu8GammaTab[1][0]);
3959*53ee8cc1Swenshuai.xi tmp[2]=&(pPNLResourcePrivate->stapiPNL._pu8GammaTab[2][0]);
3960*53ee8cc1Swenshuai.xi MApi_PNL_SetGammaTbl_U2(pInstance,
3961*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._eGammaType,
3962*53ee8cc1Swenshuai.xi tmp,
3963*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._eGammaMapMode);
3964*53ee8cc1Swenshuai.xi }
3965*53ee8cc1Swenshuai.xi
3966*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3967*53ee8cc1Swenshuai.xi
3968*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL.ePrevPowerState = ePowerState;
3969*53ee8cc1Swenshuai.xi u32Return = UTOPIA_STATUS_SUCCESS;//RESUME_OK;
3970*53ee8cc1Swenshuai.xi }
3971*53ee8cc1Swenshuai.xi else
3972*53ee8cc1Swenshuai.xi {
3973*53ee8cc1Swenshuai.xi printf("[%s,%5d]It is not suspended yet. We shouldn't resume\n", __FUNCTION__, __LINE__);
3974*53ee8cc1Swenshuai.xi u32Return = UTOPIA_STATUS_FAIL;//SUSPEND_FAILED;
3975*53ee8cc1Swenshuai.xi }
3976*53ee8cc1Swenshuai.xi }
3977*53ee8cc1Swenshuai.xi else
3978*53ee8cc1Swenshuai.xi {
3979*53ee8cc1Swenshuai.xi printf("[%s,%5d]Do Nothing: %d\n", __FUNCTION__, __LINE__, ePowerState);
3980*53ee8cc1Swenshuai.xi u32Return = UTOPIA_STATUS_NOT_SUPPORTED;
3981*53ee8cc1Swenshuai.xi }
3982*53ee8cc1Swenshuai.xi
3983*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
3984*53ee8cc1Swenshuai.xi return u32Return;
3985*53ee8cc1Swenshuai.xi }
3986*53ee8cc1Swenshuai.xi
MApi_PNL_SetPowerState(EN_POWER_MODE ePowerState)3987*53ee8cc1Swenshuai.xi MS_U32 MApi_PNL_SetPowerState(EN_POWER_MODE ePowerState)
3988*53ee8cc1Swenshuai.xi {
3989*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
3990*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
3991*53ee8cc1Swenshuai.xi {
3992*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
3993*53ee8cc1Swenshuai.xi {
3994*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
3995*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_FAIL;
3996*53ee8cc1Swenshuai.xi }
3997*53ee8cc1Swenshuai.xi }
3998*53ee8cc1Swenshuai.xi
3999*53ee8cc1Swenshuai.xi stPNL_SetPowerState PNLArgs;
4000*53ee8cc1Swenshuai.xi PNLArgs.ePowerState = ePowerState;
4001*53ee8cc1Swenshuai.xi PNLArgs.u32Return = UTOPIA_STATUS_FAIL;
4002*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETPOWERSTATE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4003*53ee8cc1Swenshuai.xi {
4004*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4005*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_FAIL;
4006*53ee8cc1Swenshuai.xi }
4007*53ee8cc1Swenshuai.xi else
4008*53ee8cc1Swenshuai.xi {
4009*53ee8cc1Swenshuai.xi return PNLArgs.u32Return;
4010*53ee8cc1Swenshuai.xi }
4011*53ee8cc1Swenshuai.xi #else
4012*53ee8cc1Swenshuai.xi return MApi_PNL_SetPowerState_U2(pu32PNLInst, ePowerState);
4013*53ee8cc1Swenshuai.xi #endif
4014*53ee8cc1Swenshuai.xi }
4015*53ee8cc1Swenshuai.xi
MApi_PNL_EnableInternalTermination_U2(void * pInstance,MS_BOOL bEnable)4016*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_EnableInternalTermination_U2(void *pInstance, MS_BOOL bEnable)
4017*53ee8cc1Swenshuai.xi {
4018*53ee8cc1Swenshuai.xi return MDrv_PNL_EnableInternalTermination(pInstance, bEnable);
4019*53ee8cc1Swenshuai.xi }
4020*53ee8cc1Swenshuai.xi
MApi_PNL_EnableInternalTermination(MS_BOOL bEnable)4021*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_EnableInternalTermination(MS_BOOL bEnable)
4022*53ee8cc1Swenshuai.xi {
4023*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4024*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4025*53ee8cc1Swenshuai.xi {
4026*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4027*53ee8cc1Swenshuai.xi {
4028*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4029*53ee8cc1Swenshuai.xi return FALSE;
4030*53ee8cc1Swenshuai.xi }
4031*53ee8cc1Swenshuai.xi }
4032*53ee8cc1Swenshuai.xi
4033*53ee8cc1Swenshuai.xi stPNL_EnableInternalTermination PNLArgs;
4034*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
4035*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4036*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_ENABLEINTERNALTERMINATION, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4037*53ee8cc1Swenshuai.xi {
4038*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4039*53ee8cc1Swenshuai.xi return FALSE;
4040*53ee8cc1Swenshuai.xi }
4041*53ee8cc1Swenshuai.xi else
4042*53ee8cc1Swenshuai.xi {
4043*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4044*53ee8cc1Swenshuai.xi }
4045*53ee8cc1Swenshuai.xi #else
4046*53ee8cc1Swenshuai.xi return MApi_PNL_EnableInternalTermination_U2(pu32PNLInst, bEnable);
4047*53ee8cc1Swenshuai.xi #endif
4048*53ee8cc1Swenshuai.xi }
4049*53ee8cc1Swenshuai.xi
4050*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
4051*53ee8cc1Swenshuai.xi /// Do handshake for special output device, ex. VB1
4052*53ee8cc1Swenshuai.xi /// @return TRUE or FALSE
4053*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_OutputDeviceHandshake_U2(void * pInstance)4054*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_OutputDeviceHandshake_U2(void *pInstance)
4055*53ee8cc1Swenshuai.xi {
4056*53ee8cc1Swenshuai.xi MS_BOOL bResult = TRUE;
4057*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4058*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4059*53ee8cc1Swenshuai.xi
4060*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4061*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4062*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4063*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4064*53ee8cc1Swenshuai.xi
4065*53ee8cc1Swenshuai.xi // For VB1 type, need to do handshake
4066*53ee8cc1Swenshuai.xi if( IsVBY1(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type) )
4067*53ee8cc1Swenshuai.xi {
4068*53ee8cc1Swenshuai.xi bResult = MDrv_PNL_VBY1_Handshake(pInstance);
4069*53ee8cc1Swenshuai.xi }
4070*53ee8cc1Swenshuai.xi else if((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE) ||
4071*53ee8cc1Swenshuai.xi (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE))
4072*53ee8cc1Swenshuai.xi {
4073*53ee8cc1Swenshuai.xi bResult = MDrv_PNL_VBY1_Handshake(pInstance);
4074*53ee8cc1Swenshuai.xi }
4075*53ee8cc1Swenshuai.xi
4076*53ee8cc1Swenshuai.xi _PNL_RETURN();
4077*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4078*53ee8cc1Swenshuai.xi
4079*53ee8cc1Swenshuai.xi return bResult;
4080*53ee8cc1Swenshuai.xi
4081*53ee8cc1Swenshuai.xi }
4082*53ee8cc1Swenshuai.xi
MApi_PNL_OutputDeviceHandshake(void)4083*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_OutputDeviceHandshake(void)
4084*53ee8cc1Swenshuai.xi {
4085*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4086*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4087*53ee8cc1Swenshuai.xi {
4088*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4089*53ee8cc1Swenshuai.xi {
4090*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4091*53ee8cc1Swenshuai.xi return FALSE;
4092*53ee8cc1Swenshuai.xi }
4093*53ee8cc1Swenshuai.xi }
4094*53ee8cc1Swenshuai.xi
4095*53ee8cc1Swenshuai.xi stPNL_OutputDeviceHandshake PNLArgs;
4096*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4097*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_OUTPUTDEVICEHANDSHAKE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4098*53ee8cc1Swenshuai.xi {
4099*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4100*53ee8cc1Swenshuai.xi return FALSE;
4101*53ee8cc1Swenshuai.xi }
4102*53ee8cc1Swenshuai.xi else
4103*53ee8cc1Swenshuai.xi {
4104*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4105*53ee8cc1Swenshuai.xi }
4106*53ee8cc1Swenshuai.xi #else
4107*53ee8cc1Swenshuai.xi return MApi_PNL_OutputDeviceHandshake_U2(pu32PNLInst);
4108*53ee8cc1Swenshuai.xi #endif
4109*53ee8cc1Swenshuai.xi }
4110*53ee8cc1Swenshuai.xi
4111*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
4112*53ee8cc1Swenshuai.xi /// Do OC handshake for special output device, ex. VB1
4113*53ee8cc1Swenshuai.xi /// @return TRUE or FALSE
4114*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_OutputDeviceOCHandshake_U2(void * pInstance)4115*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_OutputDeviceOCHandshake_U2(void *pInstance)
4116*53ee8cc1Swenshuai.xi {
4117*53ee8cc1Swenshuai.xi MS_BOOL bResult = TRUE;
4118*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4119*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4120*53ee8cc1Swenshuai.xi
4121*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4122*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4123*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4124*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4125*53ee8cc1Swenshuai.xi
4126*53ee8cc1Swenshuai.xi // For VB1 type, need to do handshake
4127*53ee8cc1Swenshuai.xi if( IsVBY1(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type) )
4128*53ee8cc1Swenshuai.xi {
4129*53ee8cc1Swenshuai.xi bResult = MDrv_PNL_VBY1_OC_Handshake(pInstance);
4130*53ee8cc1Swenshuai.xi }
4131*53ee8cc1Swenshuai.xi else if((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE) ||
4132*53ee8cc1Swenshuai.xi (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE))
4133*53ee8cc1Swenshuai.xi {
4134*53ee8cc1Swenshuai.xi bResult = MDrv_PNL_VBY1_OC_Handshake(pInstance);
4135*53ee8cc1Swenshuai.xi }
4136*53ee8cc1Swenshuai.xi
4137*53ee8cc1Swenshuai.xi _PNL_RETURN();
4138*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4139*53ee8cc1Swenshuai.xi return bResult;
4140*53ee8cc1Swenshuai.xi
4141*53ee8cc1Swenshuai.xi }
4142*53ee8cc1Swenshuai.xi
MApi_PNL_OutputDeviceOCHandshake(void)4143*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_OutputDeviceOCHandshake(void)
4144*53ee8cc1Swenshuai.xi {
4145*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4146*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4147*53ee8cc1Swenshuai.xi {
4148*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4149*53ee8cc1Swenshuai.xi {
4150*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4151*53ee8cc1Swenshuai.xi return FALSE;
4152*53ee8cc1Swenshuai.xi }
4153*53ee8cc1Swenshuai.xi }
4154*53ee8cc1Swenshuai.xi
4155*53ee8cc1Swenshuai.xi stPNL_OutputDeviceHandshake PNLArgs;
4156*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4157*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_OUTPUTDEVICEOCHANDSHAKE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4158*53ee8cc1Swenshuai.xi {
4159*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4160*53ee8cc1Swenshuai.xi return FALSE;
4161*53ee8cc1Swenshuai.xi }
4162*53ee8cc1Swenshuai.xi else
4163*53ee8cc1Swenshuai.xi {
4164*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4165*53ee8cc1Swenshuai.xi }
4166*53ee8cc1Swenshuai.xi #else
4167*53ee8cc1Swenshuai.xi return MApi_PNL_OutputDeviceOCHandshake_U2(pu32PNLInst);
4168*53ee8cc1Swenshuai.xi #endif
4169*53ee8cc1Swenshuai.xi }
4170*53ee8cc1Swenshuai.xi
4171*53ee8cc1Swenshuai.xi
4172*53ee8cc1Swenshuai.xi
4173*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
4174*53ee8cc1Swenshuai.xi /// set necessary setting for outputing interlace timing to rear
4175*53ee8cc1Swenshuai.xi /// @return APIPNL_Result
4176*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_PNL_SetOutputInterlaceTiming_U2(void * pInstance,MS_BOOL bEnable)4177*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOutputInterlaceTiming_U2(void* pInstance, MS_BOOL bEnable)
4178*53ee8cc1Swenshuai.xi {
4179*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4180*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4181*53ee8cc1Swenshuai.xi APIPNL_Result bReturn = E_APIPNL_FAIL;
4182*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4183*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4184*53ee8cc1Swenshuai.xi bReturn = (APIPNL_Result) MDrv_PNL_SetOutputInterlaceTiming(pInstance, bEnable);
4185*53ee8cc1Swenshuai.xi _PNL_RETURN();
4186*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4187*53ee8cc1Swenshuai.xi return bReturn;
4188*53ee8cc1Swenshuai.xi }
4189*53ee8cc1Swenshuai.xi
MApi_PNL_SetOutputInterlaceTiming(MS_BOOL bEnable)4190*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_SetOutputInterlaceTiming(MS_BOOL bEnable)
4191*53ee8cc1Swenshuai.xi {
4192*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4193*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4194*53ee8cc1Swenshuai.xi {
4195*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4196*53ee8cc1Swenshuai.xi {
4197*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4198*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
4199*53ee8cc1Swenshuai.xi }
4200*53ee8cc1Swenshuai.xi }
4201*53ee8cc1Swenshuai.xi
4202*53ee8cc1Swenshuai.xi stPNL_SetOutputInterlaceTiming PNLArgs;
4203*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
4204*53ee8cc1Swenshuai.xi PNLArgs.eReturn = E_APIPNL_FAIL;
4205*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETOUTPUTINTERLACETIMING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4206*53ee8cc1Swenshuai.xi {
4207*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4208*53ee8cc1Swenshuai.xi return FALSE;
4209*53ee8cc1Swenshuai.xi }
4210*53ee8cc1Swenshuai.xi else
4211*53ee8cc1Swenshuai.xi {
4212*53ee8cc1Swenshuai.xi return PNLArgs.eReturn;
4213*53ee8cc1Swenshuai.xi }
4214*53ee8cc1Swenshuai.xi #else
4215*53ee8cc1Swenshuai.xi return MApi_PNL_SetOutputInterlaceTiming_U2(pu32PNLInst, bEnable);
4216*53ee8cc1Swenshuai.xi #endif
4217*53ee8cc1Swenshuai.xi }
4218*53ee8cc1Swenshuai.xi
MApi_PNL_GetOutputInterlaceTiming_U2(void * pInstance)4219*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetOutputInterlaceTiming_U2(void *pInstance)
4220*53ee8cc1Swenshuai.xi {
4221*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4222*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4223*53ee8cc1Swenshuai.xi MS_BOOL bIsInterlace = FALSE;
4224*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4225*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4226*53ee8cc1Swenshuai.xi
4227*53ee8cc1Swenshuai.xi MDrv_PNL_GetOutputInterlaceTiming(pInstance, &bIsInterlace);
4228*53ee8cc1Swenshuai.xi
4229*53ee8cc1Swenshuai.xi _PNL_RETURN();
4230*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4231*53ee8cc1Swenshuai.xi return bIsInterlace;
4232*53ee8cc1Swenshuai.xi
4233*53ee8cc1Swenshuai.xi }
4234*53ee8cc1Swenshuai.xi
MApi_PNL_GetOutputInterlaceTiming(void)4235*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetOutputInterlaceTiming(void)
4236*53ee8cc1Swenshuai.xi {
4237*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4238*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4239*53ee8cc1Swenshuai.xi {
4240*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4241*53ee8cc1Swenshuai.xi {
4242*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4243*53ee8cc1Swenshuai.xi return FALSE;
4244*53ee8cc1Swenshuai.xi }
4245*53ee8cc1Swenshuai.xi }
4246*53ee8cc1Swenshuai.xi
4247*53ee8cc1Swenshuai.xi stPNL_GetOutputInterlaceTiming PNLArgs;
4248*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4249*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETOUTPUTINTERLACETIMING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4250*53ee8cc1Swenshuai.xi {
4251*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4252*53ee8cc1Swenshuai.xi return FALSE;
4253*53ee8cc1Swenshuai.xi }
4254*53ee8cc1Swenshuai.xi else
4255*53ee8cc1Swenshuai.xi {
4256*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4257*53ee8cc1Swenshuai.xi }
4258*53ee8cc1Swenshuai.xi #else
4259*53ee8cc1Swenshuai.xi return MApi_PNL_GetOutputInterlaceTiming_U2(pu32PNLInst);
4260*53ee8cc1Swenshuai.xi #endif
4261*53ee8cc1Swenshuai.xi }
4262*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelData_U2(void * pInstance,PanelType * pstPNLData)4263*53ee8cc1Swenshuai.xi void MApi_PNL_GetPanelData_U2(void* pInstance, PanelType* pstPNLData)
4264*53ee8cc1Swenshuai.xi {
4265*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4266*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4267*53ee8cc1Swenshuai.xi
4268*53ee8cc1Swenshuai.xi if(NULL == pstPNLData)
4269*53ee8cc1Swenshuai.xi {
4270*53ee8cc1Swenshuai.xi printf("NULL input parameter pstPNLData\n");
4271*53ee8cc1Swenshuai.xi return;
4272*53ee8cc1Swenshuai.xi }
4273*53ee8cc1Swenshuai.xi
4274*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4275*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4276*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4277*53ee8cc1Swenshuai.xi memcpy(pstPNLData, &(pPNLResourcePrivate->stapiPNL._stPanelTypeSaved), sizeof(PanelType));
4278*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4279*53ee8cc1Swenshuai.xi }
4280*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelData(PanelType * pstPNLData)4281*53ee8cc1Swenshuai.xi void MApi_PNL_GetPanelData(PanelType* pstPNLData)
4282*53ee8cc1Swenshuai.xi {
4283*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4284*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4285*53ee8cc1Swenshuai.xi {
4286*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4287*53ee8cc1Swenshuai.xi {
4288*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4289*53ee8cc1Swenshuai.xi return;
4290*53ee8cc1Swenshuai.xi }
4291*53ee8cc1Swenshuai.xi }
4292*53ee8cc1Swenshuai.xi
4293*53ee8cc1Swenshuai.xi stPNL_GetPanelData PNLArgs;
4294*53ee8cc1Swenshuai.xi PNLArgs.pstPNLData = pstPNLData;
4295*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETPANELDATA, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4296*53ee8cc1Swenshuai.xi {
4297*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4298*53ee8cc1Swenshuai.xi }
4299*53ee8cc1Swenshuai.xi #else
4300*53ee8cc1Swenshuai.xi MApi_PNL_GetPanelData_U2(pu32PNLInst, pstPNLData);
4301*53ee8cc1Swenshuai.xi #endif
4302*53ee8cc1Swenshuai.xi }
4303*53ee8cc1Swenshuai.xi
MApi_PNL_DumpPanelData_U2(void * pInstance)4304*53ee8cc1Swenshuai.xi void MApi_PNL_DumpPanelData_U2(void* pInstance)
4305*53ee8cc1Swenshuai.xi {
4306*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4307*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4308*53ee8cc1Swenshuai.xi
4309*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4310*53ee8cc1Swenshuai.xi _DumpData(pInstance);
4311*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4312*53ee8cc1Swenshuai.xi }
4313*53ee8cc1Swenshuai.xi
MApi_PNL_DumpPanelData(void)4314*53ee8cc1Swenshuai.xi void MApi_PNL_DumpPanelData(void)
4315*53ee8cc1Swenshuai.xi {
4316*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4317*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4318*53ee8cc1Swenshuai.xi {
4319*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4320*53ee8cc1Swenshuai.xi {
4321*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4322*53ee8cc1Swenshuai.xi return;
4323*53ee8cc1Swenshuai.xi }
4324*53ee8cc1Swenshuai.xi }
4325*53ee8cc1Swenshuai.xi
4326*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_DUMPPANELDATA, NULL) != UTOPIA_STATUS_SUCCESS)
4327*53ee8cc1Swenshuai.xi {
4328*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4329*53ee8cc1Swenshuai.xi }
4330*53ee8cc1Swenshuai.xi #else
4331*53ee8cc1Swenshuai.xi MApi_PNL_DumpPanelData_U2(pu32PNLInst);
4332*53ee8cc1Swenshuai.xi #endif
4333*53ee8cc1Swenshuai.xi }
4334*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC_U2(void * pInstance,MS_U16 u16Fmodulation,MS_U16 u16Rdeviation,MS_BOOL bEnable)4335*53ee8cc1Swenshuai.xi void MApi_PNL_SetSSC_U2(void* pInstance, MS_U16 u16Fmodulation, MS_U16 u16Rdeviation, MS_BOOL bEnable)
4336*53ee8cc1Swenshuai.xi {
4337*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4338*53ee8cc1Swenshuai.xi MDrv_PNL_SetSSC(pInstance, u16Fmodulation, u16Rdeviation, bEnable);
4339*53ee8cc1Swenshuai.xi _PNL_RETURN();
4340*53ee8cc1Swenshuai.xi }
4341*53ee8cc1Swenshuai.xi
MApi_PNL_SetSSC(MS_U16 u16Fmodulation,MS_U16 u16Rdeviation,MS_BOOL bEnable)4342*53ee8cc1Swenshuai.xi void MApi_PNL_SetSSC(MS_U16 u16Fmodulation, MS_U16 u16Rdeviation, MS_BOOL bEnable)
4343*53ee8cc1Swenshuai.xi {
4344*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4345*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4346*53ee8cc1Swenshuai.xi {
4347*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4348*53ee8cc1Swenshuai.xi {
4349*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4350*53ee8cc1Swenshuai.xi return;
4351*53ee8cc1Swenshuai.xi }
4352*53ee8cc1Swenshuai.xi }
4353*53ee8cc1Swenshuai.xi
4354*53ee8cc1Swenshuai.xi stPNL_SetSSC PNLArgs;
4355*53ee8cc1Swenshuai.xi PNLArgs.u16Fmodulation = u16Fmodulation;
4356*53ee8cc1Swenshuai.xi PNLArgs.u16Rdeviation = u16Rdeviation;
4357*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
4358*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETSSC, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4359*53ee8cc1Swenshuai.xi {
4360*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4361*53ee8cc1Swenshuai.xi }
4362*53ee8cc1Swenshuai.xi #else
4363*53ee8cc1Swenshuai.xi MApi_PNL_SetSSC_U2(pu32PNLInst, u16Fmodulation, u16Rdeviation, bEnable);
4364*53ee8cc1Swenshuai.xi #endif
4365*53ee8cc1Swenshuai.xi }
4366*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelOnTiming_U2(void * pInstance,APIPNL_POWER_TIMING_SEQ seq)4367*53ee8cc1Swenshuai.xi MS_U16 MApi_PNL_GetPanelOnTiming_U2(void* pInstance, APIPNL_POWER_TIMING_SEQ seq)
4368*53ee8cc1Swenshuai.xi {
4369*53ee8cc1Swenshuai.xi MS_U16 u16PanelOnTiming = E_APIPNL_POWER_TIMING_NA;
4370*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4371*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4372*53ee8cc1Swenshuai.xi
4373*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4374*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4375*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4376*53ee8cc1Swenshuai.xi if(E_APIPNL_POWER_TIMING_1 == seq)
4377*53ee8cc1Swenshuai.xi {
4378*53ee8cc1Swenshuai.xi u16PanelOnTiming = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOnTiming1;
4379*53ee8cc1Swenshuai.xi }
4380*53ee8cc1Swenshuai.xi else if(E_APIPNL_POWER_TIMING_2 == seq)
4381*53ee8cc1Swenshuai.xi {
4382*53ee8cc1Swenshuai.xi u16PanelOnTiming = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOnTiming2;
4383*53ee8cc1Swenshuai.xi }
4384*53ee8cc1Swenshuai.xi else
4385*53ee8cc1Swenshuai.xi {
4386*53ee8cc1Swenshuai.xi u16PanelOnTiming = E_APIPNL_POWER_TIMING_NA;
4387*53ee8cc1Swenshuai.xi }
4388*53ee8cc1Swenshuai.xi
4389*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4390*53ee8cc1Swenshuai.xi
4391*53ee8cc1Swenshuai.xi return u16PanelOnTiming ;
4392*53ee8cc1Swenshuai.xi }
4393*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelOnTiming(APIPNL_POWER_TIMING_SEQ seq)4394*53ee8cc1Swenshuai.xi MS_U16 MApi_PNL_GetPanelOnTiming(APIPNL_POWER_TIMING_SEQ seq)
4395*53ee8cc1Swenshuai.xi {
4396*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4397*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4398*53ee8cc1Swenshuai.xi {
4399*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4400*53ee8cc1Swenshuai.xi {
4401*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4402*53ee8cc1Swenshuai.xi return 0;
4403*53ee8cc1Swenshuai.xi }
4404*53ee8cc1Swenshuai.xi }
4405*53ee8cc1Swenshuai.xi
4406*53ee8cc1Swenshuai.xi stPNL_GetPanelOnTiming PNLArgs;
4407*53ee8cc1Swenshuai.xi PNLArgs.seq = seq;
4408*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
4409*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETPANELONTIMING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4410*53ee8cc1Swenshuai.xi {
4411*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4412*53ee8cc1Swenshuai.xi return 0;
4413*53ee8cc1Swenshuai.xi }
4414*53ee8cc1Swenshuai.xi else
4415*53ee8cc1Swenshuai.xi {
4416*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
4417*53ee8cc1Swenshuai.xi }
4418*53ee8cc1Swenshuai.xi #else
4419*53ee8cc1Swenshuai.xi return MApi_PNL_GetPanelOnTiming_U2(pu32PNLInst, seq);
4420*53ee8cc1Swenshuai.xi #endif
4421*53ee8cc1Swenshuai.xi }
4422*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelOffTiming_U2(void * pInstance,APIPNL_POWER_TIMING_SEQ seq)4423*53ee8cc1Swenshuai.xi MS_U16 MApi_PNL_GetPanelOffTiming_U2(void* pInstance, APIPNL_POWER_TIMING_SEQ seq)
4424*53ee8cc1Swenshuai.xi {
4425*53ee8cc1Swenshuai.xi MS_U16 u16PanelOffTiming = E_APIPNL_POWER_TIMING_NA;
4426*53ee8cc1Swenshuai.xi
4427*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4428*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4429*53ee8cc1Swenshuai.xi
4430*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4431*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4432*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4433*53ee8cc1Swenshuai.xi if(E_APIPNL_POWER_TIMING_1 == seq)
4434*53ee8cc1Swenshuai.xi {
4435*53ee8cc1Swenshuai.xi u16PanelOffTiming = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOffTiming1;
4436*53ee8cc1Swenshuai.xi }
4437*53ee8cc1Swenshuai.xi else if(E_APIPNL_POWER_TIMING_2 == seq)
4438*53ee8cc1Swenshuai.xi {
4439*53ee8cc1Swenshuai.xi u16PanelOffTiming = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelOffTiming2;
4440*53ee8cc1Swenshuai.xi }
4441*53ee8cc1Swenshuai.xi else
4442*53ee8cc1Swenshuai.xi {
4443*53ee8cc1Swenshuai.xi u16PanelOffTiming = E_APIPNL_POWER_TIMING_NA;
4444*53ee8cc1Swenshuai.xi }
4445*53ee8cc1Swenshuai.xi
4446*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4447*53ee8cc1Swenshuai.xi
4448*53ee8cc1Swenshuai.xi return u16PanelOffTiming;
4449*53ee8cc1Swenshuai.xi }
4450*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelOffTiming(APIPNL_POWER_TIMING_SEQ seq)4451*53ee8cc1Swenshuai.xi MS_U16 MApi_PNL_GetPanelOffTiming(APIPNL_POWER_TIMING_SEQ seq)
4452*53ee8cc1Swenshuai.xi {
4453*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4454*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4455*53ee8cc1Swenshuai.xi {
4456*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4457*53ee8cc1Swenshuai.xi {
4458*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4459*53ee8cc1Swenshuai.xi return 0;
4460*53ee8cc1Swenshuai.xi }
4461*53ee8cc1Swenshuai.xi }
4462*53ee8cc1Swenshuai.xi
4463*53ee8cc1Swenshuai.xi stPNL_GetPanelOffTiming PNLArgs;
4464*53ee8cc1Swenshuai.xi PNLArgs.seq = seq;
4465*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
4466*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETPANELOFFTIMING, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4467*53ee8cc1Swenshuai.xi {
4468*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4469*53ee8cc1Swenshuai.xi return 0;
4470*53ee8cc1Swenshuai.xi }
4471*53ee8cc1Swenshuai.xi else
4472*53ee8cc1Swenshuai.xi {
4473*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
4474*53ee8cc1Swenshuai.xi }
4475*53ee8cc1Swenshuai.xi #else
4476*53ee8cc1Swenshuai.xi return MApi_PNL_GetPanelOffTiming_U2(pu32PNLInst, seq);
4477*53ee8cc1Swenshuai.xi #endif
4478*53ee8cc1Swenshuai.xi }
4479*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelDimCtrl_U2(void * pInstance,APIPNL_DIMMING_CTRL dim_type)4480*53ee8cc1Swenshuai.xi MS_U8 MApi_PNL_GetPanelDimCtrl_U2(void* pInstance, APIPNL_DIMMING_CTRL dim_type)
4481*53ee8cc1Swenshuai.xi {
4482*53ee8cc1Swenshuai.xi MS_U8 u8PanelDimmingCtrl = 0;
4483*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4484*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4485*53ee8cc1Swenshuai.xi
4486*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4487*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4488*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4489*53ee8cc1Swenshuai.xi if(E_APIPNL_DIMMING_MAX == dim_type )
4490*53ee8cc1Swenshuai.xi {
4491*53ee8cc1Swenshuai.xi u8PanelDimmingCtrl = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelMaxPWMVal;
4492*53ee8cc1Swenshuai.xi }
4493*53ee8cc1Swenshuai.xi else if(E_APIPNL_DIMMING_MIN == dim_type )
4494*53ee8cc1Swenshuai.xi {
4495*53ee8cc1Swenshuai.xi u8PanelDimmingCtrl = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelMinPWMVal;
4496*53ee8cc1Swenshuai.xi }
4497*53ee8cc1Swenshuai.xi else
4498*53ee8cc1Swenshuai.xi {
4499*53ee8cc1Swenshuai.xi u8PanelDimmingCtrl = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16PanelDimmingCtl;
4500*53ee8cc1Swenshuai.xi }
4501*53ee8cc1Swenshuai.xi
4502*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4503*53ee8cc1Swenshuai.xi
4504*53ee8cc1Swenshuai.xi return u8PanelDimmingCtrl;
4505*53ee8cc1Swenshuai.xi }
4506*53ee8cc1Swenshuai.xi
MApi_PNL_GetPanelDimCtrl(APIPNL_DIMMING_CTRL dim_type)4507*53ee8cc1Swenshuai.xi MS_U8 MApi_PNL_GetPanelDimCtrl(APIPNL_DIMMING_CTRL dim_type)
4508*53ee8cc1Swenshuai.xi {
4509*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4510*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4511*53ee8cc1Swenshuai.xi {
4512*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4513*53ee8cc1Swenshuai.xi {
4514*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4515*53ee8cc1Swenshuai.xi return 0;
4516*53ee8cc1Swenshuai.xi }
4517*53ee8cc1Swenshuai.xi }
4518*53ee8cc1Swenshuai.xi
4519*53ee8cc1Swenshuai.xi stPNL_GetPanelDimCtrl PNLArgs;
4520*53ee8cc1Swenshuai.xi PNLArgs.dim_type = dim_type;
4521*53ee8cc1Swenshuai.xi PNLArgs.u8Return = 0;
4522*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETPANELDIMCTRL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4523*53ee8cc1Swenshuai.xi {
4524*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4525*53ee8cc1Swenshuai.xi return 0;
4526*53ee8cc1Swenshuai.xi }
4527*53ee8cc1Swenshuai.xi else
4528*53ee8cc1Swenshuai.xi {
4529*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
4530*53ee8cc1Swenshuai.xi }
4531*53ee8cc1Swenshuai.xi #else
4532*53ee8cc1Swenshuai.xi return MApi_PNL_GetPanelDimCtrl_U2(pu32PNLInst, dim_type);
4533*53ee8cc1Swenshuai.xi #endif
4534*53ee8cc1Swenshuai.xi }
4535*53ee8cc1Swenshuai.xi
MApi_PNL_GetAllGammaTbl_U2(void * pInstance)4536*53ee8cc1Swenshuai.xi MS_U8** MApi_PNL_GetAllGammaTbl_U2(void* pInstance)
4537*53ee8cc1Swenshuai.xi {
4538*53ee8cc1Swenshuai.xi MS_U8** ppallGammaTbls;
4539*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4540*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4541*53ee8cc1Swenshuai.xi
4542*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4543*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4544*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4545*53ee8cc1Swenshuai.xi ppallGammaTbls = pPNLResourcePrivate->stapiPNL.m_ppAllGammaTbls;
4546*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4547*53ee8cc1Swenshuai.xi return ppallGammaTbls;
4548*53ee8cc1Swenshuai.xi }
4549*53ee8cc1Swenshuai.xi
MApi_PNL_GetAllGammaTbl(void)4550*53ee8cc1Swenshuai.xi MS_U8** MApi_PNL_GetAllGammaTbl(void)
4551*53ee8cc1Swenshuai.xi {
4552*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4553*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4554*53ee8cc1Swenshuai.xi {
4555*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4556*53ee8cc1Swenshuai.xi {
4557*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4558*53ee8cc1Swenshuai.xi return NULL;
4559*53ee8cc1Swenshuai.xi }
4560*53ee8cc1Swenshuai.xi }
4561*53ee8cc1Swenshuai.xi
4562*53ee8cc1Swenshuai.xi stPNL_GetAllGammaTbl PNLArgs;
4563*53ee8cc1Swenshuai.xi PNLArgs.ppu8Return = NULL;
4564*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETALLGAMMATBL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4565*53ee8cc1Swenshuai.xi {
4566*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4567*53ee8cc1Swenshuai.xi return NULL;
4568*53ee8cc1Swenshuai.xi }
4569*53ee8cc1Swenshuai.xi else
4570*53ee8cc1Swenshuai.xi {
4571*53ee8cc1Swenshuai.xi return PNLArgs.ppu8Return;
4572*53ee8cc1Swenshuai.xi }
4573*53ee8cc1Swenshuai.xi #else
4574*53ee8cc1Swenshuai.xi return MApi_PNL_GetAllGammaTbl_U2(pu32PNLInst);
4575*53ee8cc1Swenshuai.xi #endif
4576*53ee8cc1Swenshuai.xi }
4577*53ee8cc1Swenshuai.xi
MApi_PNL_EnablePanel_U2(void * pInstance,MS_BOOL bPanelOn)4578*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_EnablePanel_U2(void* pInstance, MS_BOOL bPanelOn)
4579*53ee8cc1Swenshuai.xi {
4580*53ee8cc1Swenshuai.xi MS_BOOL bResult = FALSE;
4581*53ee8cc1Swenshuai.xi MS_BOOL bCalEn = ENABLE;
4582*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4583*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4584*53ee8cc1Swenshuai.xi
4585*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4586*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4587*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4588*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4589*53ee8cc1Swenshuai.xi
4590*53ee8cc1Swenshuai.xi if( !pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized )
4591*53ee8cc1Swenshuai.xi {
4592*53ee8cc1Swenshuai.xi PNL_PRINT_VAR(pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Initialized);
4593*53ee8cc1Swenshuai.xi PNL_DBG_MSG("Usage of uninitialized function.!!");
4594*53ee8cc1Swenshuai.xi }
4595*53ee8cc1Swenshuai.xi
4596*53ee8cc1Swenshuai.xi if(pPNLResourcePrivate->stdrvPNL._stPnlInitData.u32PNL_MISC & (MS_U32)E_APIPNL_MISC_SKIP_CALIBRATION)
4597*53ee8cc1Swenshuai.xi bCalEn = DISABLE;
4598*53ee8cc1Swenshuai.xi
4599*53ee8cc1Swenshuai.xi if( IsVBY1(pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type) )
4600*53ee8cc1Swenshuai.xi {
4601*53ee8cc1Swenshuai.xi bCalEn = DISABLE;
4602*53ee8cc1Swenshuai.xi }
4603*53ee8cc1Swenshuai.xi else if((pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE) ||
4604*53ee8cc1Swenshuai.xi (pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Type == E_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE))
4605*53ee8cc1Swenshuai.xi {
4606*53ee8cc1Swenshuai.xi bCalEn = DISABLE;
4607*53ee8cc1Swenshuai.xi }
4608*53ee8cc1Swenshuai.xi
4609*53ee8cc1Swenshuai.xi if ( E_PNL_OK == MDrv_PNL_En(pInstance, bPanelOn, bCalEn) )
4610*53ee8cc1Swenshuai.xi {
4611*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._stPnlStatus.bPanel_Enabled = bPanelOn;
4612*53ee8cc1Swenshuai.xi bResult = TRUE;
4613*53ee8cc1Swenshuai.xi }
4614*53ee8cc1Swenshuai.xi else
4615*53ee8cc1Swenshuai.xi {
4616*53ee8cc1Swenshuai.xi bResult = FALSE;
4617*53ee8cc1Swenshuai.xi }
4618*53ee8cc1Swenshuai.xi
4619*53ee8cc1Swenshuai.xi _PNL_RETURN();
4620*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4621*53ee8cc1Swenshuai.xi return bResult;
4622*53ee8cc1Swenshuai.xi }
4623*53ee8cc1Swenshuai.xi
MApi_PNL_EnablePanel(MS_BOOL bPanelOn)4624*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_EnablePanel(MS_BOOL bPanelOn)
4625*53ee8cc1Swenshuai.xi {
4626*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4627*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4628*53ee8cc1Swenshuai.xi {
4629*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4630*53ee8cc1Swenshuai.xi {
4631*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4632*53ee8cc1Swenshuai.xi return FALSE;
4633*53ee8cc1Swenshuai.xi }
4634*53ee8cc1Swenshuai.xi }
4635*53ee8cc1Swenshuai.xi
4636*53ee8cc1Swenshuai.xi stPNL_EnablePanel PNLArgs;
4637*53ee8cc1Swenshuai.xi PNLArgs.bPanelOn = bPanelOn;
4638*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4639*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_ENABLEPANEL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4640*53ee8cc1Swenshuai.xi {
4641*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4642*53ee8cc1Swenshuai.xi return FALSE;
4643*53ee8cc1Swenshuai.xi }
4644*53ee8cc1Swenshuai.xi else
4645*53ee8cc1Swenshuai.xi {
4646*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4647*53ee8cc1Swenshuai.xi }
4648*53ee8cc1Swenshuai.xi #else
4649*53ee8cc1Swenshuai.xi return MApi_PNL_EnablePanel_U2(pu32PNLInst, bPanelOn);
4650*53ee8cc1Swenshuai.xi #endif
4651*53ee8cc1Swenshuai.xi }
4652*53ee8cc1Swenshuai.xi
MApi_PNL_SetGammaTbl_U2(void * pInstance,APIPNL_GAMMA_TYPE eGammaType,MS_U8 * pu8GammaTab[3],APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)4653*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetGammaTbl_U2(void* pInstance,
4654*53ee8cc1Swenshuai.xi APIPNL_GAMMA_TYPE eGammaType,
4655*53ee8cc1Swenshuai.xi MS_U8* pu8GammaTab[3],
4656*53ee8cc1Swenshuai.xi APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)
4657*53ee8cc1Swenshuai.xi {
4658*53ee8cc1Swenshuai.xi MS_BOOL bResult = FALSE;
4659*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4660*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4661*53ee8cc1Swenshuai.xi
4662*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4663*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4664*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4665*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL.m_ppAllGammaTbls = pu8GammaTab;
4666*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._eGammaType = eGammaType;
4667*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stapiPNL._eGammaMapMode = Gamma_Map_Mode;
4668*53ee8cc1Swenshuai.xi memcpy(pPNLResourcePrivate->stapiPNL._pu8GammaTab[0] , pu8GammaTab[0] ,sizeof(MS_U8)*GammaTblSize);
4669*53ee8cc1Swenshuai.xi memcpy(pPNLResourcePrivate->stapiPNL._pu8GammaTab[1] , pu8GammaTab[1] ,sizeof(MS_U8)*GammaTblSize);
4670*53ee8cc1Swenshuai.xi memcpy(pPNLResourcePrivate->stapiPNL._pu8GammaTab[2] , pu8GammaTab[2] ,sizeof(MS_U8)*GammaTblSize);
4671*53ee8cc1Swenshuai.xi
4672*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4673*53ee8cc1Swenshuai.xi
4674*53ee8cc1Swenshuai.xi bResult = ( E_PNL_OK == MDrv_PNL_SetGammaTbl(
4675*53ee8cc1Swenshuai.xi pInstance,
4676*53ee8cc1Swenshuai.xi (DRVPNL_GAMMA_TYPE)eGammaType,
4677*53ee8cc1Swenshuai.xi pu8GammaTab,
4678*53ee8cc1Swenshuai.xi Gamma_Map_Mode == E_APIPNL_GAMMA_8BIT_MAPPING ? E_DRVPNL_GAMMA_8BIT_MAPPING : E_DRVPNL_GAMMA_10BIT_MAPPING ));
4679*53ee8cc1Swenshuai.xi
4680*53ee8cc1Swenshuai.xi if(bResult != TRUE)
4681*53ee8cc1Swenshuai.xi {
4682*53ee8cc1Swenshuai.xi PNL_ASSERT(0, "[%s] fails: ( APIPNL_GAMMA_TYPE: %d, APIPNL_GAMMA_MAPPEING_MODE %d) \n.", __FUNCTION__, eGammaType, Gamma_Map_Mode);
4683*53ee8cc1Swenshuai.xi }
4684*53ee8cc1Swenshuai.xi
4685*53ee8cc1Swenshuai.xi _PNL_RETURN();
4686*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4687*53ee8cc1Swenshuai.xi
4688*53ee8cc1Swenshuai.xi return bResult;
4689*53ee8cc1Swenshuai.xi }
4690*53ee8cc1Swenshuai.xi
MApi_PNL_SetGammaTbl(APIPNL_GAMMA_TYPE eGammaType,MS_U8 * pu8GammaTab[3],APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)4691*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetGammaTbl(APIPNL_GAMMA_TYPE eGammaType,
4692*53ee8cc1Swenshuai.xi MS_U8* pu8GammaTab[3],
4693*53ee8cc1Swenshuai.xi APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)
4694*53ee8cc1Swenshuai.xi {
4695*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4696*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4697*53ee8cc1Swenshuai.xi {
4698*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4699*53ee8cc1Swenshuai.xi {
4700*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4701*53ee8cc1Swenshuai.xi return FALSE;
4702*53ee8cc1Swenshuai.xi }
4703*53ee8cc1Swenshuai.xi }
4704*53ee8cc1Swenshuai.xi
4705*53ee8cc1Swenshuai.xi stPNL_SetGammaTbl PNLArgs;
4706*53ee8cc1Swenshuai.xi PNLArgs.eGammaType = eGammaType;
4707*53ee8cc1Swenshuai.xi PNLArgs.Gamma_Map_Mode = Gamma_Map_Mode;
4708*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4709*53ee8cc1Swenshuai.xi PNLArgs.pu8GammaTab[0] = pu8GammaTab[0];
4710*53ee8cc1Swenshuai.xi PNLArgs.pu8GammaTab[1] = pu8GammaTab[1];
4711*53ee8cc1Swenshuai.xi PNLArgs.pu8GammaTab[2] = pu8GammaTab[2];
4712*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETGAMMATBL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4713*53ee8cc1Swenshuai.xi {
4714*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4715*53ee8cc1Swenshuai.xi return FALSE;
4716*53ee8cc1Swenshuai.xi }
4717*53ee8cc1Swenshuai.xi else
4718*53ee8cc1Swenshuai.xi {
4719*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4720*53ee8cc1Swenshuai.xi }
4721*53ee8cc1Swenshuai.xi #else
4722*53ee8cc1Swenshuai.xi return MApi_PNL_SetGammaTbl_U2(pu32PNLInst, eGammaType, pu8GammaTab, Gamma_Map_Mode);
4723*53ee8cc1Swenshuai.xi #endif
4724*53ee8cc1Swenshuai.xi }
4725*53ee8cc1Swenshuai.xi
MApi_PNL_GetGammaTbl_U2(void * pInstance,APIPNL_GAMMA_TYPE eGammaType,MS_U8 * pu8GammaTab[3],APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)4726*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetGammaTbl_U2(void* pInstance,
4727*53ee8cc1Swenshuai.xi APIPNL_GAMMA_TYPE eGammaType,
4728*53ee8cc1Swenshuai.xi MS_U8* pu8GammaTab[3],
4729*53ee8cc1Swenshuai.xi APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)
4730*53ee8cc1Swenshuai.xi {
4731*53ee8cc1Swenshuai.xi MS_BOOL bResult = FALSE;
4732*53ee8cc1Swenshuai.xi
4733*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4734*53ee8cc1Swenshuai.xi bResult = ( E_PNL_OK == MDrv_PNL_GetGammaTbl(
4735*53ee8cc1Swenshuai.xi pInstance,
4736*53ee8cc1Swenshuai.xi (DRVPNL_GAMMA_TYPE)eGammaType,
4737*53ee8cc1Swenshuai.xi pu8GammaTab,
4738*53ee8cc1Swenshuai.xi Gamma_Map_Mode == E_APIPNL_GAMMA_8BIT_MAPPING ? E_DRVPNL_GAMMA_8BIT_MAPPING : E_DRVPNL_GAMMA_10BIT_MAPPING ));
4739*53ee8cc1Swenshuai.xi
4740*53ee8cc1Swenshuai.xi if(bResult != TRUE)
4741*53ee8cc1Swenshuai.xi {
4742*53ee8cc1Swenshuai.xi PNL_ASSERT(0, "[%s] fails: ( APIPNL_GAMMA_TYPE: %d, APIPNL_GAMMA_MAPPEING_MODE %d) \n.", __FUNCTION__, eGammaType, Gamma_Map_Mode);
4743*53ee8cc1Swenshuai.xi }
4744*53ee8cc1Swenshuai.xi
4745*53ee8cc1Swenshuai.xi _PNL_RETURN();
4746*53ee8cc1Swenshuai.xi return bResult;
4747*53ee8cc1Swenshuai.xi }
4748*53ee8cc1Swenshuai.xi
MApi_PNL_GetGammaTbl(APIPNL_GAMMA_TYPE eGammaType,MS_U8 * pu8GammaTab[3],APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)4749*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetGammaTbl(APIPNL_GAMMA_TYPE eGammaType,
4750*53ee8cc1Swenshuai.xi MS_U8* pu8GammaTab[3],
4751*53ee8cc1Swenshuai.xi APIPNL_GAMMA_MAPPEING_MODE Gamma_Map_Mode)
4752*53ee8cc1Swenshuai.xi {
4753*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4754*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4755*53ee8cc1Swenshuai.xi {
4756*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4757*53ee8cc1Swenshuai.xi {
4758*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4759*53ee8cc1Swenshuai.xi return FALSE;
4760*53ee8cc1Swenshuai.xi }
4761*53ee8cc1Swenshuai.xi }
4762*53ee8cc1Swenshuai.xi
4763*53ee8cc1Swenshuai.xi stPNL_GetGammaTbl PNLArgs;
4764*53ee8cc1Swenshuai.xi PNLArgs.eGammaType = eGammaType;
4765*53ee8cc1Swenshuai.xi PNLArgs.Gamma_Map_Mode = Gamma_Map_Mode;
4766*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4767*53ee8cc1Swenshuai.xi PNLArgs.pu8GammaTab[0] = pu8GammaTab[0];
4768*53ee8cc1Swenshuai.xi PNLArgs.pu8GammaTab[1] = pu8GammaTab[1];
4769*53ee8cc1Swenshuai.xi PNLArgs.pu8GammaTab[2] = pu8GammaTab[2];
4770*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETGAMMATBL, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4771*53ee8cc1Swenshuai.xi {
4772*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4773*53ee8cc1Swenshuai.xi return FALSE;
4774*53ee8cc1Swenshuai.xi }
4775*53ee8cc1Swenshuai.xi else
4776*53ee8cc1Swenshuai.xi {
4777*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4778*53ee8cc1Swenshuai.xi }
4779*53ee8cc1Swenshuai.xi #else
4780*53ee8cc1Swenshuai.xi return MApi_PNL_GetGammaTbl_U2(pu32PNLInst, eGammaType, pu8GammaTab, Gamma_Map_Mode);
4781*53ee8cc1Swenshuai.xi #endif
4782*53ee8cc1Swenshuai.xi }
4783*53ee8cc1Swenshuai.xi
MApi_PNL_SetGammaValue_U2(void * pInstance,MS_U8 u8Channel,MS_U16 u16Offset,MS_U16 u16GammaValue)4784*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetGammaValue_U2(void* pInstance, MS_U8 u8Channel, MS_U16 u16Offset, MS_U16 u16GammaValue)
4785*53ee8cc1Swenshuai.xi {
4786*53ee8cc1Swenshuai.xi MS_BOOL bResult = FALSE;
4787*53ee8cc1Swenshuai.xi
4788*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4789*53ee8cc1Swenshuai.xi
4790*53ee8cc1Swenshuai.xi bResult = ( E_PNL_OK == MDrv_PNL_SetGammaValue(pInstance, u8Channel, u16Offset, u16GammaValue));
4791*53ee8cc1Swenshuai.xi
4792*53ee8cc1Swenshuai.xi _PNL_RETURN();
4793*53ee8cc1Swenshuai.xi return bResult;
4794*53ee8cc1Swenshuai.xi }
4795*53ee8cc1Swenshuai.xi
MApi_PNL_SetGammaValue(MS_U8 u8Channel,MS_U16 u16Offset,MS_U16 u16GammaValue)4796*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_SetGammaValue(MS_U8 u8Channel, MS_U16 u16Offset, MS_U16 u16GammaValue)
4797*53ee8cc1Swenshuai.xi {
4798*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4799*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4800*53ee8cc1Swenshuai.xi {
4801*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4802*53ee8cc1Swenshuai.xi {
4803*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4804*53ee8cc1Swenshuai.xi return FALSE;
4805*53ee8cc1Swenshuai.xi }
4806*53ee8cc1Swenshuai.xi }
4807*53ee8cc1Swenshuai.xi
4808*53ee8cc1Swenshuai.xi stPNL_SetGammaValue PNLArgs;
4809*53ee8cc1Swenshuai.xi PNLArgs.u8Channel = u8Channel;
4810*53ee8cc1Swenshuai.xi PNLArgs.u16Offset = u16Offset;
4811*53ee8cc1Swenshuai.xi PNLArgs.u16GammaValue = u16GammaValue;
4812*53ee8cc1Swenshuai.xi PNLArgs.bReturn = FALSE;
4813*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SETGAMMAVALUE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4814*53ee8cc1Swenshuai.xi {
4815*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4816*53ee8cc1Swenshuai.xi return FALSE;
4817*53ee8cc1Swenshuai.xi }
4818*53ee8cc1Swenshuai.xi else
4819*53ee8cc1Swenshuai.xi {
4820*53ee8cc1Swenshuai.xi return PNLArgs.bReturn;
4821*53ee8cc1Swenshuai.xi }
4822*53ee8cc1Swenshuai.xi #else
4823*53ee8cc1Swenshuai.xi return MApi_PNL_SetGammaValue_U2(pu32PNLInst, u8Channel, u16Offset, u16GammaValue);
4824*53ee8cc1Swenshuai.xi #endif
4825*53ee8cc1Swenshuai.xi }
4826*53ee8cc1Swenshuai.xi
MApi_PNL_GetLPLLMode_U2(void * pInstance)4827*53ee8cc1Swenshuai.xi MS_U8 MApi_PNL_GetLPLLMode_U2(void *pInstance)
4828*53ee8cc1Swenshuai.xi {
4829*53ee8cc1Swenshuai.xi MS_U8 u8LPLLMode = 0;
4830*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4831*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4832*53ee8cc1Swenshuai.xi
4833*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4834*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4835*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4836*53ee8cc1Swenshuai.xi u8LPLLMode = pPNLResourcePrivate->stdrvPNL._stPnlInitData.eLPLL_Mode;
4837*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4838*53ee8cc1Swenshuai.xi return u8LPLLMode;
4839*53ee8cc1Swenshuai.xi }
4840*53ee8cc1Swenshuai.xi
MApi_PNL_GetLPLLMode(void)4841*53ee8cc1Swenshuai.xi MS_U8 MApi_PNL_GetLPLLMode(void)
4842*53ee8cc1Swenshuai.xi {
4843*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4844*53ee8cc1Swenshuai.xi {
4845*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4846*53ee8cc1Swenshuai.xi {
4847*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4848*53ee8cc1Swenshuai.xi return E_PNL_MODE_SINGLE;
4849*53ee8cc1Swenshuai.xi }
4850*53ee8cc1Swenshuai.xi }
4851*53ee8cc1Swenshuai.xi
4852*53ee8cc1Swenshuai.xi stPNL_GetLPLLMode PNLArgs;
4853*53ee8cc1Swenshuai.xi PNLArgs.u8Return = E_PNL_MODE_SINGLE;
4854*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETLPLLMODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4855*53ee8cc1Swenshuai.xi {
4856*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4857*53ee8cc1Swenshuai.xi return E_PNL_MODE_SINGLE;
4858*53ee8cc1Swenshuai.xi }
4859*53ee8cc1Swenshuai.xi else
4860*53ee8cc1Swenshuai.xi {
4861*53ee8cc1Swenshuai.xi return PNLArgs.u8Return;
4862*53ee8cc1Swenshuai.xi }
4863*53ee8cc1Swenshuai.xi }
4864*53ee8cc1Swenshuai.xi
MApi_PNL_GetDefVFreq_U2(void * pInstance)4865*53ee8cc1Swenshuai.xi MS_U16 MApi_PNL_GetDefVFreq_U2(void *pInstance)
4866*53ee8cc1Swenshuai.xi {
4867*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVFreq = 0;
4868*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4869*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4870*53ee8cc1Swenshuai.xi
4871*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4872*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4873*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4874*53ee8cc1Swenshuai.xi u16DefaultVFreq = pPNLResourcePrivate->stdrvPNL._stPnlInitData.u16DefaultVFreq;
4875*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4876*53ee8cc1Swenshuai.xi return u16DefaultVFreq;
4877*53ee8cc1Swenshuai.xi }
4878*53ee8cc1Swenshuai.xi
MApi_PNL_GetDefVFreq(void)4879*53ee8cc1Swenshuai.xi MS_U16 MApi_PNL_GetDefVFreq(void)
4880*53ee8cc1Swenshuai.xi {
4881*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4882*53ee8cc1Swenshuai.xi {
4883*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4884*53ee8cc1Swenshuai.xi {
4885*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4886*53ee8cc1Swenshuai.xi return 0;
4887*53ee8cc1Swenshuai.xi }
4888*53ee8cc1Swenshuai.xi }
4889*53ee8cc1Swenshuai.xi
4890*53ee8cc1Swenshuai.xi stPNL_GetDefVFreq PNLArgs;
4891*53ee8cc1Swenshuai.xi PNLArgs.u16Return = 0;
4892*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GETDEFVFREQ, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4893*53ee8cc1Swenshuai.xi {
4894*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4895*53ee8cc1Swenshuai.xi return 0;
4896*53ee8cc1Swenshuai.xi }
4897*53ee8cc1Swenshuai.xi else
4898*53ee8cc1Swenshuai.xi {
4899*53ee8cc1Swenshuai.xi return PNLArgs.u16Return;
4900*53ee8cc1Swenshuai.xi }
4901*53ee8cc1Swenshuai.xi }
4902*53ee8cc1Swenshuai.xi
_XC_PNL_GET_DEVICE_NUM(void)4903*53ee8cc1Swenshuai.xi MS_U32 _XC_PNL_GET_DEVICE_NUM(void)
4904*53ee8cc1Swenshuai.xi {
4905*53ee8cc1Swenshuai.xi return MDrv_PNL_GetDeviceNum();
4906*53ee8cc1Swenshuai.xi }
4907*53ee8cc1Swenshuai.xi
MApi_PNL_Check_VBY1_Handshake_Status_U2(void * pInstance)4908*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Check_VBY1_Handshake_Status_U2(void *pInstance)
4909*53ee8cc1Swenshuai.xi {
4910*53ee8cc1Swenshuai.xi MS_BOOL bResult = false;
4911*53ee8cc1Swenshuai.xi
4912*53ee8cc1Swenshuai.xi _PNL_ENTRY();
4913*53ee8cc1Swenshuai.xi bResult = MDrv_PNL_Check_VBY1_Handshake_Status(pInstance);
4914*53ee8cc1Swenshuai.xi _PNL_RETURN();
4915*53ee8cc1Swenshuai.xi
4916*53ee8cc1Swenshuai.xi return bResult;
4917*53ee8cc1Swenshuai.xi }
4918*53ee8cc1Swenshuai.xi
MApi_PNL_Check_VBY1_Handshake_Status(void)4919*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_Check_VBY1_Handshake_Status(void)
4920*53ee8cc1Swenshuai.xi {
4921*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4922*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4923*53ee8cc1Swenshuai.xi {
4924*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4925*53ee8cc1Swenshuai.xi {
4926*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4927*53ee8cc1Swenshuai.xi return E_PNL_MODE_SINGLE;
4928*53ee8cc1Swenshuai.xi }
4929*53ee8cc1Swenshuai.xi }
4930*53ee8cc1Swenshuai.xi stPNL_CheckVBY1HandshakeStatus PNLArgs;
4931*53ee8cc1Swenshuai.xi PNLArgs.bResult = FALSE;
4932*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_CHECKVBY1HANDSHAKESTATUS, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4933*53ee8cc1Swenshuai.xi {
4934*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4935*53ee8cc1Swenshuai.xi return 0;
4936*53ee8cc1Swenshuai.xi }
4937*53ee8cc1Swenshuai.xi else
4938*53ee8cc1Swenshuai.xi {
4939*53ee8cc1Swenshuai.xi return PNLArgs.bResult;
4940*53ee8cc1Swenshuai.xi }
4941*53ee8cc1Swenshuai.xi #else
4942*53ee8cc1Swenshuai.xi return MApi_PNL_Check_VBY1_Handshake_Status_U2(pu32PNLInst);
4943*53ee8cc1Swenshuai.xi #endif
4944*53ee8cc1Swenshuai.xi }
4945*53ee8cc1Swenshuai.xi
MApi_PNL_SetVideoHWTraining_U2(void * pInstance,MS_BOOL bEnable)4946*53ee8cc1Swenshuai.xi void MApi_PNL_SetVideoHWTraining_U2(void *pInstance, MS_BOOL bEnable)
4947*53ee8cc1Swenshuai.xi {
4948*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4949*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4950*53ee8cc1Swenshuai.xi
4951*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4952*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4953*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4954*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bVideo_HW_Training_En = bEnable;
4955*53ee8cc1Swenshuai.xi MDrv_PNL_VBY1_Hardware_TrainingMode_En(pInstance, TRUE, bEnable);
4956*53ee8cc1Swenshuai.xi printf("\nEnable Video HW Training mode\n");
4957*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4958*53ee8cc1Swenshuai.xi }
4959*53ee8cc1Swenshuai.xi
MApi_PNL_SetVideoHWTraining(MS_BOOL bEnable)4960*53ee8cc1Swenshuai.xi void MApi_PNL_SetVideoHWTraining(MS_BOOL bEnable)
4961*53ee8cc1Swenshuai.xi {
4962*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
4963*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
4964*53ee8cc1Swenshuai.xi {
4965*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
4966*53ee8cc1Swenshuai.xi {
4967*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
4968*53ee8cc1Swenshuai.xi return;
4969*53ee8cc1Swenshuai.xi }
4970*53ee8cc1Swenshuai.xi }
4971*53ee8cc1Swenshuai.xi
4972*53ee8cc1Swenshuai.xi stPNL_MOD_Video_HWTrainingMode PNLArgs;
4973*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
4974*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SET_VIDEOHWTRAINING_MODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
4975*53ee8cc1Swenshuai.xi {
4976*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
4977*53ee8cc1Swenshuai.xi }
4978*53ee8cc1Swenshuai.xi #else
4979*53ee8cc1Swenshuai.xi MApi_PNL_SetVideoHWTraining_U2(pu32PNLInst, bEnable);
4980*53ee8cc1Swenshuai.xi #endif
4981*53ee8cc1Swenshuai.xi }
4982*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDHWTraining_U2(void * pInstance,MS_BOOL bEnable)4983*53ee8cc1Swenshuai.xi void MApi_PNL_SetOSDHWTraining_U2(void *pInstance, MS_BOOL bEnable)
4984*53ee8cc1Swenshuai.xi {
4985*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
4986*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
4987*53ee8cc1Swenshuai.xi
4988*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
4989*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4990*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
4991*53ee8cc1Swenshuai.xi pPNLResourcePrivate->stdrvPNL._stPnlInitData.bOSD_HW_Training_En = bEnable;
4992*53ee8cc1Swenshuai.xi MDrv_PNL_VBY1_Hardware_TrainingMode_En(pInstance, FALSE, bEnable);
4993*53ee8cc1Swenshuai.xi printf("Enable OSD HW Training mode\n");
4994*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
4995*53ee8cc1Swenshuai.xi }
4996*53ee8cc1Swenshuai.xi
MApi_PNL_SetOSDHWTraining(MS_BOOL bEnable)4997*53ee8cc1Swenshuai.xi void MApi_PNL_SetOSDHWTraining(MS_BOOL bEnable)
4998*53ee8cc1Swenshuai.xi {
4999*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
5000*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
5001*53ee8cc1Swenshuai.xi {
5002*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
5003*53ee8cc1Swenshuai.xi {
5004*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
5005*53ee8cc1Swenshuai.xi return;
5006*53ee8cc1Swenshuai.xi }
5007*53ee8cc1Swenshuai.xi }
5008*53ee8cc1Swenshuai.xi
5009*53ee8cc1Swenshuai.xi stPNL_MOD_OSD_HWTrainingMode PNLArgs;
5010*53ee8cc1Swenshuai.xi PNLArgs.bEnable = bEnable;
5011*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_SET_OSDHWTRAINING_MODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
5012*53ee8cc1Swenshuai.xi {
5013*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
5014*53ee8cc1Swenshuai.xi }
5015*53ee8cc1Swenshuai.xi #else
5016*53ee8cc1Swenshuai.xi MApi_PNL_SetOSDHWTraining_U2(pu32PNLInst, bEnable);
5017*53ee8cc1Swenshuai.xi #endif
5018*53ee8cc1Swenshuai.xi }
5019*53ee8cc1Swenshuai.xi
MApi_PNL_GetVideoHWTraining_Status_U2(void * pInstance)5020*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetVideoHWTraining_Status_U2(void *pInstance)
5021*53ee8cc1Swenshuai.xi {
5022*53ee8cc1Swenshuai.xi MS_BOOL bStatus = 0;
5023*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
5024*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
5025*53ee8cc1Swenshuai.xi
5026*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
5027*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5028*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
5029*53ee8cc1Swenshuai.xi bStatus = pPNLResourcePrivate->stdrvPNL._stPnlInitData.bVideo_HW_Training_En;
5030*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5031*53ee8cc1Swenshuai.xi return bStatus;
5032*53ee8cc1Swenshuai.xi }
5033*53ee8cc1Swenshuai.xi
5034*53ee8cc1Swenshuai.xi
MApi_PNL_GetVideoHWTraining_Status(void)5035*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetVideoHWTraining_Status(void)
5036*53ee8cc1Swenshuai.xi {
5037*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
5038*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
5039*53ee8cc1Swenshuai.xi {
5040*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
5041*53ee8cc1Swenshuai.xi {
5042*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
5043*53ee8cc1Swenshuai.xi return 0;
5044*53ee8cc1Swenshuai.xi }
5045*53ee8cc1Swenshuai.xi }
5046*53ee8cc1Swenshuai.xi
5047*53ee8cc1Swenshuai.xi stPNL_GetVideoHWTraining_status PNLArgs;
5048*53ee8cc1Swenshuai.xi PNLArgs.bStatus = 0;
5049*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GET_VIDEOHWTRAINING_MODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
5050*53ee8cc1Swenshuai.xi {
5051*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
5052*53ee8cc1Swenshuai.xi return 0;
5053*53ee8cc1Swenshuai.xi }
5054*53ee8cc1Swenshuai.xi else
5055*53ee8cc1Swenshuai.xi {
5056*53ee8cc1Swenshuai.xi return PNLArgs.bStatus;
5057*53ee8cc1Swenshuai.xi }
5058*53ee8cc1Swenshuai.xi #else
5059*53ee8cc1Swenshuai.xi return MApi_PNL_GetVideoHWTraining_Status_U2(pu32PNLInst);
5060*53ee8cc1Swenshuai.xi #endif
5061*53ee8cc1Swenshuai.xi }
5062*53ee8cc1Swenshuai.xi
MApi_PNL_GetOSDHWTraining_Status_U2(void * pInstance)5063*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetOSDHWTraining_Status_U2(void *pInstance)
5064*53ee8cc1Swenshuai.xi {
5065*53ee8cc1Swenshuai.xi MS_BOOL bStatus = 0;
5066*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
5067*53ee8cc1Swenshuai.xi PNL_RESOURCE_PRIVATE* pPNLResourcePrivate = NULL;
5068*53ee8cc1Swenshuai.xi
5069*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
5070*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5071*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pPNLResource[PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID)],(void**)(&pPNLResourcePrivate));
5072*53ee8cc1Swenshuai.xi bStatus = pPNLResourcePrivate->stdrvPNL._stPnlInitData.bOSD_HW_Training_En;
5073*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5074*53ee8cc1Swenshuai.xi return bStatus;
5075*53ee8cc1Swenshuai.xi }
5076*53ee8cc1Swenshuai.xi
MApi_PNL_GetOSDHWTraining_Status(void)5077*53ee8cc1Swenshuai.xi MS_BOOL MApi_PNL_GetOSDHWTraining_Status(void)
5078*53ee8cc1Swenshuai.xi {
5079*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
5080*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
5081*53ee8cc1Swenshuai.xi {
5082*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
5083*53ee8cc1Swenshuai.xi {
5084*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
5085*53ee8cc1Swenshuai.xi return 0;
5086*53ee8cc1Swenshuai.xi }
5087*53ee8cc1Swenshuai.xi }
5088*53ee8cc1Swenshuai.xi
5089*53ee8cc1Swenshuai.xi stPNL_GetOSDHWTraining_status PNLArgs;
5090*53ee8cc1Swenshuai.xi PNLArgs.bStatus = 0;
5091*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_GET_OSDHWTRAINING_MODE, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
5092*53ee8cc1Swenshuai.xi {
5093*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
5094*53ee8cc1Swenshuai.xi return 0;
5095*53ee8cc1Swenshuai.xi }
5096*53ee8cc1Swenshuai.xi else
5097*53ee8cc1Swenshuai.xi {
5098*53ee8cc1Swenshuai.xi return PNLArgs.bStatus;
5099*53ee8cc1Swenshuai.xi }
5100*53ee8cc1Swenshuai.xi #else
5101*53ee8cc1Swenshuai.xi return MApi_PNL_GetOSDHWTraining_Status_U2(pu32PNLInst);
5102*53ee8cc1Swenshuai.xi #endif
5103*53ee8cc1Swenshuai.xi }
5104*53ee8cc1Swenshuai.xi
MApi_PNL_Setting_U2(void * pInstance,MS_U32 u32Cmd,void * pCmdArgs,MS_U32 u32CmdArgsSize)5105*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_Setting_U2(void* pInstance,MS_U32 u32Cmd,void *pCmdArgs,MS_U32 u32CmdArgsSize)
5106*53ee8cc1Swenshuai.xi {
5107*53ee8cc1Swenshuai.xi
5108*53ee8cc1Swenshuai.xi MS_BOOL bResult = E_APIPNL_FAIL;
5109*53ee8cc1Swenshuai.xi switch(u32Cmd)
5110*53ee8cc1Swenshuai.xi {
5111*53ee8cc1Swenshuai.xi case E_PNL_MOD_PECURRENT_SETTING:
5112*53ee8cc1Swenshuai.xi {
5113*53ee8cc1Swenshuai.xi if(u32CmdArgsSize == sizeof(ST_PNL_MOD_PECURRENT_SETTING))
5114*53ee8cc1Swenshuai.xi {
5115*53ee8cc1Swenshuai.xi ST_PNL_MOD_PECURRENT_SETTING *stPnlModPecurrentSetting = (ST_PNL_MOD_PECURRENT_SETTING *)pCmdArgs;
5116*53ee8cc1Swenshuai.xi
5117*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
5118*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
5119*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5120*53ee8cc1Swenshuai.xi
5121*53ee8cc1Swenshuai.xi MDrv_PNL_MOD_PECurrent_Setting(pInstance, stPnlModPecurrentSetting->u16Current_Level, stPnlModPecurrentSetting->u16Channel_Select);
5122*53ee8cc1Swenshuai.xi
5123*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5124*53ee8cc1Swenshuai.xi
5125*53ee8cc1Swenshuai.xi bResult = E_APIPNL_OK;
5126*53ee8cc1Swenshuai.xi }
5127*53ee8cc1Swenshuai.xi else
5128*53ee8cc1Swenshuai.xi {
5129*53ee8cc1Swenshuai.xi //PNL_DBG(PNL_DBGLEVEL_INIT,"E_PNL_MOD_PECURRENT_SETTING Struct Size No Match\n");
5130*53ee8cc1Swenshuai.xi return bResult;
5131*53ee8cc1Swenshuai.xi }
5132*53ee8cc1Swenshuai.xi break;
5133*53ee8cc1Swenshuai.xi }
5134*53ee8cc1Swenshuai.xi case E_PNL_CONTROL_OUT_SWING:
5135*53ee8cc1Swenshuai.xi {
5136*53ee8cc1Swenshuai.xi if(u32CmdArgsSize == sizeof(ST_PNL_CONTROL_OUT_SWING))
5137*53ee8cc1Swenshuai.xi {
5138*53ee8cc1Swenshuai.xi ST_PNL_CONTROL_OUT_SWING *stPnlControlOutSwing = (ST_PNL_CONTROL_OUT_SWING *)pCmdArgs;
5139*53ee8cc1Swenshuai.xi
5140*53ee8cc1Swenshuai.xi PNL_INSTANCE_PRIVATE *pPNLInstancePrivate = NULL;
5141*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&pPNLInstancePrivate);
5142*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_ENTRY(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5143*53ee8cc1Swenshuai.xi
5144*53ee8cc1Swenshuai.xi bResult = MDrv_PNL_Control_Out_Swing(pInstance, stPnlControlOutSwing->u16Swing_Level);
5145*53ee8cc1Swenshuai.xi
5146*53ee8cc1Swenshuai.xi _PNL_SEMAPHORE_RETURN(pInstance,PNL_GET_INTERNAL_POOL_ID(pPNLInstancePrivate->u32DeviceID));
5147*53ee8cc1Swenshuai.xi }
5148*53ee8cc1Swenshuai.xi else
5149*53ee8cc1Swenshuai.xi {
5150*53ee8cc1Swenshuai.xi //PNL_DBG(PNL_DBGLEVEL_INIT,"E_PNL_CONTROL_OUT_SWING Struct Size No Match\n");
5151*53ee8cc1Swenshuai.xi return bResult;
5152*53ee8cc1Swenshuai.xi }
5153*53ee8cc1Swenshuai.xi break;
5154*53ee8cc1Swenshuai.xi }
5155*53ee8cc1Swenshuai.xi default:
5156*53ee8cc1Swenshuai.xi printf("Unknow Handle ID!\n");
5157*53ee8cc1Swenshuai.xi break;
5158*53ee8cc1Swenshuai.xi }
5159*53ee8cc1Swenshuai.xi
5160*53ee8cc1Swenshuai.xi return bResult;
5161*53ee8cc1Swenshuai.xi }
5162*53ee8cc1Swenshuai.xi
MApi_PNL_Setting(MS_U32 u32Cmd,void * pCmdArgs,MS_U32 u32CmdArgsSize)5163*53ee8cc1Swenshuai.xi APIPNL_Result MApi_PNL_Setting(MS_U32 u32Cmd,void *pCmdArgs,MS_U32 u32CmdArgsSize)
5164*53ee8cc1Swenshuai.xi {
5165*53ee8cc1Swenshuai.xi #ifdef UTOPIA_20
5166*53ee8cc1Swenshuai.xi if (pu32PNLInst == NULL)
5167*53ee8cc1Swenshuai.xi {
5168*53ee8cc1Swenshuai.xi if(UtopiaOpen(MODULE_PNL, &pu32PNLInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
5169*53ee8cc1Swenshuai.xi {
5170*53ee8cc1Swenshuai.xi printf("UtopiaOpen PNL failed\n");
5171*53ee8cc1Swenshuai.xi return 0;
5172*53ee8cc1Swenshuai.xi }
5173*53ee8cc1Swenshuai.xi }
5174*53ee8cc1Swenshuai.xi
5175*53ee8cc1Swenshuai.xi stPNL_Setting PNLArgs;
5176*53ee8cc1Swenshuai.xi PNLArgs.u32Cmd = u32Cmd;
5177*53ee8cc1Swenshuai.xi PNLArgs.pCmdArgs = pCmdArgs;
5178*53ee8cc1Swenshuai.xi PNLArgs.u32CmdArgsSize = u32CmdArgsSize;
5179*53ee8cc1Swenshuai.xi PNLArgs.eReturnValue = E_APIPNL_FAIL;
5180*53ee8cc1Swenshuai.xi
5181*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32PNLInst, E_PNL_CMD_Setting, (void*)&PNLArgs) != UTOPIA_STATUS_SUCCESS)
5182*53ee8cc1Swenshuai.xi {
5183*53ee8cc1Swenshuai.xi printf("Obtain PNL engine fail\n");
5184*53ee8cc1Swenshuai.xi return E_APIPNL_FAIL;
5185*53ee8cc1Swenshuai.xi }
5186*53ee8cc1Swenshuai.xi else
5187*53ee8cc1Swenshuai.xi {
5188*53ee8cc1Swenshuai.xi return PNLArgs.eReturnValue;
5189*53ee8cc1Swenshuai.xi }
5190*53ee8cc1Swenshuai.xi #else
5191*53ee8cc1Swenshuai.xi return MApi_PNL_Setting_U2(pu32PNLInst, u32Cmd, pCmdArgs, u32CmdArgsSize);
5192*53ee8cc1Swenshuai.xi #endif
5193*53ee8cc1Swenshuai.xi }
5194*53ee8cc1Swenshuai.xi
5195*53ee8cc1Swenshuai.xi
5196*53ee8cc1Swenshuai.xi //} // Marked it by coverity_0553
5197*53ee8cc1Swenshuai.xi
5198*53ee8cc1Swenshuai.xi #endif
5199