xref: /utopia/UTPA2-700.0.x/modules/dscmb/drv/nds/ddiNDS_HDI.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi /****************************************************************************/
79*53ee8cc1Swenshuai.xi /*                                                                          */
80*53ee8cc1Swenshuai.xi /*       CAHDIVER.H                                                         */
81*53ee8cc1Swenshuai.xi /*       ----------                                                         */
82*53ee8cc1Swenshuai.xi /*                                                                          */
83*53ee8cc1Swenshuai.xi /*  Description: Include file between CA HDI Interface and Jupiter Verifier */
84*53ee8cc1Swenshuai.xi /*                                                                          */
85*53ee8cc1Swenshuai.xi /*  $Revision:   2.0  $$Author :  $$Date:   07 Jan 1999 19:50:10  $         */
86*53ee8cc1Swenshuai.xi /****************************************************************************/
87*53ee8cc1Swenshuai.xi 
88*53ee8cc1Swenshuai.xi #ifndef __N3_282_H__
89*53ee8cc1Swenshuai.xi #define __N3_282_H__
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi 
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi #ifndef H_NDSTYPES
95*53ee8cc1Swenshuai.xi typedef unsigned char               NDS_BYTE;
96*53ee8cc1Swenshuai.xi typedef unsigned short              NDS_USHORT;
97*53ee8cc1Swenshuai.xi typedef unsigned long               NDS_ULONG;
98*53ee8cc1Swenshuai.xi typedef NDS_USHORT NDS_STATUS;
99*53ee8cc1Swenshuai.xi #endif
100*53ee8cc1Swenshuai.xi 
101*53ee8cc1Swenshuai.xi typedef unsigned char CAHDI_BOOLEAN;
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi #define CAHDI_TRUE  ( (unsigned char) 1 )
104*53ee8cc1Swenshuai.xi #define CAHDI_FALSE ( (unsigned char) 0 )
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi /*******************/
109*53ee8cc1Swenshuai.xi /* Value of status */
110*53ee8cc1Swenshuai.xi /*******************/
111*53ee8cc1Swenshuai.xi #define CA_OK                                   0
112*53ee8cc1Swenshuai.xi #define CA_REQUEST_NOT_SUPPORTED_BY_DRIVER      1
113*53ee8cc1Swenshuai.xi #define CA_DRIVER_CAN_NOT_PERFORM_FUNCTION_NOW  2
114*53ee8cc1Swenshuai.xi #define CA_GLOBAL_HARDWARE_FAILURE              3
115*53ee8cc1Swenshuai.xi #define CA_ECM_PID_FILTER_ALREADY_DEFINED       4
116*53ee8cc1Swenshuai.xi #define CA_DRIVER_INVALID_DATA_STREAM           5
117*53ee8cc1Swenshuai.xi #define CA_DRIVER_INVALID_LOGICAL_STREAM_ID     6
118*53ee8cc1Swenshuai.xi // #define CA_INSUFICIENT_BUFFER                   7
119*53ee8cc1Swenshuai.xi #define CA_INFO_NOT_AVAILABLE                           7
120*53ee8cc1Swenshuai.xi #define CA_INSUFFICIENT_BUFFER                          8
121*53ee8cc1Swenshuai.xi #define CA_SCHEME_NOT_SUPPORTED                         9
122*53ee8cc1Swenshuai.xi #define CA_FUNCTIONALITY_NOT_AVAILABLE_UNTIL_RESTART    10
123*53ee8cc1Swenshuai.xi #define CA_FUNCTIONALITY_PERMANENTLY_NOT_AVAILABLE      11
124*53ee8cc1Swenshuai.xi #define CA_FEATURE_NOT_SUPPORTED                        12
125*53ee8cc1Swenshuai.xi 
126*53ee8cc1Swenshuai.xi #define MAX_PIDS                                8
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi /****************************************************************************/
129*53ee8cc1Swenshuai.xi /*                                                                          */
130*53ee8cc1Swenshuai.xi /*                    XCORECA_CbModuleType                                  */
131*53ee8cc1Swenshuai.xi /*                                                                          */
132*53ee8cc1Swenshuai.xi /****************************************************************************/
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi typedef struct {
135*53ee8cc1Swenshuai.xi    NDS_BYTE         ca_module_type;
136*53ee8cc1Swenshuai.xi    NDS_BYTE         ca_module_version;
137*53ee8cc1Swenshuai.xi    NDS_USHORT       uart_module_version;
138*53ee8cc1Swenshuai.xi    NDS_BYTE         *ecm_buffers_ptr;
139*53ee8cc1Swenshuai.xi    NDS_BYTE         *emm_buffers_ptr;
140*53ee8cc1Swenshuai.xi    NDS_BYTE         num_emm_buffers;
141*53ee8cc1Swenshuai.xi    NDS_BYTE         num_ecm_buffer_pairs;
142*53ee8cc1Swenshuai.xi    CAHDI_BOOLEAN    auto_odd_to_even_ecm_filter;
143*53ee8cc1Swenshuai.xi    NDS_BYTE         num_descramblers;
144*53ee8cc1Swenshuai.xi    NDS_ULONG        hw_module_id;
145*53ee8cc1Swenshuai.xi    NDS_BYTE         reserved[9];
146*53ee8cc1Swenshuai.xi }  CA_MODULE_TYPE;
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi extern NDS_STATUS XCORECA_CbModuleType (int num_of_modules,
149*53ee8cc1Swenshuai.xi                                         CA_MODULE_TYPE *ca_module_type);
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi /* Define values of ca_module_version (or icam version) */
152*53ee8cc1Swenshuai.xi #define ICAM_1   0x1
153*53ee8cc1Swenshuai.xi #define ICAM_2   0x2
154*53ee8cc1Swenshuai.xi #define LSI      0x11
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_GetLogicalStreamId (int request_type,
157*53ee8cc1Swenshuai.xi                                              NDS_ULONG x_connection,
158*53ee8cc1Swenshuai.xi                                              NDS_BYTE *hw_module_id);
159*53ee8cc1Swenshuai.xi #define HDICA_GET_EMM_STREAM         1
160*53ee8cc1Swenshuai.xi #define HDICA_GET_ECM_STREAM         2
161*53ee8cc1Swenshuai.xi #define HDICA_GET_DESCRAMBLER_STREAM 3
162*53ee8cc1Swenshuai.xi 
163*53ee8cc1Swenshuai.xi /****************************************************************************/
164*53ee8cc1Swenshuai.xi /*                                                                          */
165*53ee8cc1Swenshuai.xi /*                      ECM INTERFACE                                       */
166*53ee8cc1Swenshuai.xi /*                                                                          */
167*53ee8cc1Swenshuai.xi /****************************************************************************/
168*53ee8cc1Swenshuai.xi /*  HDICA_ECM_RECEPTION_MASK */
169*53ee8cc1Swenshuai.xi #define HDICA_ECM_RECEPTION_DISABLE 0x00
170*53ee8cc1Swenshuai.xi #define HDICA_ECM_RECEPTION_ENABLE  0x80
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi #define HDICA_ECM_DISABLE_RECEPTION 0x00   /* it's multiply because of mismatch in the document */
173*53ee8cc1Swenshuai.xi #define HDICA_ECM_ENABLE_RECEPTION  0x80
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_DefineEcmPid (NDS_ULONG x_connection,
177*53ee8cc1Swenshuai.xi                                        NDS_BYTE ecm_buf_pair_num,
178*53ee8cc1Swenshuai.xi                                        NDS_USHORT pid,
179*53ee8cc1Swenshuai.xi                                        NDS_BYTE odd_ecm_table_id,
180*53ee8cc1Swenshuai.xi                                        NDS_BYTE even_ecm_table_id);
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_DefineEcmFilter (NDS_ULONG x_connection,
183*53ee8cc1Swenshuai.xi                                           NDS_BYTE ecm_filter_num,
184*53ee8cc1Swenshuai.xi                                           NDS_BYTE ecm_filter_control);
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi /*  HDICA_ECM_FILTER_CONTROL_ODD_RECEPTION_MASK */
187*53ee8cc1Swenshuai.xi #define HDICA_ECM_FILTER_CONTROL_DISABLE_ODD_RECEPTION  0x00
188*53ee8cc1Swenshuai.xi #define HDICA_ECM_FILTER_CONTROL_ENABLE_ODD_RECEPTION   0x20
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi /*  HDICA_ECM_FILTER_CONTROL_EVEN_RECEPTION_MASK */
191*53ee8cc1Swenshuai.xi #define HDICA_ECM_FILTER_CONTROL_DISABLE_EVEN_RECEPTION 0x00
192*53ee8cc1Swenshuai.xi #define HDICA_ECM_FILTER_CONTROL_ENABLE_EVEN_RECEPTION  0x40
193*53ee8cc1Swenshuai.xi 
194*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_ReleaseEcmBuffer (NDS_ULONG x_connection,
195*53ee8cc1Swenshuai.xi                                            NDS_BYTE ecm_filter_num,
196*53ee8cc1Swenshuai.xi                                            NDS_BYTE ecm_polarity,
197*53ee8cc1Swenshuai.xi                                            NDS_BYTE *ecm_buf);
198*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_ReleaseAllEcmBuffers (NDS_ULONG x_connection);
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi /* CORECA_EcmReceived Return Status */
201*53ee8cc1Swenshuai.xi #define CA_ECM_CHECKSUM_ERROR           1
202*53ee8cc1Swenshuai.xi #define CA_INVALID_BUFFER_NUMBER        2
203*53ee8cc1Swenshuai.xi #define CA_ECM_WAS_NOT_USED             3
204*53ee8cc1Swenshuai.xi 
205*53ee8cc1Swenshuai.xi  /* ECM_RECEIVED_STATUS */
206*53ee8cc1Swenshuai.xi #define ECM_OK          0
207*53ee8cc1Swenshuai.xi #define ECM_OVERFLOW    1
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi    /* ECM BUFFER */
210*53ee8cc1Swenshuai.xi #define HDICA_EVEN_BUFFER     1
211*53ee8cc1Swenshuai.xi #define HDICA_ODD_BUFFER      2
212*53ee8cc1Swenshuai.xi 
213*53ee8cc1Swenshuai.xi 
214*53ee8cc1Swenshuai.xi typedef struct {
215*53ee8cc1Swenshuai.xi    NDS_BYTE rcv_status; /* ECM_OK or ECM_OVERFLOW */
216*53ee8cc1Swenshuai.xi    NDS_BYTE ecm_filter_num;
217*53ee8cc1Swenshuai.xi    NDS_BYTE ecm_polarity; /* HDICA_ODD_BUFFER or HDICA_EVEN_BUFFER */
218*53ee8cc1Swenshuai.xi    NDS_BYTE *ecm_buf_ptr; /* pointer to the ECM payload*/
219*53ee8cc1Swenshuai.xi }XECM_MSG;
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi 
222*53ee8cc1Swenshuai.xi extern NDS_STATUS XCORECA_EcmReceived (NDS_ULONG x_connection,
223*53ee8cc1Swenshuai.xi                                        XECM_MSG *ecm_msg,
224*53ee8cc1Swenshuai.xi                                        NDS_ULONG hi_counter,
225*53ee8cc1Swenshuai.xi                                        NDS_ULONG lo_counter);
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi /****************************************************************************/
228*53ee8cc1Swenshuai.xi /*                                                                          */
229*53ee8cc1Swenshuai.xi /*                      EMM INTERFACE                                       */
230*53ee8cc1Swenshuai.xi /*                                                                          */
231*53ee8cc1Swenshuai.xi /****************************************************************************/
232*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SetEmmPid (NDS_ULONG x_connection,
233*53ee8cc1Swenshuai.xi                                     NDS_USHORT pid,
234*53ee8cc1Swenshuai.xi                                     NDS_BYTE emm_filter_control);
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi /*  HDICA_EMM_RECEPTION_MASK */
237*53ee8cc1Swenshuai.xi #define HDICA_EMM_RECEPTION_DISABLE 0x00
238*53ee8cc1Swenshuai.xi #define HDICA_EMM_RECEPTION_ENABLE  0x80
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi #define HDICA_EMM_DISABLE_RECEPTION 0x00   /* it's multiply because of mismatch in the document */
241*53ee8cc1Swenshuai.xi #define HDICA_EMM_ENABLE_RECEPTION  0x80
242*53ee8cc1Swenshuai.xi 
243*53ee8cc1Swenshuai.xi /*  HDICA_TABLE_ID_FILTERING_MASK    */
244*53ee8cc1Swenshuai.xi #define HDICA_TABLE_ID_FILTERING_IGNORE 0x00
245*53ee8cc1Swenshuai.xi #define HDICA_TABLE_ID_FILTERING_USE    0x40
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_EmmSetTableIdFilter (NDS_ULONG x_connection,
248*53ee8cc1Swenshuai.xi                                               NDS_BYTE table_id[4]);
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi /* TABLE ID FILTER CONTROL NDS_BYTE */
251*53ee8cc1Swenshuai.xi #define IGNORE_THIS_ID  0x00
252*53ee8cc1Swenshuai.xi #define RECEIVE_ALL     0x01
253*53ee8cc1Swenshuai.xi #define FILTER_BY_NDC   0x10
254*53ee8cc1Swenshuai.xi 
255*53ee8cc1Swenshuai.xi typedef struct {
256*53ee8cc1Swenshuai.xi    NDS_BYTE reg1_address[4];
257*53ee8cc1Swenshuai.xi    NDS_BYTE reg1_mask[4];
258*53ee8cc1Swenshuai.xi    NDS_BYTE reg2_address[4];
259*53ee8cc1Swenshuai.xi    NDS_BYTE reg2_mask[4];
260*53ee8cc1Swenshuai.xi    NDS_BYTE reg3_address[4];
261*53ee8cc1Swenshuai.xi    NDS_BYTE reg3_mask[4];
262*53ee8cc1Swenshuai.xi } EMM_REG;
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SetPrivateEmmFilter (NDS_ULONG x_connection,
265*53ee8cc1Swenshuai.xi                                              EMM_REG *emm_reg);
266*53ee8cc1Swenshuai.xi 
267*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_ReleaseEmmBuffer(NDS_ULONG x_connection,
268*53ee8cc1Swenshuai.xi                                          NDS_BYTE *emm_buf);
269*53ee8cc1Swenshuai.xi 
270*53ee8cc1Swenshuai.xi /* CORECA_EmmReceivedMsg Return Status */
271*53ee8cc1Swenshuai.xi #define CA_EMM_WAS_NOT_USED             3
272*53ee8cc1Swenshuai.xi 
273*53ee8cc1Swenshuai.xi /* EMM_RECEIVED_STATUS */
274*53ee8cc1Swenshuai.xi #define  EMM_OK          0
275*53ee8cc1Swenshuai.xi #define  EMM_OVERFLOW    1
276*53ee8cc1Swenshuai.xi 
277*53ee8cc1Swenshuai.xi typedef struct
278*53ee8cc1Swenshuai.xi {
279*53ee8cc1Swenshuai.xi    NDS_BYTE  receive_status;
280*53ee8cc1Swenshuai.xi    NDS_BYTE *emm_buf;
281*53ee8cc1Swenshuai.xi } XEMM_MSG;
282*53ee8cc1Swenshuai.xi 
283*53ee8cc1Swenshuai.xi extern NDS_STATUS XCORECA_EmmReceived (NDS_ULONG x_connection,
284*53ee8cc1Swenshuai.xi                                        XEMM_MSG *emm_msg);
285*53ee8cc1Swenshuai.xi 
286*53ee8cc1Swenshuai.xi 
287*53ee8cc1Swenshuai.xi /****************************************************************************/
288*53ee8cc1Swenshuai.xi /*                                                                          */
289*53ee8cc1Swenshuai.xi /*                Descrambling Elementary Streams                           */
290*53ee8cc1Swenshuai.xi /*                                                                          */
291*53ee8cc1Swenshuai.xi /****************************************************************************/
292*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_DefineDescramblerEs (NDS_ULONG x_connection,
293*53ee8cc1Swenshuai.xi                                               NDS_BYTE descrambler_num,
294*53ee8cc1Swenshuai.xi                                               NDS_USHORT pid,
295*53ee8cc1Swenshuai.xi                                               NDS_BYTE filter_control);
296*53ee8cc1Swenshuai.xi #define HDICA_DESCRAMBLER_CONTROL_ENABLE_DESCRAMBLING   0x80
297*53ee8cc1Swenshuai.xi #define HDICA_DESCRAMBLER_CONTROL_DISABLE_DESCRAMBLING  0x00
298*53ee8cc1Swenshuai.xi 
299*53ee8cc1Swenshuai.xi #define HDICA_DESCRAMBLE_TRANSPORT_PACKET_LEVEL 0x00
300*53ee8cc1Swenshuai.xi #define HDICA_DESCRAMBLE_PES_PACKET_LEVEL       0x40
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SetEvenKey (NDS_ULONG x_connection,
303*53ee8cc1Swenshuai.xi                                      NDS_BYTE descrambler_num,
304*53ee8cc1Swenshuai.xi                                      NDS_BYTE *key_ptr);
305*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SetOddKey  (NDS_ULONG x_connection,
306*53ee8cc1Swenshuai.xi                                      NDS_BYTE descrambler_num,
307*53ee8cc1Swenshuai.xi                                      NDS_BYTE *key_ptr);
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_DefineDescramblerType(NDS_ULONG x_connection,
310*53ee8cc1Swenshuai.xi                                         NDS_BYTE descrambler_type);
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi #define CSA     0
313*53ee8cc1Swenshuai.xi #define NSA     1
314*53ee8cc1Swenshuai.xi #define DES     2
315*53ee8cc1Swenshuai.xi #define AES     3
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi 
318*53ee8cc1Swenshuai.xi /****************************************************************************/
319*53ee8cc1Swenshuai.xi /*                                                                          */
320*53ee8cc1Swenshuai.xi /*                Smart Card Interface                                      */
321*53ee8cc1Swenshuai.xi /*                                                                          */
322*53ee8cc1Swenshuai.xi /****************************************************************************/
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi #define SC_INSERTED        0
325*53ee8cc1Swenshuai.xi #define SC_REMOVED         1
326*53ee8cc1Swenshuai.xi #define SC_COMM_OK         2
327*53ee8cc1Swenshuai.xi #define SC_COMM_OVERFLOW   3
328*53ee8cc1Swenshuai.xi #define SC_PARITY          4
329*53ee8cc1Swenshuai.xi #define SC_ERROR           5
330*53ee8cc1Swenshuai.xi 
331*53ee8cc1Swenshuai.xi extern NDS_STATUS CORECA_SmartCardComm (NDS_BYTE smart_card_comm_msg);
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetCardId(NDS_ULONG card_id);
335*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetIrdId(NDS_ULONG ird_id);
336*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetCardClockDivisor(NDS_BYTE clock_divisor);
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi /*  CLOCK_DIVISOR */
339*53ee8cc1Swenshuai.xi #define HIGHEST_CLOCK  1
340*53ee8cc1Swenshuai.xi #define MEDIUM_CLOCK   2
341*53ee8cc1Swenshuai.xi #define LOWEST_CLOCK   3
342*53ee8cc1Swenshuai.xi 
343*53ee8cc1Swenshuai.xi #define DIVIDE_BY_2    1
344*53ee8cc1Swenshuai.xi #define DIVIDE_BY_4    2
345*53ee8cc1Swenshuai.xi #define DIVIDE_BY_6    3
346*53ee8cc1Swenshuai.xi #define DIVIDE_BY_8    4
347*53ee8cc1Swenshuai.xi 
348*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetVccLevel(NDS_BYTE vcc_level);
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi /*  VCC LEVEL  */
351*53ee8cc1Swenshuai.xi #define HDICA_VCC_3V    0
352*53ee8cc1Swenshuai.xi #define HDICA_VCC_5V    1
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi 
355*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetConvention (NDS_BYTE convention);
356*53ee8cc1Swenshuai.xi 
357*53ee8cc1Swenshuai.xi /* TRANSMISSION_CONVENTION */
358*53ee8cc1Swenshuai.xi #define HDICA_CONVENTION_INVERSE    0x00
359*53ee8cc1Swenshuai.xi #define HDICA_CONVENTION_DIRECT     0x01
360*53ee8cc1Swenshuai.xi 
361*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetUartBaudRate (NDS_BYTE baud_rate);
362*53ee8cc1Swenshuai.xi 
363*53ee8cc1Swenshuai.xi #define HDICA_BAUD_RATE_9600    1
364*53ee8cc1Swenshuai.xi #define HDICA_BAUD_RATE_19200   2
365*53ee8cc1Swenshuai.xi #define HDICA_BAUD_RATE_38400   3
366*53ee8cc1Swenshuai.xi #define HDICA_BAUD_RATE_76800   4
367*53ee8cc1Swenshuai.xi #define HDICA_BAUD_RATE_153600  5
368*53ee8cc1Swenshuai.xi #define HDICA_BAUD_RATE_223200  6  /* F= 512; D= 32 */
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetVcc (NDS_BYTE vcc_switch);
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi #define HDICA_VCC_ON    0
373*53ee8cc1Swenshuai.xi #define HDICA_VCC_OFF   1
374*53ee8cc1Swenshuai.xi 
375*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetVpp (NDS_BYTE vpp_switch);
376*53ee8cc1Swenshuai.xi 
377*53ee8cc1Swenshuai.xi #define HDICA_VPP_ON    0
378*53ee8cc1Swenshuai.xi #define HDICA_VPP_OFF   1
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetGuardTime (NDS_BYTE guard_time);
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_GetInputByte (NDS_BYTE *input_byte);
383*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_PutOutputByte (NDS_BYTE output_byte);
384*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_ResetCard (NDS_BYTE reset_switch);
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi #define INACTIVE    0
387*53ee8cc1Swenshuai.xi #define ACTIVE      1
388*53ee8cc1Swenshuai.xi #define RESET_CYCLE 2
389*53ee8cc1Swenshuai.xi 
390*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_GetUartStatus (NDS_BYTE *uart_status);
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_TX_READY_MASK */
393*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_TX_IS_READY           0x01    /* bit 0 */
394*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_TX_IS_NOT_READY       0x00
395*53ee8cc1Swenshuai.xi 
396*53ee8cc1Swenshuai.xi /* HDICA_UART_RX_READY_MASK */
397*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_RX_IS_READY           0x02    /* bit 1 */
398*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_RX_IS_NOT_READY       0x00
399*53ee8cc1Swenshuai.xi 
400*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_PARITY_ERROR_LAST_BYTE_RCVD_MASK */
401*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_RCV_PARITY_ERROR      0x04    /* bit 2 */
402*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_RCV_NO_PARITY_ERROR   0x00
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_RCV_BUFFER_OVERFLOW_MASK */
405*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_OVERFLOW              0x08    /* bit 3 */
406*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_NO_OVERFLOW           0x00
407*53ee8cc1Swenshuai.xi 
408*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_PARITY_ERROR_LAST_BYTE_TRANSMITTED_MASK */
409*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_TX_PARITY_ERROR       0x10    /* bit 4 */
410*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_TX_NO_PARITY_ERROR    0x00
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_CONVENTION_MASK */
413*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_CONVENTION_INVERSE    0x00
414*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_CONVENTION_DIRECT     0x20    /* bit 5 */
415*53ee8cc1Swenshuai.xi 
416*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_INTERRUPT_PENDING_MASK */
417*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_INTERRUPT_PENDING     0x40    /* bit 6 */
418*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_INTERRUPT_NOT_PENDING 0x00
419*53ee8cc1Swenshuai.xi 
420*53ee8cc1Swenshuai.xi /* HDICA_UART_STATUS_CARD_DETECT_MASK */
421*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_CARD_INSERTED         0x80    /* bit 7 */
422*53ee8cc1Swenshuai.xi #define HDICA_UART_STATUS_CARD_NOT_INSERTED     0x00
423*53ee8cc1Swenshuai.xi 
424*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetCaValue (NDS_BYTE ca_value);
425*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SetCaValue (NDS_ULONG x_connection , NDS_BYTE ca_value);
426*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SetUartCommand (NDS_BYTE pin_mask);
427*53ee8cc1Swenshuai.xi 
428*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_SendAndReceiveBytesSession (NDS_BYTE *xmt_ptr,
429*53ee8cc1Swenshuai.xi                               NDS_BYTE      xmit_length,
430*53ee8cc1Swenshuai.xi                               CAHDI_BOOLEAN   null_filter,
431*53ee8cc1Swenshuai.xi                               CAHDI_BOOLEAN   use_flow_control,
432*53ee8cc1Swenshuai.xi                               NDS_BYTE      *rcv_ptr,
433*53ee8cc1Swenshuai.xi                               NDS_BYTE      rcv_length
434*53ee8cc1Swenshuai.xi                               );
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_ReceiveBytesSession (CAHDI_BOOLEAN null_filter,
437*53ee8cc1Swenshuai.xi                                       CAHDI_BOOLEAN use_flow_control,
438*53ee8cc1Swenshuai.xi                                       NDS_BYTE    *rcv_ptr,
439*53ee8cc1Swenshuai.xi                                       NDS_BYTE    rcv_length);
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi extern NDS_STATUS HDICA_AbortSmartCardCommSession (void);
442*53ee8cc1Swenshuai.xi 
443*53ee8cc1Swenshuai.xi /****************************************************************************/
444*53ee8cc1Swenshuai.xi /*                                                                          */
445*53ee8cc1Swenshuai.xi /*                Recording control interface                               */
446*53ee8cc1Swenshuai.xi /*                                                                          */
447*53ee8cc1Swenshuai.xi /****************************************************************************/
448*53ee8cc1Swenshuai.xi #define CA_OP_BASE_KEY  0x00
449*53ee8cc1Swenshuai.xi #define CA_OP_READING   0x01
450*53ee8cc1Swenshuai.xi #define CA_OP_WRITING   0x02
451*53ee8cc1Swenshuai.xi 
452*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_ECMCorruptionSettings (NDS_BYTE CorruptDataByte,
453*53ee8cc1Swenshuai.xi                                            NDS_BYTE FromByte);
454*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_EnableECMCorruption (NDS_ULONG x_connection,
455*53ee8cc1Swenshuai.xi                                               NDS_USHORT pid,
456*53ee8cc1Swenshuai.xi                                               NDS_BYTE enable_corruption);
457*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SecondaryScramblingKey (NDS_ULONG x_connection,
458*53ee8cc1Swenshuai.xi                                                  NDS_BYTE operation,
459*53ee8cc1Swenshuai.xi                                                  NDS_BYTE* key_ptr);
460*53ee8cc1Swenshuai.xi 
461*53ee8cc1Swenshuai.xi 
462*53ee8cc1Swenshuai.xi 
463*53ee8cc1Swenshuai.xi 
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi 
466*53ee8cc1Swenshuai.xi //extern NDS_STATUS CORECA_EmmReceived( XEMM_MSG *emm_msg );
467*53ee8cc1Swenshuai.xi //extern NDS_STATUS CORECA_EcmReceived( XECM_MSG *ecm_msg );
468*53ee8cc1Swenshuai.xi 
469*53ee8cc1Swenshuai.xi /****************************************************************************/
470*53ee8cc1Swenshuai.xi /*                                                                          */
471*53ee8cc1Swenshuai.xi /*                Control Word Encryption Interface                         */
472*53ee8cc1Swenshuai.xi /*                                                                          */
473*53ee8cc1Swenshuai.xi /****************************************************************************/
474*53ee8cc1Swenshuai.xi #define ESD_CLEAR_CW_LENGTH             8
475*53ee8cc1Swenshuai.xi #define ESD_ENCRYPTED_CW_LENGTH         8
476*53ee8cc1Swenshuai.xi #define ESD_ENCRYPTED_CKEY_LENGTH       16
477*53ee8cc1Swenshuai.xi #define ESD_ENCRYPTED_ACKEY_LENGTH      16
478*53ee8cc1Swenshuai.xi 
479*53ee8cc1Swenshuai.xi /* The following are descriptor tags for ExtendedSetDescrambler */
480*53ee8cc1Swenshuai.xi #define ESD_CLEAR_CW            0x01
481*53ee8cc1Swenshuai.xi #define ESD_ENCRYPTED_CW        0x02
482*53ee8cc1Swenshuai.xi #define ESD_EKEY                0x03 /* encrypted key - Ekpair/Eknopair used for CW encryption feature */
483*53ee8cc1Swenshuai.xi #define ESD_VGS_CHAINING_KEY    0x08
484*53ee8cc1Swenshuai.xi #define ESD_VGS_AC_KEY          0x09
485*53ee8cc1Swenshuai.xi #define ESD_VGS_OPTIONS         0x10
486*53ee8cc1Swenshuai.xi 
487*53ee8cc1Swenshuai.xi /* The following are descriptor tags for the chip properties structure */
488*53ee8cc1Swenshuai.xi #define CHIP_TYPE_DSCR_TAG              0x11
489*53ee8cc1Swenshuai.xi #define CHIP_ID_DSCR_TAG                0x12
490*53ee8cc1Swenshuai.xi #define HASH_KEY_DSCR_TAG               0x13 /* encrypted key - Ekpair/Eknopair used for CW encryption feature */
491*53ee8cc1Swenshuai.xi #define KEY_LADDER_DEPTH_DSCR_TAG       0x14
492*53ee8cc1Swenshuai.xi #define ENABLE_FLAGS_DSCR_TAG           0x15
493*53ee8cc1Swenshuai.xi 
494*53ee8cc1Swenshuai.xi /* The following are descriptor tags for the descrambling key structure */
495*53ee8cc1Swenshuai.xi #define CLEAR_CW_DSCR_TAG               0x01
496*53ee8cc1Swenshuai.xi #define ENCRYPTED_CW_DSCR_TAG           0x02
497*53ee8cc1Swenshuai.xi #define ENCRYPTED_KEY_DSCR_TAG          0x03
498*53ee8cc1Swenshuai.xi #define ENCRYPTION_SCHEME_DSCR_TAG      0x04
499*53ee8cc1Swenshuai.xi 
500*53ee8cc1Swenshuai.xi /* The following are Encryption Scheme Values Definition */
501*53ee8cc1Swenshuai.xi #define ENS_3DES_DED_2KEY               2
502*53ee8cc1Swenshuai.xi #define ENS_3DES_DED_2KEY_TWIST         3
503*53ee8cc1Swenshuai.xi #define ENS_3DES_DED_2KEY_HALF_TWIST    4
504*53ee8cc1Swenshuai.xi #define ENS_AES_128_BITS                0x10
505*53ee8cc1Swenshuai.xi 
506*53ee8cc1Swenshuai.xi #define ESD_VGS_CONFORMANCE     0x80
507*53ee8cc1Swenshuai.xi 
508*53ee8cc1Swenshuai.xi /*
509*53ee8cc1Swenshuai.xi #define CA_INFO_NOT_AVAILABLE                           7
510*53ee8cc1Swenshuai.xi #define CA_INSUFFICIENT_BUFFER                          8
511*53ee8cc1Swenshuai.xi #define CA_SCHEME_NOT_SUPPORTED                         9
512*53ee8cc1Swenshuai.xi #define CA_FUNCTIONALITY_NOT_AVAILABLE_UNTIL_RESTART    10
513*53ee8cc1Swenshuai.xi #define CA_FUNCTIONALITY_PERMANENTLY_NOT_AVAILABLE      11
514*53ee8cc1Swenshuai.xi #define CA_FEATURE_NOT_SUPPORTED                        12
515*53ee8cc1Swenshuai.xi */
516*53ee8cc1Swenshuai.xi 
517*53ee8cc1Swenshuai.xi /* The following define how Block Clear CWS should be performed */
518*53ee8cc1Swenshuai.xi #define BLOCK_FOREVER                   0
519*53ee8cc1Swenshuai.xi #define BLOCK_TILL_NEXT_RESET           1
520*53ee8cc1Swenshuai.xi 
521*53ee8cc1Swenshuai.xi #define KEY_IN_BOX                      1
522*53ee8cc1Swenshuai.xi #define FLASH_ID                        2
523*53ee8cc1Swenshuai.xi 
524*53ee8cc1Swenshuai.xi #define CTRL_ENCRYPTION_SUPPORTED               (1<< 0)
525*53ee8cc1Swenshuai.xi #define CTRL_ENCRYPTION_PERMANENTLY_FORCED      (1<< 1)
526*53ee8cc1Swenshuai.xi #define CTRL_ENCRYPTION_FORCED_UNTIL_RESET      (1<< 2)
527*53ee8cc1Swenshuai.xi #define JTAG_PASSWORD_ENABLED                   (1<< 3)
528*53ee8cc1Swenshuai.xi #define BOOTRON_ENABLED                         (1<< 4)
529*53ee8cc1Swenshuai.xi #define DATA_ENCRYPTION_SUPPORTED               (1<< 5)
530*53ee8cc1Swenshuai.xi #define SPARE_1                                 (1<< 6)
531*53ee8cc1Swenshuai.xi #define SPARE_2                                 (1<< 7)
532*53ee8cc1Swenshuai.xi 
533*53ee8cc1Swenshuai.xi #define ENCRYPT_IN_PARAMS_DSCR_TAG 0x0a
534*53ee8cc1Swenshuai.xi #define MAX_AUX_LEN 10
535*53ee8cc1Swenshuai.xi 
536*53ee8cc1Swenshuai.xi enum {
537*53ee8cc1Swenshuai.xi     TID_ECM_EVEN = 0x80,
538*53ee8cc1Swenshuai.xi     TID_ECM_ODD,
539*53ee8cc1Swenshuai.xi };
540*53ee8cc1Swenshuai.xi 
541*53ee8cc1Swenshuai.xi enum {
542*53ee8cc1Swenshuai.xi     POLARITY_CLEAR = 0,
543*53ee8cc1Swenshuai.xi     POLARITY_ODD,
544*53ee8cc1Swenshuai.xi     POLARITY_EVEN,
545*53ee8cc1Swenshuai.xi };
546*53ee8cc1Swenshuai.xi 
547*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_GetChipProperties(NDS_ULONG hw_module_id,
548*53ee8cc1Swenshuai.xi                                     unsigned int chip_prop_length,
549*53ee8cc1Swenshuai.xi                                     unsigned int *actual_chip_prop_length,
550*53ee8cc1Swenshuai.xi                                     NDS_BYTE *chip_properties,
551*53ee8cc1Swenshuai.xi                                     void *auxiliary_data);
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_SetControlWord(NDS_ULONG x_connection,
554*53ee8cc1Swenshuai.xi                                  NDS_USHORT descrambler_num,
555*53ee8cc1Swenshuai.xi                                  unsigned int control_data_length,
556*53ee8cc1Swenshuai.xi                                  NDS_BYTE *control_data,
557*53ee8cc1Swenshuai.xi                                  unsigned int polarity_control);
558*53ee8cc1Swenshuai.xi 
559*53ee8cc1Swenshuai.xi extern NDS_STATUS XHDICA_GetSerializationInfo(unsigned int info_type,
560*53ee8cc1Swenshuai.xi                                        unsigned int serializaion_data_len,
561*53ee8cc1Swenshuai.xi                                        unsigned int *actual_serialization_data_len,
562*53ee8cc1Swenshuai.xi                                        NDS_BYTE *serialization_data);
563*53ee8cc1Swenshuai.xi 
564*53ee8cc1Swenshuai.xi /****************************************************************************/
565*53ee8cc1Swenshuai.xi /*                                                                          */
566*53ee8cc1Swenshuai.xi /*                VGS Interface                                             */
567*53ee8cc1Swenshuai.xi /*                                                                          */
568*53ee8cc1Swenshuai.xi /****************************************************************************/
569*53ee8cc1Swenshuai.xi NDS_STATUS XHDICA_GetResponseToChallenge(NDS_BYTE *nonce,
570*53ee8cc1Swenshuai.xi                                          NDS_BYTE nonce_length,
571*53ee8cc1Swenshuai.xi                                          int descrambling_key_length,
572*53ee8cc1Swenshuai.xi                                          NDS_BYTE *descrambling_key_descrip,
573*53ee8cc1Swenshuai.xi                                          NDS_BYTE *response,
574*53ee8cc1Swenshuai.xi                                          NDS_BYTE *response_length);
575*53ee8cc1Swenshuai.xi 
576*53ee8cc1Swenshuai.xi /****************************************************************************/
577*53ee8cc1Swenshuai.xi /*                                                                          */
578*53ee8cc1Swenshuai.xi /*                Data Encryption Interface                                 */
579*53ee8cc1Swenshuai.xi /*                                                                          */
580*53ee8cc1Swenshuai.xi /****************************************************************************/
581*53ee8cc1Swenshuai.xi unsigned short XHDICA_EncryptData(void *encrypt_in_params,
582*53ee8cc1Swenshuai.xi                               unsigned int *out_data_buf_len,
583*53ee8cc1Swenshuai.xi                               NDS_BYTE *out_data_buf);
584*53ee8cc1Swenshuai.xi 
585*53ee8cc1Swenshuai.xi 
586*53ee8cc1Swenshuai.xi //////------- NSK ------------//////
587*53ee8cc1Swenshuai.xi unsigned short HDIHAL_WriteNSKReg(unsigned long instance,
588*53ee8cc1Swenshuai.xi                                     unsigned long offset,
589*53ee8cc1Swenshuai.xi                                     unsigned long length,
590*53ee8cc1Swenshuai.xi                                     unsigned long *reg_data_out);
591*53ee8cc1Swenshuai.xi 
592*53ee8cc1Swenshuai.xi unsigned short HDIHAL_ReadNSKReg(unsigned long instance,
593*53ee8cc1Swenshuai.xi                                     unsigned long offset,
594*53ee8cc1Swenshuai.xi                                     unsigned long length,
595*53ee8cc1Swenshuai.xi                                     unsigned long *reg_data_in);
596*53ee8cc1Swenshuai.xi 
597*53ee8cc1Swenshuai.xi 
598*53ee8cc1Swenshuai.xi unsigned short HDIHAL_WriteNSKData(unsigned long instance,
599*53ee8cc1Swenshuai.xi                                     unsigned long offset,
600*53ee8cc1Swenshuai.xi                                     unsigned long length,
601*53ee8cc1Swenshuai.xi                                     unsigned char *data_out);
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi unsigned short HDIHAL_ReadNSKData(unsigned long instance,
605*53ee8cc1Swenshuai.xi                                     unsigned long offset,
606*53ee8cc1Swenshuai.xi                                     unsigned long length,
607*53ee8cc1Swenshuai.xi                                     unsigned char *data_in);
608*53ee8cc1Swenshuai.xi 
609*53ee8cc1Swenshuai.xi /*unsigned short HALHDI_InterruptServiceRoutine(
610*53ee8cc1Swenshuai.xi                                     unsigned long instance,
611*53ee8cc1Swenshuai.xi                                     unsigned long interrupt_source);
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi 
614*53ee8cc1Swenshuai.xi unsigned short HALHDI_InitSVP_HW(unsigned long instance);*/
615*53ee8cc1Swenshuai.xi 
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi /////-------- SVP --------//////
618*53ee8cc1Swenshuai.xi unsigned short SVPHDI_ReadSerialData
619*53ee8cc1Swenshuai.xi (
620*53ee8cc1Swenshuai.xi     unsigned int offset,
621*53ee8cc1Swenshuai.xi     unsigned int length,
622*53ee8cc1Swenshuai.xi     unsigned char* data
623*53ee8cc1Swenshuai.xi );
624*53ee8cc1Swenshuai.xi 
625*53ee8cc1Swenshuai.xi 
626*53ee8cc1Swenshuai.xi unsigned short SVPHDI_AllocateCmChannel
627*53ee8cc1Swenshuai.xi (
628*53ee8cc1Swenshuai.xi     unsigned long xconn,
629*53ee8cc1Swenshuai.xi     unsigned int esa_select,
630*53ee8cc1Swenshuai.xi     unsigned int esa_subselect,
631*53ee8cc1Swenshuai.xi     unsigned int* cm_channel_handle
632*53ee8cc1Swenshuai.xi );
633*53ee8cc1Swenshuai.xi 
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi unsigned short SVPHDI_DeallocateCmChannel
636*53ee8cc1Swenshuai.xi (
637*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle
638*53ee8cc1Swenshuai.xi );
639*53ee8cc1Swenshuai.xi 
640*53ee8cc1Swenshuai.xi 
641*53ee8cc1Swenshuai.xi unsigned short SVPHDI_AddEsPidCmChannel
642*53ee8cc1Swenshuai.xi (
643*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle,
644*53ee8cc1Swenshuai.xi     unsigned short es_pid
645*53ee8cc1Swenshuai.xi );
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi 
648*53ee8cc1Swenshuai.xi unsigned short SVPHDI_RemoveEsPidCmChannel
649*53ee8cc1Swenshuai.xi (
650*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle,
651*53ee8cc1Swenshuai.xi     unsigned short es_pid
652*53ee8cc1Swenshuai.xi );
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi 
655*53ee8cc1Swenshuai.xi unsigned short SVPHDI_EnableCmChannel
656*53ee8cc1Swenshuai.xi (
657*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle
658*53ee8cc1Swenshuai.xi );
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi 
661*53ee8cc1Swenshuai.xi unsigned short SVPHDI_DisableCmChannel
662*53ee8cc1Swenshuai.xi (
663*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle
664*53ee8cc1Swenshuai.xi );
665*53ee8cc1Swenshuai.xi 
666*53ee8cc1Swenshuai.xi unsigned short SVPHDI_WriteKey
667*53ee8cc1Swenshuai.xi (
668*53ee8cc1Swenshuai.xi     unsigned long instance,
669*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle,
670*53ee8cc1Swenshuai.xi     unsigned char scb,
671*53ee8cc1Swenshuai.xi     unsigned int scrambling_settings_len,
672*53ee8cc1Swenshuai.xi     unsigned char* scrambling_settings
673*53ee8cc1Swenshuai.xi );
674*53ee8cc1Swenshuai.xi 
675*53ee8cc1Swenshuai.xi 
676*53ee8cc1Swenshuai.xi unsigned short SVPHDI_GetContentModuleProperties
677*53ee8cc1Swenshuai.xi (
678*53ee8cc1Swenshuai.xi     unsigned int cm_prop_length,
679*53ee8cc1Swenshuai.xi     unsigned int* actual_cm_prop_len,
680*53ee8cc1Swenshuai.xi     unsigned char* cm_properties
681*53ee8cc1Swenshuai.xi );
682*53ee8cc1Swenshuai.xi 
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi 
685*53ee8cc1Swenshuai.xi 
686*53ee8cc1Swenshuai.xi /////---- no support now -----
687*53ee8cc1Swenshuai.xi unsigned short SVPHDI_SetSecondaryVideoPid
688*53ee8cc1Swenshuai.xi (
689*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle,
690*53ee8cc1Swenshuai.xi     unsigned short primary_pid,
691*53ee8cc1Swenshuai.xi     unsigned short secondary_pid
692*53ee8cc1Swenshuai.xi );
693*53ee8cc1Swenshuai.xi 
694*53ee8cc1Swenshuai.xi 
695*53ee8cc1Swenshuai.xi unsigned short SVPHDI_ReleaseSecondaryVideoPid
696*53ee8cc1Swenshuai.xi (
697*53ee8cc1Swenshuai.xi     unsigned int cm_channel_handle,
698*53ee8cc1Swenshuai.xi     unsigned short secondary_pid
699*53ee8cc1Swenshuai.xi );
700*53ee8cc1Swenshuai.xi 
701*53ee8cc1Swenshuai.xi 
702*53ee8cc1Swenshuai.xi unsigned short SVPHDI_StartPacketInjection
703*53ee8cc1Swenshuai.xi (
704*53ee8cc1Swenshuai.xi     unsigned long xconn,
705*53ee8cc1Swenshuai.xi     unsigned char* transport_packet,
706*53ee8cc1Swenshuai.xi     unsigned int injection_type,
707*53ee8cc1Swenshuai.xi     unsigned int injection_frequency
708*53ee8cc1Swenshuai.xi );
709*53ee8cc1Swenshuai.xi 
710*53ee8cc1Swenshuai.xi 
711*53ee8cc1Swenshuai.xi unsigned short SVPHDI_InjectSinglePacket
712*53ee8cc1Swenshuai.xi (
713*53ee8cc1Swenshuai.xi     unsigned long xconn,
714*53ee8cc1Swenshuai.xi     unsigned char* transport_packet
715*53ee8cc1Swenshuai.xi );
716*53ee8cc1Swenshuai.xi 
717*53ee8cc1Swenshuai.xi 
718*53ee8cc1Swenshuai.xi unsigned short SVPHDI_ContinousReplacePacket
719*53ee8cc1Swenshuai.xi (
720*53ee8cc1Swenshuai.xi     unsigned long xconn,
721*53ee8cc1Swenshuai.xi     unsigned short replace_pid,
722*53ee8cc1Swenshuai.xi     unsigned char* transport_packet
723*53ee8cc1Swenshuai.xi );
724*53ee8cc1Swenshuai.xi 
725*53ee8cc1Swenshuai.xi 
726*53ee8cc1Swenshuai.xi unsigned short SVPHDI_TerminatePacketWrite
727*53ee8cc1Swenshuai.xi (
728*53ee8cc1Swenshuai.xi     unsigned long xconn,
729*53ee8cc1Swenshuai.xi     unsigned short pid
730*53ee8cc1Swenshuai.xi );
731*53ee8cc1Swenshuai.xi 
732*53ee8cc1Swenshuai.xi unsigned short HDIHAL_WriteDescrambler
733*53ee8cc1Swenshuai.xi (
734*53ee8cc1Swenshuai.xi     unsigned long xconn,
735*53ee8cc1Swenshuai.xi     unsigned short pid,
736*53ee8cc1Swenshuai.xi     unsigned char scb,
737*53ee8cc1Swenshuai.xi     unsigned char flags
738*53ee8cc1Swenshuai.xi );
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi 
741*53ee8cc1Swenshuai.xi 
742*53ee8cc1Swenshuai.xi /****************************************************************************/
743*53ee8cc1Swenshuai.xi /*                                                                                   */
744*53ee8cc1Swenshuai.xi /*                XTV RASP Low Level Driver Interdace                                */
745*53ee8cc1Swenshuai.xi /*                                                                                   */
746*53ee8cc1Swenshuai.xi /****************************************************************************/
747*53ee8cc1Swenshuai.xi 
748*53ee8cc1Swenshuai.xi typedef enum _MS_XBOOL
749*53ee8cc1Swenshuai.xi {
750*53ee8cc1Swenshuai.xi     _MS_XFALSE = 0,
751*53ee8cc1Swenshuai.xi     _MS_XTRUE  = 1
752*53ee8cc1Swenshuai.xi } _MS_XBOOL;
753*53ee8cc1Swenshuai.xi 
754*53ee8cc1Swenshuai.xi 
755*53ee8cc1Swenshuai.xi typedef struct
756*53ee8cc1Swenshuai.xi {
757*53ee8cc1Swenshuai.xi     unsigned long        Event_Descriptor;
758*53ee8cc1Swenshuai.xi     unsigned short       Pid;
759*53ee8cc1Swenshuai.xi     unsigned short       Reserved;
760*53ee8cc1Swenshuai.xi     unsigned long        PacketNum;
761*53ee8cc1Swenshuai.xi     unsigned long        Timer;
762*53ee8cc1Swenshuai.xi     unsigned long        PCR;
763*53ee8cc1Swenshuai.xi 
764*53ee8cc1Swenshuai.xi }RASP_EVENT;
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi typedef struct
767*53ee8cc1Swenshuai.xi {
768*53ee8cc1Swenshuai.xi     unsigned long     Supported_Event;
769*53ee8cc1Swenshuai.xi     unsigned long             Event_Timer_Rate;
770*53ee8cc1Swenshuai.xi     unsigned short            Num_Rasps;
771*53ee8cc1Swenshuai.xi     unsigned short            Max_Event_Num_In_Fifo;
772*53ee8cc1Swenshuai.xi     unsigned short            Num_of_Payloaad_Buffers;
773*53ee8cc1Swenshuai.xi     unsigned short            Num_of_Filters;
774*53ee8cc1Swenshuai.xi     _MS_XBOOL             Event_Generation_Every_Slot_Time;
775*53ee8cc1Swenshuai.xi     _MS_XBOOL             PCR_Stamp;
776*53ee8cc1Swenshuai.xi     _MS_XBOOL             Local_Clock_Stamp;
777*53ee8cc1Swenshuai.xi     _MS_XBOOL             Trigger_by_Evnet;
778*53ee8cc1Swenshuai.xi     _MS_XBOOL             Trigger_by_Time ;
779*53ee8cc1Swenshuai.xi 
780*53ee8cc1Swenshuai.xi }RASP_CAPS;
781*53ee8cc1Swenshuai.xi 
782*53ee8cc1Swenshuai.xi 
783*53ee8cc1Swenshuai.xi typedef unsigned short  (*RASP_EVENT_NOTIFY_FOUNCTION)
784*53ee8cc1Swenshuai.xi (
785*53ee8cc1Swenshuai.xi     unsigned long      Xconn,
786*53ee8cc1Swenshuai.xi     unsigned short          NumEvent,
787*53ee8cc1Swenshuai.xi     RASP_EVENT      RaspEvents[]
788*53ee8cc1Swenshuai.xi );
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi typedef unsigned short  (*RASP_OVERFLOW_NOTIFY_FUNCTION)
791*53ee8cc1Swenshuai.xi (
792*53ee8cc1Swenshuai.xi     unsigned long      Xconn
793*53ee8cc1Swenshuai.xi );
794*53ee8cc1Swenshuai.xi 
795*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_GetCapabilities(RASP_CAPS *RaspCaps) ;
796*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_GetEventMask
797*53ee8cc1Swenshuai.xi (
798*53ee8cc1Swenshuai.xi     unsigned long         Xconn,
799*53ee8cc1Swenshuai.xi     unsigned char             FilterNum,
800*53ee8cc1Swenshuai.xi     unsigned short            *Pid,
801*53ee8cc1Swenshuai.xi     unsigned long     *EventMask,
802*53ee8cc1Swenshuai.xi     unsigned long     *PayLoadMask
803*53ee8cc1Swenshuai.xi ) ;
804*53ee8cc1Swenshuai.xi 
805*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_GetTimerAndPacketNumber
806*53ee8cc1Swenshuai.xi (
807*53ee8cc1Swenshuai.xi     unsigned long      Xconn,
808*53ee8cc1Swenshuai.xi     unsigned long           *Time,
809*53ee8cc1Swenshuai.xi     unsigned long           *PacketNumber
810*53ee8cc1Swenshuai.xi ) ;
811*53ee8cc1Swenshuai.xi 
812*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_GetTSPayload
813*53ee8cc1Swenshuai.xi (
814*53ee8cc1Swenshuai.xi     unsigned long      Xconn,
815*53ee8cc1Swenshuai.xi     unsigned long           PacketNum,
816*53ee8cc1Swenshuai.xi     unsigned char          Buffer[188]
817*53ee8cc1Swenshuai.xi );
818*53ee8cc1Swenshuai.xi 
819*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_Reset(unsigned long  Xconn) ;
820*53ee8cc1Swenshuai.xi 
821*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_SetEventNotifyFunction
822*53ee8cc1Swenshuai.xi (
823*53ee8cc1Swenshuai.xi     unsigned long      Xconn,
824*53ee8cc1Swenshuai.xi     RASP_EVENT_NOTIFY_FOUNCTION     *RaspEventCB
825*53ee8cc1Swenshuai.xi );
826*53ee8cc1Swenshuai.xi 
827*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_SetOverflowNotifyFunction
828*53ee8cc1Swenshuai.xi (
829*53ee8cc1Swenshuai.xi     unsigned long     Xconn,
830*53ee8cc1Swenshuai.xi     RASP_OVERFLOW_NOTIFY_FUNCTION      *RaspOvfCB
831*53ee8cc1Swenshuai.xi ) ;
832*53ee8cc1Swenshuai.xi 
833*53ee8cc1Swenshuai.xi 
834*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_Configure
835*53ee8cc1Swenshuai.xi (
836*53ee8cc1Swenshuai.xi     unsigned long        Xconn,
837*53ee8cc1Swenshuai.xi     unsigned long        TriggerExecutor,
838*53ee8cc1Swenshuai.xi     unsigned short       EventHighMark,
839*53ee8cc1Swenshuai.xi     unsigned short       TimeHighMark,
840*53ee8cc1Swenshuai.xi     unsigned long        PidIndEvent
841*53ee8cc1Swenshuai.xi );
842*53ee8cc1Swenshuai.xi 
843*53ee8cc1Swenshuai.xi 
844*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_SetEventMask
845*53ee8cc1Swenshuai.xi (
846*53ee8cc1Swenshuai.xi     unsigned long        Xconn,
847*53ee8cc1Swenshuai.xi     unsigned char            FilterNum,
848*53ee8cc1Swenshuai.xi     unsigned short            Pid,
849*53ee8cc1Swenshuai.xi     unsigned long     EventMask,
850*53ee8cc1Swenshuai.xi     unsigned long     PayloadMask
851*53ee8cc1Swenshuai.xi );
852*53ee8cc1Swenshuai.xi 
853*53ee8cc1Swenshuai.xi 
854*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_ReplacePackets
855*53ee8cc1Swenshuai.xi (
856*53ee8cc1Swenshuai.xi     unsigned long       Xconn,
857*53ee8cc1Swenshuai.xi     unsigned short           Pid,
858*53ee8cc1Swenshuai.xi     unsigned char           FromByte,
859*53ee8cc1Swenshuai.xi     unsigned char           NumBytes,
860*53ee8cc1Swenshuai.xi     unsigned char          *ReplaceData
861*53ee8cc1Swenshuai.xi );
862*53ee8cc1Swenshuai.xi 
863*53ee8cc1Swenshuai.xi 
864*53ee8cc1Swenshuai.xi unsigned short  RASPLDI_Start(unsigned long  Xconn);
865*53ee8cc1Swenshuai.xi 
866*53ee8cc1Swenshuai.xi 
867*53ee8cc1Swenshuai.xi #endif
868*53ee8cc1Swenshuai.xi 
869