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