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 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 #define TSP_VER_1_0 0x0100UL 115*53ee8cc1Swenshuai.xi #define TSP_VER_2_0 0x0200UL 116*53ee8cc1Swenshuai.xi #define TSP_VER_3_0 0x0300UL 117*53ee8cc1Swenshuai.xi #define TSP_VER_4_0 0x0400UL 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi #define TSP_VERSION TSP_VER_3_0 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 122*53ee8cc1Swenshuai.xi // Driver Capability 123*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi #define DRVTSP_FILTER_DEPTH 16UL // TSP_FILTER_DEPTH 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi /// TSP byte address alignment unit 128*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN_UNIT 8UL 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi /// TSP byte address alignment macro 131*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN(_x) ALIGN_8((MS_U32)_x) 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 134*53ee8cc1Swenshuai.xi // Macro and Define 135*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 136*53ee8cc1Swenshuai.xi /// Transport stream null PID 137*53ee8cc1Swenshuai.xi #define DRVTSP_PID_NULL 0x1FFFUL 138*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIB_CODE {'T','S','P','3'} // Lib code 139*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIBVER {'1','3'} // LIB version 140*53ee8cc1Swenshuai.xi #define MSIF_TSP_BUILDNUM {'0','3'} // Build Number 141*53ee8cc1Swenshuai.xi #define MSIF_TSP_CHANGELIST {'0','0','6','0','7','2','6','6'} // P4 ChangeList Number 142*53ee8cc1Swenshuai.xi 143*53ee8cc1Swenshuai.xi #define TSP_DRV_VERSION /* Character String for DRV/API version */ \ 144*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 145*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 146*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 147*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 148*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 149*53ee8cc1Swenshuai.xi MSIF_CPU, \ 150*53ee8cc1Swenshuai.xi MSIF_TSP_LIB_CODE, /* IP__ */ \ 151*53ee8cc1Swenshuai.xi MSIF_TSP_LIBVER, /* 0.0 ~ Z.Z */ \ 152*53ee8cc1Swenshuai.xi MSIF_TSP_BUILDNUM, /* 00 ~ 99 */ \ 153*53ee8cc1Swenshuai.xi MSIF_TSP_CHANGELIST, /* CL# */ \ 154*53ee8cc1Swenshuai.xi MSIF_OS 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi 157*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 158*53ee8cc1Swenshuai.xi // Type and Structure 159*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 160*53ee8cc1Swenshuai.xi /// TSP DDI return value 161*53ee8cc1Swenshuai.xi 162*53ee8cc1Swenshuai.xi /// @name TSP_Result 163*53ee8cc1Swenshuai.xi /// @ref TSP_Result 164*53ee8cc1Swenshuai.xi /// return value 165*53ee8cc1Swenshuai.xi /// @{ 166*53ee8cc1Swenshuai.xi typedef enum 167*53ee8cc1Swenshuai.xi { 168*53ee8cc1Swenshuai.xi DRVTSP_FAIL = 0, 169*53ee8cc1Swenshuai.xi DRVTSP_OK, 170*53ee8cc1Swenshuai.xi DRVTSP_INVALID_PARAM, 171*53ee8cc1Swenshuai.xi DRVTSP_FUNC_ERROR, 172*53ee8cc1Swenshuai.xi DRVTSP_INVALID_SECFLT, 173*53ee8cc1Swenshuai.xi DRVTSP_NOT_SUPPORTED, 174*53ee8cc1Swenshuai.xi } TSP_Result; 175*53ee8cc1Swenshuai.xi 176*53ee8cc1Swenshuai.xi /// @} 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_ENABLE TRUE 179*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_SWITCH FALSE 180*53ee8cc1Swenshuai.xi 181*53ee8cc1Swenshuai.xi #if 0 182*53ee8cc1Swenshuai.xi /// TSP channel Type 183*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltType 184*53ee8cc1Swenshuai.xi { 185*53ee8cc1Swenshuai.xi // get TS from Live stream 186*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_VIDEO = 0x00000000, ///<\n 187*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_AUDIO , ///<\n 188*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_AUDIO2 , ///<\n 189*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PVR , ///<\n 190*53ee8cc1Swenshuai.xi 191*53ee8cc1Swenshuai.xi // Section Filter Group 192*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_SECTION_MASK = 0x20000000, ///<\n 193*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_SECTION , ///<\n 194*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PCR , ///<\n 195*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PES , ///<\n 196*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_PACKET , //[Reserved] 197*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_TELETEXT , 198*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_EMM , //[Reserved] 199*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_ECM , //[Reserved] 200*53ee8cc1Swenshuai.xi 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_SOURCE_TYPE_MASK = 0xC0000000, 203*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_SOURCE_TYPE_LIVE = 0x80000000, 204*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_SOURCE_TYPE_FILE = 0x40000000, 205*53ee8cc1Swenshuai.xi 206*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_TYPE_LAST_ENUM 207*53ee8cc1Swenshuai.xi 208*53ee8cc1Swenshuai.xi } DrvTSP_FltType; 209*53ee8cc1Swenshuai.xi #endif 210*53ee8cc1Swenshuai.xi 211*53ee8cc1Swenshuai.xi #define DrvTSP_FltType MS_U32 212*53ee8cc1Swenshuai.xi // get TS from Live stream 213*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO 0x00000000UL ///<\n 214*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO 0x00000001UL ///<\n 215*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO2 0x00000002UL ///<\n 216*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PVR 0x00000003UL ///<\n 217*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PVR1 0x00000004UL 218*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO3D 0x00000008UL 219*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_CB 0x00000009UL 220*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO3 0x0000000AUL 221*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO4 0x0000000BUL 222*53ee8cc1Swenshuai.xi 223*53ee8cc1Swenshuai.xi // Section Filter Group 224*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_MASK 0x01000000UL ///<\n 225*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION 0x01000001UL ///<\n 226*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PCR 0x01000002UL ///<\n 227*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PES 0x01000003UL ///<\n 228*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PACKET 0x01000004UL //[Reserved] 229*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_TELETEXT 0x01000005UL 230*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_EMM 0x01000006UL //[Reserved] 231*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_ECM 0x01000007UL //[Reserved] 232*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_VER 0x01000008UL 233*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_NO_PUSI 0x01000009UL 234*53ee8cc1Swenshuai.xi 235*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_LAST_ENUM 0x0100000AUL 236*53ee8cc1Swenshuai.xi 237*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MASK 0xF2FC0F00UL 238*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_MASK 0xC0FC0000UL 239*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVE 0x80000000UL 240*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE 0x40000000UL 241*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS1 0x00800000UL 242*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS2 0x00400000UL 243*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TSCB 0x00200000UL 244*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE1 0x00100000UL // file1 fource from TS1 245*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE2 0x00080000UL // file2 fource from TS2 246*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVEB E_DRVTSP_FLT_SOURCE_TYPE_FILE 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi // Source ID define. For merge stream 249*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCEID_SHIFT 8UL 250*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCEID_MASK 0x00000F00UL 251*53ee8cc1Swenshuai.xi 252*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_DUPSEC 0x02000000UL // Only for section filter duplicate patch 253*53ee8cc1Swenshuai.xi 254*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SCMB_MASK 0x30000000UL 255*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB 0x20000000UL 256*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB_SHAREKEY 0x10000000UL 257*53ee8cc1Swenshuai.xi 258*53ee8cc1Swenshuai.xi #define DrvTSP_FltMode MS_U32 259*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CONTI 0x00000000UL 260*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_ONESHOT 0x00000001UL 261*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_PESSCMCHK 0x00000003UL //Only for PES type checking SCMB status 262*53ee8cc1Swenshuai.xi 263*53ee8cc1Swenshuai.xi // optional 264*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CRCCHK 0x00000002UL 265*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_AUTO_ADDR 0x00000004UL // auto move read point mode 266*53ee8cc1Swenshuai.xi 267*53ee8cc1Swenshuai.xi #define DrvTSP_PKTDMXSrcType MS_U32 268*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX0 0x00000001UL 269*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXFILE 0x00000002UL 270*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX1 0x00000003UL 271*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX2 0x00000004UL 272*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI0 0x00000006UL 273*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI1 0x00000007UL 274*53ee8cc1Swenshuai.xi 275*53ee8cc1Swenshuai.xi //-------------------------------------------------- 276*53ee8cc1Swenshuai.xi // Debug table 277*53ee8cc1Swenshuai.xi typedef enum 278*53ee8cc1Swenshuai.xi { 279*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_NONE, 280*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_CLEAR, 281*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_ENABLE, 282*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_CMD_DISABLE, 283*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Cmd; 284*53ee8cc1Swenshuai.xi 285*53ee8cc1Swenshuai.xi typedef enum 286*53ee8cc1Swenshuai.xi { 287*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_TS0, 288*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_TS1, 289*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_TS2, 290*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_SRC_FILE, 291*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Src; 292*53ee8cc1Swenshuai.xi 293*53ee8cc1Swenshuai.xi typedef enum 294*53ee8cc1Swenshuai.xi { 295*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_TSIF_TS0, 296*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_TSIF_TS1, 297*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_TSIF_TSCB, 298*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Tsif; 299*53ee8cc1Swenshuai.xi 300*53ee8cc1Swenshuai.xi typedef enum 301*53ee8cc1Swenshuai.xi { 302*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_VIDEO, 303*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_AUDIO, 304*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_VIDEO3D, 305*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_AUDIOB, 306*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_AUDIOC, 307*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_FIFO_AUDIOD, 308*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo; 309*53ee8cc1Swenshuai.xi 310*53ee8cc1Swenshuai.xi typedef enum 311*53ee8cc1Swenshuai.xi { 312*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_0, 313*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_0_FILE, 314*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_1, 315*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_PKT_DEMUX_2, 316*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_MMFI0, 317*53ee8cc1Swenshuai.xi E_DRVTSP_DEBUG_MMFI1, 318*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo_Src; 319*53ee8cc1Swenshuai.xi 320*53ee8cc1Swenshuai.xi /// TSP channel state bit flags 321*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltState 322*53ee8cc1Swenshuai.xi { 323*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_FREE = 0x00000000UL, ///<\n 324*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_ALLOC = 0x00000001UL, ///<\n 325*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_ENABLE = 0x00000002UL, ///<\n 326*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_SCRAMBLED = 0x00000004UL, //[TODO] 327*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_STREAM_AVAIL = 0x00000008UL, //[TODO] 328*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_SCRAMBLED_ORG = 0x00000010UL, 329*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_OVERFLOW = 0x00010000UL, //[Reserved] 330*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_SUSPEND = 0x20000000UL, 331*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_CBRUN = 0x40000000UL, // Callback processing 332*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_FREEING = 0x80000000UL, // Free filter is running 333*53ee8cc1Swenshuai.xi E_DRVTSP_FLT_STATE_NA = 0xFFFFFFFFUL, 334*53ee8cc1Swenshuai.xi } DrvTSP_FltState; 335*53ee8cc1Swenshuai.xi 336*53ee8cc1Swenshuai.xi 337*53ee8cc1Swenshuai.xi /// TSP record mode 338*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_RecMode 339*53ee8cc1Swenshuai.xi { 340*53ee8cc1Swenshuai.xi //[TODO] rename REC_MODE to PVR_MODE 341*53ee8cc1Swenshuai.xi 342*53ee8cc1Swenshuai.xi /// Record ENG0 by @ref E_DRVTSP_FLT_TYPE_PVR 343*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_FLTTYPE = 0x00000000UL, // TSP_PVR_CTRL_ENG(0) 344*53ee8cc1Swenshuai.xi /// Record ENG1 by @ref E_DRVTSP_FLT_TYPE_PVR 345*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG1_FLTTYPE = 0x00010000UL, // TSP_PVR_CTRL_ENG(1) 346*53ee8cc1Swenshuai.xi /// Record ENG0 bypass PID fliter 347*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_BYPASS = 0x00000002UL, // TSP_PVR_CTRL_ENG(0) + TSP_PVR_CTRL_BYPASS 348*53ee8cc1Swenshuai.xi /// Record ENG1 bypass PID fliter 349*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG1_BYPASS = 0x00010002UL, // TSP_PVR_CTRL_ENG(1) + TSP_PVR_CTRL_BYPASS 350*53ee8cc1Swenshuai.xi 351*53ee8cc1Swenshuai.xi E_DRVTSP_REC_MODE_ENG0_FLT1CA = 0x00000004UL, 352*53ee8cc1Swenshuai.xi } DrvTSP_RecMode; 353*53ee8cc1Swenshuai.xi 354*53ee8cc1Swenshuai.xi /// TSP Control Mode 355*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_CtrlMode 356*53ee8cc1Swenshuai.xi { 357*53ee8cc1Swenshuai.xi /// Input From Memory 358*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_MEM, 359*53ee8cc1Swenshuai.xi /// Input From Stream Source 0 360*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS0, 361*53ee8cc1Swenshuai.xi /// Input From Stream Source 1 362*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS1, 363*53ee8cc1Swenshuai.xi /// Input From Stream Source 2 364*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS2, 365*53ee8cc1Swenshuai.xi /// Input From Stream Source 3 366*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TS3, 367*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR descrambled stream 368*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR_CA, 369*53ee8cc1Swenshuai.xi /// Enable bounding option for PVR1 descrambled stream 370*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_PVR1_CA, 371*53ee8cc1Swenshuai.xi /// Input TSFI and source is Live 372*53ee8cc1Swenshuai.xi E_DRVTSP_CTRL_MODE_TSFI_LIVE, 373*53ee8cc1Swenshuai.xi } DrvTSP_CtrlMode; 374*53ee8cc1Swenshuai.xi 375*53ee8cc1Swenshuai.xi /// TSP input pad selection 376*53ee8cc1Swenshuai.xi typedef enum 377*53ee8cc1Swenshuai.xi { 378*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT0 = 0x0, 379*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT1 = 0x1, 380*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT2 = 0x2, 381*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT3 = 0x3, 382*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT4 = 0x4, 383*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT5 = 0x5, 384*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_TSO = 0x6, 385*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_DEMOD = 0x7, 386*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT0_3WIRE = 0x80, 387*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT1_3WIRE = 0x81, 388*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT2_3WIRE = 0x82, 389*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT3_3WIRE = 0x83, 390*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT4_3WIRE = 0x84, 391*53ee8cc1Swenshuai.xi E_DRVTSP_PAD_EXT_INPUT5_3WIRE = 0x85, 392*53ee8cc1Swenshuai.xi } DrvTSP_PadIn; 393*53ee8cc1Swenshuai.xi 394*53ee8cc1Swenshuai.xi #define DrvTSP_PadOut MS_U32 395*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_NONE 0x00000000UL 396*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_PAD1 0x00000001UL 397*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_PAD3 0x00000003UL 398*53ee8cc1Swenshuai.xi 399*53ee8cc1Swenshuai.xi #define DrvTSP_PadOut_Mode MS_U32 400*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_MODE_MASK 0x70000000UL 401*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_DMD 0x00000000UL 402*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_S2P 0x10000000UL 403*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_TSO 0x20000000UL 404*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_S2P1 0x40000000UL 405*53ee8cc1Swenshuai.xi 406*53ee8cc1Swenshuai.xi 407*53ee8cc1Swenshuai.xi /// TSP interface 408*53ee8cc1Swenshuai.xi typedef enum 409*53ee8cc1Swenshuai.xi { 410*53ee8cc1Swenshuai.xi E_DRVTSP_IF_TS0 = 0x0, //TSIF0 411*53ee8cc1Swenshuai.xi E_DRVTSP_IF_TS1 = 0x1, //TSIF1 412*53ee8cc1Swenshuai.xi E_DRVTSP_IF_TS2 = 0x2, //TSIF2 413*53ee8cc1Swenshuai.xi E_DRVTSP_IF_TS3 = 0x3, //TSIF3 414*53ee8cc1Swenshuai.xi E_DRVTSP_IF_NUM = 4, 415*53ee8cc1Swenshuai.xi E_DRVTSP_IF_FI = 0x80, //TSFI (version 3.0 New) 416*53ee8cc1Swenshuai.xi 417*53ee8cc1Swenshuai.xi } DrvTSP_If; 418*53ee8cc1Swenshuai.xi 419*53ee8cc1Swenshuai.xi typedef struct 420*53ee8cc1Swenshuai.xi { 421*53ee8cc1Swenshuai.xi DrvTSP_PadIn ePad; 422*53ee8cc1Swenshuai.xi MS_BOOL bClkInv; 423*53ee8cc1Swenshuai.xi MS_BOOL bExtSync; 424*53ee8cc1Swenshuai.xi MS_BOOL bParallel; 425*53ee8cc1Swenshuai.xi } DrvTSP_If_Set; 426*53ee8cc1Swenshuai.xi 427*53ee8cc1Swenshuai.xi /// FQ interface 428*53ee8cc1Swenshuai.xi typedef enum 429*53ee8cc1Swenshuai.xi { 430*53ee8cc1Swenshuai.xi E_DRVFQ_SRC_TSIF0 = 0x00, 431*53ee8cc1Swenshuai.xi E_DRVFQ_SRC_TSIF1 = 0x01, 432*53ee8cc1Swenshuai.xi E_DRVFQ_SRC_TSIF2 = 0x02, 433*53ee8cc1Swenshuai.xi E_DRVFQ_SRC_TSIF3 = 0x03, 434*53ee8cc1Swenshuai.xi 435*53ee8cc1Swenshuai.xi E_DRVFQ_SRC_TSIFFI = 0x07, 436*53ee8cc1Swenshuai.xi E_DRVFQ_SRC_DEFAULT = 0xFF, 437*53ee8cc1Swenshuai.xi } DrvFQ_SrcIf; 438*53ee8cc1Swenshuai.xi 439*53ee8cc1Swenshuai.xi //---------------------------------- 440*53ee8cc1Swenshuai.xi /// DMX debug table information structure 441*53ee8cc1Swenshuai.xi //---------------------------------- 442*53ee8cc1Swenshuai.xi typedef struct 443*53ee8cc1Swenshuai.xi { 444*53ee8cc1Swenshuai.xi DrvTSP_Debug_Cmd TspCmd; 445*53ee8cc1Swenshuai.xi DrvTSP_Debug_Src TspSrc; 446*53ee8cc1Swenshuai.xi DrvTSP_Debug_Fifo TspFifo; 447*53ee8cc1Swenshuai.xi } DrvTSP_DisContiCnt_info, DrvTSP_DropPktCnt_info; 448*53ee8cc1Swenshuai.xi 449*53ee8cc1Swenshuai.xi typedef struct 450*53ee8cc1Swenshuai.xi { 451*53ee8cc1Swenshuai.xi DrvTSP_Debug_Cmd TspCmd; 452*53ee8cc1Swenshuai.xi DrvTSP_Debug_Tsif TspTsif; 453*53ee8cc1Swenshuai.xi } DrvTSP_LockPktCnt_info; 454*53ee8cc1Swenshuai.xi 455*53ee8cc1Swenshuai.xi typedef struct 456*53ee8cc1Swenshuai.xi { 457*53ee8cc1Swenshuai.xi DrvTSP_Debug_Cmd TspCmd; 458*53ee8cc1Swenshuai.xi DrvTSP_Debug_Fifo TspFifo; 459*53ee8cc1Swenshuai.xi DrvTSP_Debug_Fifo_Src TspFifoSrc; 460*53ee8cc1Swenshuai.xi } DrvTSP_AVPktCnt_info; 461*53ee8cc1Swenshuai.xi 462*53ee8cc1Swenshuai.xi // must alignment with TSP_TSDMA_CTRL_XXX in regTSP.h 463*53ee8cc1Swenshuai.xi typedef enum 464*53ee8cc1Swenshuai.xi { 465*53ee8cc1Swenshuai.xi /// TSP Engine 0 Transport Stream 466*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_TS = 0x00000000UL, //TSP_TSDMA_CTRL_ENG0 467*53ee8cc1Swenshuai.xi /// TSP Engine 0 Video PES Only 468*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_VPES = 0x00000004UL, //TSP_TSDMA_CTRL_VPES0 469*53ee8cc1Swenshuai.xi /// TSP Engine 0 Audio PES Only 470*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_APES = 0x00000008UL, //TSP_TSDMA_CTRL_APES0 471*53ee8cc1Swenshuai.xi /// TSP Engine 0 Audio2 PES Only 472*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_A2PES = 0x00000010UL, //TSP_TSDMA_CTRL_A2PES0 473*53ee8cc1Swenshuai.xi /// TSP Engine 0 Video3D PES Only 474*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_V3DPES = 0x00000020UL, //TSP_TSDMA_CTRL_V3DPES0 475*53ee8cc1Swenshuai.xi /// TSP Engine 0 Video3D PES Only 476*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_A3PES = 0x00000040UL, //TSP_TSDMA_CTRL_A3PES0 477*53ee8cc1Swenshuai.xi /// TSP Engine 0 Video3D PES Only 478*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_MODE_ENG0_A4PES = 0x00000080UL, //TSP_TSDMA_CTRL_A4PES0 479*53ee8cc1Swenshuai.xi 480*53ee8cc1Swenshuai.xi } DrvTSP_FileinMode; 481*53ee8cc1Swenshuai.xi 482*53ee8cc1Swenshuai.xi 483*53ee8cc1Swenshuai.xi typedef enum 484*53ee8cc1Swenshuai.xi { 485*53ee8cc1Swenshuai.xi /// Command Queue is Idle 486*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_STATE_IDLE = 0000000000UL, 487*53ee8cc1Swenshuai.xi /// Command Queue is Busy 488*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_STATE_BUSY = 0x00000001UL, 489*53ee8cc1Swenshuai.xi /// Command Queue is Paused. 490*53ee8cc1Swenshuai.xi E_DRVTSP_FILEIN_STATE_PAUSE = 0x00000002UL, 491*53ee8cc1Swenshuai.xi } DrvTSP_FileinState; 492*53ee8cc1Swenshuai.xi 493*53ee8cc1Swenshuai.xi /// TSP TEI Remove Error Packet Infomation 494*53ee8cc1Swenshuai.xi typedef enum 495*53ee8cc1Swenshuai.xi { 496*53ee8cc1Swenshuai.xi E_TSP_DRV_TEI_REMOVE_AUDIO_PKT, ///< DMX TEI Remoce Audio Packet 497*53ee8cc1Swenshuai.xi E_TSP_DRV_TEI_REMOVE_VIDEO_PKT, ///< DMX TEI Remoce Video Packet 498*53ee8cc1Swenshuai.xi 499*53ee8cc1Swenshuai.xi E_TSP_DRV_TEI_REMOVE_PKT0_LIVE, 500*53ee8cc1Swenshuai.xi E_TSP_DRV_TEI_REMOVE_PKT0_FILE, 501*53ee8cc1Swenshuai.xi E_TSP_DRV_TEI_REMOVE_PKT1, 502*53ee8cc1Swenshuai.xi E_TSP_DRV_TEI_REMOVE_PKT2, 503*53ee8cc1Swenshuai.xi 504*53ee8cc1Swenshuai.xi }TSP_DRV_TEI_RmPktType; 505*53ee8cc1Swenshuai.xi 506*53ee8cc1Swenshuai.xi #if 0 507*53ee8cc1Swenshuai.xi /// TSP notification event 508*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_Event 509*53ee8cc1Swenshuai.xi { 510*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_DATA_INIT = 0x00000000, 511*53ee8cc1Swenshuai.xi /// Section Data Ready 512*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_DATA_READY = 0x00000001, 513*53ee8cc1Swenshuai.xi /// Section Buffer Overflow 514*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_BUF_OVERFLOW = 0x00000002, 515*53ee8cc1Swenshuai.xi /// PVR Buffer is Full 516*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_PVRBUF_FULL = 0x00000010, 517*53ee8cc1Swenshuai.xi /// PVR Double Buffer Overflow 518*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_PVRBUF_OVERFLOW = 0x00000020, 519*53ee8cc1Swenshuai.xi 520*53ee8cc1Swenshuai.xi 521*53ee8cc1Swenshuai.xi /// TSP self task callback // optional --> default is CB by poll 522*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_CB_MASK = 0x80000000, 523*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_CB_POLL = 0x00000000, 524*53ee8cc1Swenshuai.xi E_DRVTSP_EVENT_CB_SELF = 0x80000000, 525*53ee8cc1Swenshuai.xi } DrvTSP_Event; 526*53ee8cc1Swenshuai.xi #endif 527*53ee8cc1Swenshuai.xi 528*53ee8cc1Swenshuai.xi #define DrvTSP_Event MS_U32 529*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_INIT 0x00000000UL 530*53ee8cc1Swenshuai.xi /// Section Data Ready 531*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_READY 0x00000001UL 532*53ee8cc1Swenshuai.xi /// Section Buffer Overflow 533*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_BUF_OVERFLOW 0x00000002UL 534*53ee8cc1Swenshuai.xi /// Section Buffer CRC error 535*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_SEC_CRCERR 0x00000004UL 536*53ee8cc1Swenshuai.xi /// PVR Buffer is Full 537*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_FULL 0x00000010UL 538*53ee8cc1Swenshuai.xi /// PVR Double Buffer Overflow 539*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_OVERFLOW 0x00000020UL 540*53ee8cc1Swenshuai.xi /// Channel Browser Buffer is Full 541*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_FULL 0x00000040UL 542*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_OVERFLOW 0x00000080UL 543*53ee8cc1Swenshuai.xi ///PVR2 Buffer is Full 544*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVR2BUF_FULL 0x00000100UL 545*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVR2BUF_OVERFLOW 0x00000200UL 546*53ee8cc1Swenshuai.xi 547*53ee8cc1Swenshuai.xi 548*53ee8cc1Swenshuai.xi /// TSP self task callback // optional --> default is CB by poll 549*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_MASK 0x80000000UL 550*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_POLL 0x00000000UL 551*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_SELF 0x80000000UL 552*53ee8cc1Swenshuai.xi 553*53ee8cc1Swenshuai.xi /// TSP file in Packet mode 554*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_PacketMode 555*53ee8cc1Swenshuai.xi { 556*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_188 = 0x00000000UL, 557*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_192 = 0x00000001UL, 558*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_204 = 0x00000002UL, 559*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_130 = 0x00000003UL, // RVU 560*53ee8cc1Swenshuai.xi E_DRVTSP_PKTMODE_134 = 0x00000004UL, // RVU with timestamp 561*53ee8cc1Swenshuai.xi } DrvTSP_PacketMode; 562*53ee8cc1Swenshuai.xi 563*53ee8cc1Swenshuai.xi /// TSP notification event message 564*53ee8cc1Swenshuai.xi typedef struct //_DrvTSP_Msg 565*53ee8cc1Swenshuai.xi { 566*53ee8cc1Swenshuai.xi /// Union data type of message 567*53ee8cc1Swenshuai.xi union 568*53ee8cc1Swenshuai.xi { 569*53ee8cc1Swenshuai.xi /// FltInfo message 570*53ee8cc1Swenshuai.xi /// - Byte[0] : Section filter id 571*53ee8cc1Swenshuai.xi /// - Byte[1] : TSP id 572*53ee8cc1Swenshuai.xi MS_U32 FltInfo; 573*53ee8cc1Swenshuai.xi /// PvrBufId 574*53ee8cc1Swenshuai.xi /// - Byte[0] : PVR buffer id 575*53ee8cc1Swenshuai.xi /// - Byte[1] : PVR engine id 576*53ee8cc1Swenshuai.xi MS_U32 PvrBufId; 577*53ee8cc1Swenshuai.xi }; 578*53ee8cc1Swenshuai.xi 579*53ee8cc1Swenshuai.xi } DrvTSP_Msg; 580*53ee8cc1Swenshuai.xi 581*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_DbgLevel 582*53ee8cc1Swenshuai.xi { 583*53ee8cc1Swenshuai.xi E_DRVTSP_DBG_Release = 0, 584*53ee8cc1Swenshuai.xi E_DRVTSP_DBG_L1, // display error msg 585*53ee8cc1Swenshuai.xi E_DRVTSP_DBG_L2, // display error msg and enter while(1) 586*53ee8cc1Swenshuai.xi } DrvTSP_DbgLevel; 587*53ee8cc1Swenshuai.xi 588*53ee8cc1Swenshuai.xi /// @name DrvTSP_Msg 589*53ee8cc1Swenshuai.xi /// Macro definitions for manipulating DrvTSP_Msg 590*53ee8cc1Swenshuai.xi /// @{ 591*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_MASK 0x000000FFUL 592*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_SHFT 0UL 593*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_MASK 0x0000FF00UL 594*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_SHFT 8UL 595*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_MASK 0x000000FFUL 596*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_SHFT 0UL 597*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_NULL 0xFFUL 598*53ee8cc1Swenshuai.xi #define MSG_PVR_ID_MASK 0x0000FF00UL 599*53ee8cc1Swenshuai.xi #define MSG_PVR_ID_SHFT 8UL 600*53ee8cc1Swenshuai.xi 601*53ee8cc1Swenshuai.xi /// @} 602*53ee8cc1Swenshuai.xi 603*53ee8cc1Swenshuai.xi #define TSP_MAX_SIGFLAG_NUM 10UL 604*53ee8cc1Swenshuai.xi #define TSP_MAX_PVRSIGFLAG_NUM 10UL 605*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 606*53ee8cc1Swenshuai.xi { 607*53ee8cc1Swenshuai.xi MS_U32 u32Eng; 608*53ee8cc1Swenshuai.xi MS_U32 u32EvtWaitOpt; 609*53ee8cc1Swenshuai.xi MS_U32 u32DmxEvt; 610*53ee8cc1Swenshuai.xi MS_U32 u32TspEvt; 611*53ee8cc1Swenshuai.xi 612*53ee8cc1Swenshuai.xi MS_U32 u32PvrBufFullFlag[TSP_MAX_PVRSIGFLAG_NUM]; 613*53ee8cc1Swenshuai.xi 614*53ee8cc1Swenshuai.xi MS_U32 u32SecRdyFlag[TSP_MAX_SIGFLAG_NUM]; 615*53ee8cc1Swenshuai.xi MS_U32 u32SecOvfFlag[TSP_MAX_SIGFLAG_NUM]; 616*53ee8cc1Swenshuai.xi MS_U32 u32SecCrcErrFlag[TSP_MAX_SIGFLAG_NUM]; 617*53ee8cc1Swenshuai.xi 618*53ee8cc1Swenshuai.xi MS_S32 s32KerModeTspEvtId; //For kernel mode, every user callback process must has itself eventid in multiple process support 619*53ee8cc1Swenshuai.xi MS_U32 u32TblIndex; 620*53ee8cc1Swenshuai.xi }DrvTSP_IoSignal; 621*53ee8cc1Swenshuai.xi 622*53ee8cc1Swenshuai.xi 623*53ee8cc1Swenshuai.xi typedef enum 624*53ee8cc1Swenshuai.xi { 625*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PID_FILTER_NUM = 0, // Get filter number 626*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_FILTER_NUM = 1, 627*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_BUF_NUM = 2, 628*53ee8cc1Swenshuai.xi 629*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR_ENG_NUM = 3, 630*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR_FILTER_NUM = 4, // Get pvr filter number 631*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR1_FILTER_NUM = 5, // Get pvr1 filter number 632*53ee8cc1Swenshuai.xi 633*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MMFI0_FILTER_NUM = 6, // Get MMFI0 filter number 634*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MMFI1_FILTER_NUM = 7, // Get MMFI1 filter number 635*53ee8cc1Swenshuai.xi 636*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_TSIF_NUM = 8, 637*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_DEMOD_NUM = 9, 638*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_TS_PAD_NUM = 10, 639*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_NUM = 11, 640*53ee8cc1Swenshuai.xi 641*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_CA_FLT_NUM = 12, // Get dscmb filter number 642*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_CA_KEY_NUM = 13, 643*53ee8cc1Swenshuai.xi 644*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FW_ALIGN = 14, 645*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_ALIGN = 15, 646*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_PITCH = 16, 647*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_BUF_ALIGN = 17, 648*53ee8cc1Swenshuai.xi 649*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVR_ALIGN = 18, 650*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA_PATH_NUM = 19, 651*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SHAREKEY_FLT_RANGE = 20, 652*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA0_FLT_RANGE = 21, 653*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA1_FLT_RANGE = 22, 654*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PVRCA2_FLT_RANGE = 23, 655*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SHAREKEY_FLT1_RANGE = 24, 656*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SHAREKEY_FLT2_RANGE = 25, 657*53ee8cc1Swenshuai.xi 658*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_HW_TYPE = 26, 659*53ee8cc1Swenshuai.xi 660*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_RESOURCE_SIZE = 27, // Get the data structure size of private resource (share resource) 661*53ee8cc1Swenshuai.xi 662*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VFIFO_NUM = 28, // Get VFIFO support number 663*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_AFIFO_NUM = 29, // Get AFIFO support number 664*53ee8cc1Swenshuai.xi 665*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_HWPCR_SUPPORT = 30, // Get HWPCR support status 666*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_PCRFLT_START_IDX = 31, // Get PCR start index 667*53ee8cc1Swenshuai.xi 668*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_HWWP_SET_NUM = 32, // Get TSP write protect set numbers 669*53ee8cc1Swenshuai.xi 670*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_DSCMB_ENG_NUM = 33, // Get DSCMB engine numbers 671*53ee8cc1Swenshuai.xi 672*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MAX_MERGESTR_NUM = 34, // Get Maxumum merge stream number 673*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_MAX_SEC_FLT_DEPTH = 35, 674*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FW_BUF_SIZE = 36, 675*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FW_BUF_RANGE = 37, 676*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_VQ_BUF_RANGE = 38, 677*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_SEC_BUF_RANGE = 39, 678*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_FIQ_NUM = 40, 679*53ee8cc1Swenshuai.xi E_DRVTSP_CAP_NULL, 680*53ee8cc1Swenshuai.xi } DrvTSP_Cap; 681*53ee8cc1Swenshuai.xi 682*53ee8cc1Swenshuai.xi typedef enum 683*53ee8cc1Swenshuai.xi { 684*53ee8cc1Swenshuai.xi E_DRVTSP_HW_STATUS = 0, 685*53ee8cc1Swenshuai.xi E_DRVTSP_HW_INIT, 686*53ee8cc1Swenshuai.xi E_DRVTSP_HW_ALIVE, 687*53ee8cc1Swenshuai.xi E_DRVTSP_HW_DEALIVE, 688*53ee8cc1Swenshuai.xi } DrvTSP_HW_Status; 689*53ee8cc1Swenshuai.xi 690*53ee8cc1Swenshuai.xi typedef enum 691*53ee8cc1Swenshuai.xi { 692*53ee8cc1Swenshuai.xi E_DRVTSP_SW_INIT = 0, 693*53ee8cc1Swenshuai.xi E_DRVTSP_SW_INIT_FAIL, 694*53ee8cc1Swenshuai.xi E_DRVTSP_SW_SUSPEND, 695*53ee8cc1Swenshuai.xi E_DRVTSP_SW_RESUME, 696*53ee8cc1Swenshuai.xi E_DRVTSP_SW_POWEROFF, 697*53ee8cc1Swenshuai.xi E_DRVTSP_SW_CLOSE, 698*53ee8cc1Swenshuai.xi E_DRVTSP_SW_EXIT, 699*53ee8cc1Swenshuai.xi } DrvTSP_SW_Status; 700*53ee8cc1Swenshuai.xi 701*53ee8cc1Swenshuai.xi // legacy 702*53ee8cc1Swenshuai.xi typedef enum{ 703*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_NONE = 0x00000000UL, 704*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_TS = 0x00000001UL, 705*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_PES = 0x00000002UL, 706*53ee8cc1Swenshuai.xi E_DRVTSP_SCMB_TS_PES = (E_DRVTSP_SCMB_TS| E_DRVTSP_SCMB_PES), 707*53ee8cc1Swenshuai.xi } DrvTSP_Scmb_Level; 708*53ee8cc1Swenshuai.xi 709*53ee8cc1Swenshuai.xi //---------------- 710*53ee8cc1Swenshuai.xi //For Tee 711*53ee8cc1Swenshuai.xi //---------------- 712*53ee8cc1Swenshuai.xi #ifdef SECURE_PVR_ENABLE 713*53ee8cc1Swenshuai.xi typedef enum 714*53ee8cc1Swenshuai.xi { 715*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_NULL, 716*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_FW_LoadCode, //None parameters 717*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_SET_VqBuf, //None parameters 718*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_SET_PvrBuf, //Param1: Engine id, Param2: Option 1 is reset buffer to 0 719*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_SET_FileinBuf, //Param1: Engine id, Param2: Buf address, Param3: Buf size 720*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_GET_PvrWPtr, //Param1: Engine id, Param2: Return Buf address 721*53ee8cc1Swenshuai.xi E_DRVTSP_REE_TO_TEE_CMD_SET_MMFIBuf //Param1: Engine id, Param2: Return Buf address 722*53ee8cc1Swenshuai.xi } TSP_REE_TO_TEE_CMD_TYPE; 723*53ee8cc1Swenshuai.xi 724*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 725*53ee8cc1Swenshuai.xi { 726*53ee8cc1Swenshuai.xi MS_U32 u32BufId; 727*53ee8cc1Swenshuai.xi MS_U32 u32BufOpt; 728*53ee8cc1Swenshuai.xi MS_U32 u32BufSize; 729*53ee8cc1Swenshuai.xi MS_PHY phyBufAddr; 730*53ee8cc1Swenshuai.xi }DrvTSP_SecureBuf; 731*53ee8cc1Swenshuai.xi 732*53ee8cc1Swenshuai.xi #endif //SECURE_PVR_ENABLE 733*53ee8cc1Swenshuai.xi 734*53ee8cc1Swenshuai.xi // TSP event define 735*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_SELF 0x00000001UL 736*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_POLL 0x00000002UL 737*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_SELF 0x00000004UL //PVR1 buffer0 738*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_SELF 0x00000008UL //PVR1 buffer0 739*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_POLL 0x00000010UL //PVR1 buffer0 740*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_POLL 0x00000020UL //PVR1 buffer0 741*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FLT_FREE 0x00000040UL 742*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_SELF 0x00000080UL 743*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_POLL 0x00000100UL 744*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FWMSG 0x00000200UL 745*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR0_RDY_SELF 0x00000400UL //PVR2 buffer0 746*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR1_RDY_SELF 0x00000800UL //PVR2 buffer1 747*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR0_RDY_POLL 0x00001000UL //PVR2 buffer0 748*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR1_RDY_POLL 0x00002000UL //PVR2 buffer1 749*53ee8cc1Swenshuai.xi 750*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR_SELF ( TSP_TASK_EVENT_PVR0_RDY_SELF | \ 751*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR1_RDY_SELF | \ 752*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_CBPVR0_RDY_SELF | \ 753*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR0_RDY_SELF| \ 754*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR1_RDY_SELF) 755*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR_POLL ( TSP_TASK_EVENT_PVR0_RDY_POLL | \ 756*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR1_RDY_POLL | \ 757*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_CBPVR0_RDY_POLL | \ 758*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR0_RDY_POLL| \ 759*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR1_RDY_POLL) 760*53ee8cc1Swenshuai.xi 761*53ee8cc1Swenshuai.xi 762*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_SELF ( TSP_TASK_EVENT_SECTION_SELF | \ 763*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR0_RDY_SELF | \ 764*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR1_RDY_SELF | \ 765*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_CBPVR0_RDY_SELF | \ 766*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR0_RDY_SELF| \ 767*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR1_RDY_SELF) 768*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_POLL ( TSP_TASK_EVENT_SECTION_POLL | \ 769*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR0_RDY_POLL | \ 770*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR1_RDY_POLL | \ 771*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_CBPVR0_RDY_POLL | \ 772*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR0_RDY_POLL| \ 773*53ee8cc1Swenshuai.xi TSP_TASK_EVENT_PVR2PVR1_RDY_POLL) 774*53ee8cc1Swenshuai.xi 775*53ee8cc1Swenshuai.xi /// TSP notification function 776*53ee8cc1Swenshuai.xi typedef void (*P_DrvTSP_EvtCallback)(DrvTSP_Event eEvent, DrvTSP_Msg *pMsg); 777*53ee8cc1Swenshuai.xi 778*53ee8cc1Swenshuai.xi 779*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 780*53ee8cc1Swenshuai.xi // Function and Variable 781*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 782*53ee8cc1Swenshuai.xi 783*53ee8cc1Swenshuai.xi // General API 784*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_InitLibResource(void *pResMemAddr); 785*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Init(MS_PHY u32FWAddr, MS_U32 u32FWSize); // Set FW address and size 786*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reinit(MS_BOOL bHK); 787*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PowerOff(void); 788*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Exit(void); 789*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Suspend(void); 790*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Resume(MS_PHY phyFWAddr, MS_U32 u32FWSize); 791*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Resume_Filter(void); 792*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Alive(MS_U32 u32EngId); 793*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset(void); 794*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_HW_Lock_Release(void); 795*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVPkt(MS_BOOL bEnable); 796*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVFifoPkt(DrvTSP_FltType flttype, MS_BOOL bEnable); 797*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TEI_RemoveErrorPkt(TSP_DRV_TEI_RmPktType eDrvPktType, MS_BOOL bEnable); 798*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AU_BD_Mode_Enable(MS_BOOL bEnable); 799*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_DropScmbPkt(DrvTSP_FltType eFilterType, MS_BOOL bEnable); 800*53ee8cc1Swenshuai.xi 801*53ee8cc1Swenshuai.xi // Misc API 802*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDBGParam(MS_PHY phyAddr, MS_U32 u32Size, MS_U32 u32DbgWord); // for TSP f/w debug 803*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetOperateMode(MS_U32 u32EngId, DrvTSP_CtrlMode eCtrlMode, MS_U8 u8DscmbEngSel); // Set TSP internal operate 804*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SelPad(MS_U32 u32EngId, DrvTSP_If eIf, DrvTSP_If_Set* pIfSet); // Set TSP input pad and ts0/ts1 805*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_OutputPadCfg(DrvTSP_PadOut eOutputPad, DrvTSP_PadIn eInputPad, MS_BOOL bInParallel, MS_BOOL bEnable); 806*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_OutputClkPhase(MS_U16 u16OutPad, MS_U16 u16Val, MS_BOOL bEnable, MS_U32 u32S2pOpt); 807*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Reset(DrvTSP_FltType eFilterType, MS_BOOL bFlush); 808*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Status(DrvTSP_FltType eFilterType, MS_U32 *u32FifoLevel); 809*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_BlockEnable(DrvTSP_FltType eFilterType, MS_BOOL bEnable); 810*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_SourceSelect(DrvTSP_PKTDMXSrcType ePKTSrc, MS_U32 u32FifoType); 811*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Parl_BitOrderSwap(MS_U32 u32EngId, DrvTSP_If eIf, MS_BOOL bInvert); 812*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_FW_VER(MS_U32* u32FWVer); 813*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_Intr_Count(MS_U32* pu32Count); 814*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Scmb_Status(MS_U32 u32EngId, DrvTSP_Scmb_Level* pScmbLevel); 815*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLastErr(void); 816*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc(MS_U32 u32EngId, MS_U32 u32FltId, TSP_Result* pRet, DrvTSP_Event* pEvt); // for non-OS TSP scheduling 817*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetSTC(MS_U32 u32EngId, MS_U32 *pu32STC_32, MS_U32 *pu32STC); 818*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTC(MS_U32 u32EngId, MS_U32 u32STC_32, MS_U32 u32STC); 819*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPCR(MS_U32 u32EngId, MS_U32 *pu32Pcr_32, MS_U32 *pu32Pcr); 820*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Flt_GetState(MS_U32 u32EngId, MS_U32 u32FltId, DrvTSP_FltState *peState); 821*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDscmbFltId_Range(MS_U32 u32EngId, MS_U32 *pu32StartId, MS_U32 *pu32EndId); 822*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDscmbEngIdx_BySource(DrvTSP_PKTDMXSrcType eInputSrc, MS_U32* pu32EngId); 823*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Dscmb_Source(MS_U32 u32EngId, DrvTSP_PKTDMXSrcType* peInputSrc, MS_BOOL bSet); 824*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC64_Mode_Enable(MS_BOOL bEnable); 825*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STCClk_Adjust(MS_U32 u32EngId, MS_BOOL bUpClk, MS_U32 u32Percentage); 826*53ee8cc1Swenshuai.xi 827*53ee8cc1Swenshuai.xi 828*53ee8cc1Swenshuai.xi // NDS --> ECM 829*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetEcmIdx(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32EcmIdx); 830*53ee8cc1Swenshuai.xi 831*53ee8cc1Swenshuai.xi // PIDFlt API 832*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Alloc(MS_U32 u32EngId, DrvTSP_FltType eFilterType, MS_U32 *pu32PidFltId); 833*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Free(MS_U32 u32EngId, MS_U32 u32PidFltId); 834*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U16 u16PID); 835*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32* pu32PID); 836*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SelSecFlt(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32 u32SecFltId); 837*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetInputSrc(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltType eFltSrc); 838*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Enable(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_BOOL bEnable); 839*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetState(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltState *peState); 840*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChangeSource(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltType eFilterType); 841*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetScmbSts(DrvTSP_FltType FltSrc, MS_U32 u32FltGroupId, MS_U32 PidFltId, MS_U32 *pu32ScmbSts); 842*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FLT_LiveSrcSwitch(DrvTSP_FltType eFltSrcType); 843*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetFltRushPass(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U8 u8Enable); 844*53ee8cc1Swenshuai.xi 845*53ee8cc1Swenshuai.xi // SecFlt API 846*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Alloc(MS_U32 u32EngId, MS_U32 *pu32SecFltId); 847*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Free(MS_U32 u32EngId, MS_U32 u32SecFltId); 848*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetMode(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltMode eSecFltMode); 849*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetPattern(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U8 *pu8Match, MS_U8 *pu8Mask, MS_U8 *pu8NotMask); 850*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_ResetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId); 851*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY phyStartAddr, MS_U32 u32BufSize); 852*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReqCount(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32ReqCount); 853*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufStart(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyBufStart); 854*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufSize(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 *pu32BufSize); 855*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyReadAddr); 856*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyWriteAddr); 857*53ee8cc1Swenshuai.xi 858*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY phyReadAddr); 859*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetDataAddr(MS_U32 u32DataAddr); 860*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Notify(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback); 861*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetState(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltState *peState); 862*53ee8cc1Swenshuai.xi #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT 863*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetPattern(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U8 *pu8Match, MS_U8 *pu8Mask, MS_U8 *pu8NotMask); 864*53ee8cc1Swenshuai.xi #endif //CONFIG_UTOPIA_PROC_DBG_SUPPORT 865*53ee8cc1Swenshuai.xi 866*53ee8cc1Swenshuai.xi // PVR API 867*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetBuffer(MS_U8 u8PVRId, MS_PHY phyBufStart0, MS_PHY phyBufStart1, MS_U32 u32BufSize0, MS_U32 u32BufSize1); 868*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Start(MS_U8 u8PVRId, DrvTSP_RecMode eRecMode, MS_BOOL bStart); 869*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_GetWriteAddr(MS_U8 u8PVRId, MS_PHY *pphy2WriteAddr); 870*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Notify(MS_U8 u8PVRId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback); 871*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPacketMode(MS_U8 u8PVRId, MS_BOOL bSet); 872*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SelSrc(MS_U8 u8PVRId, DrvTSP_PKTDMXSrcType ePktSrc); 873*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_BlockEnable(MS_U8 u8PVRId, MS_BOOL bEnable); 874*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampSetRecordStamp(MS_U8 u8PVRId, MS_U32 u32Stamp); 875*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampGetRecordStamp(MS_U8 u8PVRId,MS_U32* u32Stamp); 876*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampSetPlaybackStamp(MS_U32 u32Stamp); 877*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampGetPlaybackStamp(MS_U32* u32Stamp); 878*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStamp(MS_BOOL bEnable); 879*53ee8cc1Swenshuai.xi 880*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPlaybackStampClk(MS_U32 u32EngId, MS_U32 u32Clk); 881*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetRecordStampClk(MS_U32 u32PvrId, MS_U32 u32Clk); 882*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_IsStart(MS_U32 u32PvrId, MS_BOOL *pbIsStart); 883*53ee8cc1Swenshuai.xi 884*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVRCA_Close(MS_U8 u8PVRId); 885*53ee8cc1Swenshuai.xi 886*53ee8cc1Swenshuai.xi 887*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_Notify(eEvents, pfCallback) MDrv_TSP_PVR_Eng_Notify(0, eEvents, pfCallback) 888*53ee8cc1Swenshuai.xi 889*53ee8cc1Swenshuai.xi // File API 890*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetAddr(MS_PHY phyStreamAddr); 891*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetSize(MS_U32 u32StreamSize); 892*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Start(DrvTSP_FileinMode eFileinMode); 893*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Stop(void); 894*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Pause(void); 895*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Resume(void); 896*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetState(DrvTSP_FileinState *peFileinState); 897*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetRate(MS_U32 u32Div2); 898*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetPacketMode(DrvTSP_PacketMode PKT_Mode); 899*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_GetSlot(MS_U32 *pu32EmptySlot); 900*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_Reset(void); 901*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CmdQFifo_Status(MS_U8 *pu8FifoLevel); 902*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ResetFileinTimestamp(void); 903*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetReadAddr(MS_PHY *pphyReadAddr); 904*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_192BlockScheme_En(MS_BOOL bEnable); 905*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_PS_Path_Enable(DrvTSP_FileinMode eFileinMode); 906*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_TSIFSrcSel(DrvTSP_FltType eFltSrc, MS_BOOL bFileMode); 907*53ee8cc1Swenshuai.xi 908*53ee8cc1Swenshuai.xi // Capacity query 909*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetCap(DrvTSP_Cap eCap, void* pOutput); 910*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetStatus(DrvTSP_HW_Status *HW_Status, DrvTSP_SW_Status *SW_Status); 911*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLibVer(const MSIF_Version **ppVersion); 912*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetDbgLevel(DrvTSP_DbgLevel DbgLevel); 913*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTSIFStatus(DrvTSP_If eIf, DrvTSP_If_Set* pIfSet, MS_U16* pu16Clk); 914*53ee8cc1Swenshuai.xi 915*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 916*53ee8cc1Swenshuai.xi // OBSOLETE 917*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 918*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. 919*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChkOwner(MS_U32 u32EngId, MS_U32 u32PidFltId); 920*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetHK(MS_BOOL bIsHK); 921*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_IsAccess(MS_U32 u32Try); 922*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_UnlockAccess(void); 923*53ee8cc1Swenshuai.xi 924*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TTX_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyWriteAddr); // special case for TTX 925*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDbgPortInfo(MS_U32 u32DbgSel,MS_U32* u32DbgInfo); 926*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_BurstLen(MS_U32 u32Len); 927*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetFileInTimeStamp(MS_U32* u32TSLen); 928*53ee8cc1Swenshuai.xi #if 0 929*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ResetFileinTimestamp(void); 930*53ee8cc1Swenshuai.xi #endif 931*53ee8cc1Swenshuai.xi 932*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetVQueBuf(MS_PHY phyVQBaseAddr, MS_U32 u32VQBufLen); 933*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueEnable(MS_BOOL bEnable); 934*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueReset(MS_U8 u8VQID); 935*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueue_OverflowInt_En(MS_BOOL bEnable); 936*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_VQ_Threshold(MS_U8 u8req_len); 937*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_VQStatus(MS_U32* pu32Status); 938*53ee8cc1Swenshuai.xi 939*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_Set(MS_U8 u8Model, MS_U8 u8MobfIndex0, MS_U8 u8MobfIndex1); 940*53ee8cc1Swenshuai.xi 941*53ee8cc1Swenshuai.xi void MDrv_TSP_WriteProtect_Enable(MS_BOOL bEnable, MS_PHY* pphyStartAddr, MS_PHY* pphyEndAddr); 942*53ee8cc1Swenshuai.xi void MDrv_TSP_OrzWriteProtect_Enable(MS_BOOL bEnable, MS_PHY phyStartAddr, MS_PHY phyEndAddr); 943*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TSIF_Enable(DrvTSP_If tsif, MS_BOOL bEnable); 944*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ReadDropPktCnt(MS_U16* pu16ADropCnt, MS_U16* pu16VDropCnt); 945*53ee8cc1Swenshuai.xi 946*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_SetBuffer(p1, p2...) MDrv_TSP_PVR_Eng_SetBuffer(0, p1, p2) 947*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_Start(p1, p2...) MDrv_TSP_PVR_Eng_Start(0, p1, p2) 948*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_GetWriteAddr(p1) MDrv_TSP_PVR_Eng_GetWriteAddr(0, p1) 949*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_SetPacketMode(p1 ) MDrv_TSP_PVR_Eng_SetPacketMode(0, p1) 950*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_TimeStampSetRecordStamp(p1) MDrv_TSP_PVR_Eng_TimeStampSetRecordStamp(0, p1) 951*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_TimeStampGetRecordStamp(p1 ) MDrv_TSP_PVR_Eng_TimeStampGetRecordStamp(0, p1) 952*53ee8cc1Swenshuai.xi 953*53ee8cc1Swenshuai.xi //---------- Common Interface for TSP config and Api commands ------------// 954*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1 ,void *pData); 955*53ee8cc1Swenshuai.xi #define DRVTSP_CMD_SET_LIB_MODE 0x80000003UL //u32Config0: 0 -> user mode, 1 -> Kernel mode with user cb 956*53ee8cc1Swenshuai.xi #define DRVTSP_CMD_LIB_MODE_USER 0x00000000UL 957*53ee8cc1Swenshuai.xi #define DRVTSP_CMD_LIB_MODE_KRN 0x00000001UL 958*53ee8cc1Swenshuai.xi #define DRVTSP_CMD_STC_ADJUST_UNIT 0x00000020UL //u32Config0: data 959*53ee8cc1Swenshuai.xi #define TSP_CMD_PVR_PES_MODE 0x00000030UL //u32Config0: PVR EngineID, u32Config1=1, *pData = 1 is enable, pData = 0 is disable 960*53ee8cc1Swenshuai.xi 961*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPesScmbSts(MS_U32 u32FltId, MS_U8 *pu8status); 962*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTsScmbSts(MS_U32 u32FltId, MS_U8 *pu8status); 963*53ee8cc1Swenshuai.xi 964*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDataAddr(MS_PHY phyDataAddr, MS_U32 u32Size); 965*53ee8cc1Swenshuai.xi 966*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FQ_FltNullPkt(MS_U32 u32FQEng, MS_BOOL bFltNull); 967*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng, DrvFQ_SrcIf eTsSrc); 968*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng, DrvFQ_SrcIf* peTsSrc); 969*53ee8cc1Swenshuai.xi 970*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_Alloc(MS_U32 *pu32EngId); 971*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_Free(MS_U32 u32EngId); 972*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_U8 u8Mode); 973*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_Select(DrvTSP_FltType eFltSrc, MS_U32 u32StcEng); 974*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PcrId_To_StcId(MS_U32 u32PcrFltId,MS_U32 *pu32EngId); 975*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTCOffset(MS_U32 u32EngId, MS_U32 u32Offset, MS_BOOL bAdd); 976*53ee8cc1Swenshuai.xi 977*53ee8cc1Swenshuai.xi //----------- Debug table -------------- 978*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DisContiCnt(DrvTSP_DisContiCnt_info* tspInfo, MS_U32* pu32Cnt); 979*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DropPktCnt(DrvTSP_DropPktCnt_info* tspInfo, MS_U32* pu32Cnt); 980*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_LockPktCnt(DrvTSP_LockPktCnt_info* tspInfo, MS_U32* pu32Cnt); 981*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_AVPktCnt(DrvTSP_AVPktCnt_info* tspInfo, MS_U32* pu32Cnt); 982*53ee8cc1Swenshuai.xi 983*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecTEI_PktCount(DrvTSP_FltType FltSrc, MS_U32* pu32PktCnt); 984*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecTEI_PktCount(DrvTSP_FltType FltSrc); 985*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecDisCont_PktCount(MS_U32 u32FltID, MS_U32* pu32PktCnt); 986*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecDisCont_PktCount(MS_U32 u32FltID); 987*53ee8cc1Swenshuai.xi 988*53ee8cc1Swenshuai.xi //-------- merge stream -------------------------- 989*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_MStr_SyncByte(DrvTSP_If eIf, MS_U8 u8StrId, MS_U8* pu8SyncByte, MS_BOOL bSet); 990*53ee8cc1Swenshuai.xi 991*53ee8cc1Swenshuai.xi //------- For 2K kernel mode, user mode callback thread using events 992*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Create_IoSignal(DrvTSP_IoSignal *pstIoSignal); 993*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Close_IoSignal(DrvTSP_IoSignal *pstIoSignal); 994*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Wait_IoSignal(DrvTSP_IoSignal *pstIoSignal); 995*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc_IoSignal(DrvTSP_IoSignal *pstIoSignal); 996*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecEvents(MS_U32 u32Group, DrvTSP_IoSignal *pstIoSignal); 997*53ee8cc1Swenshuai.xi 998*53ee8cc1Swenshuai.xi #ifdef SECURE_PVR_ENABLE 999*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Ree_TeeCmdSystem_Init(void); 1000*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Ree_TeeCmdSystem_Exit(void); 1001*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Ree_SendTeeCmd(TSP_REE_TO_TEE_CMD_TYPE cmd_type, void* param, size_t datasize); 1002*53ee8cc1Swenshuai.xi #endif //SECURE_PVR_ENABLE 1003*53ee8cc1Swenshuai.xi 1004*53ee8cc1Swenshuai.xi #ifdef __cplusplus 1005*53ee8cc1Swenshuai.xi } // closing brace for extern "C" 1006*53ee8cc1Swenshuai.xi #endif 1007*53ee8cc1Swenshuai.xi 1008*53ee8cc1Swenshuai.xi #endif // _DRV_TSP_H_ 1009