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