xref: /utopia/UTPA2-700.0.x/modules/xc/utopia_adaption/xc/XC_HDMI_if_adp.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 
78 ////////////////////////////////////////////////////////////////////////////////
79 /// file    XC_HDMI_if_adp.c
80 /// @brief  Scaler API layer Interface.
81 /// @author MStar Semiconductor Inc.
82 ////////////////////////////////////////////////////////////////////////////////
83 
84 #ifndef _XC_HDMI_IF_ADP_C_
85 #define _XC_HDMI_IF_ADP_C_
86 
87 //------------------------------------------------------------------------------
88 //  Include Files
89 //------------------------------------------------------------------------------
90 // Common Definition
91 #include <linux/kernel.h>
92 #include <linux/sched.h>
93 #include <linux/string.h>
94 #include <linux/slab.h>
95 #include <asm/uaccess.h>
96 #include <linux/compat.h>
97 
98 #include "MsTypes.h"
99 #include "utopia.h"
100 #include "utopia_adp.h"
101 #include "MsOS.h"
102 
103 // Internal Definition
104 #include "drvXC_IOPort.h"
105 #include "apiXC.h"
106 #include "drvXC_HDMI_if.h"
107 #include "drvXC_HDMI_if_v2.h"
108 #include "apiHDMIRx_private.h"
109 #include "apiXC_v2.h"
110 #include "XC_HDMI_if_adp.h"
111 #include "XC_adp.h"
112 #include "mvideo_context.h"
113 
114 //------------------------------------------------------------------------------
115 //  Driver Compiler Options
116 //------------------------------------------------------------------------------
117 
118 //------------------------------------------------------------------------------
119 //  Local Defines
120 //------------------------------------------------------------------------------
121 #if(defined(CONFIG_MLOG))
122 #include "ULog.h"
123 
124 #define MADP_HDMIRX_MSG_INFO(format, args...)       ULOGI("HDMIRX", format, ##args)
125 #define MADP_HDMIRX_MSG_WARNING(format, args...)    ULOGW("HDMIRX", format, ##args)
126 #define MADP_HDMIRX_MSG_DEBUG(format, args...)      ULOGD("HDMIRX", format, ##args)
127 #define MADP_HDMIRX_MSG_ERROR(format, args...)      ULOGE("HDMIRX", format, ##args)
128 #define MADP_HDMIRX_MSG_FATAL(format, args...)      ULOGF("HDMIRX", format, ##args)
129 
130 #else
131 #define MADP_HDMIRX_MSG_INFO(format, args...)       printf(format, ##args)
132 #define MADP_HDMIRX_MSG_WARNING(format, args...)    printf(format, ##args)
133 #define MADP_HDMIRX_MSG_DEBUG(format, args...)      printf(format, ##args)
134 #define MADP_HDMIRX_MSG_ERROR(format, args...)      printf(format, ##args)
135 #define MADP_HDMIRX_MSG_FATAL(format, args...)      printf(format, ##args)
136 
137 #endif
138 
139 #ifdef MSOS_TYPE_LINUX_KERNEL
140 #define CPY_FROM_USER(a,b,c)                    if(copy_from_user(a,b,c) != 0) { break; }
141 #define CPY_TO_USER(a,b,c)                      if(copy_to_user(a,b,c) != 0) { break; }
142 #else
143 #define CPY_FROM_USER                           memcpy
144 #define CPY_TO_USER                             memcpy
145 #endif  //MSOS_TYPE_LINUX_KERNEL
146 
147 #if (defined(MSOS_TYPE_LINUX_KERNEL) && defined(CONFIG_COMPAT))
148 #define COMPAT_PTR(a)                           compat_ptr(a)
149 #define COMPAT_NEXT_PTR(a)                      (*((MS_U32*)compat_ptr((unsigned long)a)))
150 #define IS_CMP_TASK()                           is_compat_task()
151 #define CMP_CPY_FROM_USER(a,b,c)                if(copy_from_user(a, compat_ptr((unsigned long)b), c) != 0)  {  break; }
152 #define CMP_CPY_TO_USER(a,b,c)                  if(copy_to_user(compat_ptr((unsigned long)a), b, c) != 0) { break;  }
153 #define MS_COMPAT_HDMIRX                        compat_uptr_t
154 
155 #else
156 #define COMPAT_PTR(a)                           (a)
157 #define COMPAT_NEXT_PTR(a)                      (*((MS_U32*)a))
158 #define IS_CMP_TASK()                           (FALSE)
159 #define CMP_CPY_FROM_USER                       CPY_FROM_USER
160 #define CMP_CPY_TO_USER                         CPY_TO_USER
161 #define MS_COMPAT_HDMIRX                        MS_U8*
162 
163 #endif //CONFIG_COMPAT
164 
165 //------------------------------------------------------------------------------
166 //  Local Structurs
167 //------------------------------------------------------------------------------
168 typedef struct DLL_PACKED
169 {
170     MS_U8 ucPortType;
171     MS_U8 ucPortIdx;
172     MS_COMPAT_HDMIRX pucData;
173     MS_U32 dwDataLen;
174     MS_COMPAT_HDMIRX pDummy;
175 } stHDCP22_SEND_MESSAGE_COMPAT, *pstHDCP22_SEND_MESSAGE_COMPAT;
176 
177 typedef struct DLL_PACKED
178 {
179     MS_U32 u32Cmd;
180     MS_COMPAT_HDMIRX pBuf;
181     MS_U32 u32BufSize;
182     MS_BOOL bRet;
183     MS_U8 ucHDMIInfoSource;
184 } stHDMI_CONTROL_COMPAT, *pstHDMI_CONTROL_COMPAT;
185 
186 //------------------------------------------------------------------------------
187 //  Global Variables
188 //------------------------------------------------------------------------------
189 
190 //------------------------------------------------------------------------------
191 //  Local Variables
192 //------------------------------------------------------------------------------
193 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_MS_U8, 0);
194 // E_XC_HDMI_IF_CMD_FUNC_CAPS -- stHDMI_FUNC_CAPS
195 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_FUNC_CAPS, 0);
196 // E_XC_HDMI_IF_CMD_INIT -- stHDMI_INITIAL_SETTING
197 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_INITIAL_SETTING, 0);
198 // E_XC_HDMI_IF_CMD_PKT_RESET -- stHDMI_PKT_RESET
199 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_PKT_RESET, 0);
200 // E_XC_HDMI_IF_CMD_PULLHPD -- stHDMI_PULLHPD
201 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_PULLHPD, 0);
202 // E_XC_HDMI_IF_CMD_GC_INFO -- stHDMI_GC_INFO
203 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GC_INFO, 0);
204 // E_XC_HDMI_IF_CMD_PACKET_RECEIVED -- stHDMI_PACKET_RECEIVED
205 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_PACKET_RECEIVED, 0);
206 // E_XC_HDMI_IF_CMD_GET_COLORFORMAT -- stHDMI_GET_COLORFORMAT
207 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_COLORFORMAT, 0);
208 // E_XC_HDMI_IF_CMD_GET_COLORRANGE -- stHDMI_GET_COLORRANGE
209 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_COLORRANGE, 0);
210 // E_XC_HDMI_IF_CMD_SET_EQ -- stHDMI_SET_EQ
211 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SET_EQ, 0);
212 // E_XC_HDMI_IF_CMD_SET_EQ_TO_PORT -- stHDMI_SET_EQ_TO_PORT
213 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SET_EQ_TO_PORT, 0);
214 // E_XC_HDMI_IF_CMD_AUDIO_MUTE_ENABLE -- stHDMI_AUDIO_MUTE_ENABLE
215 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_AUDIO_MUTE_ENABLE, 0);
216 // E_XC_HDMI_IF_CMD_GET_ASPECTRATIO -- stHDMI_GET_ASPECTRATIO
217 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_ASPECTRATIO, 0);
218 // E_XC_HDMI_IF_CMD_GET_ACTIVEFORMAT_ASPECTRATIO -- stHDMI_GET_ACTIVEFORMAT_ASPECTRATIO
219 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_ACTIVEFORMAT_ASPECTRATIO, 0);
220 // E_XC_HDMI_IF_CMD_GET_AVIINFOFRAMEVER -- stHDMI_GET_AVIINFOFRAMEVER
221 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_AVIINFOFRAMEVER, 0);
222 // E_XC_HDMI_IF_CMD_ERR_STATUS_UPDATE -- stHDMI_ERR_STATUS_UPDATE
223 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_ERR_STATUS_UPDATE, 0);
224 // E_XC_HDMI_IF_CMD_GET_TMDS_FREQ -- stHDMI_GET_TMDS_FREQ
225 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_TMDS_FREQ, 0);
226 // E_XC_HDMI_IF_CMD_GET_POLLINGSTATUS -- stHDMI_GET_POLLINGSTATUS
227 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_POLLINGSTATUS, 0);
228 // E_XC_HDMI_IF_CMD_ISHDMI_MODE -- stHDMI_ISHDMI_MODE
229 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_ISHDMI_MODE, 0);
230 // E_XC_HDMI_IF_CMD_GET_MID_INFO -- stHDMI_GET_MID_INFO
231 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_MID_INFO_TABLE, 0);
232 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_MID_INFO, 1);
233 // E_XC_HDMI_IF_CMD_GET_PACKET_VALUE -- stHDMI_GET_PACKET_VALUE
234 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_PACKET_VALUE, 1);
235 // E_XC_DVI_IF_CMD_CHANNELPHASESTATUS -- stDVI_CHANNELPHASESTATUS
236 UADP_SPT_NAMEnNXT_DEF(XC_DVI_CHANNELPHASESTATUS, 0);
237 // E_XC_DVI_IF_CMD_SOFTWARERESET -- stDVI_SOFTWARERESET
238 UADP_SPT_NAMEnNXT_DEF(XC_DVI_SOFTWARERESET, 0);
239 // E_XC_HDMI_IF_CMD_AVIINFO_ACTIVEINFOPRESENT -- stHDMI_GET_AVIIINFO_ACTIVEINFOPRESENT
240 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_AVIIINFO_ACTIVEINFOPRESENT, 0);
241 // E_XC_DVI_IF_CMD_CLKPULLLOW -- stDVI_CLKPULLLOW
242 UADP_SPT_NAMEnNXT_DEF(XC_DVI_CLKPULLLOW, 0);
243 // E_XC_DVI_IF_CMD_SWITCHSRC -- stDVI_SWITCHSRC
244 UADP_SPT_NAMEnNXT_DEF(XC_DVI_SWITCHSRC, 0);
245 // E_XC_HDMI_IF_CMD_SETFORCLOCKLESSTHAN70MHZ -- stHDMI_SETFORCLOCKLESSTHAN70MHZ
246 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SETFORCLOCKLESSTHAN70MHZ, 0);
247 // E_XC_HDMI_IF_CMD_DVI_ADJUST -- stHDMI_DVI_ADJUST
248 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_DVI_ADJUST, 0);
249 // E_XC_HDMI_IF_CMD_SETUPDATEPHASELINECOUNT -- stHDMI_SETUPDATEPHASELINECOUNT
250 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SETUPDATEPHASELINECOUNT, 0);
251 // E_XC_HDCP_IF_CMD_ENABLE -- stHDCP_ENABLE
252 UADP_SPT_NAMEnNXT_DEF(XC_HDCP_ENABLE, 0);
253 // E_XC_HDMI_IF_CMD_SET_HDCP_ENABLE -- stHDMI_SET_HDCPENABLE
254 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SET_HDCPENABLE, 0);
255 // E_XC_HDCP_IF_CMD_INITPRODUCTIONKEY -- stHDCP_INITPRODUCTIONKEY
256 UADP_SPT_NAMEnNXT_DEF(XC_HDCP_KEY_TABLE, 0);
257 UADP_SPT_NAMEnNXT_DEF(XC_HDCP_INITPRODUCTIONKEY, 1);
258 // E_XC_HDCP_IF_CMD_GETSTATUS -- stHDCP_GETSTATUS -- MS_HDCP_STATUS_INFO_t
259 UADP_SPT_NAMEnNXT_DEF(XC_MS_HDCP_STATUS_INFO, 0);
260 UADP_SPT_NAMEnNXT_DEF(XC_HDCP_GETSTATUS, 0);
261 // E_XC_HDCP_IF_CMD_VSYNC_END_EN -- stHDCP_VSYNC_END_EN
262 UADP_SPT_NAMEnNXT_DEF(XC_HDCP_VSYNC_END_EN, 0);
263 // E_XC_HDMI_IF_CMD_AUDIO_OUTPUT -- stHDMI_AUDIO_OUTPUT
264 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_AUDIO_OUTPUT, 0);
265 // E_XC_HDMI_IF_CMD_AUDIO_CP_HDR_INFO -- stHDMI_AUDIO_CP_HDR_INFO
266 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_AUDIO_CP_HDR_INFO, 0);
267 // E_XC_HDMI_IF_CMD_AUDIO_CHANNEL_STATUS -- stHDMI_AUDIO_CHANNEL_STATUS
268 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_AUDIO_CHANNEL_STATUS, 0);
269 // E_XC_HDMI_IF_CMD_GETLIBVER -- stHDMI_GETLIBVER
270 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GETLIBVER, 0);
271 // E_XC_HDMI_IF_CMD_GETINFO -- stHDMI_GETINFO -- MS_HDMI_INFO
272 UADP_SPT_NAMEnNXT_DEF(XC_MS_HDMI_INFO, 0);
273 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GETINFO, 1);
274 // E_XC_HDMI_IF_CMD_GETSTATUS -- stHDMI_GETSTATUS -- MS_HDMI_Status
275 UADP_SPT_NAMEnNXT_DEF(XC_MS_HDMI_STATUS, 0);
276 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GETSTATUS, 1);
277 // E_XC_HDMI_IF_CMD_READ_DDCRAM -- stHDMI_READ_DDCRAM -- XC_DDCRAM_PROG_INFO
278 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_EDID_TABLE, 0);
279 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_DDCRAM_PROG_INFO, 1);
280 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_READ_DDCRAM, 1);
281 // E_XC_HDMI_IF_CMD_PROG_DDCRAM -- stHDMI_PROG_DDCRAM -- XC_DDCRAM_PROG_INFO
282 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_PROG_DDCRAM, 1);
283 // E_XC_HDMI_IF_CMD_GET_CONTENT_TYPE -- stHDMI_GET_CONTENT_TYPE
284 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_CONTENT_TYPE, 0);
285 // E_XC_HDMI_IF_CMD_GET_EXTCOLORIMETRY -- stHDMI_GET_EXT_COLORIMETRY
286 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_EXT_COLORIMETRY, 0);
287 // E_XC_HDMI_IF_CMD_GET_PIXEL_REPETITION -- stHDMI_GET_PIXEL_REPETITION
288 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_PIXEL_REPETITION, 0);
289 // E_XC_HDMI_IF_CMD_CHECK_4K2K -- stHDMI_CHECK_4K2K
290 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_CHECK_4K2K, 0);
291 // E_XC_HDMI_IF_CMD_3D_4KX2K_PROCESS -- stHDMI_3D_4K2K_PROCESS
292 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_3D_4K2K_PROCESS, 0);
293 // E_XC_HDMI_IF_CMD_AVG_SCALERINGDOWN -- stHDMI_AVG_SCALERINGDOWN
294 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_AVG_SCALERINGDOWN, 0);
295 // E_XC_HDMI_IF_CMD_CHECK_ADDITIONAL_FORMAT -- stHDMI_CHECK_ADDITIONAL_FORMAT
296 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_CHECK_ADDITIONAL_FORMAT, 0);
297 // E_XC_HDMI_IF_CMD_GET_3D_STRUCTURE -- stHDMI_GET_3D_STRUCTURE
298 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_3D_STRUCTURE, 0);
299 // E_XC_HDMI_CMD_GET_3D_EXT_DATA -- stHDMI_GET_3D_EXT_DATA
300 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_3D_EXT_DATA, 0);
301 // E_XC_HDMI_IF_CMD_GET_3D_META_FIELD -- stHDMI_GET_3D_META_FIELD -- sHDMI_3D_META_FIELD
302 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_3D_META_FIELD, 0);
303 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_3D_META_FIELD, 1);
304 // E_XC_HDMI_IF_CMD_GET_VIC_CODE -- stHDMI_GET_VIC_CODE
305 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_VIC_CODE, 0);
306 // E_XC_HDMI_IF_CMD_GET_4KX2K_VIC_CODE -- stHDMI_GET_4KX2K_VIC_CODE
307 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_4KX2K_VIC_CODE, 0);
308 // E_XC_HDMI_IF_CMD_ARC_PINCONTROL -- stHDMI_ARC_PINCONTROL
309 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_ARC_PINCONTROL, 0);
310 // E_XC_HDMI_IF_CMD_DVI_SOFTWARE_RESET -- stDVI_SOFTWARE_RESET
311 UADP_SPT_NAMEnNXT_DEF(XC_DVI_SOFTWARE_RESET, 0);
312 // E_XC_HDMI_IF_CMD_SET_POWERSTATE -- stHDMI_SET_POWERSTATE
313 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SET_POWERSTATE, 0);
314 // E_XC_HDMI_IF_CMD_CHECK_HDMI20_SETTING -- stHDMI_CHECK_HDMI20_SETTING
315 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_CHECK_HDMI20_SETTING, 0);
316 // E_XC_HDMI_IF_CMD_SET_5V_DETECT_GPIO_SELECT -- stHDMI_SET_5V_DETECT_GPIO_SELECT
317 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_SET_5V_DETECT_GPIO_SELECT, 0);
318 // E_XC_HDMI_IF_CMD_GET_DE_STABLE_STATUS -- stHDMI_GET_DE_STABLE_STATUS
319 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_DE_STABLE_STATUS, 0);
320 // E_XC_HDMI_IF_CMD_GET_DATA_INFO -- stHDMI_GET_DATA_INFO
321 UADP_SPT_NAMEnNXT_DEF(XC_HDMI_GET_DATA_INFO, 0);
322 // MAPI_CMD_HDMIRX_INITIAL -- stHDMI_INITIAL_SETTING
323 UADP_SPT_NAMEnNXT_DEF(HDMIRX_INITIAL_SETTING, 0);
324 // MAPI_CMD_HDMIRX_GET_SOURCE_VERSION -- stHDMI_GET_SOURCE_VERSION
325 UADP_SPT_NAMEnNXT_DEF(HDMIRX_GET_SOURCE_VERSION, 0);
326 // MAPI_CMD_HDMIRX_CHECK_HDCP_STATE -- stHDMI_CHECK_HDCP_STATE
327 UADP_SPT_NAMEnNXT_DEF(HDMIRX_CHECK_HDCP_STATE, 0);
328 // MAPI_CMD_HDMIRX_CHECK_HDCP_ENC_STATE -- stHDMI_CHECK_HDCP_ENC_STATE
329 UADP_SPT_NAMEnNXT_DEF(HDMIRX_CHECK_HDCP_ENC_STATE, 0);
330 // MAPI_CMD_HDMIRX_CHECK_HDCP14_KEY -- stHDCP_INITPRODUCTIONKEY
331 UADP_SPT_NAMEnNXT_DEF(HDMIRX_CHECK_HDCP14_KEY_VAILD, 1);
332 // MAPI_CMD_HDMIRX_GET_HDCP14_KEY_VAILD -- stHDMI_GET_HDCP14_KEY_VAILD
333 UADP_SPT_NAMEnNXT_DEF(HDMIRX_GET_HDCP14_KEY_VAILD, 0);
334 // MAPI_CMD_HDMIRX_SET_HPD_INVERT_FLAG -- stHDMI_SET_HPD_INVERT_FLAG
335 UADP_SPT_NAMEnNXT_DEF(HDMIRX_SET_HPD_INVERT_FLAG, 0);
336 // MAPI_CMD_HDMIRX_GET_PACKET_RECEIVE -- stHDMI_PACKET_RECEIVED
337 UADP_SPT_NAMEnNXT_DEF(HDMIRX_GET_PACKET_RECEIVE, 0);
338 /*************************** HDCP Repeater ***************************/
339 // MAPI_CMD_HDMIRX_WRITE_X74-- stHDCP_WRITE_X74
340 UADP_SPT_NAMEnNXT_DEF(HDMIRX_WRITE_X74, 0);
341 // MAPI_CMD_HDMIRX_READ_X74-- stHDCP_READ_X74
342 UADP_SPT_NAMEnNXT_DEF(HDMIRX_READ_X74, 0);
343 // MAPI_CMD_HDMIRX_SET_REPEATER -- stHDCP_SET_REPEATER
344 UADP_SPT_NAMEnNXT_DEF(HDMIRX_SET_REPEATER, 0);
345 // MAPI_CMD_HDMIRX_SET_BSTATUS -- stHDCP_SET_BSTATUS
346 UADP_SPT_NAMEnNXT_DEF(HDMIRX_SET_BSTATUS,  0);
347 // MAPI_CMD_HDMIRX_SET_HDMI_MODE -- stHDCP_SET_HDMI_MODE
348 UADP_SPT_NAMEnNXT_DEF(HDMIRX_SET_HDMI_MODE, 0);
349 // MAPI_CMD_HDMIRX_GET_INTERRUPT_STATUS -- stHDCP_GET_INTERRUPT_STATUS
350 UADP_SPT_NAMEnNXT_DEF(HDMIRX_GET_INTERRUPT_STATUS, 0);
351 // MAPI_CMD_HDMIRX_WRITE_KSV_LIST -- stHDCP_WRITE_KSV_LIST
352 UADP_SPT_NAMEnNXT_DEF(HDMIRX_KSV_TABLE, 0);
353 UADP_SPT_NAMEnNXT_DEF(HDMIRX_WRITE_KSV_LIST, 1);
354 // MAPI_CMD_HDMIRX_SET_VPRIME -- stHDCP_SET_VPRIME
355 UADP_SPT_NAMEnNXT_DEF(HDMIRX_VPRIME_TABLE, 0);
356 UADP_SPT_NAMEnNXT_DEF(HDMIRX_SET_VPRIME, 1);
357 // MAPI_CMD_HDMIRX_HDCP22_FILL_CIPHER_KEY -- stHDCP22_FILL_CIPHER_KEY
358 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_RIV_TABLE, 0);
359 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_SESSION_KEY_TABLE, 0);
360 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_FILL_CIPHER_KEY, 2);
361 //MAPI_CMD_HDMIRX_HDCP22_PORT_INIT -- stHDCP22_PORT_INIT
362 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_PORT_INITIAL, 0);
363 // MAPI_CMD_HDMIRX_HDCP22_POLLING_READ_DONE -- stHDCP22_POLLING_READ_DONE
364 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_POLLING_READ_DONE, 0);
365 // MAPI_CMD_HDMIRX_HDCP22_ENABLE_CIPHER -- stHDCP22_ENABLE_CIPHER
366 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_ENABLE_CIPHER, 0);
367 // MAPI_CMD_HDMIRX_HDCP22_HANDLER  -- stHDCP22_HANDLER
368 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_HANDLER, 0);
369 // MAPI_CMD_HDMIRX_HDCP22_WAIT_EVENT -- stHDCP22_WAIT_EVENT
370 UADP_SPT_NAMEnNXT_DEF(HDMIRX_HDCP22_WAIT_EVENT, 0);
371 
372 /*************************** HDCP Repeater ***************************/
373 
374 //------------------------------------------------------------------------------
375 //  Debug Functions
376 //------------------------------------------------------------------------------
377 
378 //------------------------------------------------------------------------------
379 //  Local Functions
380 //------------------------------------------------------------------------------
381 
382 //------------------------------------------------------------------------------
383 //  Global Functions
384 //------------------------------------------------------------------------------
385 
386 //**************************************************************************
387 //  [Function Name]:
388 //                  XC_HDMI_if_adp_Init()
389 //  [Description]
390 //
391 //  [Arguments]:
392 //
393 //  [Return]:
394 //
395 //**************************************************************************
XC_HDMI_if_adp_Init(void)396 MS_U32 XC_HDMI_if_adp_Init(void)
397 {
398     MS_U32 ulDataSize = 0;
399 
400     UADP_SPT_NAME0NXT(XC_HDMI_MS_U8, MS_U8);
401     // E_XC_HDMI_IF_CMD_FUNC_CAPS
402     UADP_SPT_NAME0NXT(XC_HDMI_FUNC_CAPS, stHDMI_FUNC_CAPS);
403     // E_XC_HDMI_IF_CMD_INIT
404     UADP_SPT_NAME0NXT(XC_HDMI_INITIAL_SETTING, stHDMI_INITIAL_SETTING);
405     // E_XC_HDMI_IF_CMD_PKT_RESET
406     UADP_SPT_NAME0NXT(XC_HDMI_PKT_RESET, stHDMI_PKT_RESET);
407     // E_XC_HDMI_IF_CMD_PULLHPD
408     UADP_SPT_NAME0NXT(XC_HDMI_PULLHPD, stHDMI_PULLHPD);
409     // E_XC_HDMI_IF_CMD_GC_INFO
410     UADP_SPT_NAME0NXT(XC_HDMI_GC_INFO, stHDMI_GC_INFO);
411     // E_XC_HDMI_IF_CMD_PACKET_RECEIVED
412     UADP_SPT_NAME0NXT(XC_HDMI_PACKET_RECEIVED, stHDMI_PACKET_RECEIVED);
413     // E_XC_HDMI_IF_CMD_GET_COLORFORMAT
414     UADP_SPT_NAME0NXT(XC_HDMI_GET_COLORFORMAT, stHDMI_GET_COLORFORMAT);
415     // E_XC_HDMI_IF_CMD_GET_COLORRANGE
416     UADP_SPT_NAME0NXT(XC_HDMI_GET_COLORRANGE, stHDMI_GET_COLORRANGE);
417     // E_XC_HDMI_IF_CMD_SET_EQ
418     UADP_SPT_NAME0NXT(XC_HDMI_SET_EQ, stHDMI_SET_EQ);
419     // E_XC_HDMI_IF_CMD_SET_EQ_TO_PORT
420     UADP_SPT_NAME0NXT(XC_HDMI_SET_EQ_TO_PORT, stHDMI_SET_EQ_TO_PORT);
421     // E_XC_HDMI_IF_CMD_AUDIO_MUTE_ENABLE
422     UADP_SPT_NAME0NXT(XC_HDMI_AUDIO_MUTE_ENABLE, stHDMI_SET_EQ_TO_PORT);
423     // E_XC_HDMI_IF_CMD_GET_ASPECTRATIO
424     UADP_SPT_NAME0NXT(XC_HDMI_GET_ASPECTRATIO, stHDMI_GET_ASPECTRATIO);
425     // E_XC_HDMI_IF_CMD_GET_ACTIVEFORMAT_ASPECTRATIO
426     UADP_SPT_NAME0NXT(XC_HDMI_GET_ACTIVEFORMAT_ASPECTRATIO, stHDMI_GET_ACTIVEFORMAT_ASPECTRATIO);
427     // E_XC_HDMI_IF_CMD_GET_AVIINFOFRAMEVER
428     UADP_SPT_NAME0NXT(XC_HDMI_GET_AVIINFOFRAMEVER, stHDMI_GET_AVIINFOFRAMEVER);
429     // E_XC_HDMI_IF_CMD_ERR_STATUS_UPDATE
430     UADP_SPT_NAME0NXT(XC_HDMI_ERR_STATUS_UPDATE, stHDMI_ERR_STATUS_UPDATE);
431     // E_XC_HDMI_IF_CMD_GET_TMDS_FREQ
432     UADP_SPT_NAME0NXT(XC_HDMI_GET_TMDS_FREQ, stHDMI_GET_TMDS_FREQ);
433     // E_XC_HDMI_IF_CMD_GET_POLLINGSTATUS
434     UADP_SPT_NAME0NXT(XC_HDMI_GET_POLLINGSTATUS, stHDMI_GET_POLLINGSTATUS);
435     // E_XC_HDMI_IF_CMD_ISHDMI_MODE
436     UADP_SPT_NAME0NXT(XC_HDMI_ISHDMI_MODE, stHDMI_ISHDMI_MODE);
437     // E_XC_HDMI_IF_CMD_GET_MID_INFO
438     ulDataSize = sizeof(MS_U8) *26;
439     UADP_SPT_BGN(&spt_XC_HDMI_MID_INFO_TABLE[0], ulDataSize);
440     UADP_SPT_FIN(&spt_XC_HDMI_MID_INFO_TABLE[1]);
441     UADP_SPT_NAME1NXT(XC_HDMI_GET_MID_INFO, stHDMI_GET_MID_INFO, pu8ManufactorData, XC_HDMI_MID_INFO_TABLE);
442     // E_XC_HDMI_IF_CMD_GET_PACKET_VALUE
443     UADP_SPT_NAME1NXT(XC_HDMI_GET_PACKET_VALUE, stHDMI_GET_PACKET_VALUE, pValue, XC_HDMI_MS_U8);
444     // E_XC_DVI_IF_CMD_CHANNELPHASESTATUS
445     UADP_SPT_NAME0NXT(XC_DVI_CHANNELPHASESTATUS, stDVI_CHANNELPHASESTATUS);
446     // E_XC_DVI_IF_CMD_SOFTWARERESET
447     UADP_SPT_NAME0NXT(XC_DVI_SOFTWARERESET, stDVI_SOFTWARERESET);
448     // E_XC_HDMI_IF_CMD_AVIINFO_ACTIVEINFOPRESENT
449     UADP_SPT_NAME0NXT(XC_HDMI_GET_AVIIINFO_ACTIVEINFOPRESENT, stHDMI_GET_AVIIINFO_ACTIVEINFOPRESENT);
450     // E_XC_DVI_IF_CMD_CLKPULLLOW
451     UADP_SPT_NAME0NXT(XC_DVI_CLKPULLLOW, stDVI_CLKPULLLOW);
452     // E_XC_DVI_IF_CMD_SWITCHSRC
453     UADP_SPT_NAME0NXT(XC_DVI_SWITCHSRC, stDVI_SWITCHSRC);
454     // E_XC_HDMI_IF_CMD_SETFORCLOCKLESSTHAN70MHZ
455     UADP_SPT_NAME0NXT(XC_HDMI_SETFORCLOCKLESSTHAN70MHZ, stHDMI_SETFORCLOCKLESSTHAN70MHZ);
456     // E_XC_HDMI_IF_CMD_DVI_ADJUST
457     UADP_SPT_NAME0NXT(XC_HDMI_DVI_ADJUST, stHDMI_DVI_ADJUST);
458     // E_XC_HDMI_IF_CMD_SETUPDATEPHASELINECOUNT
459     UADP_SPT_NAME0NXT(XC_HDMI_SETUPDATEPHASELINECOUNT, stHDMI_SETUPDATEPHASELINECOUNT);
460     // E_XC_HDCP_IF_CMD_ENABLE
461     UADP_SPT_NAME0NXT(XC_HDCP_ENABLE, stHDCP_ENABLE);
462     // E_XC_HDMI_IF_CMD_SET_HDCP_ENABLE
463     UADP_SPT_NAME0NXT(XC_HDMI_SET_HDCPENABLE, stHDMI_SET_HDCPENABLE);
464     // E_XC_HDCP_IF_CMD_INITPRODUCTIONKEY
465     ulDataSize = sizeof(MS_U8) *HDMI_HDCP_KEY_LENGTH;
466     UADP_SPT_BGN(&spt_XC_HDCP_KEY_TABLE[0], ulDataSize);
467     UADP_SPT_FIN(&spt_XC_HDCP_KEY_TABLE[1]);
468     UADP_SPT_NAME1NXT(XC_HDCP_INITPRODUCTIONKEY, stHDCP_INITPRODUCTIONKEY, pu8HdcpKeyData, XC_HDCP_KEY_TABLE);
469     // E_XC_HDCP_IF_CMD_GETSTATUS
470     UADP_SPT_NAME0NXT(XC_MS_HDCP_STATUS_INFO, MS_HDCP_STATUS_INFO_t);
471     UADP_SPT_NAME0NXT(XC_HDCP_GETSTATUS, stHDCP_GETSTATUS);
472     // E_XC_HDCP_IF_CMD_VSYNC_END_EN
473     UADP_SPT_NAME0NXT(XC_HDCP_VSYNC_END_EN, stHDCP_VSYNC_END_EN);
474     // E_XC_HDMI_IF_CMD_AUDIO_OUTPUT
475     UADP_SPT_NAME0NXT(XC_HDMI_AUDIO_OUTPUT, stHDMI_AUDIO_OUTPUT);
476     // E_XC_HDMI_IF_CMD_AUDIO_CP_HDR_INFO
477     UADP_SPT_NAME0NXT(XC_HDMI_AUDIO_CP_HDR_INFO, stHDMI_AUDIO_CP_HDR_INFO);
478     // E_XC_HDMI_IF_CMD_AUDIO_CHANNEL_STATUS
479     UADP_SPT_NAME0NXT(XC_HDMI_AUDIO_CHANNEL_STATUS, stHDMI_AUDIO_CHANNEL_STATUS);
480     // E_XC_HDMI_IF_CMD_GETLIBVER
481     UADP_SPT_NAME0NXT(XC_HDMI_GETLIBVER, stHDMI_GETLIBVER);
482     // E_XC_HDMI_IF_CMD_GETINFO
483     UADP_SPT_NAME0NXT(XC_MS_HDMI_INFO, MS_HDMI_INFO);
484     UADP_SPT_NAME1NXT(XC_HDMI_GETINFO, stHDMI_GETINFO, pInfo, XC_MS_HDMI_INFO);
485     // E_XC_HDMI_IF_CMD_GETSTATUS
486     UADP_SPT_NAME0NXT(XC_MS_HDMI_STATUS, MS_HDMI_Status);
487     UADP_SPT_NAME1NXT(XC_HDMI_GETSTATUS, stHDMI_GETSTATUS, pStatus, XC_MS_HDMI_STATUS);
488     // E_XC_HDMI_IF_CMD_READ_DDCRAM
489     ulDataSize = sizeof(MS_U8) *256;
490     UADP_SPT_BGN(&spt_XC_HDMI_EDID_TABLE[0], ulDataSize);
491     UADP_SPT_FIN(&spt_XC_HDMI_EDID_TABLE[1]);
492     UADP_SPT_NAME1NXT(XC_HDMI_DDCRAM_PROG_INFO, XC_DDCRAM_PROG_INFO, EDID, XC_HDMI_EDID_TABLE);
493     UADP_SPT_NAME1NXT(XC_HDMI_READ_DDCRAM, stHDMI_READ_DDCRAM, pstDDCRam_Info, XC_HDMI_DDCRAM_PROG_INFO);
494     // E_XC_HDMI_IF_CMD_PROG_DDCRAM
495     UADP_SPT_NAME1NXT(XC_HDMI_PROG_DDCRAM, stHDMI_PROG_DDCRAM, pstDDCRam_Info, XC_HDMI_DDCRAM_PROG_INFO);
496     // E_XC_HDMI_IF_CMD_GET_CONTENT_TYPE
497     UADP_SPT_NAME0NXT(XC_HDMI_GET_CONTENT_TYPE, stHDMI_GET_CONTENT_TYPE);
498     // E_XC_HDMI_IF_CMD_GET_EXTCOLORIMETRY
499     UADP_SPT_NAME0NXT(XC_HDMI_GET_EXT_COLORIMETRY, stHDMI_GET_EXT_COLORIMETRY);
500     // E_XC_HDMI_IF_CMD_GET_PIXEL_REPETITION
501     UADP_SPT_NAME0NXT(XC_HDMI_GET_PIXEL_REPETITION, stHDMI_GET_PIXEL_REPETITION);
502     // E_XC_HDMI_IF_CMD_CHECK_4K2K
503     UADP_SPT_NAME0NXT(XC_HDMI_CHECK_4K2K, stHDMI_CHECK_4K2K);
504     // E_XC_HDMI_IF_CMD_3D_4KX2K_PROCESS
505     UADP_SPT_NAME0NXT(XC_HDMI_3D_4K2K_PROCESS, stHDMI_3D_4K2K_PROCESS);
506     // E_XC_HDMI_IF_CMD_AVG_SCALERINGDOWN
507     UADP_SPT_NAME0NXT(XC_HDMI_AVG_SCALERINGDOWN, stHDMI_AVG_SCALERINGDOWN);
508     // E_XC_HDMI_IF_CMD_CHECK_ADDITIONAL_FORMAT
509     UADP_SPT_NAME0NXT(XC_HDMI_CHECK_ADDITIONAL_FORMAT, stHDMI_CHECK_ADDITIONAL_FORMAT);
510     // E_XC_HDMI_IF_CMD_GET_3D_STRUCTURE
511     UADP_SPT_NAME0NXT(XC_HDMI_GET_3D_STRUCTURE, stHDMI_GET_3D_STRUCTURE);
512     // E_XC_HDMI_CMD_GET_3D_EXT_DATA
513     UADP_SPT_NAME0NXT(XC_HDMI_GET_3D_EXT_DATA, stHDMI_GET_3D_EXT_DATA);
514     // E_XC_HDMI_IF_CMD_GET_3D_META_FIELD
515     UADP_SPT_NAME0NXT(XC_HDMI_3D_META_FIELD, sHDMI_3D_META_FIELD);
516     UADP_SPT_NAME1NXT(XC_HDMI_GET_3D_EXT_DATA, stHDMI_GET_3D_META_FIELD, pdata, XC_HDMI_3D_META_FIELD);
517     // E_XC_HDMI_IF_CMD_GET_VIC_CODE
518     UADP_SPT_NAME0NXT(XC_HDMI_GET_VIC_CODE, stHDMI_GET_VIC_CODE);
519     // E_XC_HDMI_IF_CMD_GET_4KX2K_VIC_CODE
520     UADP_SPT_NAME0NXT(XC_HDMI_GET_4KX2K_VIC_CODE, stHDMI_GET_4KX2K_VIC_CODE);
521     // E_XC_HDMI_IF_CMD_ARC_PINCONTROL
522     UADP_SPT_NAME0NXT(XC_HDMI_ARC_PINCONTROL, stHDMI_ARC_PINCONTROL);
523     // E_XC_HDMI_IF_CMD_DVI_SOFTWARE_RESET
524     UADP_SPT_NAME0NXT(XC_DVI_SOFTWARE_RESET, stDVI_SOFTWARE_RESET);
525     // E_XC_HDMI_IF_CMD_SET_POWERSTATE
526     UADP_SPT_NAME0NXT(XC_HDMI_SET_POWERSTATE, stHDMI_SET_POWERSTATE);
527     // E_XC_HDMI_IF_CMD_CHECK_HDMI20_SETTING
528     UADP_SPT_NAME0NXT(XC_HDMI_CHECK_HDMI20_SETTING, stHDMI_CHECK_HDMI20_SETTING);
529     // E_XC_HDMI_IF_CMD_SET_5V_DETECT_GPIO_SELECT
530     UADP_SPT_NAME0NXT(XC_HDMI_SET_5V_DETECT_GPIO_SELECT, stHDMI_SET_5V_DETECT_GPIO_SELECT);
531     // E_XC_HDMI_IF_CMD_GET_DE_STABLE_STATUS
532     UADP_SPT_NAME0NXT(XC_HDMI_GET_DE_STABLE_STATUS, stHDMI_GET_DE_STABLE_STATUS);
533     // E_XC_HDMI_IF_CMD_GET_DATA_INFO
534     UADP_SPT_NAME0NXT(XC_HDMI_GET_DATA_INFO, stHDMI_GET_DATA_INFO);
535 
536     return 0;
537 }
538 
539 //**************************************************************************
540 //  [Function Name]:
541 //                  XC_HDMI_if_adp_Ioctl()
542 //  [Description]
543 //
544 //  [Arguments]:
545 //
546 //  [Return]:
547 //
548 //**************************************************************************
XC_HDMI_if_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)549 MS_U32 XC_HDMI_if_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
550 {
551     char buffer_arg[2];
552     MS_U32 ulReturnValue = UTOPIA_STATUS_SUCCESS;
553     MS_U32 ulDataSize = 0;
554 
555     switch(u32Cmd)
556     {
557         case E_XC_HDMI_IF_CMD_FUNC_CAPS :
558             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_FUNC_CAPS, buffer_arg, sizeof(buffer_arg));
559             break;
560 
561         case E_XC_HDMI_IF_CMD_INIT:
562             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_INITIAL_SETTING, buffer_arg, sizeof(buffer_arg));
563             break;
564 
565         case E_XC_HDMI_IF_CMD_EXIT:
566             ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs);
567             break;
568 
569         case E_XC_HDMI_IF_CMD_PKT_RESET:
570             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_PKT_RESET, NULL, buffer_arg, sizeof(buffer_arg));
571             break;
572 
573         case E_XC_HDMI_IF_CMD_PULLHPD:
574             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_PULLHPD, NULL, buffer_arg, sizeof(buffer_arg));
575             break;
576 
577         case E_XC_HDMI_IF_CMD_GC_INFO:
578             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GC_INFO, spt_XC_HDMI_GC_INFO, buffer_arg, sizeof(buffer_arg));
579             break;
580 
581         case E_XC_HDMI_IF_CMD_PACKET_RECEIVED:
582             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_PACKET_RECEIVED, spt_XC_HDMI_PACKET_RECEIVED, buffer_arg, sizeof(buffer_arg));
583             break;
584 
585         case E_XC_HDMI_IF_CMD_GET_COLORFORMAT:
586             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_COLORFORMAT, spt_XC_HDMI_GET_COLORFORMAT, buffer_arg, sizeof(buffer_arg));
587             break;
588 
589         case E_XC_HDMI_IF_CMD_GET_COLORRANGE:
590             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_COLORRANGE, spt_XC_HDMI_GET_COLORRANGE, buffer_arg, sizeof(buffer_arg));
591             break;
592 
593         case E_XC_HDMI_IF_CMD_SET_EQ:
594             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SET_EQ, NULL, buffer_arg, sizeof(buffer_arg));
595             break;
596 
597         case E_XC_HDMI_IF_CMD_SET_EQ_TO_PORT:
598             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SET_EQ_TO_PORT, spt_XC_HDMI_SET_EQ_TO_PORT, buffer_arg, sizeof(buffer_arg));
599             break;
600 
601         case E_XC_HDMI_IF_CMD_AUDIO_MUTE_ENABLE:
602             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_AUDIO_MUTE_ENABLE, NULL, buffer_arg, sizeof(buffer_arg));
603             break;
604 
605         case E_XC_HDMI_IF_CMD_AUDIO_STATUS_CLEAR:
606             ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs);
607             break;
608 
609         case E_XC_HDMI_IF_CMD_GET_ASPECTRATIO:
610             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_ASPECTRATIO, spt_XC_HDMI_GET_ASPECTRATIO, buffer_arg, sizeof(buffer_arg));
611             break;
612 
613         case E_XC_HDMI_IF_CMD_GET_ACTIVEFORMAT_ASPECTRATIO:
614             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_ACTIVEFORMAT_ASPECTRATIO, spt_XC_HDMI_GET_ACTIVEFORMAT_ASPECTRATIO, buffer_arg, sizeof(buffer_arg));
615             break;
616 
617         case E_XC_HDMI_IF_CMD_GET_AVIINFOFRAMEVER:
618             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd,pArgs, spt_XC_HDMI_GET_AVIINFOFRAMEVER, spt_XC_HDMI_GET_AVIINFOFRAMEVER, buffer_arg, sizeof(buffer_arg));
619             break;
620 
621         case E_XC_HDMI_IF_CMD_ERR_STATUS_UPDATE:
622             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_ERR_STATUS_UPDATE, spt_XC_HDMI_ERR_STATUS_UPDATE, buffer_arg, sizeof(buffer_arg));
623             break;
624 
625         case E_XC_HDMI_IF_CMD_GET_TMDS_FREQ:
626             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_GET_TMDS_FREQ, buffer_arg, sizeof(buffer_arg));
627             break;
628 
629         case E_XC_HDMI_IF_CMD_GET_POLLINGSTATUS: // Need check
630             //ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_GET_POLLINGSTATUS, buffer_arg, sizeof(buffer_arg));
631             break;
632 
633         case E_XC_HDMI_IF_CMD_ISHDMI_MODE:
634             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_ISHDMI_MODE, buffer_arg, sizeof(buffer_arg));
635             break;
636 
637         case E_XC_HDMI_IF_CMD_GET_MID_INFO:
638             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_MID_INFO, spt_XC_HDMI_GET_MID_INFO, buffer_arg, sizeof(buffer_arg));
639             break;
640 
641         case E_XC_HDMI_IF_CMD_GET_PACKET_VALUE:
642             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_PACKET_VALUE, spt_XC_HDMI_GET_PACKET_VALUE, buffer_arg, sizeof(buffer_arg));
643             break;
644 
645         case E_XC_DVI_IF_CMD_CHANNELPHASESTATUS:
646             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_DVI_CHANNELPHASESTATUS, spt_XC_DVI_CHANNELPHASESTATUS, buffer_arg, sizeof(buffer_arg));
647             break;
648 
649         case E_XC_DVI_IF_CMD_SOFTWARERESET:
650             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_DVI_SOFTWARERESET, NULL, buffer_arg, sizeof(buffer_arg));
651             break;
652 
653         case E_XC_DVI_IF_CMD_RESET:
654             ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs);
655             break;
656 
657         case E_XC_HDMI_IF_CMD_AVIINFO_ACTIVEINFOPRESENT:
658             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_AVIIINFO_ACTIVEINFOPRESENT, spt_XC_HDMI_GET_AVIIINFO_ACTIVEINFOPRESENT, buffer_arg, sizeof(buffer_arg));
659             break;
660 
661         case E_XC_DVI_IF_CMD_CLKPULLLOW:
662             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_DVI_CLKPULLLOW, NULL, buffer_arg, sizeof(buffer_arg));
663             break;
664 
665         case E_XC_DVI_IF_CMD_SWITCHSRC:
666             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_DVI_SWITCHSRC, NULL, buffer_arg, sizeof(buffer_arg));
667             break;
668 
669         case E_XC_HDMI_IF_CMD_SETFORCLOCKLESSTHAN70MHZ:
670             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SETFORCLOCKLESSTHAN70MHZ, spt_XC_HDMI_SETFORCLOCKLESSTHAN70MHZ, buffer_arg, sizeof(buffer_arg));
671             break;
672 
673         case E_XC_HDMI_IF_CMD_DVI_ADJUST:
674             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_DVI_ADJUST, NULL, buffer_arg, sizeof(buffer_arg));
675             break;
676 
677         case E_XC_HDMI_IF_CMD_SETUPDATEPHASELINECOUNT:
678             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SETUPDATEPHASELINECOUNT, NULL, buffer_arg, sizeof(buffer_arg));
679             break;
680 
681         case E_XC_HDCP_IF_CMD_ENABLE:
682             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDCP_ENABLE, NULL, buffer_arg, sizeof(buffer_arg));
683             break;
684 
685         case E_XC_HDMI_IF_CMD_SET_HDCP_ENABLE:
686             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SET_HDCPENABLE, spt_XC_HDMI_SET_HDCPENABLE, buffer_arg, sizeof(buffer_arg));
687             break;
688 
689         case E_XC_HDCP_IF_CMD_CLEARSTATUS:
690             ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs);
691             break;
692 
693         case E_XC_HDCP_IF_CMD_INITPRODUCTIONKEY:
694             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDCP_INITPRODUCTIONKEY, NULL, buffer_arg, sizeof(buffer_arg));
695             break;
696 
697         case E_XC_HDCP_IF_CMD_GETSTATUS:
698             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDCP_GETSTATUS, buffer_arg, sizeof(buffer_arg));
699             break;
700 
701         case E_XC_HDCP_IF_CMD_VSYNC_END_EN:
702             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDCP_VSYNC_END_EN, NULL, buffer_arg, sizeof(buffer_arg));
703             break;
704 
705         case E_XC_HDMI_IF_CMD_AUDIO_OUTPUT:
706             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_AUDIO_OUTPUT, NULL, buffer_arg, sizeof(buffer_arg));
707             break;
708 
709         case E_XC_HDMI_IF_CMD_AUDIO_CP_HDR_INFO:
710             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_AUDIO_CP_HDR_INFO, spt_XC_HDMI_AUDIO_CP_HDR_INFO, buffer_arg, sizeof(buffer_arg));
711             break;
712 
713         case E_XC_HDMI_IF_CMD_AUDIO_CHANNEL_STATUS:
714             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_AUDIO_CHANNEL_STATUS, spt_XC_HDMI_AUDIO_CHANNEL_STATUS, buffer_arg, sizeof(buffer_arg));
715             break;
716 
717         case E_XC_HDMI_IF_CMD_GETLIBVER: // Need check
718             //ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDCP_VSYNC_END_EN, NULL, buffer_arg, sizeof(buffer_arg));
719             break;
720 
721         case E_XC_HDMI_IF_CMD_GETINFO:
722             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_GETINFO, buffer_arg, sizeof(buffer_arg));
723             break;
724 
725         case E_XC_HDMI_IF_CMD_GETSTATUS:
726             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_GETSTATUS, buffer_arg, sizeof(buffer_arg));
727             break;
728 
729         case E_XC_HDMI_IF_CMD_READ_DDCRAM:
730             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_XC_HDMI_READ_DDCRAM, buffer_arg, sizeof(buffer_arg));
731             break;
732 
733         case E_XC_HDMI_IF_CMD_PROG_DDCRAM:
734             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_PROG_DDCRAM, NULL, buffer_arg, sizeof(buffer_arg));
735             break;
736 
737         case E_XC_HDMI_IF_CMD_GET_CONTENT_TYPE:
738             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_CONTENT_TYPE, spt_XC_HDMI_GET_CONTENT_TYPE, buffer_arg, sizeof(buffer_arg));
739             break;
740 
741         case E_XC_HDMI_IF_CMD_GET_EXTCOLORIMETRY:
742             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_EXT_COLORIMETRY, spt_XC_HDMI_GET_EXT_COLORIMETRY, buffer_arg, sizeof(buffer_arg));
743             break;
744 
745         case E_XC_HDMI_IF_CMD_GET_PIXEL_REPETITION:
746             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_PIXEL_REPETITION, spt_XC_HDMI_GET_PIXEL_REPETITION, buffer_arg, sizeof(buffer_arg));
747             break;
748 
749         case E_XC_HDMI_IF_CMD_CHECK_4K2K:
750             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_CHECK_4K2K, spt_XC_HDMI_CHECK_4K2K, buffer_arg, sizeof(buffer_arg));
751             break;
752 
753         case E_XC_HDMI_IF_CMD_3D_4KX2K_PROCESS:
754             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_3D_4K2K_PROCESS, NULL, buffer_arg, sizeof(buffer_arg));
755             break;
756 
757         case E_XC_HDMI_IF_CMD_AVG_SCALERINGDOWN:
758             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_AVG_SCALERINGDOWN, NULL, buffer_arg, sizeof(buffer_arg));
759             break;
760 
761         case E_XC_HDMI_IF_CMD_CHECK_ADDITIONAL_FORMAT:
762             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_CHECK_ADDITIONAL_FORMAT, spt_XC_HDMI_CHECK_ADDITIONAL_FORMAT, buffer_arg, sizeof(buffer_arg));
763             break;
764 
765         case E_XC_HDMI_IF_CMD_GET_3D_STRUCTURE:
766             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_3D_STRUCTURE, spt_XC_HDMI_GET_3D_STRUCTURE, buffer_arg, sizeof(buffer_arg));
767             break;
768 
769         case E_XC_HDMI_CMD_GET_3D_EXT_DATA:
770             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_3D_EXT_DATA, spt_XC_HDMI_GET_3D_EXT_DATA, buffer_arg, sizeof(buffer_arg));
771             break;
772 
773         case E_XC_HDMI_IF_CMD_GET_3D_META_FIELD:
774             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_3D_META_FIELD, spt_XC_HDMI_GET_3D_META_FIELD, buffer_arg, sizeof(buffer_arg));
775             break;
776 
777         case E_XC_HDMI_IF_CMD_GET_VIC_CODE:
778             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_VIC_CODE, spt_XC_HDMI_GET_VIC_CODE, buffer_arg, sizeof(buffer_arg));
779             break;
780 
781         case E_XC_HDMI_IF_CMD_GET_4KX2K_VIC_CODE:
782             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_4KX2K_VIC_CODE, spt_XC_HDMI_GET_4KX2K_VIC_CODE, buffer_arg, sizeof(buffer_arg));
783             break;
784 
785         case E_XC_HDMI_IF_CMD_ARC_PINCONTROL:
786             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_ARC_PINCONTROL, NULL, buffer_arg, sizeof(buffer_arg));
787             break;
788 
789         case E_XC_HDMI_IF_CMD_DVI_SOFTWARE_RESET:
790             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_DVI_SOFTWARE_RESET, NULL, buffer_arg, sizeof(buffer_arg));
791             break;
792 
793         case E_XC_HDMI_IF_CMD_SET_POWERSTATE:
794             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SET_POWERSTATE, spt_XC_HDMI_SET_POWERSTATE, buffer_arg, sizeof(buffer_arg));
795             break;
796 
797         case E_XC_HDMI_IF_CMD_DVI_HF_ADJUST:
798             ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs);
799             break;
800 
801         case E_XC_HDMI_IF_CMD_CHECK_HDMI20_SETTING:
802             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_CHECK_HDMI20_SETTING, spt_XC_HDMI_CHECK_HDMI20_SETTING, buffer_arg, sizeof(buffer_arg));
803             break;
804 
805         case E_XC_HDMI_IF_CMD_SET_5V_DETECT_GPIO_SELECT:
806             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_SET_5V_DETECT_GPIO_SELECT, NULL, buffer_arg, sizeof(buffer_arg));
807             break;
808 
809         case E_XC_HDMI_IF_CMD_GET_DE_STABLE_STATUS:
810             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_DE_STABLE_STATUS, spt_XC_HDMI_GET_DE_STABLE_STATUS, buffer_arg, sizeof(buffer_arg));
811             break;
812 
813         case E_XC_HDMI_IF_CMD_CTRL:
814             {
815                 stHDMI_CONTROL stHDMIRxArgs = {0};
816 
817                 if(IS_CMP_TASK())
818                 {
819                     stHDMI_CONTROL_COMPAT stCompatHDMIRxArgs = {0};
820 
821                     CMP_CPY_FROM_USER(&stCompatHDMIRxArgs, pArgs, sizeof(stHDMI_CONTROL_COMPAT));
822 
823                     ulDataSize = sizeof(MS_U8) *stCompatHDMIRxArgs.u32BufSize;
824 
825                     stHDMIRxArgs.pBuf = malloc(ulDataSize);
826                     stHDMIRxArgs.ucHDMIInfoSource = stCompatHDMIRxArgs.ucHDMIInfoSource;
827                     stHDMIRxArgs.u32Cmd = stCompatHDMIRxArgs.u32Cmd;
828                     stHDMIRxArgs.u32BufSize = stCompatHDMIRxArgs.u32BufSize;
829 
830                     ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, &stHDMIRxArgs);
831 
832                     stCompatHDMIRxArgs.bRet = stHDMIRxArgs.bRet;
833                     CMP_CPY_TO_USER(stCompatHDMIRxArgs.pBuf, stHDMIRxArgs.pBuf, ulDataSize);
834                     CMP_CPY_TO_USER(pArgs, &stCompatHDMIRxArgs, sizeof(stHDMI_CONTROL_COMPAT));
835 
836                     free(stHDMIRxArgs.pBuf);
837                 }
838                 else
839                 {
840                     CPY_FROM_USER(&stHDMIRxArgs, pArgs, sizeof(stHDMI_CONTROL));
841 
842                     ulDataSize = sizeof(MS_U8) *stHDMIRxArgs.u32BufSize;
843 
844                     stHDMIRxArgs.pBuf = malloc(ulDataSize);
845 
846                     ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, &stHDMIRxArgs);
847 
848                     CPY_TO_USER(pArgs, &stHDMIRxArgs, sizeof(stHDMI_CONTROL));
849 
850                     free(stHDMIRxArgs.pBuf);
851                 }
852             }
853 
854             break;
855 
856         case E_XC_HDMI_IF_CMD_GET_DATA_INFO:
857             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_XC_HDMI_GET_DATA_INFO, spt_XC_HDMI_GET_DATA_INFO, buffer_arg, sizeof(buffer_arg));
858             break;
859 
860         default:
861             MADP_HDMIRX_MSG_WARNING("Command %ld is not existed\n",u32Cmd);
862             ulReturnValue = UTOPIA_STATUS_ERR_INVALID_HANDLE;
863 
864             break;
865     };
866 
867     return ulReturnValue;
868 }
869 
870 //**************************************************************************
871 //  [Function Name]:
872 //                  HDMIRX_adp_Ioctl()
873 //  [Description]
874 //
875 //  [Arguments]:
876 //
877 //  [Return]:
878 //
879 //**************************************************************************
HDMIRX_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)880 MS_U32 HDMIRX_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
881 {
882     char usbuffer_arg[2];
883     MS_U32 ulReturnValue = UTOPIA_STATUS_SUCCESS;
884     MS_U32 ulDataSize = 0;
885 
886     switch(u32Cmd)
887     {
888         case MAPI_CMD_HDMIRX_INITIAL:
889             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_INITIAL_SETTING, NULL, usbuffer_arg, sizeof(usbuffer_arg));
890             break;
891 
892         case MAPI_CMD_HDMIRX_STABLE_POLLING:
893             ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, pArgs);
894             break;
895 
896         case MAPI_CMD_HDMIRX_GET_SOURCE_VERSION:
897             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_GET_SOURCE_VERSION, spt_HDMIRX_GET_SOURCE_VERSION, usbuffer_arg, sizeof(usbuffer_arg));
898             break;
899 
900         case MAPI_CMD_HDMIRX_CHECK_HDCP_STATE:
901             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_CHECK_HDCP_STATE, spt_HDMIRX_CHECK_HDCP_STATE, usbuffer_arg, sizeof(usbuffer_arg));
902             break;
903 
904         case MAPI_CMD_HDMIRX_CHECK_HDCP_ENC_STATE:
905             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_CHECK_HDCP_ENC_STATE, spt_HDMIRX_CHECK_HDCP_ENC_STATE, usbuffer_arg, sizeof(usbuffer_arg));
906             break;
907 
908         case MAPI_CMD_HDMIRX_CHECK_HDCP14_KEY:
909             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_CHECK_HDCP14_KEY_VAILD, NULL, usbuffer_arg, sizeof(usbuffer_arg));
910             break;
911 
912         case MAPI_CMD_HDMIRX_GET_HDCP14_KEY_VAILD:
913             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_HDMIRX_GET_HDCP14_KEY_VAILD, usbuffer_arg, sizeof(usbuffer_arg));
914             break;
915 
916         case MAPI_CMD_HDMIRX_SET_HPD_INVERT_FLAG:
917             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_SET_HPD_INVERT_FLAG, NULL, usbuffer_arg, sizeof(usbuffer_arg));
918             break;
919 
920         case MAPI_CMD_HDMIRX_GET_PACKET_RECEIVE:
921             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_GET_PACKET_RECEIVE, spt_HDMIRX_GET_PACKET_RECEIVE, usbuffer_arg, sizeof(usbuffer_arg));
922             break;
923 
924         /*************************** HDCP Repeater ***************************/
925         case MAPI_CMD_HDMIRX_WRITE_X74:
926             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_WRITE_X74, NULL, usbuffer_arg, sizeof(usbuffer_arg));
927             break;
928 
929         case MAPI_CMD_HDMIRX_READ_X74:
930             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_READ_X74, spt_HDMIRX_READ_X74, usbuffer_arg, sizeof(usbuffer_arg));
931             break;
932 
933         case MAPI_CMD_HDMIRX_SET_REPEATER:
934             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_SET_REPEATER, NULL, usbuffer_arg, sizeof(usbuffer_arg));
935             break;
936 
937         case MAPI_CMD_HDMIRX_SET_BSTATUS:
938             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_SET_BSTATUS, NULL, usbuffer_arg, sizeof(usbuffer_arg));
939             break;
940 
941         case MAPI_CMD_HDMIRX_SET_HDMI_MODE:
942             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_SET_HDMI_MODE, NULL, usbuffer_arg, sizeof(usbuffer_arg));
943             break;
944 
945         case MAPI_CMD_HDMIRX_GET_INTERRUPT_STATUS:
946             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_GET_INTERRUPT_STATUS, spt_HDMIRX_GET_INTERRUPT_STATUS, usbuffer_arg, sizeof(usbuffer_arg));
947             break;
948 
949         case MAPI_CMD_HDMIRX_WRITE_KSV_LIST:
950             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_WRITE_KSV_LIST, NULL, usbuffer_arg, sizeof(usbuffer_arg));
951             break;
952 
953         case MAPI_CMD_HDMIRX_SET_VPRIME:
954             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_SET_VPRIME, NULL, usbuffer_arg, sizeof(usbuffer_arg));
955             break;
956         /*************************** HDCP Repeater ***************************/
957 
958         case MAPI_CMD_HDMIRX_HDCP22_FILL_CIPHER_KEY:
959             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_HDCP22_FILL_CIPHER_KEY, NULL, usbuffer_arg, sizeof(usbuffer_arg));
960             break;
961 
962         case MAPI_CMD_HDMIRX_HDCP22_PORT_INIT:
963             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_HDCP22_PORT_INITIAL, NULL, usbuffer_arg, sizeof(usbuffer_arg));
964             break;
965 
966         case MAPI_CMD_HDMIRX_HDCP22_POLLING_READ_DONE:
967             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_HDCP22_POLLING_READ_DONE, spt_HDMIRX_HDCP22_POLLING_READ_DONE, usbuffer_arg, sizeof(usbuffer_arg));
968             break;
969 
970         case MAPI_CMD_HDMIRX_HDCP22_ENABLE_CIPHER:
971             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_HDCP22_ENABLE_CIPHER, NULL, usbuffer_arg, sizeof(usbuffer_arg));
972             break;
973 
974         case MAPI_CMD_HDMIRX_HDCP22_SEND_MESSAGE:
975             {
976                 stHDCP22_SEND_MESSAGE stHDMIRxArgs = {0};
977 
978                 if(IS_CMP_TASK())
979                 {
980                     stHDCP22_SEND_MESSAGE_COMPAT stCompatHDMIRxArgs = {0};
981 
982                     CMP_CPY_FROM_USER(&stCompatHDMIRxArgs, pArgs, sizeof(stHDCP22_SEND_MESSAGE_COMPAT));
983 
984                     ulDataSize = sizeof(MS_U8) *stCompatHDMIRxArgs.dwDataLen;
985 
986                     stHDMIRxArgs.pucData = malloc(ulDataSize);
987                     CMP_CPY_FROM_USER(stHDMIRxArgs.pucData, stCompatHDMIRxArgs.pucData, ulDataSize);
988                     stHDMIRxArgs.ucPortType = stCompatHDMIRxArgs.ucPortType;
989                     stHDMIRxArgs.ucPortIdx = stCompatHDMIRxArgs.ucPortIdx;
990                     stHDMIRxArgs.dwDataLen = stCompatHDMIRxArgs.dwDataLen;
991 
992                     ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, &stHDMIRxArgs);
993 
994                     free(stHDMIRxArgs.pucData);
995                 }
996                 else
997                 {
998                     void *pData = NULL;
999 
1000                     CPY_FROM_USER(&stHDMIRxArgs, pArgs, sizeof(stHDCP22_SEND_MESSAGE));
1001 
1002                     ulDataSize = sizeof(MS_U8) *stHDMIRxArgs.dwDataLen;
1003 
1004                     pData = stHDMIRxArgs.pucData;
1005                     stHDMIRxArgs.pucData = malloc(ulDataSize);
1006                     CPY_FROM_USER(stHDMIRxArgs.pucData, pData, ulDataSize);
1007 
1008                     ulReturnValue = UtopiaIoctl(pInstanceTmp, u32Cmd, &stHDMIRxArgs);
1009 
1010                     free(stHDMIRxArgs.pucData);
1011                 }
1012             }
1013             break;
1014 
1015         case MAPI_CMD_HDMIRX_HDCP22_HANDLER:
1016             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_HDMIRX_HDCP22_HANDLER, spt_HDMIRX_HDCP22_HANDLER, usbuffer_arg, sizeof(usbuffer_arg));
1017             break;
1018 
1019         case MAPI_CMD_HDMIRX_HDCP22_WAIT_EVENT:
1020             ulReturnValue = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, NULL, spt_HDMIRX_HDCP22_WAIT_EVENT, usbuffer_arg, sizeof(usbuffer_arg));
1021             break;
1022 
1023         default:
1024 
1025             break;
1026     };
1027 
1028     return ulReturnValue;
1029 }
1030 
1031 //**************************************************************************
1032 //  [Function Name]:
1033 //                  HDMIRX_adp_Init()
1034 //  [Description]
1035 //
1036 //  [Arguments]:
1037 //
1038 //  [Return]:
1039 //
1040 //**************************************************************************
HDMIRX_adp_Init(FUtopiaIOctl * pIoctl)1041 MS_U32 HDMIRX_adp_Init(FUtopiaIOctl* pIoctl)
1042 {
1043     MS_U32 ulDataSize = 0;
1044 
1045     // MAPI_CMD_HDMIRX_INITIAL
1046     UADP_SPT_NAME0NXT(HDMIRX_INITIAL_SETTING, stHDMI_INITIAL_SETTING);
1047     // MAPI_CMD_HDMIRX_GET_SOURCE_VERSION
1048     UADP_SPT_NAME0NXT(HDMIRX_GET_SOURCE_VERSION, stHDMI_GET_SOURCE_VERSION);
1049     // MAPI_CMD_HDMIRX_CHECK_HDCP_STATE
1050     UADP_SPT_NAME0NXT(HDMIRX_CHECK_HDCP_STATE, stHDMI_CHECK_HDCP_STATE);
1051     // MAPI_CMD_HDMIRX_CHECK_HDCP_ENC_STATE
1052     UADP_SPT_NAME0NXT(HDMIRX_CHECK_HDCP_ENC_STATE, stHDMI_CHECK_HDCP_ENC_STATE);
1053     // MAPI_CMD_HDMIRX_CHECK_HDCP14_KEY
1054     ulDataSize = sizeof(MS_U8) *HDMI_HDCP_KEY_LENGTH;
1055     UADP_SPT_BGN(&spt_XC_HDCP_KEY_TABLE[0], ulDataSize);
1056     UADP_SPT_FIN(&spt_XC_HDCP_KEY_TABLE[1]);
1057     UADP_SPT_NAME1NXT(HDMIRX_CHECK_HDCP14_KEY_VAILD, stHDCP_INITPRODUCTIONKEY, pu8HdcpKeyData, XC_HDCP_KEY_TABLE);
1058     // MAPI_CMD_HDMIRX_GET_HDCP14_KEY_VAILD
1059     UADP_SPT_NAME0NXT(HDMIRX_GET_HDCP14_KEY_VAILD, stHDMI_GET_HDCP14_KEY_VAILD);
1060     // MAPI_CMD_HDMIRX_SET_HPD_INVERT_FLAG
1061     UADP_SPT_NAME0NXT(HDMIRX_SET_HPD_INVERT_FLAG, stHDMI_SET_HPD_INVERT_FLAG);
1062     // MAPI_CMD_HDMIRX_GET_PACKET_RECEIVE
1063     UADP_SPT_NAME0NXT(HDMIRX_GET_PACKET_RECEIVE, stHDMI_PACKET_RECEIVED);
1064 
1065     /*************************** HDCP Repeater ***************************/
1066     // MAPI_CMD_HDMIRX_WRITE_X74
1067     UADP_SPT_NAME0NXT(HDMIRX_WRITE_X74, stHDCP_WRITE_X74);
1068     // MAPI_CMD_HDMIRX_READ_X74
1069     UADP_SPT_NAME0NXT(HDMIRX_READ_X74, stHDCP_READ_X74);
1070     // MAPI_CMD_HDMIRX_SET_REPEATER
1071     UADP_SPT_NAME0NXT(HDMIRX_SET_REPEATER, stHDCP_SET_REPEATER);
1072     // MAPI_CMD_HDMIRX_SET_BSTATUS
1073     UADP_SPT_NAME0NXT(HDMIRX_SET_BSTATUS, stHDCP_SET_BSTATUS);
1074     // MAPI_CMD_HDMIRX_SET_HDMI_MODE
1075     UADP_SPT_NAME0NXT(HDMIRX_SET_HDMI_MODE, stHDCP_SET_HDMI_MODE);
1076     // MAPI_CMD_HDMIRX_GET_INTERRUPT_STATUS
1077     UADP_SPT_NAME0NXT(HDMIRX_GET_INTERRUPT_STATUS, stHDCP_GET_INTERRUPT_STATUS);
1078     // MAPI_CMD_HDMIRX_WRITE_KSV_LIST
1079     ulDataSize = sizeof(MS_U8) *HDMI_HDCP_KSV_LIST_LENGTH;
1080     UADP_SPT_BGN(&spt_HDMIRX_KSV_TABLE[0], ulDataSize);
1081     UADP_SPT_FIN(&spt_HDMIRX_KSV_TABLE[1]);
1082     UADP_SPT_NAME1NXT(HDMIRX_WRITE_KSV_LIST, stHDCP_WRITE_KSV_LIST, pucKSV, HDMIRX_KSV_TABLE);
1083     // MAPI_CMD_HDMIRX_SET_VPRIME
1084     ulDataSize = sizeof(MS_U8) *HDMI_HDCP_VPRIME_LENGTH;
1085     UADP_SPT_BGN(&spt_HDMIRX_VPRIME_TABLE[0], ulDataSize);
1086     UADP_SPT_FIN(&spt_HDMIRX_VPRIME_TABLE[1]);
1087     UADP_SPT_NAME1NXT(HDMIRX_SET_VPRIME, stHDCP_SET_VPRIME, pucVPrime, HDMIRX_VPRIME_TABLE);
1088     /*************************** HDCP Repeater ***************************/
1089     // MAPI_CMD_HDMIRX_HDCP22_FILL_CIPHER_KEY
1090     ulDataSize = sizeof(MS_U8) *HDMI_HDCP22_RIV_LENGTH;
1091     UADP_SPT_BGN(&spt_HDMIRX_HDCP22_RIV_TABLE[0], ulDataSize);
1092     UADP_SPT_FIN(&spt_HDMIRX_HDCP22_RIV_TABLE[1]);
1093     ulDataSize = sizeof(MS_U8) *HDMI_HDCP22_SESSION_KEY_LENGTH;
1094     UADP_SPT_BGN(&spt_HDMIRX_HDCP22_SESSION_KEY_TABLE[0], ulDataSize);
1095     UADP_SPT_FIN(&spt_HDMIRX_HDCP22_SESSION_KEY_TABLE[1]);
1096     UADP_SPT_NAME2NXT(HDMIRX_HDCP22_FILL_CIPHER_KEY, stHDCP22_FILL_CIPHER_KEY, pucRiv, HDMIRX_HDCP22_RIV_TABLE, pucSessionKey, HDMIRX_HDCP22_SESSION_KEY_TABLE);
1097     // MAPI_CMD_HDMIRX_HDCP22_PORT_INIT
1098     UADP_SPT_NAME0NXT(HDMIRX_HDCP22_PORT_INITIAL, stHDCP22_PORT_INIT);
1099     // MAPI_CMD_HDMIRX_HDCP22_POLLING_READ_DONE
1100     UADP_SPT_NAME0NXT(HDMIRX_HDCP22_POLLING_READ_DONE, stHDCP22_POLLING_READ_DONE);
1101     // MAPI_CMD_HDMIRX_HDCP22_ENABLE_CIPHER
1102     UADP_SPT_NAME0NXT(HDMIRX_HDCP22_ENABLE_CIPHER, stHDCP22_ENABLE_CIPHER);
1103     // MAPI_CMD_HDMIRX_HDCP22_HANDLER
1104     UADP_SPT_NAME0NXT(HDMIRX_HDCP22_HANDLER, stHDCP22_HANDLER);
1105     // MAPI_CMD_HDMIRX_HDCP22_WAIT_EVENT
1106     UADP_SPT_NAME0NXT(HDMIRX_HDCP22_WAIT_EVENT, stHDCP22_WAIT_EVENT);
1107 
1108     *pIoctl = (FUtopiaIOctl)HDMIRX_adp_Ioctl;
1109 
1110     return 0;
1111 }
1112 
1113 #endif
1114 
1115