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 // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// file drvTSP.h 98*53ee8cc1Swenshuai.xi /// @brief Transport Stream Processer (TSP) Driver Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor,Inc. 100*53ee8cc1Swenshuai.xi /// @attention 101*53ee8cc1Swenshuai.xi /// All TSP DDI are not allowed to use in any interrupt context other than TSP ISR and Callback 102*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi #ifndef _DRV_TSP_H_ 105*53ee8cc1Swenshuai.xi #define _DRV_TSP_H_ 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi #include "MsTypes.h" 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi #ifdef __cplusplus 110*53ee8cc1Swenshuai.xi extern "C" 111*53ee8cc1Swenshuai.xi { 112*53ee8cc1Swenshuai.xi #endif 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 116*53ee8cc1Swenshuai.xi // Driver Capability 117*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi #define DRVTSP_FILTER_DEPTH 16 // TSP_FILTER_DEPTH 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi /// TSP byte address alignment unit 122*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN_UNIT 8 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi /// TSP byte address alignment macro 125*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN(_x) ALIGN_8((MS_U32)_x) 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 128*53ee8cc1Swenshuai.xi // Macro and Define 129*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 130*53ee8cc1Swenshuai.xi /// Transport stream null PID 131*53ee8cc1Swenshuai.xi #define DRVTSP_PID_NULL 0x1FFF 132*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIB_CODE {'T','S','P','_'} // Lib code 133*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIBVER {'1','3'} // LIB version 134*53ee8cc1Swenshuai.xi #define MSIF_TSP_BUILDNUM {'0','1'} // Build Number 135*53ee8cc1Swenshuai.xi #define MSIF_TSP_CHANGELIST {'0','0','6','1','7','4','7','0'} // P4 ChangeList Number 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi #define TSP_DRV_VERSION /* Character String for DRV/API version */ \ 138*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 139*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 140*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 141*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 142*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 143*53ee8cc1Swenshuai.xi MSIF_CPU, \ 144*53ee8cc1Swenshuai.xi MSIF_TSP_LIB_CODE, /* IP__ */ \ 145*53ee8cc1Swenshuai.xi MSIF_TSP_LIBVER, /* 0.0 ~ Z.Z */ \ 146*53ee8cc1Swenshuai.xi MSIF_TSP_BUILDNUM, /* 00 ~ 99 */ \ 147*53ee8cc1Swenshuai.xi MSIF_TSP_CHANGELIST, /* CL# */ \ 148*53ee8cc1Swenshuai.xi MSIF_OS 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi 151*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 152*53ee8cc1Swenshuai.xi // Type and Structure 153*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 154*53ee8cc1Swenshuai.xi /// TSP DDI return value 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi /// @name TSP_Result 157*53ee8cc1Swenshuai.xi /// @ref TSP_Result 158*53ee8cc1Swenshuai.xi /// return value 159*53ee8cc1Swenshuai.xi /// @{ 160*53ee8cc1Swenshuai.xi typedef enum 161*53ee8cc1Swenshuai.xi { 162*53ee8cc1Swenshuai.xi DRVTSP_FAIL = 0, 163*53ee8cc1Swenshuai.xi DRVTSP_OK, 164*53ee8cc1Swenshuai.xi DRVTSP_INVALID_PARAM, 165*53ee8cc1Swenshuai.xi DRVTSP_FUNC_ERROR, 166*53ee8cc1Swenshuai.xi DRVTSP_INVALID_SECFLT, 167*53ee8cc1Swenshuai.xi DRVTSP_NOT_SUPPORTED, 168*53ee8cc1Swenshuai.xi } TSP_Result; 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi /// @} 171*53ee8cc1Swenshuai.xi 172*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_ENABLE TRUE 173*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_SWITCH FALSE 174*53ee8cc1Swenshuai.xi 175*53ee8cc1Swenshuai.xi #if 0 176*53ee8cc1Swenshuai.xi /// TSP channel Type 177*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltType 178*53ee8cc1Swenshuai.xi { 179*53ee8cc1Swenshuai.xi // get TS from Live stream 180*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_VIDEO = 0x00000000, ///<\n 181*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_AUDIO , ///<\n 182*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_AUDIO2 , ///<\n 183*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PVR , ///<\n 184*53ee8cc1Swenshuai.xi 185*53ee8cc1Swenshuai.xi // Section Filter Group 186*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_SECTION_MASK = 0x20000000, ///<\n 187*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_SECTION , ///<\n 188*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PCR , ///<\n 189*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PES , ///<\n 190*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PACKET , //[Reserved] 191*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_TELETEXT , 192*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_EMM , //[Reserved] 193*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_ECM , //[Reserved] 194*53ee8cc1Swenshuai.xi 195*53ee8cc1Swenshuai.xi 196*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_SOURCE_TYPE_MASK = 0xC0000000, 197*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_SOURCE_TYPE_LIVE = 0x80000000, 198*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_SOURCE_TYPE_FILE = 0x40000000, 199*53ee8cc1Swenshuai.xi 200*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_LAST_ENUM 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi } DrvTSP_FltType; 203*53ee8cc1Swenshuai.xi #endif 204*53ee8cc1Swenshuai.xi 205*53ee8cc1Swenshuai.xi 206*53ee8cc1Swenshuai.xi //TSP IF Source Enum 207*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF0_LIVE 0x00000001 208*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF0_FILE 0x00000002 209*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF1 0x00000003 210*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF2 0x00000004 211*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_MMFI0 0x00000006 212*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_MMFI1 0x00000007 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi 215*53ee8cc1Swenshuai.xi #define DrvTSP_FltType MS_U32 216*53ee8cc1Swenshuai.xi // get TS from Live stream 217*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO 0x00000000 ///<\n 218*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO 0x00000001 ///<\n 219*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO2 0x00000002 ///<\n 220*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PVR 0x00000003 ///<\n 221*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO3D 0x00000008 222*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_CB 0x00000009 223*53ee8cc1Swenshuai.xi 224*53ee8cc1Swenshuai.xi // Section Filter Group 225*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_MASK 0x01000000 ///<\n 226*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION 0x01000001 ///<\n 227*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PCR 0x01000002 ///<\n 228*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PES 0x01000003 ///<\n 229*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PACKET 0x01000004 //[Reserved] 230*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_TELETEXT 0x01000005 231*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_EMM 0x01000006 //[Reserved] 232*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_ECM 0x01000007 //[Reserved] 233*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_VER 0x01000008 234*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_NO_PUSI 0x01000009 235*53ee8cc1Swenshuai.xi 236*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_LAST_ENUM 0x0100000A 237*53ee8cc1Swenshuai.xi 238*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MASK 0xF0800000 239*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_MASK 0xC0800000 240*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVE 0x80000000 241*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE 0x40000000 242*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVEB E_DRVTSP_FLT_SOURCE_TYPE_FILE // Input from TS1 to File PID filter 243*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS1 0xC0000000 244*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS2 0x00800000 245*53ee8cc1Swenshuai.xi 246*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SCMB_MASK 0x20000000 247*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB 0x20000000 248*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB_SHAREKEY 0x10000000 249*53ee8cc1Swenshuai.xi 250*53ee8cc1Swenshuai.xi #define DrvTSP_FltMode MS_U32 251*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CONTI 0x00000000 252*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_ONESHOT 0x00000001 253*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_PESSCMCHK 0x00000003 //Only for PES type checking SCMB status 254*53ee8cc1Swenshuai.xi 255*53ee8cc1Swenshuai.xi // optional 256*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CRCCHK 0x00000002 257*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_AUTO_ADDR 0x00000004 // auto move read point mode 258*53ee8cc1Swenshuai.xi 259*53ee8cc1Swenshuai.xi //-------------------------------------------------- 260*53ee8cc1Swenshuai.xi // Debug table 261*53ee8cc1Swenshuai.xi typedef enum 262*53ee8cc1Swenshuai.xi { 263*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_NONE, 264*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_CLEAR, 265*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_ENABLE, 266*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_DISABLE, 267*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Cmd; 268*53ee8cc1Swenshuai.xi 269*53ee8cc1Swenshuai.xi typedef enum 270*53ee8cc1Swenshuai.xi { 271*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_TS0, 272*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_TS1, 273*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_TS2, 274*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_FILE, 275*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Src; 276*53ee8cc1Swenshuai.xi 277*53ee8cc1Swenshuai.xi typedef enum 278*53ee8cc1Swenshuai.xi { 279*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_TSIF_TS0, 280*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_TSIF_TS1, 281*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_TSIF_TSCB, 282*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Tsif; 283*53ee8cc1Swenshuai.xi 284*53ee8cc1Swenshuai.xi typedef enum 285*53ee8cc1Swenshuai.xi { 286*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_VIDEO, 287*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_AUDIO, 288*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_VIDEO3D, 289*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_AUDIOB, 290*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo; 291*53ee8cc1Swenshuai.xi 292*53ee8cc1Swenshuai.xi typedef enum 293*53ee8cc1Swenshuai.xi { 294*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_0, 295*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_0_FILE, 296*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_1, 297*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_2, 298*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_MMFI0, 299*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_MMFI1, 300*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo_Src; 301*53ee8cc1Swenshuai.xi 302*53ee8cc1Swenshuai.xi /// TSP channel state bit flags 303*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltState 304*53ee8cc1Swenshuai.xi { 305*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_FREE = 0x00000000, ///<\n 306*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_ALLOC = 0x00000001, ///<\n 307*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_ENABLE = 0x00000002, ///<\n 308*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_SCRAMBLED = 0x00000004, //[TODO] 309*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_STREAM_AVAIL = 0x00000008, //[TODO] 310*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_SCRAMBLED_ORG = 0x00000010, 311*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_OVERFLOW = 0x00010000, //[Reserved] 312*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_CBRUN = 0x40000000, // Callback processing 313*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_FREEING = 0x80000000, // Free filter is running 314*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_NA = 0xFFFFFFFF, 315*53ee8cc1Swenshuai.xi } DrvTSP_FltState; 316*53ee8cc1Swenshuai.xi 317*53ee8cc1Swenshuai.xi 318*53ee8cc1Swenshuai.xi /// TSP record mode 319*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_RecMode 320*53ee8cc1Swenshuai.xi { 321*53ee8cc1Swenshuai.xi //[TODO] rename REC_MODE to PVR_MODE 322*53ee8cc1Swenshuai.xi 323*53ee8cc1Swenshuai.xi /// Record ENG0 by @ref E_DRVTSP_FLT_TYPE_PVR 324*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_FLTTYPE = 0x00000000, // TSP_PVR_CTRL_ENG(0) 325*53ee8cc1Swenshuai.xi /// Record ENG1 by @ref E_DRVTSP_FLT_TYPE_PVR 326*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG1_FLTTYPE = 0x00000001, // TSP_PVR_CTRL_ENG(1) 327*53ee8cc1Swenshuai.xi /// Record ENG0 bypass PID fliter 328*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_BYPASS = 0x00000002, // TSP_PVR_CTRL_ENG(0) + TSP_PVR_CTRL_BYPASS 329*53ee8cc1Swenshuai.xi /// Record ENG1 bypass PID fliter 330*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG1_BYPASS = 0x00000003, // TSP_PVR_CTRL_ENG(1) + TSP_PVR_CTRL_BYPASS 331*53ee8cc1Swenshuai.xi 332*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_FLT1CA = 0x00000004, 333*53ee8cc1Swenshuai.xi 334*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_FI_FLTTYPE = 0x00000008, //File-in record pid 335*53ee8cc1Swenshuai.xi 336*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_FI_BYPASS = 0x00000010, //File-in record all 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi } DrvTSP_RecMode; 339*53ee8cc1Swenshuai.xi 340*53ee8cc1Swenshuai.xi /// TSP Control Mode 341*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_CtrlMode 342*53ee8cc1Swenshuai.xi { 343*53ee8cc1Swenshuai.xi /// Input From Stream Source 0 344*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS0, 345*53ee8cc1Swenshuai.xi /// Input From Stream Source 1 346*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS1, 347*53ee8cc1Swenshuai.xi /// Input From Memory 348*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_MEM, 349*53ee8cc1Swenshuai.xi /// Input From Memory 350*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_MEM_PVR, 351*53ee8cc1Swenshuai.xi /// Input From Stream Source 0, enable output to MAD 352*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS0_AUD, 353*53ee8cc1Swenshuai.xi /// Input From Stream Source 1, enable output to MAD 354*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS1_AUD, 355*53ee8cc1Swenshuai.xi /// Input From Memory, enable output to MAD 356*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_MEM_AUD, 357*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR descrambled stream 358*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR_TS0, 359*53ee8cc1Swenshuai.xi /// Enable Video PS enable for h264 play file 360*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_VID, 361*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR descrambled stream, from TS1 362*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR_CA, 363*53ee8cc1Swenshuai.xi /// Input From Stream Source 2 364*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS2, 365*53ee8cc1Swenshuai.xi /// Input From Stream Source 2, enable output to MAD 366*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS2_AUD, 367*53ee8cc1Swenshuai.xi /// Input From Stream Source 1, and output to File PID filter 368*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS1_FILEFLT, 369*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR descrambled stream 370*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR_TS0_CA, 371*53ee8cc1Swenshuai.xi /// Input From Memory, but not pass through CA 372*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_MEM_NOCA, 373*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR1 descrambled stream 374*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR1_CA, 375*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR descrambled stream, from TS1, output to TS2 376*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR_TS2_CA, 377*53ee8cc1Swenshuai.xi /// Input From Stream Source 0, but not pass through CA 378*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS0_NOCA, 379*53ee8cc1Swenshuai.xi /// Input From Stream Source 1, CA output to Live0 380*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS1_OUT_LIVE0, 381*53ee8cc1Swenshuai.xi 382*53ee8cc1Swenshuai.xi } DrvTSP_CtrlMode; 383*53ee8cc1Swenshuai.xi 384*53ee8cc1Swenshuai.xi /// TSP input pad selection 385*53ee8cc1Swenshuai.xi typedef enum 386*53ee8cc1Swenshuai.xi { 387*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_DEMOD = 0x0, 388*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT0 = 0x1, 389*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT1 = 0x2, 390*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT2 = 0x4, 391*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_TSO = 0x8, 392*53ee8cc1Swenshuai.xi } DrvTSP_PadIn; 393*53ee8cc1Swenshuai.xi 394*53ee8cc1Swenshuai.xi /// TSP interface 395*53ee8cc1Swenshuai.xi typedef enum 396*53ee8cc1Swenshuai.xi { 397*53ee8cc1Swenshuai.xi E_DRVTSP_IF_PLAYBACK = 0x0, // TS interface 0 398*53ee8cc1Swenshuai.xi E_DRVTSP_IF_PVR0 = 0x1, 399*53ee8cc1Swenshuai.xi E_DRVTSP_IF_PVR1 = 0x2, 400*53ee8cc1Swenshuai.xi E_DRVTSP_IF_NUM, 401*53ee8cc1Swenshuai.xi 402*53ee8cc1Swenshuai.xi } DrvTSP_If; 403*53ee8cc1Swenshuai.xi 404*53ee8cc1Swenshuai.xi typedef struct 405*53ee8cc1Swenshuai.xi { 406*53ee8cc1Swenshuai.xi DrvTSP_PadIn ePad; 407*53ee8cc1Swenshuai.xi MS_BOOL bClkInv; 408*53ee8cc1Swenshuai.xi MS_BOOL bExtSync; 409*53ee8cc1Swenshuai.xi MS_BOOL bParallel; 410*53ee8cc1Swenshuai.xi } DrvTSP_If_Set; 411*53ee8cc1Swenshuai.xi 412*53ee8cc1Swenshuai.xi //---------------------------------- 413*53ee8cc1Swenshuai.xi /// DMX debug table information structure 414*53ee8cc1Swenshuai.xi //---------------------------------- 415*53ee8cc1Swenshuai.xi typedef struct 416*53ee8cc1Swenshuai.xi { 417*53ee8cc1Swenshuai.xi DrvTSP_Debug_Cmd TspCmd; 418*53ee8cc1Swenshuai.xi DrvTSP_Debug_Src TspSrc; 419*53ee8cc1Swenshuai.xi DrvTSP_Debug_Fifo TspFifo; 420*53ee8cc1Swenshuai.xi } DrvTSP_DisContiCnt_info, DrvTSP_DropPktCnt_info; 421*53ee8cc1Swenshuai.xi 422*53ee8cc1Swenshuai.xi typedef struct 423*53ee8cc1Swenshuai.xi { 424*53ee8cc1Swenshuai.xi DrvTSP_Debug_Cmd TspCmd; 425*53ee8cc1Swenshuai.xi DrvTSP_Debug_Tsif TspTsif; 426*53ee8cc1Swenshuai.xi } DrvTSP_LockPktCnt_info; 427*53ee8cc1Swenshuai.xi 428*53ee8cc1Swenshuai.xi typedef struct 429*53ee8cc1Swenshuai.xi { 430*53ee8cc1Swenshuai.xi DrvTSP_Debug_Cmd TspCmd; 431*53ee8cc1Swenshuai.xi DrvTSP_Debug_Fifo TspFifo; 432*53ee8cc1Swenshuai.xi DrvTSP_Debug_Fifo_Src TspFifoSrc; 433*53ee8cc1Swenshuai.xi } DrvTSP_AVPktCnt_info; 434*53ee8cc1Swenshuai.xi 435*53ee8cc1Swenshuai.xi typedef enum 436*53ee8cc1Swenshuai.xi { 437*53ee8cc1Swenshuai.xi /// TSP Engine 0 Transport Stream 438*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_TS = 0x00000000, //TSP_TSDMA_CTRL_ENG0 439*53ee8cc1Swenshuai.xi /// TSP Engine 0 Video PES Only 440*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_VPES = 0x00000004, //TSP_TSDMA_CTRL_VPES0 441*53ee8cc1Swenshuai.xi /// TSP Engine 0 Audio PES Only 442*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_APES = 0x00000008, //TSP_TSDMA_CTRL_APES0 443*53ee8cc1Swenshuai.xi /// TSP Engine 0 Audio2 PES Only 444*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_A2PES = 0x00000010, //TSP_TSDMA_CTRL_A2PES0 445*53ee8cc1Swenshuai.xi /// TSP Engine 0 Video3D PES Only 446*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_V3DPES = 0x00000020, //TSP_TSDMA_CTRL_V3DPES0 447*53ee8cc1Swenshuai.xi } DrvTSP_FileinMode; 448*53ee8cc1Swenshuai.xi 449*53ee8cc1Swenshuai.xi 450*53ee8cc1Swenshuai.xi typedef enum 451*53ee8cc1Swenshuai.xi { 452*53ee8cc1Swenshuai.xi /// Command Queue is Idle 453*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_STATE_IDLE = 0000000000, 454*53ee8cc1Swenshuai.xi /// Command Queue is Busy 455*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_STATE_BUSY = 0x00000001, 456*53ee8cc1Swenshuai.xi /// Command Queue is Paused. 457*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_STATE_PAUSE = 0x00000002, 458*53ee8cc1Swenshuai.xi } DrvTSP_FileinState; 459*53ee8cc1Swenshuai.xi 460*53ee8cc1Swenshuai.xi #if 0 461*53ee8cc1Swenshuai.xi /// TSP notification event 462*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_Event 463*53ee8cc1Swenshuai.xi { 464*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_DATA_INIT = 0x00000000, 465*53ee8cc1Swenshuai.xi /// Section Data Ready 466*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_DATA_READY = 0x00000001, 467*53ee8cc1Swenshuai.xi /// Section Buffer Overflow 468*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_BUF_OVERFLOW = 0x00000002, 469*53ee8cc1Swenshuai.xi /// PVR Buffer is Full 470*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_PVRBUF_FULL = 0x00000010, 471*53ee8cc1Swenshuai.xi /// PVR Double Buffer Overflow 472*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_PVRBUF_OVERFLOW = 0x00000020, 473*53ee8cc1Swenshuai.xi 474*53ee8cc1Swenshuai.xi 475*53ee8cc1Swenshuai.xi /// TSP self task callback // optional --> default is CB by poll 476*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_CB_MASK = 0x80000000, 477*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_CB_POLL = 0x00000000, 478*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_CB_SELF = 0x80000000, 479*53ee8cc1Swenshuai.xi } DrvTSP_Event; 480*53ee8cc1Swenshuai.xi #endif 481*53ee8cc1Swenshuai.xi 482*53ee8cc1Swenshuai.xi #define DrvTSP_Event MS_U32 483*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_INIT 0x00000000 484*53ee8cc1Swenshuai.xi /// Section Data Ready 485*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_READY 0x00000001 486*53ee8cc1Swenshuai.xi /// Section Buffer Overflow 487*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_BUF_OVERFLOW 0x00000002 488*53ee8cc1Swenshuai.xi /// Section Buffer CRC error 489*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_SEC_CRCERR 0x00000004 490*53ee8cc1Swenshuai.xi /// PVR Buffer is Full 491*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_FULL 0x00000010 492*53ee8cc1Swenshuai.xi /// PVR Double Buffer Overflow 493*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_OVERFLOW 0x00000020 494*53ee8cc1Swenshuai.xi /// Channel Browser Buffer is Full 495*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_FULL 0x00000040 496*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_OVERFLOW 0x00000080 497*53ee8cc1Swenshuai.xi 498*53ee8cc1Swenshuai.xi 499*53ee8cc1Swenshuai.xi /// TSP self task callback // optional --> default is CB by poll 500*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_MASK 0x80000000 501*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_POLL 0x00000000 502*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_SELF 0x80000000 503*53ee8cc1Swenshuai.xi 504*53ee8cc1Swenshuai.xi #define DrvTSP_PKTDMXSrcType MS_U32 505*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX0 0x00000001 506*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXFILE 0x00000002 507*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX1 0x00000003 508*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX2 0x00000004 509*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI0 0x00000006 510*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI1 0x00000007 511*53ee8cc1Swenshuai.xi 512*53ee8cc1Swenshuai.xi //Ca control path 513*53ee8cc1Swenshuai.xi #define DrvTSP_DscmbCtrl MS_U32 514*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_LIVE0 0x00000001 515*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_FILE0 0x00000002 516*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_TSIF1 0x00000004 517*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_TSIF2 0x00000800 518*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_LIVE0 0x00000010 519*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_FILE0 0x00000020 520*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_REC0 0x00000040 521*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_TSIF2 0x00000400 522*53ee8cc1Swenshuai.xi 523*53ee8cc1Swenshuai.xi /// TSP file in Packet mode 524*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_PacketMode 525*53ee8cc1Swenshuai.xi { 526*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_188 = 0x00000000, 527*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_192 = 0x00000001, 528*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_204 = 0x00000002, 529*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_130 = 0x00000003, // RVU 530*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_134 = 0x00000004, // RVU with timestamp 531*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_200 = 0x00000005, // packet size with 200 (Open cable Single stream) 532*53ee8cc1Swenshuai.xi 533*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_MERG188 = 0x00000006, // packet size with 188 (Merge stream) 534*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_MERG192 = 0x00000007, // packet size with 192 (Merge stream) 535*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_MERG200 = 0x00000008, //packet size with 200 (Open cable Merge stream) 536*53ee8cc1Swenshuai.xi 537*53ee8cc1Swenshuai.xi } DrvTSP_PacketMode; 538*53ee8cc1Swenshuai.xi 539*53ee8cc1Swenshuai.xi /// TSP notification event message 540*53ee8cc1Swenshuai.xi typedef struct //_DrvTSP_Msg 541*53ee8cc1Swenshuai.xi { 542*53ee8cc1Swenshuai.xi /// Union data type of message 543*53ee8cc1Swenshuai.xi union 544*53ee8cc1Swenshuai.xi { 545*53ee8cc1Swenshuai.xi /// FltInfo message 546*53ee8cc1Swenshuai.xi /// - Byte[0] : Section filter id 547*53ee8cc1Swenshuai.xi /// - Byte[1] : TSP id 548*53ee8cc1Swenshuai.xi MS_U32 FltInfo; 549*53ee8cc1Swenshuai.xi /// PvrBufId 550*53ee8cc1Swenshuai.xi /// - Byte[0] : PVR buffer id 551*53ee8cc1Swenshuai.xi MS_U32 PvrBufId; 552*53ee8cc1Swenshuai.xi 553*53ee8cc1Swenshuai.xi /// Pvr1BufId; 554*53ee8cc1Swenshuai.xi /// - Byte[0] : CB buffer id 555*53ee8cc1Swenshuai.xi MS_U32 Pvr1BufId; 556*53ee8cc1Swenshuai.xi 557*53ee8cc1Swenshuai.xi }; 558*53ee8cc1Swenshuai.xi 559*53ee8cc1Swenshuai.xi } DrvTSP_Msg; 560*53ee8cc1Swenshuai.xi 561*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_DbgLevel 562*53ee8cc1Swenshuai.xi { 563*53ee8cc1Swenshuai.xi E_DRVTSP_DBG_Release = 0, 564*53ee8cc1Swenshuai.xi E_DRVTSP_DBG_L1, // display error msg 565*53ee8cc1Swenshuai.xi E_DRVTSP_DBG_L2, // display error msg and enter while(1) 566*53ee8cc1Swenshuai.xi } DrvTSP_DbgLevel; 567*53ee8cc1Swenshuai.xi 568*53ee8cc1Swenshuai.xi // legacy 569*53ee8cc1Swenshuai.xi typedef enum{ 570*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_NONE = 0x00000000, 571*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_TS = 0x00000001, 572*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_PES = 0x00000002, 573*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_TS_PES = (E_DRVTSP_SCMB_TS| E_DRVTSP_SCMB_PES), 574*53ee8cc1Swenshuai.xi } DrvTSP_Scmb_Level; 575*53ee8cc1Swenshuai.xi 576*53ee8cc1Swenshuai.xi /// @name DrvTSP_Msg 577*53ee8cc1Swenshuai.xi /// Macro definitions for manipulating DrvTSP_Msg 578*53ee8cc1Swenshuai.xi /// @{ 579*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_MASK 0x000000FF 580*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_SHFT 0 581*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_MASK 0x0000FF00 582*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_SHFT 8 583*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_MASK 0x000000FF 584*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_SHFT 0 585*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_NULL 0xFF 586*53ee8cc1Swenshuai.xi #define MSG_CBBUF_ID_MASK 0x000000FF 587*53ee8cc1Swenshuai.xi #define MSG_CBBUF_ID_SHFT 0 588*53ee8cc1Swenshuai.xi #define MSG_CBBUF_ID_NULL 0xFF 589*53ee8cc1Swenshuai.xi 590*53ee8cc1Swenshuai.xi /// @} 591*53ee8cc1Swenshuai.xi 592*53ee8cc1Swenshuai.xi #define TSP_MAX_SIGFLAG_NUM 10 593*53ee8cc1Swenshuai.xi #define TSP_MAX_PVRSIGFLAG_NUM 6 594*53ee8cc1Swenshuai.xi typedef struct 595*53ee8cc1Swenshuai.xi { 596*53ee8cc1Swenshuai.xi MS_U32 u32Eng; 597*53ee8cc1Swenshuai.xi MS_U32 u32EvtWaitOpt; 598*53ee8cc1Swenshuai.xi MS_U32 u32DmxEvt; 599*53ee8cc1Swenshuai.xi MS_U32 u32TspEvt; 600*53ee8cc1Swenshuai.xi 601*53ee8cc1Swenshuai.xi MS_U32 u32PvrBufFullFlag[TSP_MAX_PVRSIGFLAG_NUM]; 602*53ee8cc1Swenshuai.xi 603*53ee8cc1Swenshuai.xi MS_U32 u32SecRdyFlag[TSP_MAX_SIGFLAG_NUM]; 604*53ee8cc1Swenshuai.xi MS_U32 u32SecOvfFlag[TSP_MAX_SIGFLAG_NUM]; 605*53ee8cc1Swenshuai.xi }DrvTSP_IoSignal; 606*53ee8cc1Swenshuai.xi 607*53ee8cc1Swenshuai.xi typedef enum 608*53ee8cc1Swenshuai.xi { 609*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PID_FILTER_NUM = 0, // Get filter number 610*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_FILTER_NUM = 1, 611*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_BUF_NUM = 2, 612*53ee8cc1Swenshuai.xi 613*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR_ENG_NUM = 3, 614*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR_FILTER_NUM = 4, // Get pvr filter number 615*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR1_FILTER_NUM = 5, // Get pvr1 filter number 616*53ee8cc1Swenshuai.xi 617*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MMFI_AUDIO_FILTER_NUM = 6, // Get MM file in audio path filter number 618*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MMFI_V3D_FILTER_NUM = 7, // Get MM file in video 3D path filter number 619*53ee8cc1Swenshuai.xi 620*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_TSIF_NUM = 8, 621*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_DEMOD_NUM = 9, 622*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_TS_PAD_NUM = 10, 623*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_NUM = 11, 624*53ee8cc1Swenshuai.xi 625*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_CA_FLT_NUM = 12, // Get dscmb filter number 626*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_CA_KEY_NUM = 13, 627*53ee8cc1Swenshuai.xi 628*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FW_ALIGN = 14, 629*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_ALIGN = 15, 630*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_PITCH = 16, 631*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_BUF_ALIGN = 17, 632*53ee8cc1Swenshuai.xi 633*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR_ALIGN = 18, 634*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA_PATH_NUM = 19, 635*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SHAREKEY_FLT_RANGE = 20, 636*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA0_FLT_RANGE = 21, 637*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA1_FLT_RANGE = 22, 638*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA2_FLT_RANGE = 23, 639*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SHAREKEY_FLT1_RANGE = 24, 640*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SHAREKEY_FLT2_RANGE = 25, 641*53ee8cc1Swenshuai.xi 642*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_HW_TYPE = 26, 643*53ee8cc1Swenshuai.xi 644*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_RESOURCE_SIZE = 27, // Get the data structure size of private resource (share resource) 645*53ee8cc1Swenshuai.xi 646*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VFIFO_NUM = 28, // Get VFIFO support number 647*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_AFIFO_NUM = 29, // Get AFIFO support number 648*53ee8cc1Swenshuai.xi 649*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_HWPCR_SUPPORT = 30, // Get HWPCR support status 650*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PCRFLT_START_IDX = 31, // Get PCR start index 651*53ee8cc1Swenshuai.xi 652*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_HWWP_SET_NUM = 32, // Get TSP write protect set numbers 653*53ee8cc1Swenshuai.xi 654*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_DSCMB_ENG_NUM = 33, // Get DSCMB engine numbers 655*53ee8cc1Swenshuai.xi 656*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MAX_MERGESTR_NUM = 34, // Get Maxumum merge stream number 657*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MAX_SEC_FLT_DEPTH = 35, 658*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FW_BUF_SIZE = 36, 659*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FW_BUF_RANGE = 37, 660*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_BUF_RANGE = 38, 661*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_BUF_RANGE = 39, 662*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FIQ_NUM = 40, 663*53ee8cc1Swenshuai.xi 664*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_NULL, 665*53ee8cc1Swenshuai.xi } DrvTSP_Cap; 666*53ee8cc1Swenshuai.xi 667*53ee8cc1Swenshuai.xi typedef enum 668*53ee8cc1Swenshuai.xi { 669*53ee8cc1Swenshuai.xi E_DRVTSP_HW_STATUS = 0, 670*53ee8cc1Swenshuai.xi E_DRVTSP_HW_INIT, 671*53ee8cc1Swenshuai.xi E_DRVTSP_HW_ALIVE, 672*53ee8cc1Swenshuai.xi E_DRVTSP_HW_DEALIVE, 673*53ee8cc1Swenshuai.xi } DrvTSP_HW_Status; 674*53ee8cc1Swenshuai.xi 675*53ee8cc1Swenshuai.xi typedef enum 676*53ee8cc1Swenshuai.xi { 677*53ee8cc1Swenshuai.xi E_DRVTSP_SW_INIT = 0, 678*53ee8cc1Swenshuai.xi E_DRVTSP_SW_INIT_FAIL, 679*53ee8cc1Swenshuai.xi E_DRVTSP_SW_SUSPEND, 680*53ee8cc1Swenshuai.xi E_DRVTSP_SW_RESUME, 681*53ee8cc1Swenshuai.xi E_DRVTSP_SW_POWEROFF, 682*53ee8cc1Swenshuai.xi E_DRVTSP_SW_CLOSE, 683*53ee8cc1Swenshuai.xi E_DRVTSP_SW_EXIT, 684*53ee8cc1Swenshuai.xi } DrvTSP_SW_Status; 685*53ee8cc1Swenshuai.xi 686*53ee8cc1Swenshuai.xi // TSP event define 687*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_SELF 0x00000001 688*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_POLL 0x00000002 689*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_SELF 0x00000004 690*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_SELF 0x00000008 691*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_POLL 0x00000010 692*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_POLL 0x00000020 693*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FLT_FREE 0x00000040 694*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_SELF 0x00000080 695*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_POLL 0x00000100 696*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FWMSG 0x00000200 697*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_SELF ( TSP_TASK_EVENT_SECTION_SELF | \ 698*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR0_RDY_SELF | \ 699*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR1_RDY_SELF ) 700*53ee8cc1Swenshuai.xi 701*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_POLL ( TSP_TASK_EVENT_SECTION_POLL | \ 702*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR0_RDY_POLL | \ 703*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR1_RDY_POLL ) 704*53ee8cc1Swenshuai.xi 705*53ee8cc1Swenshuai.xi /// TSP notification function 706*53ee8cc1Swenshuai.xi typedef void (*P_DrvTSP_EvtCallback)(DrvTSP_Event eEvent, DrvTSP_Msg *pMsg); 707*53ee8cc1Swenshuai.xi 708*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 709*53ee8cc1Swenshuai.xi // Function and Variable 710*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 711*53ee8cc1Swenshuai.xi 712*53ee8cc1Swenshuai.xi // General API 713*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_InitLibResource(void *pu32ResMemAddr); 714*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Init(MS_PHY u32FWAddr, MS_U32 u32FWSize); // Set FW address and size 715*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reinit(MS_BOOL bHK); //for utopia 2.0 716*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PowerOff(void); 717*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Exit(void); 718*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Suspend(void); 719*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Resume(MS_PHY u32FWAddr, MS_U32 u32FWSize); 720*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Alive(MS_U32 u32EngId); 721*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset(void); 722*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_HW_Lock_Release(void); 723*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVPkt(MS_BOOL bEnable); 724*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVFifoPkt(DrvTSP_FltType flttype, MS_BOOL bEnable); 725*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FLT_LiveSrcSwitch(DrvTSP_FltType eFltSrcType); 726*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AU_BD_Mode_Enable(MS_BOOL bEnable); 727*53ee8cc1Swenshuai.xi 728*53ee8cc1Swenshuai.xi // Misc API 729*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDBGParam(MS_PHY phyAddr, MS_U32 u32Size, MS_U32 u32DbgWord); // for TSP f/w debug 730*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetOperateMode(MS_U32 u32EngId, DrvTSP_CtrlMode eCtrlMode); // Set TSP internal operate 731*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SelPad(MS_U32 u32EngId, DrvTSP_If eIf, DrvTSP_If_Set* pIfSet); // Set TSP input pad and ts0/ts1 732*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Reset(DrvTSP_FltType eFilterType, MS_BOOL bFlush); 733*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Status(DrvTSP_FltType eFilterType, MS_U32 *u32FifoLevel); 734*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Parl_BitOrderSwap(MS_U32 u32EngId, DrvTSP_If eIf, MS_BOOL bInvert); 735*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_FW_VER(MS_U32* u32FWVer); 736*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_Intr_Count(MS_U32* pu32Count); 737*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Scmb_Status(MS_U32 u32EngId, DrvTSP_Scmb_Level* pScmbLevel); 738*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Dscmb_Path(MS_U32 u32EngId, DrvTSP_DscmbCtrl *pScmbPath, MS_BOOL bSet); 739*53ee8cc1Swenshuai.xi 740*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLastErr(void); 741*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc(MS_U32 u32EngId, MS_U32 u32FltId, TSP_Result* pRet, DrvTSP_Event* pEvt); // for non-OS TSP scheduling 742*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetSTC(MS_U32 u32EngId, MS_U32 *pu32STC_32, MS_U32 *pu32STC); 743*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTC(MS_U32 u32EngId, MS_U32 u32STC_32, MS_U32 u32STC); 744*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTCOffset(MS_U32 u32EngId, MS_U32 u32Offset, MS_BOOL bAdd); 745*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPCR(MS_U32 u32EngId, MS_U32 *pu32Pcr_32, MS_U32 *pu32Pcr); 746*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Flt_GetState(MS_U32 u32EngId, MS_U32 u32FltId, DrvTSP_FltState *peState); // Get PIDFlt and SecFlt state 747*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetPacketMode(MS_U32 u32TSIf, DrvTSP_PacketMode eDrvPktMode); 748*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetMergeStrSyncByte(MS_U32 u32SrcID, MS_U8 u8SyncByte); 749*53ee8cc1Swenshuai.xi 750*53ee8cc1Swenshuai.xi #ifdef STC64_SUPPORT 751*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC64_Mode_Enable(MS_BOOL bEnable); 752*53ee8cc1Swenshuai.xi #endif 753*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STCClk_Adjust(MS_U32 u32EngId, MS_BOOL bUpClk, MS_U32 u32Percentage); 754*53ee8cc1Swenshuai.xi 755*53ee8cc1Swenshuai.xi 756*53ee8cc1Swenshuai.xi // NDS --> ECM 757*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetEcmIdx(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32EcmIdx); 758*53ee8cc1Swenshuai.xi 759*53ee8cc1Swenshuai.xi // PIDFlt API 760*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Alloc(MS_U32 u32EngId, DrvTSP_FltType eFilterType, MS_U32 *pu32PidFltId); 761*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Free(MS_U32 u32EngId, MS_U32 u32PidFltId); 762*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32 u32PID); 763*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32* pu32PID); 764*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SelSecFlt(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32 u32SecFltId); 765*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Enable(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_BOOL bEnable); 766*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetState(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltState *peState); 767*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_PVREnable(MS_U32 u32EngId, MS_U32 u32PidFltId); //only for debug 768*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChangeSource(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltType eFilterType); 769*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetScmbSts(DrvTSP_FltType FltSrc, MS_U32 u32FltGroupId, MS_U32 PidFltId, MS_U32 *pu32ScmbSts); 770*53ee8cc1Swenshuai.xi 771*53ee8cc1Swenshuai.xi 772*53ee8cc1Swenshuai.xi // SecFlt API 773*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Alloc(MS_U32 u32EngId, MS_U32 *pu32SecFltId); 774*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Free(MS_U32 u32EngId, MS_U32 u32SecFltId); 775*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetMode(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltMode eSecFltMode); 776*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetPattern(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U8 *pu8Match, MS_U8 *pu8Mask, MS_U8 *pu8NotMask); 777*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_ResetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId); 778*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY u32StartAddr, MS_U32 u32BufSize); 779*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReqCount(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32ReqCount); 780*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufStart(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32BufStart); 781*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufSize(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 *pu32BufSize); 782*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32ReadAddr); 783*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32WriteAddr); 784*53ee8cc1Swenshuai.xi 785*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY u32ReadAddr); 786*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Notify(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback); 787*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetState(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltState *peState); 788*53ee8cc1Swenshuai.xi 789*53ee8cc1Swenshuai.xi // PVR API 790*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_SetBuffer(MS_PHY u32BufStart0, MS_PHY u32BufStart1, MS_U32 u32BufSize0, MS_U32 u32BufSize1); 791*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Start(DrvTSP_RecMode eRecMode, MS_BOOL bStart); 792*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_GetWriteAddr(MS_PHY *pu32WriteAddr); 793*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Notify(DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback); 794*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_SetPacketMode(MS_BOOL bSet); 795*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampSetRecordStamp(MS_U32 u32Stamp); 796*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampGetRecordStamp(MS_U32* u32Stamp); 797*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampSetPlaybackStamp(MS_U32 u32Stamp); 798*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampGetPlaybackStamp(MS_U32* u32Stamp); 799*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStamp(MS_BOOL bEnable); 800*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Filein_Enable(MS_BOOL bBypassHD, MS_BOOL bEnable); //only for debug 801*53ee8cc1Swenshuai.xi 802*53ee8cc1Swenshuai.xi //PVRCA API 803*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_PidFlt_Reserved(MS_U32 Pid, MS_U8* pu8DmxId, MS_BOOL bReserved); 804*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_FLT1_StartRec(MS_BOOL bEnable); 805*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVRCA_Close(MS_U8 u8PVRId); 806*53ee8cc1Swenshuai.xi 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xi // PVR engine API 809*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetBuffer(MS_U8 u8PVRId, MS_PHY u32BufStart0, MS_PHY u32BufStart1, MS_U32 u32BufSize0, MS_U32 u32BufSize1); 810*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Start(MS_U8 u8PVRId, DrvTSP_RecMode eRecMode, MS_BOOL bStart); 811*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_GetWriteAddr(MS_U8 u8PVRId, MS_PHY *pu32WriteAddr); 812*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Notify(MS_U8 u8PVRId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback); 813*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPacketMode(MS_U8 u8PVRId, MS_BOOL bSet); 814*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampSetRecordStamp(MS_U8 u8PVRId, MS_U32 u32Stamp); 815*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampGetRecordStamp(MS_U8 u8PVRId,MS_U32* u32Stamp); 816*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPlaybackStampClk(MS_U32 u32EngId, MS_U32 u32Clk); 817*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetRecordStampClk(MS_U32 u32PvrId, MS_U32 u32Clk); 818*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_IsStart(MS_U32 u32PvrId, MS_BOOL *pbIsStart); 819*53ee8cc1Swenshuai.xi 820*53ee8cc1Swenshuai.xi // File API 821*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetAddr(MS_PHY u32StreamAddr); 822*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetSize(MS_U32 u32StreamSize); 823*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Start(DrvTSP_FileinMode eFileinMode); 824*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Stop(void); 825*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Pause(void); 826*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Resume(void); 827*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetState(DrvTSP_FileinState *peFileinState); 828*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetRate(MS_U32 u32Div2); 829*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetPacketMode(DrvTSP_PacketMode PKT_Mode); 830*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_GetSlot(MS_U32 *pu32EmptySlot); 831*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_Reset(void); 832*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CmdQFifo_Status(MS_U8 *pu8FifoLevel); 833*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_192BlockScheme_En(MS_BOOL bEnable); 834*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_PS_Path_Enable(DrvTSP_FileinMode eFileinMode); 835*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetReadAddr(MS_PHY *pu32ReadAddr); 836*53ee8cc1Swenshuai.xi 837*53ee8cc1Swenshuai.xi // Capacity query 838*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetCap(DrvTSP_Cap eCap, void* pOutput); 839*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetStatus(DrvTSP_HW_Status *HW_Status, DrvTSP_SW_Status *SW_Status); 840*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLibVer(const MSIF_Version **ppVersion); 841*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetDbgLevel(DrvTSP_DbgLevel DbgLevel); 842*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTSIFStatus(DrvTSP_If eIf, DrvTSP_If_Set* pIfSet, MS_U16 u16Clock); 843*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPesScmbSts(MS_U8 u8FltId, MS_U8 *pu8status); 844*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTsScmbSts(MS_U8 u8FltId, MS_U8 *pu8status); 845*53ee8cc1Swenshuai.xi 846*53ee8cc1Swenshuai.xi 847*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 848*53ee8cc1Swenshuai.xi // OBSOLETE 849*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 850*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Flt_SetOwner(MS_U32 u32EngId, MS_U32 u32FltIdStart, MS_U32 u32FltIdEnd, MS_BOOL bOwner); // Set/Get the ranges of filters used, which is for AEON/MHEG5 share TSP filters resource. 851*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChkOwner(MS_U32 u32EngId, MS_U32 u32PidFltId); 852*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetHK(MS_BOOL bIsHK); 853*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_IsAccess(MS_U32 u32Try); 854*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_UnlockAccess(void); 855*53ee8cc1Swenshuai.xi 856*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TTX_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32WriteAddr); // special case for TTX 857*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDbgPortInfo(MS_U32 u32DbgSel,MS_U32* u32DbgInfo); 858*53ee8cc1Swenshuai.xi 859*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_BurstLen(MS_U32 u32Len); 860*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetFileInTimeStamp(MS_U32* u32TSLen); 861*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetAVPause(MS_BOOL bSet); 862*53ee8cc1Swenshuai.xi #if 0 863*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ResetFileinTimestamp(void); 864*53ee8cc1Swenshuai.xi #endif 865*53ee8cc1Swenshuai.xi 866*53ee8cc1Swenshuai.xi //--VQ , MOBF -------------- 867*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetVQueBuf(MS_PHY u32VQBaseAddr, MS_U32 u32VQBufLen); 868*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueEnable(MS_BOOL bEnable); 869*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueReset(void); 870*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueue_OverflowInt_En(MS_BOOL bEnable); 871*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_VQ_Threshold(MS_U8 u8req_len); 872*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_VQStatus(MS_U32* pu32Status); 873*53ee8cc1Swenshuai.xi 874*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_PVRKey(MS_U32 u32Key0, MS_U32 u32Key1); 875*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_PVR1Key(MS_U32 u32Key0, MS_U32 u32Key1); 876*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_FileinKey(MS_U32 u32Key); 877*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_MOBF_PVR_Enable(MS_BOOL benable); 878*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_MOBF_FileIn_Enable(MS_BOOL benable); 879*53ee8cc1Swenshuai.xi 880*53ee8cc1Swenshuai.xi void MDrv_TSP_WriteProtect_Enable(MS_BOOL bEnable, MS_PHY* pu32StartAddr, MS_PHY* pu32EndAddr); 881*53ee8cc1Swenshuai.xi void MDrv_TSP_OrzWriteProtect_Enable(MS_BOOL bEnable, MS_PHY u32StartAddr, MS_PHY u32EndAddr); 882*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TSIF_Enable(DrvTSP_If tsif, MS_BOOL bEnable); 883*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ReadDropPktCnt(MS_U16* pu16ADropCnt, MS_U16* pu16VDropCnt); 884*53ee8cc1Swenshuai.xi 885*53ee8cc1Swenshuai.xi //--- Common Interface for TSP config and Api commands ------------// 886*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1 ,void *pData); 887*53ee8cc1Swenshuai.xi 888*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDataAddr(MS_PHY u32DataAddr, MS_U32 u32Size); 889*53ee8cc1Swenshuai.xi 890*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_U8 u8Opt); 891*53ee8cc1Swenshuai.xi 892*53ee8cc1Swenshuai.xi // --Debug table -------------- 893*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DisContiCnt(DrvTSP_DisContiCnt_info* tspInfo, MS_U32* pu32Cnt); 894*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DropPktCnt(DrvTSP_DropPktCnt_info* tspInfo, MS_U32* pu32Cnt); 895*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_LockPktCnt(DrvTSP_LockPktCnt_info* tspInfo, MS_U32* pu32Cnt); 896*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_AVPktCnt(DrvTSP_AVPktCnt_info* tspInfo, MS_U32* pu32Cnt); 897*53ee8cc1Swenshuai.xi 898*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecTEI_PktCount(DrvTSP_FltType FltSrc, MS_U32* pu32PktCnt); 899*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecTEI_PktCount(DrvTSP_FltType FltSrc); 900*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecDisCont_PktCount(MS_U32 u32FltID, MS_U32* pu32PktCnt); 901*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecDisCont_PktCount(MS_U32 u32FltID); 902*53ee8cc1Swenshuai.xi 903*53ee8cc1Swenshuai.xi //for 2K 904*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Wait_IoSignal(DrvTSP_IoSignal *pstIoSignal); 905*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc_IoSignal(DrvTSP_IoSignal *pstIoSignal); 906*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecEvents(MS_U32 u32Group, DrvTSP_IoSignal *pstIoSignal); 907*53ee8cc1Swenshuai.xi 908*53ee8cc1Swenshuai.xi 909*53ee8cc1Swenshuai.xi #ifdef __cplusplus 910*53ee8cc1Swenshuai.xi } // closing brace for extern "C" 911*53ee8cc1Swenshuai.xi #endif 912*53ee8cc1Swenshuai.xi 913*53ee8cc1Swenshuai.xi 914*53ee8cc1Swenshuai.xi #endif // _DRV_TSP_H_ 915