xref: /utopia/UTPA2-700.0.x/modules/hdmi/api/hdmitx/apiHDMITx_v2.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ////////////////////////////////////////////////////////////////////////////////////////////////////
96 ///
97 /// file   apiHDMITx_v2.c
98 /// @brief  Demux 1.0 API wrapper for Demux 2.0
99 /// @author MStar Semiconductor,Inc.
100 ////////////////////////////////////////////////////////////////////////////////////////////////////
101 
102 #include "MsTypes.h"
103 #include "MsCommon.h"
104 #ifndef MSOS_TYPE_LINUX_KERNEL
105 #include <stdio.h>
106 #include <string.h>
107 #endif
108 #include "utopia_dapi.h"
109 #include "apiHDMITx.h"
110 #include "drvHDMITx.h"
111 #include "HDMITX_private.h"
112 #include "apiHDMITx_v2.h"
113 #include "utopia.h"
114 
115 
116 /*********************************************************************/
117 /*                                                                                                                     */
118 /*                                                      Defines                                                    */
119 /*                                                                                                                     */
120 /*********************************************************************/
121 #define EN_HDMITX_V2_DBG                (0)
122 
123 #if (EN_HDMITX_V2_DBG == 1)
124 #define DBG_HDMITX_V2(_f)                  _f
125 #else
126 #define DBG_HDMITX_V2(_f)
127 #endif
128 
129 void* pModuleHDMITX = NULL;
130 
HDMITXRegisterToUtopia(FUtopiaOpen ModuleType)131 void HDMITXRegisterToUtopia(FUtopiaOpen ModuleType)
132 {
133     // 1. deal with module
134     printf("HDMITxRegisterToUtopia..................\r\n");
135     UtopiaModuleCreate(MODULE_HDMITX, 0, &pModuleHDMITX);
136     UtopiaModuleRegister(pModuleHDMITX);
137 
138     // register func for module, after register here, then ap call UtopiaOpen/UtopiaIoctl/UtopiaClose can call to these registered standard func
139     UtopiaModuleSetupFunctionPtr(pModuleHDMITX,
140                                     (FUtopiaOpen)HDMITXOpen,
141                                     (FUtopiaClose)HDMITXClose,
142                                     (FUtopiaIOctl)HDMITXIoctl);
143 
144     #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
145     UtopiaModuleRegisterMdbNode("HDMITX", (FUtopiaMdbIoctl)HDMITXMdbIoctl);
146     #endif
147 
148     // 2. deal with resource
149     void* psResource = NULL;
150 
151     UtopiaModuleAddResourceStart(pModuleHDMITX, E_HDMITX_POOL_ID_INTERNAL_0);
152     UtopiaResourceCreate("HDMITX", sizeof(HDMITX_RESOURCE_PRIVATE), &psResource);
153     UtopiaResourceRegister(pModuleHDMITX, psResource, E_HDMITX_POOL_ID_INTERNAL_0);
154     UtopiaModuleAddResourceEnd(pModuleHDMITX, E_HDMITX_POOL_ID_INTERNAL_0);
155     DBG_HDMITX_V2(printf("%s(): end\n", __FUNCTION__));
156 
157 }
158 
HDMITXOpen(void ** ppInstance,const void * const pAttribute)159 MS_U32 HDMITXOpen(void** ppInstance, const void* const pAttribute)
160 {
161     HDMITX_INSTANCE_PRIVATE* psHDMITXInstPri = NULL;
162     DBG_HDMITX_V2(printf("%s(): start...\n", __FUNCTION__));
163 
164     //Create instance
165     UtopiaInstanceCreate(sizeof(HDMITX_INSTANCE_PRIVATE), ppInstance);
166     UtopiaInstanceGetPrivate(*ppInstance, (void**)&psHDMITXInstPri);
167 
168 #ifdef UTOPIA_20
169     psHDMITXInstPri->fpHDMITX_INIT = MApi_HDMITx_Init_U2;
170     psHDMITXInstPri->fpHDMITX_EXIT = MApi_HDMITx_Exit_U2;
171     psHDMITXInstPri->fpHDMITX_TUNRONOFF = MApi_HDMITx_TurnOnOff_U2;
172     psHDMITXInstPri->fpHDMITX_ENABLEPACKETGEN = MApi_HDMITx_EnablePacketGen_U2;
173 	psHDMITXInstPri->fpHDMITX_SETHDMITXMODE = MApi_HDMITx_SetHDMITxMode_U2;
174     psHDMITXInstPri->fpHDMITX_SETHDMITXMODE_CD = MApi_HDMITx_SetHDMITxMode_CD_U2;
175     psHDMITXInstPri->fpHDMITX_SETTMDSONOFF = MApi_HDMITx_SetTMDSOnOff_U2;
176     psHDMITXInstPri->fpHDMITX_DISABLETMDSCTRL = MApi_HDMITx_DisableTMDSCtrl_U2;
177     psHDMITXInstPri->fpHDMITX_SETRBCHANNELSWAP = MApi_HDMITx_SetRBChannelSwap_U2;
178     psHDMITXInstPri->fpHDMITX_EXHIBIT = MApi_HDMITx_Exhibit_U2;
179 
180     psHDMITXInstPri->fpHDMITX_GETRXSTATUS = MApi_HDMITx_GetRxStatus_U2;
181     psHDMITXInstPri->fpHDMITX_GETRXDCINFOFROMEDID = MApi_HDMITx_GetRxDCInfoFromEDID_U2;
182     psHDMITXInstPri->fpHDMITX_GETRXVIDEOFORMATFROMEDID = MApi_HDMITx_GetRxVideoFormatFromEDID_U2;
183     psHDMITXInstPri->fpHDMITX_GETVICLISTFROMEDID = MApi_HDMITx_GetVICListFromEDID_U2;
184     psHDMITXInstPri->fpHDMITX_GETCOLORFORMATFROMEDID = MApi_HDMITx_GetColorFormatFromEDID_U2;
185     psHDMITXInstPri->fpHDMITX_GETDATABLOCKLENGTHFROMEDID = MApi_HDMITx_GetDataBlockLengthFromEDID_U2;
186     psHDMITXInstPri->fpHDMITX_GETRXAUDIOFORMATFROMEDID = MApi_HDMITx_GetRxAudioFormatFromEDID_U2;
187     psHDMITXInstPri->fpHDMITX_EDID_HDMISUPPORT = MApi_HDMITx_EDID_HDMISupport_U2;
188     psHDMITXInstPri->fpHDMITX_GETRXIDMANUFACTURERNAME = MApi_HDMITx_GetRxIDManufacturerName_U2;
189     psHDMITXInstPri->fpHDMITX_GETEDIDDATA = MApi_HDMITx_GetEDIDData_U2;
190     psHDMITXInstPri->fpHDMITX_GETRX3DSTRUCTUREFROMEDID = MApi_HDMITx_GetRx3DStructureFromEDID_U2;
191     psHDMITXInstPri->fpHDMITX_PKT_USER_DEFINE_CLEAR = MApi_HDMITx_PKT_User_Define_Clear_U2;
192 
193     psHDMITXInstPri->fpHDMITX_PKT_USER_DEFINE = MApi_HDMITx_PKT_User_Define_U2;
194     psHDMITXInstPri->fpHDMITX_PKT_CONTENT_DEFINE = MApi_HDMITx_PKT_Content_Define_U2;
195     psHDMITXInstPri->fpHDMITX_SETVIDEOONOFF = MApi_HDMITx_SetVideoOnOff_U2;
196     psHDMITXInstPri->fpHDMITX_SETCOLORFORMAT = MApi_HDMITx_SetColorFormat_U2;
197     psHDMITXInstPri->fpHDMITX_SET_VS_INFOFRAME = MApi_HDMITx_Set_VS_InfoFrame_U2;
198     psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTTIMING = MApi_HDMITx_SetVideoOutputTiming_U2;
199     psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTASEPECTRATIO = MApi_HDMITx_SetVideoOutputAsepctRatio_U2;
200     psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTOVERSCAN_AFD = MApi_HDMITx_SetVideoOutputOverscan_AFD_U2;
201     psHDMITXInstPri->fpHDMITX_SETAUDIOONOFF = MApi_HDMITx_SetAudioOnOff_U2;
202     psHDMITXInstPri->fpHDMITX_SETAUDIOFREQUENCY = MApi_HDMITx_SetAudioFrequency_U2;
203 
204     psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTOVERSCAN_AFD_II = MApi_HDMITx_SetVideoOutputOverscan_AFD_II_U02;
205     psHDMITXInstPri->fpHDMITX_SETAUDIOCONFIGURATION = MApi_HDMITx_SetAudioConfiguration_U2;
206     psHDMITXInstPri->fpHDMITX_SETAUDIOSOURCEFORMAT = MApi_HDMITx_SetAudioSourceFormat_U2;
207     psHDMITXInstPri->fpHDMITX_SETAVIINFOCOLORIMETRY = MApi_HDMITx_SetAVIInfoExtColorimetry_U2;
208     psHDMITXInstPri->fpHDMITX_GETAUDIOCTS = MApi_HDMITx_GetAudioCTS_U2;
209     psHDMITXInstPri->fpHDMITX_MUTEAUDIOFIFO = MApi_HDMITx_MuteAudioFIFO_U2;
210     psHDMITXInstPri->fpHDMITX_GETHDCPKEY = MApi_HDMITx_GetHdcpKey_U2;
211     psHDMITXInstPri->fpHDMITX_GETBKSV = MApi_HDMITx_GetBksv_U2;
212     psHDMITXInstPri->fpHDMITX_GETAKSV = MApi_HDMITx_GetAksv_U2;
213     psHDMITXInstPri->fpHDMITX_SETHDCPONOFF = MApi_HDMITx_SetHDCPOnOff_U2;
214     psHDMITXInstPri->fpHDMITX_SETAVMUTE = MApi_HDMITx_SetAVMUTE_U2;
215 
216     psHDMITXInstPri->fpHDMITX_GETAVMUTESTATUS = MApi_HDMITx_GetAVMUTEStatus_U2;
217     psHDMITXInstPri->fpHDMITX_HDCP_REVOCATIONKEY_LIST = MApi_HDMITx_HDCP_RevocationKey_List_U2;
218     psHDMITXInstPri->fpHDMITX_HDCP_REVOCATIONKEY_CHECK = MApi_HDMITx_HDCP_RevocationKey_Check_U2;
219     psHDMITXInstPri->fpHDMITX_HDCP_ISSRMSIGNATUREVALID = MApi_HDMITx_HDCP_IsSRMSignatureValid_U2;
220     psHDMITXInstPri->fpHDMITX_GETHDCPSTATUS = MApi_HDMITx_GetHDCPStatus_U2;
221     psHDMITXInstPri->fpHDMITX_HDCP_STARTAUTH = MApi_HDMITx_HDCP_StartAuth_U2;
222     psHDMITXInstPri->fpHDMITX_GETINTHDCPSTATUS = MApi_HDMITx_GetINTHDCPStatus_U2;
223     psHDMITXInstPri->fpHDMITX_GETHDCP_PRESTATUS = MApi_HDMITx_GetHDCP_PreStatus_U2;
224     psHDMITXInstPri->fpHDMITX_UNHDCPRXCONTROL = MApi_HDMITx_UnHDCPRxControl_U2;
225 	psHDMITXInstPri->fpHDMITX_HDCPRXFAILCONTROL = MApi_HDMITx_HDCPRxFailControl_U2;
226 
227     psHDMITXInstPri->fpHDMITX_GETLIBVER = MApi_HDMITx_GetLibVer_U2;
228 	psHDMITXInstPri->fpHDMITX_GETINFO = MApi_HDMITx_GetInfo_U2;
229     psHDMITXInstPri->fpHDMITX_GETSTATUS = MApi_HDMITx_GetStatus_U2;
230     psHDMITXInstPri->fpHDMITX_SETDBGLEVEL = MApi_HDMITx_SetDbgLevel_U2;
231     psHDMITXInstPri->fpHDMITX_SETHPDGPIOPIN = MApi_HDMITx_SetHPDGpioPin_U2;
232     psHDMITXInstPri->fpHDMITX_ANALOGTUNING = MApi_HDMITx_AnalogTuning_U2;
233     psHDMITXInstPri->fpHDMITX_FORCEHDMIOUTPUTMODE = MApi_HDMITx_ForceHDMIOutputMode_U2;
234     psHDMITXInstPri->fpHDMITX_FORCEHDMIOUTPUTCOLORFORMAT = MApi_HDMITx_ForceHDMIOutputColorFormat_U2;
235     psHDMITXInstPri->fpHDMITX_DISABLEREGWRITE = MApi_HDMITx_DisableRegWrite_U2;
236     psHDMITXInstPri->fpHDMITX_GETEDIDPHYADR = MApi_HDMITx_GetEDIDPhyAdr_U2;
237 
238     psHDMITXInstPri->fpHDMITX_SETCECONOFF = MApi_HDMITx_SetCECOnOff_U2;
239     psHDMITXInstPri->fpHDMITX_GETCECSTATUS = MApi_HDMITx_GetCECStatus_U2;
240     psHDMITXInstPri->fpHDMITX_EDIDCHECKING = MApi_HDMITx_EdidChecking_U2;
241     psHDMITXInstPri->fpHDMITX_RXBYPASS_MODE = MApi_HDMITx_RxBypass_Mode_U2;
242     psHDMITXInstPri->fpHDMITX_DISABLE_RXBYPASS = MApi_HDMITx_Disable_RxBypass_U2;
243     psHDMITXInstPri->fpHDMITX_SETAKSV2R0INTERVAL = MApi_HDMITx_SetAksv2R0Interval_U2;
244     psHDMITXInstPri->fpHDMITX_ISRXVALID = MApi_HDMITx_IsHDCPRxValid_U2;
245     psHDMITXInstPri->fpHDMITX_GETCHIPCAPS = MApi_HDMITx_GetChipCaps_U2;
246     psHDMITXInstPri->fpHDMITX_SETPOWERSTATE = MApi_HDMITx_SetPowerState_U2;
247     psHDMITXInstPri->fpHDMITX_GETEDIDDATABLOCK = MApi_HDMITx_GetEdidDataBlocks_U2;
248     psHDMITXInstPri->fpHDMITX_GETKSVLIST = MApi_HDMITx_GetKSVList_U2;
249     psHDMITXInstPri->fpHDMITX_HDCP2ACCESSX74OFFSET = MApi_HDMITx_HDCP2AccessX74_U2;
250     psHDMITXInstPri->fpHDMITx_HDCP2TxInit = MApi_HDMITx_HDCP2TxInit_U2;
251     psHDMITXInstPri->fpHDMITx_HDCP2TxEnableEncrypt = MApi_HDMITx_HDCP2TxEnableEncrypt_U2;
252     psHDMITXInstPri->fpHDMITx_HDCP2TxFillCipherKey = MApi_HDMITx_HDCP2TxFillCipherKey_U2;
253     psHDMITXInstPri->fpHDMITx_GeneralCtrl = MApi_HDMITx_GeneralCtrl_U2;
254     psHDMITXInstPri->fpHDMITx_Cmd_ColorAndRangeTransform = MApi_HDMITx_ColorandRange_Transform_U2;
255     psHDMITXInstPri->fpHDMITx_Cmd_SSCEnable = MApi_HDMITx_SSC_Enable_U2;
256     psHDMITXInstPri->fpHDMITx_Cmd_Set_Colorimetry = MApi_HDMITx_SetAVIInfoColorimetry_U2;
257     psHDMITXInstPri->fpHDMITx_Cmd_Get_Full_Rx_Status = MApi_HDMITx_GetFullRxStatus_U2;
258     psHDMITXInstPri->fpHDMITx_Cmd_Timing_Capability_Check = MApi_HDMITx_CheckLegalTiming_U2;
259     psHDMITXInstPri->fpHDMITx_Cmd_Get_TMDS_Status = MApi_HDMITx_GetTMDSStatus_U2;
260     psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTTIMINGBYCUSTOMER = MApi_HDMITx_SetVideoOutputTimingByCustomer_U2;
261 #if defined(VANCLEEF_MCP) || defined(RAPTORS_MCP)
262     psHDMITXInstPri->fpHDMITX_VANCLEEF_LOADHDCPKEY = MApi_HDMITx_Vancleef_LoadHDCPKey_U2;
263 #endif
264 #endif
265     return UTOPIA_STATUS_SUCCESS;
266 }
267 
268 
269 #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
270 //**************************************************************************
271 //  [Function Name]:
272 //                  HDMITXMdbIoctl()
273 //  [Description]
274 //
275 //  [Arguments]:
HDMITXIoctl(void * pInstance,MS_U32 u32Cmd,void * pArgs)276 //
277 //  [Return]:
278 //
279 //**************************************************************************
280 MS_U32 HDMITXMdbIoctl(MS_U32 cmd, const void* const pArgs)
281 {
282     void* pInstance = NULL;
283     MS_U32 ulReturnValue = UTOPIA_STATUS_SUCCESS;
284     MDBCMD_CMDLINE_PARAMETER *paraCmdLine;
285     MDBCMD_GETINFO_PARAMETER *paraGetInfo;
286 
287     pInstance = UtopiaModuleGetLocalInstantList(MODULE_HDMITX, pInstance);
288 
289     switch(cmd)
290     {
291         case MDBCMD_CMDLINE:
292             paraCmdLine = (MDBCMD_CMDLINE_PARAMETER *)pArgs;
293             MdbPrint(paraCmdLine->u64ReqHdl,"u32CmdSize: %d\n", paraCmdLine->u32CmdSize);
294             MDrv_HDMITx_MDCMDEchoCommand(pInstance, paraCmdLine->u64ReqHdl, paraCmdLine->pcCmdLine);
295             paraCmdLine->result = MDBRESULT_SUCCESS_FIN;
296             break;
297 
298         case MDBCMD_GETINFO:
299             paraGetInfo = (MDBCMD_GETINFO_PARAMETER *)pArgs;
300             MDrv_HDMITx_MDCMDGetInfo(pInstance, paraGetInfo->u64ReqHdl);
301             paraGetInfo->result = MDBRESULT_SUCCESS_FIN;
302             break;
303 
304         default:
305             paraGetInfo = (MDBCMD_GETINFO_PARAMETER *)pArgs;
306             MdbPrint(paraGetInfo->u64ReqHdl,"unknown cmd\n", __LINE__);
307             break;
308     };
309 
310     return ulReturnValue;
311 }
312 #endif
313 
314 MS_U32 HDMITXIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs)
315 {
316 #ifdef UTOPIA_20
317     void* pModule = NULL;
318     HDMITX_INSTANCE_PRIVATE* psHDMITXInstPri = NULL;
319     UtopiaInstanceGetPrivate(pInstance, (void*)&psHDMITXInstPri);
320     UtopiaInstanceGetModule(pInstance, &pModule);
321     //printf("[%s,%5d] u32Cmd type = %ld\n",__FUNCTION__,__LINE__,u32Cmd);
322 
323     switch(u32Cmd)
324     {
325 
326         case E_HDMITX_CMD_INIT:
327             {
328                 pstHDMITx_Init pHDMITXArgs = (pstHDMITx_Init)pArgs;
329                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_INIT(pInstance);
330 
331                 return UTOPIA_STATUS_SUCCESS;
332                 break;
333             }
334 
335         case E_HDMITX_CMD_EXIT:
336             {
337                 pstHDMITx_Exit pHDMITXArgs = (pstHDMITx_Exit)pArgs;
338                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_EXIT(pInstance);
339 
340                 return UTOPIA_STATUS_SUCCESS;
341                 break;
342             }
343 
344 
345         case E_HDMITX_CMD_TURNONOFF:
346             {
347                 pstHDMITx_TurnOnOff pHDMITXArgs = (pstHDMITx_TurnOnOff)pArgs;
348                 psHDMITXInstPri->fpHDMITX_TUNRONOFF(pInstance,pHDMITXArgs->state);
349 
350                 return UTOPIA_STATUS_SUCCESS;
351                 break;
352             }
353 
354         case E_HDMITX_CMD_ENABLEPACKETGEN:
355             {
356                 pstHDMITx_EnablePacketGen pHDMITXArgs = (pstHDMITx_EnablePacketGen)pArgs;
357                 psHDMITXInstPri->fpHDMITX_ENABLEPACKETGEN(pInstance,pHDMITXArgs->bflag);
358 
359                 return UTOPIA_STATUS_SUCCESS;
360                 break;
361             }
362 
363         case E_HDMITX_CMD_SETHDMITXMODE:
364             {
365                 pstHDMITx_SetHDMITxMode pHDMITXArgs = (pstHDMITx_SetHDMITxMode)pArgs;
366                 psHDMITXInstPri->fpHDMITX_SETHDMITXMODE(pInstance, pHDMITXArgs->mode);
367 
368                 return UTOPIA_STATUS_SUCCESS;
369                 break;
370             }
371 
372         case E_HDMITX_CMD_SETHDMITXMODE_CD:
373             {
374                 pstHDMITx_SetHDMITxMode_CD pHDMITXArgs = (pstHDMITx_SetHDMITxMode_CD)pArgs;
375                 psHDMITXInstPri->fpHDMITX_SETHDMITXMODE_CD(pInstance, pHDMITXArgs->mode, pHDMITXArgs->val);
376 
377                 return UTOPIA_STATUS_SUCCESS;
378                 break;
379             }
380 
381         case E_HDMITX_CMD_SETTMDSONOFF:
382             {
383                 pstHDMITx_SetTMDSOnOff pHDMITXArgs = (pstHDMITx_SetTMDSOnOff)pArgs;
384                 psHDMITXInstPri->fpHDMITX_SETTMDSONOFF(pInstance, pHDMITXArgs->state);
385 
386                 return UTOPIA_STATUS_SUCCESS;
387                 break;
388             }
389 
390         case E_HDMITX_CMD_DISABLETMDSCTRL:
391             {
392                 pstHDMITx_DisableTMDSCtrl pHDMITXArgs = (pstHDMITx_DisableTMDSCtrl)pArgs;
393                 psHDMITXInstPri->fpHDMITX_DISABLETMDSCTRL(pInstance, pHDMITXArgs->bFlag);
394 
395                 return UTOPIA_STATUS_SUCCESS;
396                 break;
397             }
398 
399         case E_HDMITX_CMD_SETRBCHANNELSWAP:
400             {
401                 pstHDMITx_SetRBChannelSwap pHDMITXArgs = (pstHDMITx_SetRBChannelSwap)pArgs;
402                 psHDMITXInstPri->fpHDMITX_SETRBCHANNELSWAP(pInstance, pHDMITXArgs->state);
403 
404                 return UTOPIA_STATUS_SUCCESS;
405                 break;
406             }
407 
408         case E_HDMITX_CMD_EXHIBIT:
409             {
410                 psHDMITXInstPri->fpHDMITX_EXHIBIT(pInstance);
411 
412                 return UTOPIA_STATUS_SUCCESS;
413                 break;
414             }
415 
416         case E_HDMITX_CMD_GETRXSTATUS:
417             {
418                 pstHDMITx_GetRxStatus pHDMITXArgs = (pstHDMITx_GetRxStatus)pArgs;
419                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETRXSTATUS();
420 
421                 return UTOPIA_STATUS_SUCCESS;
422                 break;
423             }
424 
425         case E_HDMITX_CMD_GETRXDCINFOFROMEDID:
426             {
427                 pstHDMITx_GetRxDCInfoFromEDID pHDMITXArgs = (pstHDMITx_GetRxDCInfoFromEDID)pArgs;
428                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETRXDCINFOFROMEDID(pInstance, pHDMITXArgs->val);
429 
430                 return UTOPIA_STATUS_SUCCESS;
431                 break;
432             }
433 
434         case E_HDMITX_CMD_GETRXVIDEODORMATFROMEDID:
435             {
436                 pstHDMITx_GetRxVideoFormatFromEDID pHDMITXArgs = (pstHDMITx_GetRxVideoFormatFromEDID)pArgs;
437                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETRXVIDEOFORMATFROMEDID(pInstance, pHDMITXArgs->pu8Buffer, pHDMITXArgs->u8BufSize);
438 
439                 return UTOPIA_STATUS_SUCCESS;
440                 break;
441             }
442 
443         case E_HDMITX_CMD_GETVICLISTFROMEDID:
444             {
445                 pstHDMITx_GetVICListFromEDID pHDMITXArgs = (pstHDMITx_GetVICListFromEDID)pArgs;
446                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETVICLISTFROMEDID(pInstance, pHDMITXArgs->pu8Buffer, pHDMITXArgs->u8BufSize);
447 
448                 return UTOPIA_STATUS_SUCCESS;
449                 break;
450             }
451 
452         case E_HDMITX_CMD_GETDATABLOCKLENGTHFROMEDID:
453             {
454                 pstHDMITx_GetDataBlockLengthFromEDID pHDMITXArgs = (pstHDMITx_GetDataBlockLengthFromEDID)pArgs;
455                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETDATABLOCKLENGTHFROMEDID(pInstance, pHDMITXArgs->pu8Length, pHDMITXArgs->u8TagCode);
456 
457                 return UTOPIA_STATUS_SUCCESS;
458                 break;
459             }
460 
461         case E_HDMITX_CMD_GETCOLORFORMATFROMEDID:
462             {
463                 pstHDMITx_GetColorFormatFromEDID pHDMITXArgs = (pstHDMITx_GetColorFormatFromEDID)pArgs;
464                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETCOLORFORMATFROMEDID(pInstance, pHDMITXArgs->timing, pHDMITXArgs->pColorFmt);
465 
466                 break;
467             }
468 
469         case E_HDMITX_CMD_GETRXAUDIOFORMATFROMEDID:
470             {
471                 pstHDMITx_GetRxAudioFormatFromEDID pHDMITXArgs = (pstHDMITx_GetRxAudioFormatFromEDID)pArgs;
472                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETRXAUDIOFORMATFROMEDID(pInstance, pHDMITXArgs->pu8Buffer, pHDMITXArgs->u8BufSize);
473 
474                 return UTOPIA_STATUS_SUCCESS;
475                 break;
476             }
477 
478         case E_HDMITX_CMD_EDID_HDMISUPPORT:
479             {
480                 pstHDMITx_EDID_HDMISupport pHDMITXArgs = (pstHDMITx_EDID_HDMISupport)pArgs;
481                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_EDID_HDMISUPPORT(pInstance, pHDMITXArgs->HDMI_Support);
482 
483                 return UTOPIA_STATUS_SUCCESS;
484                 break;
485             }
486 
487         case E_HDMITX_CMD_GETRXIDMANUFACTURERNAME:
488             {
489                 pstHDMITx_GetRxIDManufacturerName pHDMITXArgs = (pstHDMITx_GetRxIDManufacturerName)pArgs;
490                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETRXIDMANUFACTURERNAME(pInstance, pHDMITXArgs->pu8Buffer);
491 
492                 return UTOPIA_STATUS_SUCCESS;
493                 break;
494             }
495 
496         case E_HDMITX_CMD_GETEDIDDATA:
497             {
498                 pstHDMITx_GetEDIDData pHDMITXArgs = (pstHDMITx_GetEDIDData)pArgs;
499                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETEDIDDATA(pInstance, pHDMITXArgs->pu8Buffer, pHDMITXArgs->BlockIdx);
500 
501                 return UTOPIA_STATUS_SUCCESS;
502                 break;
503             }
504 
505         case E_HDMITX_CMD_GETRX3DSTRUCTUREFROMEDID:
506             {
507                 pstHDMITx_GetRx3DStructureFromEDID pHDMITXArgs = (pstHDMITx_GetRx3DStructureFromEDID)pArgs;
508                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETRX3DSTRUCTUREFROMEDID(pInstance, pHDMITXArgs->timing, pHDMITXArgs->p3DStructure);
509 
510                 return UTOPIA_STATUS_SUCCESS;
511                 break;
512             }
513 
514         case E_HDMITX_CMD_PKT_USER_DEFINE_CLEAR:
515             {
516                 psHDMITXInstPri->fpHDMITX_PKT_USER_DEFINE_CLEAR(pInstance);
517 
518                 return UTOPIA_STATUS_SUCCESS;
519                 break;
520             }
521 
522         case E_HDMITX_CMD_PKT_USER_DEFINE:
523             {
524                 pstHDMITx_PKT_User_Define pHDMITXArgs = (pstHDMITx_PKT_User_Define)pArgs;
525                 psHDMITXInstPri->fpHDMITX_PKT_USER_DEFINE(pInstance, pHDMITXArgs->packet_type, pHDMITXArgs->def_flag, pHDMITXArgs->def_process, pHDMITXArgs->def_fcnt);
526 
527                 return UTOPIA_STATUS_SUCCESS;
528                 break;
529             }
530 
531         case E_HDMITX_CMD_PKT_CONTENT_DEFINE:
532             {
533                 pstHDMITx_PKT_Content_Define pHDMITXArgs = (pstHDMITx_PKT_Content_Define)pArgs;
534                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_PKT_CONTENT_DEFINE(pInstance, pHDMITXArgs->packet_type, pHDMITXArgs->data, pHDMITXArgs->length);
535 
536                 return UTOPIA_STATUS_SUCCESS;
537                 break;
538             }
539 
540         case E_HDMITX_CMD_SETVIDEOONOFF:
541             {
542                 pstHDMITx_SetVideoOnOff pHDMITXArgs = (pstHDMITx_SetVideoOnOff)pArgs;
543                 psHDMITXInstPri->fpHDMITX_SETVIDEOONOFF (pInstance, pHDMITXArgs->state);
544 
545                 return UTOPIA_STATUS_SUCCESS;
546                 break;
547             }
548 
549         case E_HDMITX_CMD_SETCOLORFORMAT:
550             {
551                 pstHDMITx_SetColorFormat pHDMITXArgs = (pstHDMITx_SetColorFormat)pArgs;
552                 psHDMITXInstPri->fpHDMITX_SETCOLORFORMAT (pInstance, pHDMITXArgs->in_color, pHDMITXArgs->out_color);
553 
554                 return UTOPIA_STATUS_SUCCESS;
555                 break;
556             }
557 
558         case E_HDMITX_CMD_SET_VS_INFOFRAME:
559             {
560                 pstHDMITx_Set_VS_InfoFrame pHDMITXArgs = (pstHDMITx_Set_VS_InfoFrame)pArgs;
561                 psHDMITXInstPri->fpHDMITX_SET_VS_INFOFRAME(pInstance, pHDMITXArgs->vs_format, pHDMITXArgs->vs_3d, pHDMITXArgs->vs_vic);
562 
563                 return UTOPIA_STATUS_SUCCESS;
564                 break;
565             }
566 
567         case E_HDMITX_CMD_SETVIDEOOUTPUTTIMING:
568             {
569                 pstHDMITx_SetVideoOutputTiming pHDMITXArgs = (pstHDMITx_SetVideoOutputTiming)pArgs;
570                 psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTTIMING(pInstance, pHDMITXArgs->mode);
571 
572                 return UTOPIA_STATUS_SUCCESS;
573                 break;
574             }
575 
576         case E_HDMITX_CMD_SETVIDEOOUTPUTASEPCTRATIO:
577             {
578                 pstHDMITx_SetVideoOutputAsepctRatio pHDMITXArgs = (pstHDMITx_SetVideoOutputAsepctRatio)pArgs;
579                 psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTASEPECTRATIO(pInstance, pHDMITXArgs->out_ar);
580 
581                 return UTOPIA_STATUS_SUCCESS;
582                 break;
583             }
584 
585         case E_HDMITX_CMD_SETVIDEOOUTPUTOVERSCAN_AFD:
586             {
587                 pstHDMITx_SetVideoOutputOverscan_AFD pHDMITXArgs = (pstHDMITx_SetVideoOutputOverscan_AFD)pArgs;
588                 psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTOVERSCAN_AFD(pInstance, pHDMITXArgs->bflag, pHDMITXArgs->out_scaninfo, pHDMITXArgs->out_afd);
589 
590                 return UTOPIA_STATUS_SUCCESS;
591                 break;
592             }
593 
594         case E_HDMITX_CMD_SETAUDIOONOFF:
595             {
596                 pstHDMITx_SetAudioOnOff pHDMITXArgs = (pstHDMITx_SetAudioOnOff)pArgs;
597                 psHDMITXInstPri->fpHDMITX_SETAUDIOONOFF(pInstance, pHDMITXArgs->state);
598 
599                 return UTOPIA_STATUS_SUCCESS;
600                 break;
601             }
602 
603         case E_HDMITX_CMD_SETAUDIOFREQUENCY:
604             {
605                 pstHDMITx_SetAudioFrequency pHDMITXArgs = (pstHDMITx_SetAudioFrequency)pArgs;
606                 psHDMITXInstPri->fpHDMITX_SETAUDIOFREQUENCY(pInstance, pHDMITXArgs->freq);
607 
608                 return UTOPIA_STATUS_SUCCESS;
609                 break;
610             }
611 
612         case E_HDMITX_CMD_SETVIDEOOUTPUTOVERSCAN_AFD_II:
613             {
614                 pstHDMITx_SetVideoOutputOverscan_AFD_II pHDMITXArgs = (pstHDMITx_SetVideoOutputOverscan_AFD_II)pArgs;
615                 psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTOVERSCAN_AFD_II(pInstance, pHDMITXArgs->bflag, pHDMITXArgs->out_scaninfo, pHDMITXArgs->out_afd, pHDMITXArgs->A0);
616 
617                 return UTOPIA_STATUS_SUCCESS;
618                 break;
619             }
620 
621         case E_HDMITX_CMD_SETAUDIOCONFIGURATION:
622             {
623                 pstHDMITx_SetAudioConfiguration pHDMITXArgs = (pstHDMITx_SetAudioConfiguration)pArgs;
624                 psHDMITXInstPri->fpHDMITX_SETAUDIOCONFIGURATION(pInstance, pHDMITXArgs->freq, pHDMITXArgs->ch, pHDMITXArgs->type);
625 
626                 return UTOPIA_STATUS_SUCCESS;
627                 break;
628             }
629 
630         case E_HDMITX_CMD_SETAUDIOSOURCEFORMAT:
631             {
632                 pstHDMITx_SetAudioSourceFormat pHDMITXArgs = (pstHDMITx_SetAudioSourceFormat)pArgs;
633                 psHDMITXInstPri->fpHDMITX_SETAUDIOSOURCEFORMAT(pInstance, pHDMITXArgs->fmt);
634 
635                 return UTOPIA_STATUS_SUCCESS;
636                 break;
637             }
638 
639         case E_HDMITX_CMD_SETAVIINFOEXTCOLORIMETRY:
640             {
641                 pstHDMITx_SetAVIInfoExtColorimetry pHDMITXArgs = (pstHDMITx_SetAVIInfoExtColorimetry)pArgs;
642                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_SETAVIINFOCOLORIMETRY(pInstance, pHDMITXArgs->enExtColorimetry, pHDMITXArgs->enYccQuantRange);
643 
644                 return UTOPIA_STATUS_SUCCESS;
645                 break;
646             }
647 
648         case E_HDMITX_CMD_GETAUDIOCTS:
649             {
650                 pstHDMITx_GetAudioCTS pHDMITXArgs = (pstHDMITx_GetAudioCTS)pArgs;
651                 pHDMITXArgs->u32Return = psHDMITXInstPri->fpHDMITX_GETAUDIOCTS(pInstance);
652 
653                 return UTOPIA_STATUS_SUCCESS;
654                 break;
655             }
656 
657         case E_HDMITX_CMD_MUTEAUDIOFIFO:
658             {
659                 pstHDMITx_MuteAudioFIFO pHDMITXArgs = (pstHDMITx_MuteAudioFIFO)pArgs;
660                 psHDMITXInstPri->fpHDMITX_MUTEAUDIOFIFO(pInstance, pHDMITXArgs->bflag);
661 
662                 return UTOPIA_STATUS_SUCCESS;
663                 break;
664             }
665 
666         case E_HDMITX_CMD_GETHDCPKEY:
667             {
668                 pstHDMITx_GetHdcpKey pHDMITXArgs = (pstHDMITx_GetHdcpKey)pArgs;
669                 psHDMITXInstPri->fpHDMITX_GETHDCPKEY(pInstance, pHDMITXArgs->useinternalkey, pHDMITXArgs->data);
670 
671                 return UTOPIA_STATUS_SUCCESS;
672                 break;
673             }
674 
675         case E_HDMITX_CMD_GETBKSV:
676             {
677                 pstHDMITx_GetBksv pHDMITXArgs = (pstHDMITx_GetBksv)pArgs;
678                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETBKSV(pInstance, pHDMITXArgs->pdata);
679 
680                 return UTOPIA_STATUS_SUCCESS;
681                 break;
682             }
683 
684         case E_HDMITX_CMD_GETAKSV:
685             {
686                 pstHDMITx_GetAksv pHDMITXArgs = (pstHDMITx_GetAksv)pArgs;
687                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETAKSV(pInstance, pHDMITXArgs->pdata);
688 
689                 return UTOPIA_STATUS_SUCCESS;
690                 break;
691             }
692 
693         case E_HDMITX_CMD_SETHDCPONOFF:
694             {
695                 pstHDMITx_SetHDCPOnOff pHDMITXArgs = (pstHDMITx_SetHDCPOnOff)pArgs;
696                 psHDMITXInstPri->fpHDMITX_SETHDCPONOFF(pInstance, pHDMITXArgs->state);
697 
698                 return UTOPIA_STATUS_SUCCESS;
699                 break;
700             }
701 
702         case E_HDMITX_CMD_SETAVMUTE:
703             {
704                 pstHDMITx_SetAVMUTE pHDMITXArgs = (pstHDMITx_SetAVMUTE)pArgs;
705                 psHDMITXInstPri->fpHDMITX_SETAVMUTE(pInstance, pHDMITXArgs->bflag);
706 
707                 return UTOPIA_STATUS_SUCCESS;
708                 break;
709             }
710 
711         case E_HDMITX_CMD_GETAVMUTESTATUS:
712             {
713                 pstHDMITx_GetAVMUTEStatus pHDMITXArgs = (pstHDMITx_GetAVMUTEStatus)pArgs;
714                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETAVMUTESTATUS(pInstance);
715 
716                 return UTOPIA_STATUS_SUCCESS;
717                 break;
718             }
719 
720         case E_HDMITX_CMD_HDCP_REVOCATIONKEY_LIST:
721             {
722                 pstHDMITx_HDCP_RevocationKey_List pHDMITXArgs = (pstHDMITx_HDCP_RevocationKey_List)pArgs;
723                 psHDMITXInstPri->fpHDMITX_HDCP_REVOCATIONKEY_LIST(pInstance, pHDMITXArgs->data, pHDMITXArgs->size);
724 
725                 return UTOPIA_STATUS_SUCCESS;
726                 break;
727             }
728 
729         case E_HDMITX_CMD_HDCP_REVOCATIONKEY_CHECK:
730             {
731                 pstHDMITx_HDCP_RevocationKey_Check pHDMITXArgs = (pstHDMITx_HDCP_RevocationKey_Check)pArgs;
732                 pHDMITXArgs->stReturn = psHDMITXInstPri->fpHDMITX_HDCP_REVOCATIONKEY_CHECK(pInstance);
733 
734                 return UTOPIA_STATUS_SUCCESS;
735                 break;
736             }
737 
738         case E_HDMITX_CMD_HDCP_ISSRMSIGNATUREVALID:
739             {
740                 pstHDMITx_HDCP_IsSRMSignatureValid pHDMITXArgs = (pstHDMITx_HDCP_IsSRMSignatureValid)pArgs;
741                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_HDCP_ISSRMSIGNATUREVALID(pInstance, pHDMITXArgs->data, pHDMITXArgs->size);
742 
743                 return UTOPIA_STATUS_SUCCESS;
744                 break;
745             }
746 
747         case E_HDMITX_CMD_GETHDCPSTATUS:
748             {
749                 pstHDMITx_GetHDCPStatus pHDMITXArgs = (pstHDMITx_GetHDCPStatus)pArgs;
750                 pHDMITXArgs->stReturn = psHDMITXInstPri->fpHDMITX_GETHDCPSTATUS(pInstance);
751 
752                 return UTOPIA_STATUS_SUCCESS;
753                 break;
754             }
755 
756         case E_HDMITX_CMD_HDCP_STARTAUTH:
757             {
758                 pstHDMITx_HDCP_StartAuth pHDMITXArgs = (pstHDMITx_HDCP_StartAuth)pArgs;
759                 psHDMITXInstPri->fpHDMITX_HDCP_STARTAUTH(pInstance, pHDMITXArgs->bFlag);
760 
761                 return UTOPIA_STATUS_SUCCESS;
762                 break;
763             }
764 
765 
766         case E_HDMITX_CMD_GETINTHDCPSTATUS:
767             {
768                 pstHDMITx_GetINTHDCPStatus pHDMITXArgs = (pstHDMITx_GetINTHDCPStatus)pArgs;
769                 pHDMITXArgs->stReturn = psHDMITXInstPri->fpHDMITX_GETINTHDCPSTATUS(pInstance);
770 
771                 return UTOPIA_STATUS_SUCCESS;
772                 break;
773             }
774 
775         case E_HDMITX_CMD_GETHDCP_PRESTATUS:
776             {
777                 pstHDMITx_GetHDCP_PreStatus pHDMITXArgs = (pstHDMITx_GetHDCP_PreStatus)pArgs;
778                 pHDMITXArgs->stReturn = psHDMITXInstPri->fpHDMITX_GETHDCP_PRESTATUS(pInstance);
779 
780                 return UTOPIA_STATUS_SUCCESS;
781                 break;
782             }
783 
784         case E_HDMITX_CMD_UNHDCPRXCONTROL:
785             {
786                 pstHDMITx_UnHDCPRxControl pHDMITXArgs = (pstHDMITx_UnHDCPRxControl)pArgs;
787                 psHDMITXInstPri->fpHDMITX_UNHDCPRXCONTROL(pInstance, pHDMITXArgs->state);
788 
789                 return UTOPIA_STATUS_SUCCESS;
790                 break;
791             }
792         case E_HDMITX_CMD_HDCPRXFAILCONTROL:
793             {
794                 pstHDMITx_HDCPRxFailControl pHDMITXArgs = (pstHDMITx_HDCPRxFailControl)pArgs;
795                 psHDMITXInstPri->fpHDMITX_HDCPRXFAILCONTROL(pInstance, pHDMITXArgs->state);
796 
797                 return UTOPIA_STATUS_SUCCESS;
798                 break;
799             }
800 
801         case E_HDMITX_CMD_GETLIBVER:
802             {
803                 pstHDMITx_GetLibVer pHDMITXArgs = (pstHDMITx_GetLibVer)pArgs;
804                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETLIBVER(pInstance, pHDMITXArgs->ppVersion);
805 
806                 return UTOPIA_STATUS_SUCCESS;
807                 break;
808             }
809 
810         case E_HDMITX_CMD_GETINFO:
811             {
812                 pstHDMITx_GetInfo pHDMITXArgs = (pstHDMITx_GetInfo)pArgs;
813                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETINFO(pInstance, pHDMITXArgs->pInfo);
814 
815                 return UTOPIA_STATUS_SUCCESS;
816                 break;
817             }
818 
819         case E_HDMITX_CMD_GETSTATUS:
820             {
821                 pstHDMITx_GetStatus pHDMITXArgs = (pstHDMITx_GetStatus)pArgs;
822                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETSTATUS(pInstance, pHDMITXArgs->pStatus);
823 
824                 return UTOPIA_STATUS_SUCCESS;
825                 break;
826             }
827 
828         case E_HDMITX_CMD_SETDBGLEVEL:
829             {
830                 pstHDMITx_SetDbgLevel pHDMITXArgs = (pstHDMITx_SetDbgLevel)pArgs;
831                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_SETDBGLEVEL(pHDMITXArgs->u16DbgSwitch);
832 
833                 return UTOPIA_STATUS_SUCCESS;
834                 break;
835             }
836 
837         case E_HDMITX_CMD_SETHPDGPIOPIN:
838             {
839                 pstHDMITx_SetHPDGpioPin pHDMITXArgs = (pstHDMITx_SetHPDGpioPin)pArgs;
840                 psHDMITXInstPri->fpHDMITX_SETHPDGPIOPIN(pInstance, pHDMITXArgs->u8pin);
841 
842                 return UTOPIA_STATUS_SUCCESS;
843                 break;
844             }
845 
846         case E_HDMITX_CMD_ANALOGTUNING:
847             {
848                 pstHDMITx_AnalogTuning pHDMITXArgs = (pstHDMITx_AnalogTuning)pArgs;
849                 psHDMITXInstPri->fpHDMITX_ANALOGTUNING(pInstance, pHDMITXArgs->pInfo);
850 
851                 return UTOPIA_STATUS_SUCCESS;
852                 break;
853             }
854 
855         case E_HDMITX_CMD_FORCEHDMIOUTPUTMODE:
856             {
857                 pstHDMITx_ForceHDMIOutputMode pHDMITXArgs = (pstHDMITx_ForceHDMIOutputMode)pArgs;
858                 psHDMITXInstPri->fpHDMITX_FORCEHDMIOUTPUTMODE(pInstance, pHDMITXArgs->bflag, pHDMITXArgs->output_mode);
859 
860                 return UTOPIA_STATUS_SUCCESS;
861                 break;
862             }
863 
864         case E_HDMITX_CMD_FORCEHDMIOUTPUTCOLORFORMAT:
865             {
866                 pstHDMITx_ForceHDMIOutputColorFormat pHDMITXArgs = (pstHDMITx_ForceHDMIOutputColorFormat)pArgs;
867                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_FORCEHDMIOUTPUTCOLORFORMAT(pInstance, pHDMITXArgs->bflag, pHDMITXArgs->output_color);
868 
869                 return UTOPIA_STATUS_SUCCESS;
870                 break;
871             }
872 
873         case E_HDMITX_CMD_DISABLEREGWRITE:
874             {
875                 pstHDMITx_DisableRegWrite pHDMITXArgs = (pstHDMITx_DisableRegWrite)pArgs;
876                 psHDMITXInstPri->fpHDMITX_DISABLEREGWRITE(pInstance, pHDMITXArgs->bFlag);
877 
878                 return UTOPIA_STATUS_SUCCESS;
879                 break;
880             }
881 
882         case E_HDMITX_CMD_GETEDIDPHYADR:
883             {
884                 pstHDMITx_GetEDIDPhyAdr pHDMITXArgs = (pstHDMITx_GetEDIDPhyAdr)pArgs;
885                 psHDMITXInstPri->fpHDMITX_GETEDIDPHYADR(pInstance, pHDMITXArgs->pdata);
886 
887                 return UTOPIA_STATUS_SUCCESS;
888                 break;
889             }
890 
891         case E_HDMITX_CMD_SETCECONOFF:
892             {
893                 pstHDMITx_SetCECOnOff pHDMITXArgs = (pstHDMITx_SetCECOnOff)pArgs;
894                 psHDMITXInstPri->fpHDMITX_SETCECONOFF(pInstance, pHDMITXArgs->bflag);
895 
896                 return UTOPIA_STATUS_SUCCESS;
897                 break;
898             }
899 
900         case E_HDMITX_CMD_GETCECSTATUS:
901             {
902                 pstHDMITx_GetCECStatus pHDMITXArgs = (pstHDMITx_GetCECStatus)pArgs;
903                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETCECSTATUS(pInstance);
904 
905                 return UTOPIA_STATUS_SUCCESS;
906                 break;
907             }
908 
909         case E_HDMITX_CMD_EDIDCHECKING:
910             {
911                 pstHDMITx_EdidChecking pHDMITXArgs = (pstHDMITx_EdidChecking)pArgs;
912                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_EDIDCHECKING(pInstance);
913 
914                 return UTOPIA_STATUS_SUCCESS;
915                 break;
916             }
917 
918         case E_HDMITX_CMD_RXBYPASS_MODE:
919             {
920                 pstHDMITx_RxBypass_Mode pHDMITXArgs = (pstHDMITx_RxBypass_Mode)pArgs;
921                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_RXBYPASS_MODE(pInstance, pHDMITXArgs->freq, pHDMITXArgs->bflag);
922 
923                 return UTOPIA_STATUS_SUCCESS;
924                 break;
925             }
926 
927         case E_HDMITX_CMD_DISABLE_RXBYPASS:
928             {
929                 pstHDMITx_Disable_RxBypass pHDMITXArgs = (pstHDMITx_Disable_RxBypass)pArgs;
930                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_DISABLE_RXBYPASS(pInstance);
931 
932                 return UTOPIA_STATUS_SUCCESS;
933                 break;
934             }
935 
936         case E_HDMITX_CMD_SETAKSV2R0INTERVAL:
937             {
938                 pstHDMITx_SetAksv2R0Interval pHDMITXArgs = (pstHDMITx_SetAksv2R0Interval)pArgs;
939                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_SETAKSV2R0INTERVAL(pInstance, pHDMITXArgs->u32Interval);
940 
941                 return UTOPIA_STATUS_SUCCESS;
942                 break;
943             }
944 
945         case E_HDMITX_CMD_ISRXVALID:
946             {
947                 pstHDMITx_IsHDCPRxValid pHDMITXArgs = (pstHDMITx_IsHDCPRxValid)pArgs;
948                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_ISRXVALID(pInstance);
949 
950                 return UTOPIA_STATUS_SUCCESS;
951                 break;
952             }
953 
954         case E_HDMITX_CMD_GETCHIPCAPS:
955             {
956                 pstHDMITx_GetChipCaps pHDMITXArgs = (pstHDMITx_GetChipCaps)pArgs;
957                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETCHIPCAPS(pInstance, pHDMITXArgs->eCapType, pHDMITXArgs->pRet, pHDMITXArgs->ret_size);
958 
959                 return UTOPIA_STATUS_SUCCESS;
960                 break;
961             }
962 
963         case E_HDMITX_CMD_SETPOWERSTATE:
964             {
965                 pstHDMITx_SetPowerState pHDMITXArgs = (pstHDMITx_SetPowerState)pArgs;
966                 pHDMITXArgs->u32Return = psHDMITXInstPri->fpHDMITX_SETPOWERSTATE(pInstance, pHDMITXArgs->u16PowerState);
967 
968                 return UTOPIA_STATUS_SUCCESS;
969                 break;
970             }
971 
972         case E_HDMITX_CMD_GETEDIDDATABLOCK:
973             {
974                 pstHDMITx_GetEdidDataBlocks pHDMITXArgs = (pstHDMITx_GetEdidDataBlocks)pArgs;
975                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETEDIDDATABLOCK(pInstance, pHDMITXArgs->enTagCode, pHDMITXArgs->enExtTagCode, pHDMITXArgs->pu8Data, pHDMITXArgs->u32DataLen, pHDMITXArgs->pu32RealLen);
976 
977                 return UTOPIA_STATUS_SUCCESS;
978                 break;
979             }
980 
981         case E_HDMITX_CMD_GETKSVLIST:
982             {
983                 pstHDMITx_GetKSVList pHDMITXArgs = (pstHDMITx_GetKSVList)pArgs;
984                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_GETKSVLIST(pInstance, pHDMITXArgs->pu8Bstatus, pHDMITXArgs->pu8KSVList, pHDMITXArgs->u16BufLen, pHDMITXArgs->pu16KSVLength);
985 
986                 return UTOPIA_STATUS_SUCCESS;
987                 break;
988             }
989 
990         case E_HDMITX_CMD_HDCP2ACCESSX74:
991             {
992                 pstHDMITx_HDCP2AccessX74 pHDMITXArgs = (pstHDMITx_HDCP2AccessX74)pArgs;
993                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITX_HDCP2ACCESSX74OFFSET(pInstance, pHDMITXArgs->u8PortIdx, pHDMITXArgs->u8OffsetAddr, pHDMITXArgs->u8OpCode, pHDMITXArgs->pu8RdBuf, pHDMITXArgs->u16RdLen, pHDMITXArgs->pu8WRBuff, pHDMITXArgs->u16WrLen);
994 
995                 return UTOPIA_STATUS_SUCCESS;
996                 break;
997             }
998 
999         case E_HDMITX_CMD_HDCP2TxInit:
1000             {
1001                 pstHDMITx_HDCP2TxInit pHDMITXArgs = (pstHDMITx_HDCP2TxInit)pArgs;
1002                 psHDMITXInstPri->fpHDMITx_HDCP2TxInit(pInstance, pHDMITXArgs->u8PortIdx, pHDMITXArgs->bEnable);
1003 
1004                 return UTOPIA_STATUS_SUCCESS;
1005                 break;
1006             }
1007 
1008         case E_HDMITX_CMD_HDCP2TxEnableEncrypt:
1009             {
1010                 pstHDMITx_HDCP2TxEnableEncrypt pHDMITXArgs = (pstHDMITx_HDCP2TxEnableEncrypt)pArgs;
1011                 psHDMITXInstPri->fpHDMITx_HDCP2TxEnableEncrypt(pInstance, pHDMITXArgs->u8PortIdx, pHDMITXArgs->bEnable);
1012 
1013                 return UTOPIA_STATUS_SUCCESS;
1014                 break;
1015             }
1016 
1017         case E_HDMITX_CMD_HDCP2TxFillCipherKey:
1018             {
1019                 pstHDMITx_HDCP2TxFillCipherKey pHDMITXArgs = (pstHDMITx_HDCP2TxFillCipherKey)pArgs;
1020                 psHDMITXInstPri->fpHDMITx_HDCP2TxFillCipherKey(pInstance, pHDMITXArgs->u8PortIdx, pHDMITXArgs->pu8Riv, pHDMITXArgs->pu8KsXORLC128);
1021 
1022                 return UTOPIA_STATUS_SUCCESS;
1023                 break;
1024             }
1025 
1026         case E_HDMITX_CMD_GENERALCTRL:
1027             {
1028                 pstHDMITx_GeneralCtrl pHDMITXArgs = (pstHDMITx_GeneralCtrl)pArgs;
1029                 pHDMITXArgs->bReturn = psHDMITXInstPri->fpHDMITx_GeneralCtrl(pInstance, pHDMITXArgs->u32Cmd, pHDMITXArgs->pu8Buf, pHDMITXArgs->u32BufSize);
1030 
1031                 return UTOPIA_STATUS_SUCCESS;
1032                 break;
1033             }
1034 
1035         case E_HDMITX_CMD_COLOR_AND_RANGE_TRANSFORM:
1036             {
1037                 pstHDMITX_COLOR_AND_RANGE_TRANSFORM_PARAMETERS pHDMITXArgs = (pstHDMITX_COLOR_AND_RANGE_TRANSFORM_PARAMETERS)pArgs;
1038                 pHDMITXArgs->result = psHDMITXInstPri->fpHDMITx_Cmd_ColorAndRangeTransform(pInstance, pHDMITXArgs->input_color, pHDMITXArgs->output_color, pHDMITXArgs->input_range, pHDMITXArgs->output_range);
1039 
1040                 return UTOPIA_STATUS_SUCCESS;
1041                 break;
1042             }
1043 
1044         case E_HDMITX_CMD_SSC_ENABLE:
1045             {
1046                 pstHDMITX_SSCENABLE pHDMITXArgs = (pstHDMITX_SSCENABLE)pArgs;
1047                 pHDMITXArgs->result = psHDMITXInstPri->fpHDMITx_Cmd_SSCEnable(pInstance, pHDMITXArgs->ubSSCEn);
1048 
1049                 return UTOPIA_STATUS_SUCCESS;
1050                 break;
1051             }
1052 
1053         case E_HDMITX_CMD_SET_COLORIMETRY:
1054             {
1055                 pstHDMITX_SET_COLORIMETRY pHDMITXArgs = (pstHDMITX_SET_COLORIMETRY)pArgs;
1056                 pHDMITXArgs->u8Return = psHDMITXInstPri->fpHDMITx_Cmd_Set_Colorimetry(pInstance, pHDMITXArgs->colorimetry);
1057 
1058                 return UTOPIA_STATUS_SUCCESS;
1059                 break;
1060             }
1061 
1062         case E_HDMITX_CMD_GET_FULL_RX_STATUS:
1063             {
1064                 pstHDMITX_GET_FULL_RX_STATUS pHDMITXArgs = (pstHDMITX_GET_FULL_RX_STATUS)pArgs;
1065                 pHDMITXArgs->u32RxStatus = psHDMITXInstPri->fpHDMITx_Cmd_Get_Full_Rx_Status(pInstance);
1066 
1067                 return UTOPIA_STATUS_SUCCESS;
1068                 break;
1069             }
1070 
1071         case E_HDMITX_CMD_TIMING_CAPABILITY_CHECK:
1072             {
1073                 pstHDMITX_CHECK_LEGAL_TIMING pHDMITXArgs = (pstHDMITX_CHECK_LEGAL_TIMING)pArgs;
1074                 pHDMITXArgs->ubRet = psHDMITXInstPri->fpHDMITx_Cmd_Timing_Capability_Check(pInstance, pHDMITXArgs->eOutputMode, pHDMITXArgs->eTiming, pHDMITXArgs->eInColor, pHDMITXArgs->eOutColor, pHDMITXArgs->eColorDepth);
1075 
1076                 return UTOPIA_STATUS_SUCCESS;
1077                 break;
1078             }
1079 
1080         case E_HDMITX_CMD_GET_TMDS_STATUS:
HDMITXClose(void * pInstance)1081             {
1082                 pstHDMITX_GET_TMDS_STATUS pHDMITXArgs = (pstHDMITX_GET_TMDS_STATUS)pArgs;
1083                 pHDMITXArgs->u32TMDSStatus = psHDMITXInstPri->fpHDMITx_Cmd_Get_TMDS_Status(pInstance);
1084                 pHDMITXArgs->u32Ret = pHDMITXArgs->u32TMDSStatus;
1085 
1086                 return UTOPIA_STATUS_SUCCESS;
1087                 break;
1088             }
1089 
1090         case E_HDMITX_CMD_SETVIDEOUTPUTTIMINGBYCUSTOMER:
1091             {
1092                 pstHDMITx_stHDMITx_SetVideoOutputTimingByCustomer pHDMITXArgs = (pstHDMITx_stHDMITx_SetVideoOutputTimingByCustomer)pArgs;
1093                 psHDMITXInstPri->fpHDMITX_SETVIDEOOUTPUTTIMINGBYCUSTOMER(pInstance, pHDMITXArgs->u8Mode, pHDMITXArgs->stTiminginfo);
1094 
1095                 return UTOPIA_STATUS_SUCCESS;
1096                 break;
1097             }
1098 
1099 #if defined(VANCLEEF_MCP) || defined(RAPTORS_MCP)
1100         case E_HDMITX_CMD_VANCLEEF_LOADHDCPKEY:
1101             {
1102                 pstHDMITx_Vancleef_LoadHDCPKey pHDMITXArgs = (pstHDMITx_Vancleef_LoadHDCPKey)pArgs;
1103                 psHDMITXInstPri->fpHDMITX_VANCLEEF_LOADHDCPKEY(pInstance, pHDMITXArgs->pHdcpKey, pHDMITXArgs->u32Size);
1104 
1105                 return UTOPIA_STATUS_SUCCESS;
1106                 break;
1107             }
1108 #endif
1109 
1110         default:
1111             printf("Error Command = 0x%X\n", u32Cmd);
1112             break;
1113 
1114     }
1115 #endif
1116     return UTOPIA_STATUS_SUCCESS;
1117 }
1118 
1119 MS_U32 HDMITXClose(void* pInstance)
1120 {
1121     UtopiaInstanceDelete(pInstance);
1122 
1123     return UTOPIA_STATUS_SUCCESS;
1124 }
1125 
1126 
1127