xref: /utopia/UTPA2-700.0.x/modules/dmx/hal/kano/tsp/halTSP.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2*53ee8cc1Swenshuai.xi //
3*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
4*53ee8cc1Swenshuai.xi // All rights reserved.
5*53ee8cc1Swenshuai.xi //
6*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
7*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
8*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
9*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
10*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
11*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
12*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
13*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
14*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
19*53ee8cc1Swenshuai.xi // file   halPVR.c
20*53ee8cc1Swenshuai.xi // @brief  PVR HAL
21*53ee8cc1Swenshuai.xi // @author MStar Semiconductor,Inc.
22*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
23*53ee8cc1Swenshuai.xi #include "MsCommon.h"
24*53ee8cc1Swenshuai.xi #include "halCHIP.h"
25*53ee8cc1Swenshuai.xi #include "regTSP.h"
26*53ee8cc1Swenshuai.xi #include "halTSP.h"
27*53ee8cc1Swenshuai.xi #include "drvSYS.h"
28*53ee8cc1Swenshuai.xi #include "ULog.h"
29*53ee8cc1Swenshuai.xi #include "MsOS.h"
30*53ee8cc1Swenshuai.xi 
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
33*53ee8cc1Swenshuai.xi     #include "drvCLKM.h"
34*53ee8cc1Swenshuai.xi #endif
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi #include "drvMMIO.h"
37*53ee8cc1Swenshuai.xi 
38*53ee8cc1Swenshuai.xi #define KANOU02         (MDrv_SYS_GetChipRev() >= 0x1)  // This feature/behavior is supported after Kano U02
39*53ee8cc1Swenshuai.xi #define KANOU03         (MDrv_SYS_GetChipRev() >= 0x2)  // This feature/behavior is supported after Kano U03
40*53ee8cc1Swenshuai.xi 
41*53ee8cc1Swenshuai.xi #define TSP_MIU_SEL_BITS_LEN    2
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
44*53ee8cc1Swenshuai.xi //  Driver Compiler Option
45*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi 
48*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
49*53ee8cc1Swenshuai.xi //  TSP Hardware Abstraction Layer
50*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
51*53ee8cc1Swenshuai.xi MS_VIRT              _u32RegBase                       = 0;
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi static REG_Ctrl*    _RegCtrl                          = NULL;
54*53ee8cc1Swenshuai.xi static REG_Ctrl2*   _RegCtrl2                         = NULL;
55*53ee8cc1Swenshuai.xi static REG_Ctrl3*   _RegCtrl3                         = NULL;
56*53ee8cc1Swenshuai.xi static REG_Ctrl4*   _RegCtrl4                         = NULL;
57*53ee8cc1Swenshuai.xi static REG_Ctrl5*   _RegCtrl5                         = NULL;
58*53ee8cc1Swenshuai.xi static REG_Ctrl6*   _RegCtrl6                         = NULL;
59*53ee8cc1Swenshuai.xi static REG_Ctrl7*   _RegCtrl7                         = NULL;
60*53ee8cc1Swenshuai.xi static REG_Ctrl8*   _RegCtrl8                         = NULL;
61*53ee8cc1Swenshuai.xi 
62*53ee8cc1Swenshuai.xi 
63*53ee8cc1Swenshuai.xi 
64*53ee8cc1Swenshuai.xi // @F_TODO These parameters need to be combined with global variables in Utopia 2.0
65*53ee8cc1Swenshuai.xi static MS_U32                       _u32PidFltReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
66*53ee8cc1Swenshuai.xi static MS_U32                       _u32PidDstReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
67*53ee8cc1Swenshuai.xi static MS_U32                       _u32SecReg[(TSP_SECFLT_NUM * ((sizeof(REG_SecFlt) - sizeof(((REG_SecFlt*)0)->_x50))/sizeof(TSP32)))];
68*53ee8cc1Swenshuai.xi 
69*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
70*53ee8cc1Swenshuai.xi //  Local Structures
71*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi typedef struct //  structure for PVR Buffer
74*53ee8cc1Swenshuai.xi {
75*53ee8cc1Swenshuai.xi     MS_BOOL         bOverWrite;           // True  : means the PVR buffer has been written already
76*53ee8cc1Swenshuai.xi                                           // False : means the PVR buffer has not been written yet
77*53ee8cc1Swenshuai.xi     MS_U32          u32Start;             // PVR buffer physical start address
78*53ee8cc1Swenshuai.xi     MS_U32          u32End;               // PVR buffer physical end address
79*53ee8cc1Swenshuai.xi     MS_BOOL         bPA2KSEG1_Mapping;    // True   : means PA2KSEG1 mapping success
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi }PVR_Buf;
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi static PVR_Buf   _stPvrBuf[PVR_NUM];
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
86*53ee8cc1Swenshuai.xi //  Local Functions
87*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
88*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value);
89*53ee8cc1Swenshuai.xi 
_delay(MS_U32 usec)90*53ee8cc1Swenshuai.xi static void _delay(MS_U32 usec)
91*53ee8cc1Swenshuai.xi {
92*53ee8cc1Swenshuai.xi     MsOS_DelayTaskUs_Poll(usec);
93*53ee8cc1Swenshuai.xi }
94*53ee8cc1Swenshuai.xi 
REG32_R(REG32 * reg)95*53ee8cc1Swenshuai.xi static MS_U32 REG32_R(REG32 *reg)
96*53ee8cc1Swenshuai.xi {
97*53ee8cc1Swenshuai.xi     MS_U32              value = 0;
98*53ee8cc1Swenshuai.xi     value  = (reg)->low;
99*53ee8cc1Swenshuai.xi     value |= (reg)->high << 16;
100*53ee8cc1Swenshuai.xi     return value;
101*53ee8cc1Swenshuai.xi }
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi 
REG16_R(REG16 * reg)104*53ee8cc1Swenshuai.xi static MS_U16 REG16_R(REG16 *reg)
105*53ee8cc1Swenshuai.xi {
106*53ee8cc1Swenshuai.xi     MS_U16              value = 0;
107*53ee8cc1Swenshuai.xi     value = (reg)->data;
108*53ee8cc1Swenshuai.xi     return value;
109*53ee8cc1Swenshuai.xi }
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi static MS_BOOL _u32RegDump = 0;
112*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32 * reg, MS_U32 value );
113*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16 * reg, MS_U16 value);
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi #if 0
116*53ee8cc1Swenshuai.xi #define REG32_W(reg, value);    { (reg)->low = ((value) & 0x0000FFFF);                          \
117*53ee8cc1Swenshuai.xi                                   (reg)->high = ((value) >> 16);\
118*53ee8cc1Swenshuai.xi                                   if(_u32RegDump)\
119*53ee8cc1Swenshuai.xi     {printf("wriu bank:0x%04X addr:0x%02X value:0x%04X\n", (((MS_U32)(&(reg)->low) - _u32RegBase)>>(1+8)), ((((MS_U32)(&(reg)->low) - _u32RegBase)>>1)&0xFF)>>1,(value) & 0x0000FFFF);\
120*53ee8cc1Swenshuai.xi      printf("wriu bank:0x%04X addr:0x%02X value:0x%04X\n\n", (((MS_U32)(&(reg)->high) - _u32RegBase)>>(1+8)),((((MS_U32)(&(reg)->high) - _u32RegBase)>>1)&0xFF)>>1, (value) >> 16);}}
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi #define REG16_W(reg, value);    {(reg)->data = ((value) & 0x0000FFFF);\
123*53ee8cc1Swenshuai.xi                                   if(_u32RegDump)\
124*53ee8cc1Swenshuai.xi     {printf("wriu bank:0x%04X addr:0x%02X value:0x%04X\n\n", (((MS_U32)reg) - _u32RegBase)>>(1+8), ((((MS_U32)reg - _u32RegBase)>>1)&0xFF)>>1, (value) & 0x0000FFFF);}}
125*53ee8cc1Swenshuai.xi #endif
126*53ee8cc1Swenshuai.xi #define REG32_W(reg, value)     { (reg)->low = ((value) & 0x0000FFFF);                          \
127*53ee8cc1Swenshuai.xi                                   (reg)->high = ((value) >> 16);\
128*53ee8cc1Swenshuai.xi                                 if(_u32RegDump){_REG32_DUMP(reg, value);}}
129*53ee8cc1Swenshuai.xi 
130*53ee8cc1Swenshuai.xi #define REG16_W(reg, value)     {(reg)->data = ((value) & 0x0000FFFF);\
131*53ee8cc1Swenshuai.xi                                 if(_u32RegDump){_REG16_DUMP(reg, value);}}
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi #define _AND_(flag, bit)            ((flag) &   (bit) )
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi #define _SET_(flag, bit)            ((flag) |   (bit) )
137*53ee8cc1Swenshuai.xi #define _CLR_(flag, bit)            ((flag) & (~(bit)))
138*53ee8cc1Swenshuai.xi 
139*53ee8cc1Swenshuai.xi #define REG16_SET(reg, value)    REG16_W(reg, _SET_(REG16_R(reg), value))
140*53ee8cc1Swenshuai.xi #define REG32_SET(reg, value)    REG32_W(reg, _SET_(REG32_R(reg), value))
141*53ee8cc1Swenshuai.xi #define REG16_CLR(reg, value)    REG16_W(reg, _CLR_(REG16_R(reg), value))
142*53ee8cc1Swenshuai.xi #define REG32_CLR(reg, value)    REG32_W(reg, _CLR_(REG32_R(reg), value))
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi #define REG16_MSK_W(reg, mask, value)    REG16_W((reg), _CLR_(REG16_R(reg), (mask)) | _AND_((value), (mask)))
145*53ee8cc1Swenshuai.xi #define REG32_MSK_W(reg, mask, value)    REG32_W((reg), _CLR_(REG32_R(reg), (mask)) | _AND_((value), (mask)))
146*53ee8cc1Swenshuai.xi 
147*53ee8cc1Swenshuai.xi #define MIU_BUS (4)
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi 
150*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
151*53ee8cc1Swenshuai.xi //  Debug Message
152*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
153*53ee8cc1Swenshuai.xi typedef enum
154*53ee8cc1Swenshuai.xi {
155*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_NONE,   // no debug message shown
156*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_ERR,    // only shows error message that can't be recover
157*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_WARN,   // error case can be recover, like retry
158*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_EVENT,  // event that is okay but better known, ex: timestamp ring, file circular, etc.
159*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_INFO,   // information for internal parameter
160*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_FUNC,   // Function trace and input parameter trace
161*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_TRACE,  // debug trace
162*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_LEVEL;
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi typedef enum
165*53ee8cc1Swenshuai.xi {
166*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_MODEL_NONE,         // @temporarily , need to refine
167*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_MODEL_ALL,
168*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_MODEL;
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi #define HAL_TSP_DBGMSG(_level,_model,_f) do {if(_u32TSPDbgLevel >= (_level)&&((_u32TSPDbgModel&_model)!=0)) (_f);} while(0)
171*53ee8cc1Swenshuai.xi static MS_U32  _u32TSPDbgLevel = E_HAL_TSP_DBG_LEVEL_ERR;
172*53ee8cc1Swenshuai.xi static MS_U32  _u32TSPDbgModel = E_HAL_TSP_DBG_MODEL_ALL;
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
176*53ee8cc1Swenshuai.xi //  Implementation
177*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
TSP32_IdrW(TSP32 * preg,MS_U32 value)178*53ee8cc1Swenshuai.xi void TSP32_IdrW(TSP32 *preg, MS_U32 value)
179*53ee8cc1Swenshuai.xi {
180*53ee8cc1Swenshuai.xi     MS_U32 tempDump = _u32RegDump;
181*53ee8cc1Swenshuai.xi     if(_u32RegDump)
182*53ee8cc1Swenshuai.xi     {
183*53ee8cc1Swenshuai.xi         //test_chip_top.write_ind32('h00221004, 32'hffffffff);  //indirect .... (address,data)
184*53ee8cc1Swenshuai.xi         _u32RegDump = 0;
185*53ee8cc1Swenshuai.xi         printf("test_chip_top.write_ind32(\'h%08lx, 32\'h%08lx);\n", (long unsigned int)preg, (long unsigned int)value);
186*53ee8cc1Swenshuai.xi     }
187*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Addr, (MS_VIRT)preg);
188*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Write, value);
189*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_WRITE);
190*53ee8cc1Swenshuai.xi     _u32RegDump = tempDump;
191*53ee8cc1Swenshuai.xi }
192*53ee8cc1Swenshuai.xi 
TSP32_IdrR(TSP32 * preg)193*53ee8cc1Swenshuai.xi MS_U32 TSP32_IdrR(TSP32 *preg)
194*53ee8cc1Swenshuai.xi {
195*53ee8cc1Swenshuai.xi     MS_U32 tempDump = _u32RegDump;
196*53ee8cc1Swenshuai.xi     if(_u32RegDump)
197*53ee8cc1Swenshuai.xi     {
198*53ee8cc1Swenshuai.xi         _u32RegDump = 0;
199*53ee8cc1Swenshuai.xi     }
200*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Addr,  (MS_VIRT)preg);
201*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_READ);
202*53ee8cc1Swenshuai.xi     _u32RegDump = tempDump;
203*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->Idr_Read);
204*53ee8cc1Swenshuai.xi }
205*53ee8cc1Swenshuai.xi 
HAL_TSP_SetBank(MS_VIRT u32BankAddr)206*53ee8cc1Swenshuai.xi void HAL_TSP_SetBank(MS_VIRT u32BankAddr)
207*53ee8cc1Swenshuai.xi {
208*53ee8cc1Swenshuai.xi     _u32RegBase = u32BankAddr;
209*53ee8cc1Swenshuai.xi     _RegCtrl    = (REG_Ctrl*)(u32BankAddr + 0x2A00UL);        //TSP0 0x1015, TSP1 0x1016
210*53ee8cc1Swenshuai.xi     _RegCtrl2   = (REG_Ctrl2*)(u32BankAddr  + 0xE0400UL);     //TSP3 0x1702,
211*53ee8cc1Swenshuai.xi     _RegCtrl3   = (REG_Ctrl3*)(u32BankAddr  + 0xE0600UL);     //TSP4 0x1703
212*53ee8cc1Swenshuai.xi     _RegCtrl4   = (REG_Ctrl4*)(u32BankAddr  + 0xC2000UL);     //TSP6 0x1610
213*53ee8cc1Swenshuai.xi     _RegCtrl5   = (REG_Ctrl5*)(u32BankAddr  + 0xC2200UL);     //TSP7 0x1611
214*53ee8cc1Swenshuai.xi     _RegCtrl6   = (REG_Ctrl6*)(u32BankAddr  + 0xC4E00UL);     //TSP8 0x1627
215*53ee8cc1Swenshuai.xi     _RegCtrl7   = (REG_Ctrl7*)(u32BankAddr  + 0xE1800UL);     //TSP9 0x170C
216*53ee8cc1Swenshuai.xi     _RegCtrl8   = (REG_Ctrl8*)(u32BankAddr  + 0xE1A00UL);     //TSP10 0x170D
217*53ee8cc1Swenshuai.xi }
218*53ee8cc1Swenshuai.xi 
HAL_TSP_RegDump(MS_BOOL bEnable)219*53ee8cc1Swenshuai.xi void HAL_TSP_RegDump(MS_BOOL bEnable)
220*53ee8cc1Swenshuai.xi {
221*53ee8cc1Swenshuai.xi     _u32RegDump = bEnable;
222*53ee8cc1Swenshuai.xi }
223*53ee8cc1Swenshuai.xi #if 1
_REG32_DUMP(REG32 * reg,MS_U32 value)224*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32* reg, MS_U32 value )
225*53ee8cc1Swenshuai.xi {
226*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a);   //..bank 15 ,7?h06 ....reg ,16?h400a ......
227*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7?h06 ....reg ,16?h400a ......
228*53ee8cc1Swenshuai.xi     //`RIU_W((24'h103800>>1) +  7'h56 ,  2'b11, 16'h0000); //....bank 038
229*53ee8cc1Swenshuai.xi     MS_U32 bank = ((MS_VIRT)(&(reg)->low) - _u32RegBase)>>(1+8);
230*53ee8cc1Swenshuai.xi     MS_U32 addr_low = ((((MS_VIRT)(&(reg)->low) - _u32RegBase)>>1)&0xFF)>>1;
231*53ee8cc1Swenshuai.xi     MS_U32 addr_high = ((((MS_VIRT)(&(reg)->high) - _u32RegBase)>>1)&0xFF)>>1;
232*53ee8cc1Swenshuai.xi     MS_U32 val_low  = (value) & 0x0000FFFF;
233*53ee8cc1Swenshuai.xi     MS_U32 val_high  = ((value) & 0xFFFF0000 )>>16;
234*53ee8cc1Swenshuai.xi 
235*53ee8cc1Swenshuai.xi     if(bank == 0x15)
236*53ee8cc1Swenshuai.xi     {
237*53ee8cc1Swenshuai.xi         printf("`RIU_W(TSP_REG_BASE + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr_low, (long unsigned int)val_low);
238*53ee8cc1Swenshuai.xi         printf("`RIU_W(TSP_REG_BASE + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr_high, (long unsigned int)val_high);
239*53ee8cc1Swenshuai.xi     }
240*53ee8cc1Swenshuai.xi     else if(bank == 0x16)
241*53ee8cc1Swenshuai.xi     {
242*53ee8cc1Swenshuai.xi         printf("`RIU_W(TSP_REG_BASE1 + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr_low, (long unsigned int)val_low);
243*53ee8cc1Swenshuai.xi         printf("`RIU_W(TSP_REG_BASE1 + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr_high, (long unsigned int)val_high);
244*53ee8cc1Swenshuai.xi     }
245*53ee8cc1Swenshuai.xi     else if(bank == 0x38)
246*53ee8cc1Swenshuai.xi     {
247*53ee8cc1Swenshuai.xi         printf("`RIU_W((24\'h103800>>1) + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr_low, (long unsigned int)val_low);
248*53ee8cc1Swenshuai.xi         printf("`RIU_W((24\'h103800>>1) + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr_high, (long unsigned int)val_high);
249*53ee8cc1Swenshuai.xi     }
250*53ee8cc1Swenshuai.xi }
_REG16_DUMP(REG16 * reg,MS_U16 value)251*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16* reg, MS_U16 value )
252*53ee8cc1Swenshuai.xi {
253*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a);   //..bank 15 ,7?h06 ....reg ,16?h400a ......
254*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7?h06 ....reg ,16?h400a ......
255*53ee8cc1Swenshuai.xi     //`RIU_W((24'h103800>>1) +  7'h56 ,  2'b11, 16'h0000); //....bank 038
256*53ee8cc1Swenshuai.xi     MS_U32 bank = ((MS_VIRT)(&(reg)) - _u32RegBase)>>(1+8);
257*53ee8cc1Swenshuai.xi     MS_U32 addr = ((((MS_VIRT)(&(reg)) - _u32RegBase)>>1)&0xFF)>>1;
258*53ee8cc1Swenshuai.xi     MS_U32 val  = (value) & 0x0000FFFF;
259*53ee8cc1Swenshuai.xi 
260*53ee8cc1Swenshuai.xi     if(bank == 0x15)
261*53ee8cc1Swenshuai.xi     {
262*53ee8cc1Swenshuai.xi         printf("`RIU_W(TSP_REG_BASE + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr, (long unsigned int)val);
263*53ee8cc1Swenshuai.xi     }
264*53ee8cc1Swenshuai.xi     else if(bank == 0x16)
265*53ee8cc1Swenshuai.xi     {
266*53ee8cc1Swenshuai.xi         printf("`RIU_W(TSP_REG_BASE1 + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr, (long unsigned int)val);
267*53ee8cc1Swenshuai.xi     }
268*53ee8cc1Swenshuai.xi     else if(bank == 0x38)
269*53ee8cc1Swenshuai.xi     {
270*53ee8cc1Swenshuai.xi         printf("`RIU_W((24\'h103800>>1) + 7\'h%02lx, 2\'b11, 16\'h%04lx);\n", (long unsigned int)addr, (long unsigned int)val);
271*53ee8cc1Swenshuai.xi     }
272*53ee8cc1Swenshuai.xi }
273*53ee8cc1Swenshuai.xi #endif
274*53ee8cc1Swenshuai.xi 
275*53ee8cc1Swenshuai.xi // [HW Issue]
276*53ee8cc1Swenshuai.xi // The K3 series PVR write pointer's return value is different from K1 series chip.
277*53ee8cc1Swenshuai.xi // For example, if PVR MIU alignment is 16 bytes. Write 32 bytes to PVR buffer from PVR start address 0.
278*53ee8cc1Swenshuai.xi // The 32 bytes data would be allocated to PVR buffer(address 0~31).
279*53ee8cc1Swenshuai.xi // And then we get the write pointer. The K3 series write pointer will return the value 16(W).
280*53ee8cc1Swenshuai.xi // The last MIU alignment address of the written data.
281*53ee8cc1Swenshuai.xi // The K1 series write pointer will return the value 32(W').
282*53ee8cc1Swenshuai.xi // The next MIU alignment address for the next writting.
283*53ee8cc1Swenshuai.xi // PVR write pointer value has 1 MIU alignment difference between K3 and K1 series.
284*53ee8cc1Swenshuai.xi // To SW, the K1 series write pointer's return value is more meaningful than K3 series.
285*53ee8cc1Swenshuai.xi // Now we use _Adjust_PVR_WritePtr function to make K3 series write pointer's return value consistent with K1 series.
286*53ee8cc1Swenshuai.xi //  --------------------------------->
287*53ee8cc1Swenshuai.xi // S          W          W'         E
288*53ee8cc1Swenshuai.xi // ######################
289*53ee8cc1Swenshuai.xi // +----------+----------+----------+
290*53ee8cc1Swenshuai.xi // 0          16        32
291*53ee8cc1Swenshuai.xi //  ----------------------------------
292*53ee8cc1Swenshuai.xi 
_Adjust_PVR_WritePtr(MS_U32 u32Eng,MS_U32 u32WritePtr)293*53ee8cc1Swenshuai.xi static MS_U32 _Adjust_PVR_WritePtr(MS_U32 u32Eng, MS_U32 u32WritePtr)
294*53ee8cc1Swenshuai.xi {
295*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32Eng].bPA2KSEG1_Mapping != TRUE)
296*53ee8cc1Swenshuai.xi     {
297*53ee8cc1Swenshuai.xi         return u32WritePtr;
298*53ee8cc1Swenshuai.xi     }
299*53ee8cc1Swenshuai.xi 
300*53ee8cc1Swenshuai.xi     if (_stPvrBuf[u32Eng].u32Start == 0)
301*53ee8cc1Swenshuai.xi     {
302*53ee8cc1Swenshuai.xi         return u32WritePtr;
303*53ee8cc1Swenshuai.xi     }
304*53ee8cc1Swenshuai.xi 
305*53ee8cc1Swenshuai.xi     if (!((E_TSP_PVR_PVRENG_START <= u32Eng) && (E_TSP_PVR_PVRENG_END > u32Eng))) // PVR Eng number check
306*53ee8cc1Swenshuai.xi     {
307*53ee8cc1Swenshuai.xi         return u32WritePtr;
308*53ee8cc1Swenshuai.xi     }
309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi     if( _stPvrBuf[u32Eng].bOverWrite ) // If PVR buffer in OverWrite state
311*53ee8cc1Swenshuai.xi     {
312*53ee8cc1Swenshuai.xi         u32WritePtr = u32WritePtr + (1 << MIU_BUS);
313*53ee8cc1Swenshuai.xi     }
314*53ee8cc1Swenshuai.xi     else // If PVR buffer in non-OverWrite state
315*53ee8cc1Swenshuai.xi     {
316*53ee8cc1Swenshuai.xi         MsOS_ReadMemory();
317*53ee8cc1Swenshuai.xi 
318*53ee8cc1Swenshuai.xi         if(*((MS_U64*)(MsOS_PA2KSEG1(_stPvrBuf[u32Eng].u32Start)))!= PVR_NON_OVERWRITE)
319*53ee8cc1Swenshuai.xi         {
320*53ee8cc1Swenshuai.xi             _stPvrBuf[u32Eng].bOverWrite = TRUE; // Set PVR buffer to OverWrite state
321*53ee8cc1Swenshuai.xi             u32WritePtr = u32WritePtr + (1 << MIU_BUS);
322*53ee8cc1Swenshuai.xi         }
323*53ee8cc1Swenshuai.xi     }
324*53ee8cc1Swenshuai.xi 
325*53ee8cc1Swenshuai.xi     if( u32WritePtr >= _stPvrBuf[u32Eng].u32End )
326*53ee8cc1Swenshuai.xi     {
327*53ee8cc1Swenshuai.xi         //reset write address
328*53ee8cc1Swenshuai.xi         u32WritePtr = _stPvrBuf[u32Eng].u32Start;
329*53ee8cc1Swenshuai.xi     }
330*53ee8cc1Swenshuai.xi 
331*53ee8cc1Swenshuai.xi     return u32WritePtr;
332*53ee8cc1Swenshuai.xi }
333*53ee8cc1Swenshuai.xi 
HAL_TSP_HwPatch(void)334*53ee8cc1Swenshuai.xi void HAL_TSP_HwPatch(void)
335*53ee8cc1Swenshuai.xi {
336*53ee8cc1Swenshuai.xi     //For sram
337*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_HW_STANDBY_MODE);
338*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi     // @F_TODO check these setting with Stephen
341*53ee8cc1Swenshuai.xi     // TSP_HW_CFG4_WSTAT_CH_EN <--this is bit disable HW sync section buf id with section filter id
342*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_BYTE_ADDR_DMA|TSP_HW_CFG4_ALT_TS_SIZE|TSP_HW_CFG4_WSTAT_CH_EN);
343*53ee8cc1Swenshuai.xi 
344*53ee8cc1Swenshuai.xi     // Bad initial value of TSP_CTRL1
345*53ee8cc1Swenshuai.xi     // Suppose Standby mode for TSP should NOT be enabled.
346*53ee8cc1Swenshuai.xi     // Enabling TSP standby mode cause TSP section registers (SRAM in AEON) malfunction.
347*53ee8cc1Swenshuai.xi     // Disable it by SW at this stage.
348*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_STANDBY);
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi     //enable PVR record to bypass header
351*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b4, TSP_PVR_PID_BYPASS|TSP_PVR_PID_BYPASS2);
352*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PID_BYPASS3_REC);
353*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PID_BYPASS4_REC);
354*53ee8cc1Swenshuai.xi 
355*53ee8cc1Swenshuai.xi     // load lpcr1 for all pvr engines, HW default value may be wrong
356*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
357*53ee8cc1Swenshuai.xi     REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
358*53ee8cc1Swenshuai.xi     REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
359*53ee8cc1Swenshuai.xi     REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
360*53ee8cc1Swenshuai.xi 
361*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
362*53ee8cc1Swenshuai.xi 
363*53ee8cc1Swenshuai.xi     //Disable TSP_RM_OVF_GLITCH to fix that section A would occur overflow when section B occured overflow at first.
364*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ2PINGPONG_EN | TSP_RM_PKT_DEMUX_PIPE /*| TSP_PVR1_ALIGN_EN*/);
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi     //Disable all live pathes block mechanism
367*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160C, TSP_DOUBLE_BUF_DESC/*| TSP_VQTX0_BLOCK_DIS|TSP_VQTX2_BLOCK_DIS|TSP_VQTX3_BLOCK_DIS*/);
368*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160E, TSP_RM_DMA_GLITCH);
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PUSI_3BYTE_MODE); //Enable audio 3 byte mode
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
373*53ee8cc1Swenshuai.xi 
374*53ee8cc1Swenshuai.xi     //record null packets for record-all case
375*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->PVRConfig, TSP_MATCH_PID_LD | TSP_REC_NULL);
376*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BLK_AD_SCMBTIS_TSP);
377*53ee8cc1Swenshuai.xi 
378*53ee8cc1Swenshuai.xi     //Disable pvr1 & pvr2 block mechanism
379*53ee8cc1Swenshuai.xi     //DisableAV FIFO block mechanism for live path
380*53ee8cc1Swenshuai.xi     //REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN|TSP_PVR1_BLOCK_DIS|TSP_PVR2_BLOCK_DIS|TSP_V_BLOCK_DIS|TSP_A_BLOCK_DIS|TSP_AD_BLOCK_DIS); // by angie
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi     //fix load fw secure issue (dma_start = 1 , polling dma_done , dma_start = 0)
383*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_16, CFG3_16_FIXED_DMA_RSTART_OTP_ONEWAY_LOAD_FW);
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi     //Internal Sync Patch
386*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_DATA_CHK_2T);
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi     //fix filter null pkt
389*53ee8cc1Swenshuai.xi     if(KANOU03)
390*53ee8cc1Swenshuai.xi     {
391*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl6->CFG6_2B, TSP_FIX_FILTER_NULL_PKT);
392*53ee8cc1Swenshuai.xi     }
393*53ee8cc1Swenshuai.xi 
394*53ee8cc1Swenshuai.xi     //Fixed filein_192+timer_en+byte_time=0 Error
395*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_FIX_192_TIMER_0_EN);
396*53ee8cc1Swenshuai.xi 
397*53ee8cc1Swenshuai.xi     //Fixed filein_192 timestamp & LPCR ring back first issue
398*53ee8cc1Swenshuai.xi #if 0 //@NOTE: temporailiy disable
399*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2A, FIXED_TIMESTAMP_RING_BACK_EN | FIXED_LPCR_RING_BACK_EN);
400*53ee8cc1Swenshuai.xi #endif
401*53ee8cc1Swenshuai.xi     //serial mode config
402*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_SYNC_RISING_DETECT | TSP_VALID_FALLING_DETECT);
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi     if(KANOU02)
405*53ee8cc1Swenshuai.xi     {
406*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl6->CFG6_2A, FIXED_VQ_MIU_REG_FLUSH);
407*53ee8cc1Swenshuai.xi     }
408*53ee8cc1Swenshuai.xi }
409*53ee8cc1Swenshuai.xi 
410*53ee8cc1Swenshuai.xi // ------------ initial config ------------
411*53ee8cc1Swenshuai.xi // Sync Byte: 0x47 , 0x48 .... , 0x4e
412*53ee8cc1Swenshuai.xi // Source id : 0 , 1 , ... , 7
413*53ee8cc1Swenshuai.xi // User can use "HAL_TSP_PktConverter_SetSyncByte()" to change Sync Byte configuration
414*53ee8cc1Swenshuai.xi // , and use "HAL_TSP_PktConverter_SetSrcId()" to change Source id configuration
HAL_TSP_PktConverter_Init(void)415*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_Init(void)
416*53ee8cc1Swenshuai.xi {
417*53ee8cc1Swenshuai.xi     MS_U8   u8Path, u8Idx;
418*53ee8cc1Swenshuai.xi     MS_U8   u8SyncByte, u8SrcId;
419*53ee8cc1Swenshuai.xi 
420*53ee8cc1Swenshuai.xi     for(u8Path = 0; u8Path < TSP_TSIF_NUM; ++u8Path)
421*53ee8cc1Swenshuai.xi     {
422*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_ForceSync(u8Path,TRUE);//default: FALSE
423*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SrcIdFlt(u8Path,TRUE);  //default: FALSE
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi         u8SyncByte = 0x47;
426*53ee8cc1Swenshuai.xi         u8SrcId = 0;
427*53ee8cc1Swenshuai.xi 
428*53ee8cc1Swenshuai.xi         for(u8Idx = 0; u8Idx < TSP_MERGESTREAM_NUM; ++u8Idx,++u8SyncByte,++u8SrcId)
429*53ee8cc1Swenshuai.xi         {
430*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Idx, &u8SyncByte, TRUE);
431*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetSrcId(u8Path, u8Idx, &u8SrcId, TRUE);
432*53ee8cc1Swenshuai.xi         }
433*53ee8cc1Swenshuai.xi     }
434*53ee8cc1Swenshuai.xi }
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi 
HAL_TSP_Reset(MS_BOOL bEn)437*53ee8cc1Swenshuai.xi void HAL_TSP_Reset(MS_BOOL bEn)
438*53ee8cc1Swenshuai.xi {
439*53ee8cc1Swenshuai.xi     //MS_U16              reg;
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi     if (bEn)
442*53ee8cc1Swenshuai.xi     {
443*53ee8cc1Swenshuai.xi     #if 0
444*53ee8cc1Swenshuai.xi 
445*53ee8cc1Swenshuai.xi         // WB DMA source won't be reset by SW_RST bit so we use HWPATCH to make it's source to default
446*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
447*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi     #endif
450*53ee8cc1Swenshuai.xi         // reset CMDQ for tsif 0~3
451*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
452*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
453*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
454*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
455*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
456*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
457*53ee8cc1Swenshuai.xi     }
458*53ee8cc1Swenshuai.xi     else
459*53ee8cc1Swenshuai.xi     {
460*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
461*53ee8cc1Swenshuai.xi 
462*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
463*53ee8cc1Swenshuai.xi         // set CMDQ for tsif 0~3
464*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
465*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
466*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
467*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
468*53ee8cc1Swenshuai.xi     }
469*53ee8cc1Swenshuai.xi }
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi 
HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)472*53ee8cc1Swenshuai.xi void HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)
473*53ee8cc1Swenshuai.xi {
474*53ee8cc1Swenshuai.xi     switch(tsIf)
475*53ee8cc1Swenshuai.xi     {
476*53ee8cc1Swenshuai.xi         case 0: if(bEn)
477*53ee8cc1Swenshuai.xi                 {
478*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
479*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
480*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
481*53ee8cc1Swenshuai.xi                 }
482*53ee8cc1Swenshuai.xi                 else
483*53ee8cc1Swenshuai.xi                 {
484*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
485*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
486*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
487*53ee8cc1Swenshuai.xi                 }
488*53ee8cc1Swenshuai.xi                 break;
489*53ee8cc1Swenshuai.xi         case 1: if(bEn)
490*53ee8cc1Swenshuai.xi                 {
491*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
492*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
493*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
494*53ee8cc1Swenshuai.xi                 }
495*53ee8cc1Swenshuai.xi                 else
496*53ee8cc1Swenshuai.xi                 {
497*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
498*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
499*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
500*53ee8cc1Swenshuai.xi                 }
501*53ee8cc1Swenshuai.xi                 break;
502*53ee8cc1Swenshuai.xi         case 2: if(bEn)
503*53ee8cc1Swenshuai.xi                 {
504*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
505*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
506*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
507*53ee8cc1Swenshuai.xi                 }
508*53ee8cc1Swenshuai.xi                 else
509*53ee8cc1Swenshuai.xi                 {
510*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
511*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
512*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
513*53ee8cc1Swenshuai.xi                 }
514*53ee8cc1Swenshuai.xi                 break;
515*53ee8cc1Swenshuai.xi         case 3: if(bEn)
516*53ee8cc1Swenshuai.xi                 {
517*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_0A,CFG_0A_RST_TS_FIN3);
518*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT3);
519*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF3 | CFG_12_REG_REST_PDBF3);
520*53ee8cc1Swenshuai.xi                 }
521*53ee8cc1Swenshuai.xi                 else
522*53ee8cc1Swenshuai.xi                 {
523*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF3 | CFG_12_REG_REST_PDBF3);
524*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT3);
525*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_0A,CFG_0A_RST_TS_FIN3);
526*53ee8cc1Swenshuai.xi                 }
527*53ee8cc1Swenshuai.xi                 break;
528*53ee8cc1Swenshuai.xi         default: break;
529*53ee8cc1Swenshuai.xi     }
530*53ee8cc1Swenshuai.xi }
531*53ee8cc1Swenshuai.xi 
HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType,MS_U8 u8Index,ST_TSP_HAL_CLK_STATUS * pstClkStatus)532*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType, MS_U8 u8Index, ST_TSP_HAL_CLK_STATUS *pstClkStatus)
533*53ee8cc1Swenshuai.xi {
534*53ee8cc1Swenshuai.xi     switch(eClkType)
535*53ee8cc1Swenshuai.xi     {
536*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSP_CLK:
537*53ee8cc1Swenshuai.xi             pstClkStatus->bEnable = !(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_DISABLE);
538*53ee8cc1Swenshuai.xi             pstClkStatus->bInvert = !!(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_INVERT);
539*53ee8cc1Swenshuai.xi             pstClkStatus->u8ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_CLK_MASK) >> REG_CLKGEN0_TSP_SRC_SHIFT;
540*53ee8cc1Swenshuai.xi             break;
541*53ee8cc1Swenshuai.xi         default:
542*53ee8cc1Swenshuai.xi             return FALSE;
543*53ee8cc1Swenshuai.xi     }
544*53ee8cc1Swenshuai.xi 
545*53ee8cc1Swenshuai.xi     return TRUE;
546*53ee8cc1Swenshuai.xi }
547*53ee8cc1Swenshuai.xi 
HAL_TSP_Power(MS_BOOL bEn)548*53ee8cc1Swenshuai.xi void HAL_TSP_Power(MS_BOOL bEn)
549*53ee8cc1Swenshuai.xi {
550*53ee8cc1Swenshuai.xi     if(bEn)
551*53ee8cc1Swenshuai.xi     {
552*53ee8cc1Swenshuai.xi     #ifdef CONFIG_MSTAR_CLKM
553*53ee8cc1Swenshuai.xi 
554*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
555*53ee8cc1Swenshuai.xi 
556*53ee8cc1Swenshuai.xi         // Enable TSP Clk
557*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tsp");
558*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TSP_FAST");
559*53ee8cc1Swenshuai.xi         // Enable STC1,2 Clk
560*53ee8cc1Swenshuai.xi         // STC0
561*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc0");
562*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STC0_BUF");
563*53ee8cc1Swenshuai.xi         // STC1
564*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc1");
565*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STC0_BUF");
566*53ee8cc1Swenshuai.xi         // Stamp
567*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stamp");
568*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STAMP_NORMAL");
569*53ee8cc1Swenshuai.xi         // Parser
570*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_parser");
571*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_PARSER_NORMAL");
572*53ee8cc1Swenshuai.xi         // Enable TSIF => Disable TSIF
573*53ee8cc1Swenshuai.xi         // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
574*53ee8cc1Swenshuai.xi         //TS0
575*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
576*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
577*53ee8cc1Swenshuai.xi         //TS1
578*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
579*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
580*53ee8cc1Swenshuai.xi         //TS2
581*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
582*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
583*53ee8cc1Swenshuai.xi         //TS3
584*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
585*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi         //TSO0
588*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
589*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TSOIN0_PAD0");
590*53ee8cc1Swenshuai.xi 
591*53ee8cc1Swenshuai.xi     #else
592*53ee8cc1Swenshuai.xi 
593*53ee8cc1Swenshuai.xi         // Enable TSP Clk
594*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & ~REG_CLKGEN0_TSP_CLK_MASK)
595*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_TSP_SRC_192MHZ << REG_CLKGEN0_TSP_SRC_SHIFT);
596*53ee8cc1Swenshuai.xi         // Enable STC1,2 Clk
597*53ee8cc1Swenshuai.xi         // STC0
598*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) & ~REG_CLKGEN0_STC0_MASK)
599*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC0_SHIFT));
600*53ee8cc1Swenshuai.xi         // STC1
601*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) & ~REG_CLKGEN0_STC1_MASK)
602*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC1_SHIFT));
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi         // Stamp
605*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) & ~REG_CLKGEN0_STAMP_MASK);
606*53ee8cc1Swenshuai.xi 
607*53ee8cc1Swenshuai.xi         // Parser
608*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) & ~REG_CLKGEN0_PARSER_MASK);
609*53ee8cc1Swenshuai.xi 
610*53ee8cc1Swenshuai.xi         // Enable TSIF => Disable TSIF
611*53ee8cc1Swenshuai.xi         // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
612*53ee8cc1Swenshuai.xi         //TS0
613*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & ~REG_CLKGEN0_TS_MASK);
614*53ee8cc1Swenshuai.xi 
615*53ee8cc1Swenshuai.xi         //TS1
616*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS1_SHIFT));
617*53ee8cc1Swenshuai.xi 
618*53ee8cc1Swenshuai.xi         //TS2
619*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS2_SHIFT));
620*53ee8cc1Swenshuai.xi 
621*53ee8cc1Swenshuai.xi         //TS3
622*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS3_SHIFT));
623*53ee8cc1Swenshuai.xi 
624*53ee8cc1Swenshuai.xi         //TSO0
625*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK);
626*53ee8cc1Swenshuai.xi 
627*53ee8cc1Swenshuai.xi     #endif
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi         // TSP Boot clk sel
630*53ee8cc1Swenshuai.xi         TSP_TOP_REG(REG_TOP_TSP_BOOT_CLK_SEL) = (TSP_TOP_REG(REG_TOP_TSP_BOOT_CLK_SEL) & ~REG_TOP_TSP_BOOT_CLK_SEL_MASK) | REG_TOP_TSP_BOOT_CLK_SEL_TSP;
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi         // TSP SRAM sel
633*53ee8cc1Swenshuai.xi         TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) = TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) | REG_MMFI_TSP_SEL_SRAM_EN;
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
636*53ee8cc1Swenshuai.xi 
637*53ee8cc1Swenshuai.xi         // Disable MCM
638*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
639*53ee8cc1Swenshuai.xi     }
640*53ee8cc1Swenshuai.xi     else
641*53ee8cc1Swenshuai.xi     {
642*53ee8cc1Swenshuai.xi         // Enable MCM
643*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
644*53ee8cc1Swenshuai.xi 
645*53ee8cc1Swenshuai.xi     #ifdef CONFIG_MSTAR_CLKM
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
648*53ee8cc1Swenshuai.xi 
649*53ee8cc1Swenshuai.xi         // Disable TSP Clk
650*53ee8cc1Swenshuai.xi         // [2016.10.14] Because AESDMA share clk with TSP. We can't disable TSP clk.
651*53ee8cc1Swenshuai.xi         // s32Handle = Drv_Clkm_Get_Handle("g_clk_tsp");
652*53ee8cc1Swenshuai.xi         // Drv_Clkm_Clk_Gate_Disable(s32Handle);
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi         // Disable STC Clk
655*53ee8cc1Swenshuai.xi         //STC0
656*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc0");
657*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
658*53ee8cc1Swenshuai.xi         //STC0
659*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc1");
660*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
661*53ee8cc1Swenshuai.xi         // Stamp
662*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stamp");
663*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
664*53ee8cc1Swenshuai.xi         // Parser
665*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_parser");
666*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
667*53ee8cc1Swenshuai.xi         //TS0
668*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
669*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
670*53ee8cc1Swenshuai.xi         //TS1
671*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
672*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
673*53ee8cc1Swenshuai.xi         //TS2
674*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
675*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
676*53ee8cc1Swenshuai.xi         //TS3
677*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
678*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
679*53ee8cc1Swenshuai.xi 
680*53ee8cc1Swenshuai.xi         //TSO0
681*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
682*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi     #else
685*53ee8cc1Swenshuai.xi         // Disable TSP Clk
686*53ee8cc1Swenshuai.xi         // [2016.10.11] Because AESDMA share clk with TSP. We can't disable TSP clk.
687*53ee8cc1Swenshuai.xi         // TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK),(REG_CLKGEN0_TSP_DISABLE << REG_CLKGEN0_TSP_SHIFT));
688*53ee8cc1Swenshuai.xi 
689*53ee8cc1Swenshuai.xi         // Disable STC Clk
690*53ee8cc1Swenshuai.xi         //STC0
691*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK),(REG_CLKGEN0_STC_DISABLE << REG_CLKGEN0_STC0_SHIFT));
692*53ee8cc1Swenshuai.xi         //STC1
693*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK),(REG_CLKGEN0_STC_DISABLE << REG_CLKGEN0_STC1_SHIFT));
694*53ee8cc1Swenshuai.xi 
695*53ee8cc1Swenshuai.xi         // Stamp
696*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK),(REG_CLKGEN0_STAMP_DISABLE << REG_CLKGEN0_STAMP_SHIFT));
697*53ee8cc1Swenshuai.xi 
698*53ee8cc1Swenshuai.xi         // Parser
699*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK),(REG_CLKGEN0_PARSER_DISABLE << REG_CLKGEN0_PARSER_SHIFT));
700*53ee8cc1Swenshuai.xi 
701*53ee8cc1Swenshuai.xi         // Disable TSIF clk
702*53ee8cc1Swenshuai.xi         //TS0
703*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK),(REG_CLKGEN0_TS_DISABLE << REG_CLKGEN0_TS0_SHIFT));
704*53ee8cc1Swenshuai.xi         //TS1
705*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK),(REG_CLKGEN0_TS_DISABLE << REG_CLKGEN0_TS1_SHIFT));
706*53ee8cc1Swenshuai.xi         //TS2
707*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK),(REG_CLKGEN0_TS_DISABLE << REG_CLKGEN0_TS2_SHIFT));
708*53ee8cc1Swenshuai.xi         //TS3
709*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK),(REG_CLKGEN0_TS_DISABLE << REG_CLKGEN0_TS3_SHIFT));
710*53ee8cc1Swenshuai.xi 
711*53ee8cc1Swenshuai.xi         //TSO0
712*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK)   = _SET_(TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK),(REG_CLKGEN0_TS_DISABLE << REG_CLKGEN0_TSO0_SHIFT));
713*53ee8cc1Swenshuai.xi 
714*53ee8cc1Swenshuai.xi     #endif
715*53ee8cc1Swenshuai.xi 
716*53ee8cc1Swenshuai.xi     }
717*53ee8cc1Swenshuai.xi }
718*53ee8cc1Swenshuai.xi 
HAL_TSP_CPU(MS_BOOL bEn)719*53ee8cc1Swenshuai.xi void HAL_TSP_CPU(MS_BOOL bEn)
720*53ee8cc1Swenshuai.xi {
721*53ee8cc1Swenshuai.xi     if (bEn)
722*53ee8cc1Swenshuai.xi     {
723*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
724*53ee8cc1Swenshuai.xi     }
725*53ee8cc1Swenshuai.xi     else
726*53ee8cc1Swenshuai.xi     {
727*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
728*53ee8cc1Swenshuai.xi     }
729*53ee8cc1Swenshuai.xi }
HAL_TSP_ResetCPU(MS_BOOL bReset)730*53ee8cc1Swenshuai.xi void HAL_TSP_ResetCPU(MS_BOOL bReset)
731*53ee8cc1Swenshuai.xi {
732*53ee8cc1Swenshuai.xi     // @NOTE TRUE for stop cpu clock
733*53ee8cc1Swenshuai.xi     if (bReset)
734*53ee8cc1Swenshuai.xi     {
735*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
736*53ee8cc1Swenshuai.xi     }
737*53ee8cc1Swenshuai.xi     else
738*53ee8cc1Swenshuai.xi     {
739*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
740*53ee8cc1Swenshuai.xi     }
741*53ee8cc1Swenshuai.xi }
742*53ee8cc1Swenshuai.xi 
743*53ee8cc1Swenshuai.xi 
HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr,MS_U32 u32FwSize)744*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr, MS_U32 u32FwSize)
745*53ee8cc1Swenshuai.xi {
746*53ee8cc1Swenshuai.xi 
747*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_MASK            0xffffc000 //code: 0x2000, data: 0x1000, total: 0x3000
748*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_HIT        0x00000000
749*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_MISS       0xffffffff
750*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_MASK            0xffffc000
751*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_HIT        0x00000000
752*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_MISS       0xffffffff
753*53ee8cc1Swenshuai.xi #define _TSP_QMEM_SIZE              0x1000 // 16K bytes, 32bit aligment  //0x4000  this is 4 byte address
754*53ee8cc1Swenshuai.xi 
755*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Cpu_Base, 0); // 16 bytes address unit
756*53ee8cc1Swenshuai.xi 
757*53ee8cc1Swenshuai.xi     MS_U32              u32DnldCtrl  = 0;
758*53ee8cc1Swenshuai.xi     MS_U32              u32DnldCtrl1 = 0;
759*53ee8cc1Swenshuai.xi 
760*53ee8cc1Swenshuai.xi     // Check MIU select
761*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel = 0;
762*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetFWBuf = 0;
763*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFWBuf, u32FwPhyAddr);
764*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl6->CFG6_2C_REG_MIU_SEL_FILEIN_MM, (REG16_R(&_RegCtrl6->CFG6_2C_REG_MIU_SEL_FILEIN_MM) & (~REG_MIU_SEL_FILEIN0_MASK)) | ((u8MiuSel << REG_MIU_SEL_FILEIN0_SHIFT) & REG_MIU_SEL_FILEIN0_MASK));
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi     u32DnldCtrl  =      (phyMiuOffsetFWBuf >> MIU_BUS) >> TSP_DNLD_ADDR_ALI_SHIFT;
767*53ee8cc1Swenshuai.xi     u32DnldCtrl1 =      u32DnldCtrl >> 16;
768*53ee8cc1Swenshuai.xi 
769*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Dnld_Ctrl_Addr, (MS_U16)(u32DnldCtrl & TSP_DNLD_ADDR_MASK)); // oneway register
770*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl->Dnld_AddrH, TSP_DMA_RADDR_MSB_MASK, (MS_U16)u32DnldCtrl1);
771*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Dnld_Ctrl_Size, _TSP_QMEM_SIZE);
772*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
773*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START);
774*53ee8cc1Swenshuai.xi 
775*53ee8cc1Swenshuai.xi     //@TODO temprarily comment because of Secure Protect
776*53ee8cc1Swenshuai.xi     #if 1
777*53ee8cc1Swenshuai.xi     while (!(REG16_R(&_RegCtrl->TSP_Ctrl) & TSP_CTRL_DNLD_DONE))
778*53ee8cc1Swenshuai.xi     {
779*53ee8cc1Swenshuai.xi     }
780*53ee8cc1Swenshuai.xi     #endif
781*53ee8cc1Swenshuai.xi 
782*53ee8cc1Swenshuai.xi 
783*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
784*53ee8cc1Swenshuai.xi 
785*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Imask, _TSP_QMEM_I_MASK);
786*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Ibase, _TSP_QMEM_I_ADDR_HIT);
787*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Dmask, _TSP_QMEM_D_MASK);
788*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Dbase, _TSP_QMEM_D_ADDR_HIT);
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_MASK
791*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_HIT
792*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_MISS
793*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_MASK
794*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_HIT
795*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_MISS
796*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_SIZE
797*53ee8cc1Swenshuai.xi 
798*53ee8cc1Swenshuai.xi     return TRUE;
799*53ee8cc1Swenshuai.xi }
800*53ee8cc1Swenshuai.xi 
HAL_TSP_RestoreFltState(void)801*53ee8cc1Swenshuai.xi void    HAL_TSP_RestoreFltState(void)
802*53ee8cc1Swenshuai.xi {
803*53ee8cc1Swenshuai.xi     MS_U32              u32Size;
804*53ee8cc1Swenshuai.xi     TSP32 *             pRegEnd;
805*53ee8cc1Swenshuai.xi     TSP32 *             pReg;
806*53ee8cc1Swenshuai.xi     int                 i, j;
807*53ee8cc1Swenshuai.xi 
808*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_PIDFLT_NUM; i++)
809*53ee8cc1Swenshuai.xi     {
810*53ee8cc1Swenshuai.xi         TSP32_IdrW(&(_REGPid0->Flt[i]), _u32PidFltReg[i]);
811*53ee8cc1Swenshuai.xi         TSP32_IdrW(&(_REGPid1->Flt[i]), _u32PidDstReg[i]);
812*53ee8cc1Swenshuai.xi     }
813*53ee8cc1Swenshuai.xi 
814*53ee8cc1Swenshuai.xi     u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
815*53ee8cc1Swenshuai.xi 
816*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_SECFLT_NUM; i++)
817*53ee8cc1Swenshuai.xi     {
818*53ee8cc1Swenshuai.xi        pReg = (TSP32*)&(_REGSec->Flt[i]);
819*53ee8cc1Swenshuai.xi        pRegEnd = pReg + u32Size;
820*53ee8cc1Swenshuai.xi        j = 0;
821*53ee8cc1Swenshuai.xi        for ( ; pReg < pRegEnd; pReg++)
822*53ee8cc1Swenshuai.xi        {
823*53ee8cc1Swenshuai.xi            TSP32_IdrW(pReg, _u32SecReg[i*u32Size+j]);
824*53ee8cc1Swenshuai.xi            j++;
825*53ee8cc1Swenshuai.xi        }
826*53ee8cc1Swenshuai.xi     }
827*53ee8cc1Swenshuai.xi 
828*53ee8cc1Swenshuai.xi }
829*53ee8cc1Swenshuai.xi 
HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)830*53ee8cc1Swenshuai.xi void HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
831*53ee8cc1Swenshuai.xi {
832*53ee8cc1Swenshuai.xi     if(bEn)
833*53ee8cc1Swenshuai.xi     {
834*53ee8cc1Swenshuai.xi         switch(pktDmxId)
835*53ee8cc1Swenshuai.xi         {
836*53ee8cc1Swenshuai.xi             case 0:
837*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
838*53ee8cc1Swenshuai.xi                 break;
839*53ee8cc1Swenshuai.xi             case 1:
840*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
841*53ee8cc1Swenshuai.xi                 break;
842*53ee8cc1Swenshuai.xi             case 2:
843*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
844*53ee8cc1Swenshuai.xi                 break;
845*53ee8cc1Swenshuai.xi             case 3:
846*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF3);
847*53ee8cc1Swenshuai.xi                 break;
848*53ee8cc1Swenshuai.xi             default:
849*53ee8cc1Swenshuai.xi                 break;
850*53ee8cc1Swenshuai.xi         }
851*53ee8cc1Swenshuai.xi     }
852*53ee8cc1Swenshuai.xi     else
853*53ee8cc1Swenshuai.xi     {
854*53ee8cc1Swenshuai.xi         switch(pktDmxId)
855*53ee8cc1Swenshuai.xi         {
856*53ee8cc1Swenshuai.xi             case 0:
857*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
858*53ee8cc1Swenshuai.xi                 break;
859*53ee8cc1Swenshuai.xi             case 1:
860*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
861*53ee8cc1Swenshuai.xi                 break;
862*53ee8cc1Swenshuai.xi             case 2:
863*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
864*53ee8cc1Swenshuai.xi                 break;
865*53ee8cc1Swenshuai.xi             case 3:
866*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF3);
867*53ee8cc1Swenshuai.xi                 break;
868*53ee8cc1Swenshuai.xi             default:
869*53ee8cc1Swenshuai.xi                 break;
870*53ee8cc1Swenshuai.xi         }
871*53ee8cc1Swenshuai.xi     }
872*53ee8cc1Swenshuai.xi }
873*53ee8cc1Swenshuai.xi 
HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)874*53ee8cc1Swenshuai.xi void HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
875*53ee8cc1Swenshuai.xi {
876*53ee8cc1Swenshuai.xi     if(bEn)
877*53ee8cc1Swenshuai.xi     {
878*53ee8cc1Swenshuai.xi         switch(pktDmxId)
879*53ee8cc1Swenshuai.xi         {
880*53ee8cc1Swenshuai.xi             case 0:
881*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
882*53ee8cc1Swenshuai.xi                 break;
883*53ee8cc1Swenshuai.xi             case 1:
884*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
885*53ee8cc1Swenshuai.xi                 break;
886*53ee8cc1Swenshuai.xi             case 2:
887*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
888*53ee8cc1Swenshuai.xi                 break;
889*53ee8cc1Swenshuai.xi             case 3:
890*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF3);
891*53ee8cc1Swenshuai.xi                 break;
892*53ee8cc1Swenshuai.xi             default:
893*53ee8cc1Swenshuai.xi                 break;
894*53ee8cc1Swenshuai.xi         }
895*53ee8cc1Swenshuai.xi     }
896*53ee8cc1Swenshuai.xi     else
897*53ee8cc1Swenshuai.xi     {
898*53ee8cc1Swenshuai.xi         switch(pktDmxId)
899*53ee8cc1Swenshuai.xi         {
900*53ee8cc1Swenshuai.xi             case 0:
901*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
902*53ee8cc1Swenshuai.xi                 break;
903*53ee8cc1Swenshuai.xi             case 1:
904*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
905*53ee8cc1Swenshuai.xi                 break;
906*53ee8cc1Swenshuai.xi             case 2:
907*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
908*53ee8cc1Swenshuai.xi                 break;
909*53ee8cc1Swenshuai.xi             case 3:
910*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF3);
911*53ee8cc1Swenshuai.xi                 break;
912*53ee8cc1Swenshuai.xi             default:
913*53ee8cc1Swenshuai.xi                 break;
914*53ee8cc1Swenshuai.xi         }
915*53ee8cc1Swenshuai.xi     }
916*53ee8cc1Swenshuai.xi }
917*53ee8cc1Swenshuai.xi 
HAL_TSP_SetTSIF(MS_U16 u16TSIF,TSP_TSIF_CFG u16Cfg,MS_BOOL bFileIn)918*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetTSIF(MS_U16 u16TSIF, TSP_TSIF_CFG u16Cfg, MS_BOOL bFileIn)
919*53ee8cc1Swenshuai.xi {
920*53ee8cc1Swenshuai.xi     if(bFileIn)
921*53ee8cc1Swenshuai.xi     {
922*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, TRUE); // this returns true only we don't check the return value
923*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_LiveEn(u16TSIF, FALSE);             // this returns true only we don't check the return value
924*53ee8cc1Swenshuai.xi     }
925*53ee8cc1Swenshuai.xi     else
926*53ee8cc1Swenshuai.xi     {
927*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, FALSE);
928*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_LiveEn(u16TSIF, TRUE);
929*53ee8cc1Swenshuai.xi     }
930*53ee8cc1Swenshuai.xi 
931*53ee8cc1Swenshuai.xi     if(bFileIn != TRUE)
932*53ee8cc1Swenshuai.xi     {
933*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_BitSwap(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_BITSWAP)?TRUE:FALSE));
934*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_ExtSync(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_EXTSYNC)?TRUE:FALSE));
935*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_Parl   (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_PARA   )?TRUE:FALSE));
936*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_3Wire  (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_3WIRE  )?TRUE:FALSE));
937*53ee8cc1Swenshuai.xi     }
938*53ee8cc1Swenshuai.xi 
939*53ee8cc1Swenshuai.xi     return TRUE;
940*53ee8cc1Swenshuai.xi }
941*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_LiveEn(MS_U32 tsIf,MS_BOOL bEnable)942*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_LiveEn(MS_U32 tsIf, MS_BOOL bEnable)
943*53ee8cc1Swenshuai.xi {
944*53ee8cc1Swenshuai.xi     if(bEnable)
945*53ee8cc1Swenshuai.xi     {
946*53ee8cc1Swenshuai.xi         switch(tsIf)
947*53ee8cc1Swenshuai.xi         {
948*53ee8cc1Swenshuai.xi             case 0:
949*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
950*53ee8cc1Swenshuai.xi                 break;
951*53ee8cc1Swenshuai.xi             case 1:
952*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
953*53ee8cc1Swenshuai.xi                 break;
954*53ee8cc1Swenshuai.xi             case 2:
955*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
956*53ee8cc1Swenshuai.xi                 break;
957*53ee8cc1Swenshuai.xi             case 3:
958*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_IF3_EN);
959*53ee8cc1Swenshuai.xi                 break;
960*53ee8cc1Swenshuai.xi             default:
961*53ee8cc1Swenshuai.xi                 return FALSE;
962*53ee8cc1Swenshuai.xi         }
963*53ee8cc1Swenshuai.xi     }
964*53ee8cc1Swenshuai.xi     else
965*53ee8cc1Swenshuai.xi     {
966*53ee8cc1Swenshuai.xi         switch(tsIf)
967*53ee8cc1Swenshuai.xi         {
968*53ee8cc1Swenshuai.xi             case 0:
969*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
970*53ee8cc1Swenshuai.xi                 break;
971*53ee8cc1Swenshuai.xi             case 1:
972*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
973*53ee8cc1Swenshuai.xi                 break;
974*53ee8cc1Swenshuai.xi             case 2:
975*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
976*53ee8cc1Swenshuai.xi                 break;
977*53ee8cc1Swenshuai.xi             case 3:
978*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_IF3_EN);
979*53ee8cc1Swenshuai.xi                 break;
980*53ee8cc1Swenshuai.xi             default:
981*53ee8cc1Swenshuai.xi                 return FALSE;
982*53ee8cc1Swenshuai.xi         }
983*53ee8cc1Swenshuai.xi     }
984*53ee8cc1Swenshuai.xi 
985*53ee8cc1Swenshuai.xi     return TRUE;
986*53ee8cc1Swenshuai.xi }
987*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad(MS_U32 tsIf,TSP_TS_PAD eTSPad)988*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad(MS_U32 tsIf, TSP_TS_PAD eTSPad) // @FIXME modify this parameter to enum plz
989*53ee8cc1Swenshuai.xi {
990*53ee8cc1Swenshuai.xi     MS_U32 clk_src = REG_CLKGEN0_TS_SRC_EXT0;
991*53ee8cc1Swenshuai.xi     MS_U32 pad_src = REG_TOP_TS_SRC_EXT0;
992*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
993*53ee8cc1Swenshuai.xi     MS_S32 handle;
994*53ee8cc1Swenshuai.xi     MS_U8  u8NameIdx = 0;
995*53ee8cc1Swenshuai.xi     char* u8ClkSrcNames[] =
996*53ee8cc1Swenshuai.xi     {
997*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD0",
998*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD1",
999*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD2",
1000*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD3",
1001*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD4",
1002*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD5",
1003*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD6",
1004*53ee8cc1Swenshuai.xi         "CLK_TS0_PADTSO"
1005*53ee8cc1Swenshuai.xi     };
1006*53ee8cc1Swenshuai.xi #endif
1007*53ee8cc1Swenshuai.xi 
1008*53ee8cc1Swenshuai.xi     //@NOTE
1009*53ee8cc1Swenshuai.xi     //EX3~6 are serial mode and ts2_padmax_mode must be 2 or 3.
1010*53ee8cc1Swenshuai.xi 
1011*53ee8cc1Swenshuai.xi 
1012*53ee8cc1Swenshuai.xi     switch (eTSPad)
1013*53ee8cc1Swenshuai.xi     {
1014*53ee8cc1Swenshuai.xi         default:
1015*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT0:
1016*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT0;
1017*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT0;
1018*53ee8cc1Swenshuai.xi             break;
1019*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1:
1020*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT1;
1021*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT1;
1022*53ee8cc1Swenshuai.xi             break;
1023*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT2:
1024*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT2;
1025*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT2;
1026*53ee8cc1Swenshuai.xi             break;
1027*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT3:
1028*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT3;
1029*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT3;
1030*53ee8cc1Swenshuai.xi             break;
1031*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT4:
1032*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT4;
1033*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT4;
1034*53ee8cc1Swenshuai.xi             break;
1035*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT5:
1036*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT5;
1037*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT5;
1038*53ee8cc1Swenshuai.xi             break;
1039*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT6:
1040*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT6;
1041*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT6;
1042*53ee8cc1Swenshuai.xi             break;
1043*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSOUT0:
1044*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_TSO0;
1045*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_TSO0;
1046*53ee8cc1Swenshuai.xi             break;
1047*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER0:
1048*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT0;
1049*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT0;
1050*53ee8cc1Swenshuai.xi             printf("[%s][%d]Warning KANO not support Internal Demod\n",__FUNCTION__,__LINE__);
1051*53ee8cc1Swenshuai.xi             break;
1052*53ee8cc1Swenshuai.xi     }
1053*53ee8cc1Swenshuai.xi 
1054*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1055*53ee8cc1Swenshuai.xi     switch(clk_src)
1056*53ee8cc1Swenshuai.xi     {
1057*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT0:
1058*53ee8cc1Swenshuai.xi             u8NameIdx = 0;
1059*53ee8cc1Swenshuai.xi             break;
1060*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT1:
1061*53ee8cc1Swenshuai.xi             u8NameIdx = 1;
1062*53ee8cc1Swenshuai.xi             break;
1063*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT2:
1064*53ee8cc1Swenshuai.xi             u8NameIdx = 2;
1065*53ee8cc1Swenshuai.xi             break;
1066*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT3:
1067*53ee8cc1Swenshuai.xi             u8NameIdx = 3;
1068*53ee8cc1Swenshuai.xi             break;
1069*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT4:
1070*53ee8cc1Swenshuai.xi             u8NameIdx = 4;
1071*53ee8cc1Swenshuai.xi             break;
1072*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT5:
1073*53ee8cc1Swenshuai.xi             u8NameIdx = 5;
1074*53ee8cc1Swenshuai.xi             break;
1075*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT6:
1076*53ee8cc1Swenshuai.xi             u8NameIdx = 6;
1077*53ee8cc1Swenshuai.xi             break;
1078*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSO0:
1079*53ee8cc1Swenshuai.xi             u8NameIdx = 7;
1080*53ee8cc1Swenshuai.xi             break;
1081*53ee8cc1Swenshuai.xi         default:
1082*53ee8cc1Swenshuai.xi             HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] Pad not support !!\n",__FUNCTION__,__LINE__));
1083*53ee8cc1Swenshuai.xi             u8NameIdx = 0;
1084*53ee8cc1Swenshuai.xi             break;
1085*53ee8cc1Swenshuai.xi     }
1086*53ee8cc1Swenshuai.xi #endif
1087*53ee8cc1Swenshuai.xi 
1088*53ee8cc1Swenshuai.xi     //@FIXME use enum instead of constant
1089*53ee8cc1Swenshuai.xi     switch (tsIf)
1090*53ee8cc1Swenshuai.xi     {
1091*53ee8cc1Swenshuai.xi         case 0:
1092*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TS0_MUX)          =  (TSP_TOP_REG(REG_TOP_TS0_MUX) & ~REG_TOP_TS_SRC_MASK) | (pad_src<<REG_TOP_TS0_SHIFT);
1093*53ee8cc1Swenshuai.xi 
1094*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1095*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts");
1096*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1097*53ee8cc1Swenshuai.xi         #else
1098*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & ~REG_CLKGEN0_TS_MASK) | (clk_src<<(REG_CLKGEN0_TS0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1099*53ee8cc1Swenshuai.xi         #endif
1100*53ee8cc1Swenshuai.xi             break;
1101*53ee8cc1Swenshuai.xi         case 1:
1102*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TS1_MUX)          =  (TSP_TOP_REG(REG_TOP_TS1_MUX) & ~(REG_TOP_TS_SRC_MASK<<REG_TOP_TS1_SHIFT))
1103*53ee8cc1Swenshuai.xi                                                         | (pad_src<<REG_TOP_TS1_SHIFT);
1104*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1105*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1106*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1107*53ee8cc1Swenshuai.xi         #else
1108*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS1_SHIFT))
1109*53ee8cc1Swenshuai.xi                                                         | (clk_src<<(REG_CLKGEN0_TS1_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1110*53ee8cc1Swenshuai.xi         #endif
1111*53ee8cc1Swenshuai.xi             break;
1112*53ee8cc1Swenshuai.xi         case 2:
1113*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TS2_MUX)          =  (TSP_TOP_REG(REG_TOP_TS2_MUX) & ~(REG_TOP_TS_SRC_MASK<<REG_TOP_TS2_SHIFT))
1114*53ee8cc1Swenshuai.xi                                                         | (pad_src<<REG_TOP_TS2_SHIFT);
1115*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1116*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1117*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1118*53ee8cc1Swenshuai.xi         #else
1119*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS2_SHIFT))
1120*53ee8cc1Swenshuai.xi                                                         | (clk_src<<(REG_CLKGEN0_TS2_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1121*53ee8cc1Swenshuai.xi         #endif
1122*53ee8cc1Swenshuai.xi             break;
1123*53ee8cc1Swenshuai.xi         case 3:
1124*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TS3_MUX)          =  (TSP_TOP_REG(REG_TOP_TS3_MUX) & ~(REG_TOP_TS_SRC_MASK<<REG_TOP_TS3_SHIFT))
1125*53ee8cc1Swenshuai.xi                                                         | (pad_src<<REG_TOP_TS3_SHIFT);
1126*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1127*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1128*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1129*53ee8cc1Swenshuai.xi         #else
1130*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS3_SHIFT))
1131*53ee8cc1Swenshuai.xi                                                         | (clk_src<<(REG_CLKGEN0_TS3_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1132*53ee8cc1Swenshuai.xi         #endif
1133*53ee8cc1Swenshuai.xi             break;
1134*53ee8cc1Swenshuai.xi 
1135*53ee8cc1Swenshuai.xi         default:
1136*53ee8cc1Swenshuai.xi             return FALSE;
1137*53ee8cc1Swenshuai.xi     }
1138*53ee8cc1Swenshuai.xi     return TRUE;
1139*53ee8cc1Swenshuai.xi }
1140*53ee8cc1Swenshuai.xi 
_HAL_TSO_SetPad1OutMux(MS_BOOL bSet)1141*53ee8cc1Swenshuai.xi static void _HAL_TSO_SetPad1OutMux(MS_BOOL bSet)
1142*53ee8cc1Swenshuai.xi {
1143*53ee8cc1Swenshuai.xi     if(bSet)
1144*53ee8cc1Swenshuai.xi     {
1145*53ee8cc1Swenshuai.xi         TSP_TOP_REG(REG_TOP_TS_PADMUX_MODE) = TSP_TOP_REG(REG_TOP_TS_PADMUX_MODE) & ~(REG_TOP_TS1MODE_MASK << REG_TOP_TS1MODE_SHIFT);
1146*53ee8cc1Swenshuai.xi     }
1147*53ee8cc1Swenshuai.xi     else
1148*53ee8cc1Swenshuai.xi     {
1149*53ee8cc1Swenshuai.xi         TSP_TOP_REG(REG_TOP_TS_PADMUX_MODE) = ((TSP_TOP_REG(REG_TOP_TS_PADMUX_MODE) & ~(REG_TOP_TS1MODE_MASK << REG_TOP_TS1MODE_SHIFT))
1150*53ee8cc1Swenshuai.xi                                             | (REG_TOP_TS1MODE_INPUT << REG_TOP_TS1MODE_SHIFT));
1151*53ee8cc1Swenshuai.xi     }
1152*53ee8cc1Swenshuai.xi }
1153*53ee8cc1Swenshuai.xi 
HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)1154*53ee8cc1Swenshuai.xi void HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)
1155*53ee8cc1Swenshuai.xi {
1156*53ee8cc1Swenshuai.xi     _HAL_TSO_SetPad1OutMux(bSet);
1157*53ee8cc1Swenshuai.xi }
1158*53ee8cc1Swenshuai.xi 
HAL_TSP_TsOutPadCfg(TSP_TS_PAD eOutPad,TSP_TS_PAD_MUX_MODE eOutPadMode,TSP_TS_PAD eInPad,TSP_TS_PAD_MUX_MODE eInPadMode,MS_BOOL bEnable)1159*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TsOutPadCfg(TSP_TS_PAD eOutPad, TSP_TS_PAD_MUX_MODE eOutPadMode, TSP_TS_PAD eInPad, TSP_TS_PAD_MUX_MODE eInPadMode, MS_BOOL bEnable)
1160*53ee8cc1Swenshuai.xi {
1161*53ee8cc1Swenshuai.xi     MS_U16  u16Temp = 0;
1162*53ee8cc1Swenshuai.xi 
1163*53ee8cc1Swenshuai.xi     switch(eOutPad) // output pad
1164*53ee8cc1Swenshuai.xi     {
1165*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1: // TS_pad #1
1166*53ee8cc1Swenshuai.xi             if(eInPad == E_TSP_TS_PAD_EXT1)  // output pad == input pad ?
1167*53ee8cc1Swenshuai.xi             {
1168*53ee8cc1Swenshuai.xi                 return FALSE;
1169*53ee8cc1Swenshuai.xi             }
1170*53ee8cc1Swenshuai.xi 
1171*53ee8cc1Swenshuai.xi             _HAL_TSO_SetPad1OutMux(bEnable); // set pad mode (input or output)
1172*53ee8cc1Swenshuai.xi 
1173*53ee8cc1Swenshuai.xi             switch(eOutPadMode) // set pad output mode
1174*53ee8cc1Swenshuai.xi             {
1175*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_TSO:
1176*53ee8cc1Swenshuai.xi                     // input from TSO
1177*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TS_OUTPUT_MODE) = (TSP_TOP_REG(REG_TOP_TS_OUTPUT_MODE) & ~(REG_TOP_TS_OUT_MODE_MASK << REG_TOP_TS_OUT_MODE_SHIFT))
1178*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_TSO << REG_TOP_TS_OUT_MODE_SHIFT);
1179*53ee8cc1Swenshuai.xi                     break;
1180*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_S2P:
1181*53ee8cc1Swenshuai.xi                     // input from S2P
1182*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TS_OUTPUT_MODE) = (TSP_TOP_REG(REG_TOP_TS_OUTPUT_MODE) & ~(REG_TOP_TS_OUT_MODE_MASK << REG_TOP_TS_OUT_MODE_SHIFT))
1183*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_S2P << REG_TOP_TS_OUT_MODE_SHIFT);
1184*53ee8cc1Swenshuai.xi 
1185*53ee8cc1Swenshuai.xi                     u16Temp = REG_TSO_TSP_S2P_EN | REG_TSO_TSP_S2P_TS_SIN_C0 | REG_TSO_TSP_S2P_TS_SIN_C1;   // S2P enable bit , serial bit count setting
1186*53ee8cc1Swenshuai.xi                     if(eInPadMode == E_TSP_TS_PAD_MUX_PARALLEL)
1187*53ee8cc1Swenshuai.xi                     {
1188*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_BYPASS_S2P;                                                  // bypass S2P: if input is parallel , set it
1189*53ee8cc1Swenshuai.xi                     }
1190*53ee8cc1Swenshuai.xi                     else if(eInPadMode == E_TSP_TS_PAD_MUX_3WIRED_SERIAL)
1191*53ee8cc1Swenshuai.xi                     {
1192*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_S2P_3WIRE;                                                   // input pad is 3-wire serial
1193*53ee8cc1Swenshuai.xi                     }
1194*53ee8cc1Swenshuai.xi 
1195*53ee8cc1Swenshuai.xi                     // S2P config
1196*53ee8cc1Swenshuai.xi                     TSP_TSO_REG(REG_TSO_TSP_CONFIG0) = (TSP_TSO_REG(REG_TSO_TSP_CONFIG0) & ~REG_TSO_TSP_S2P_MASK) | u16Temp;
1197*53ee8cc1Swenshuai.xi                     // select S2P input pad
1198*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TSO4_5_MUX) = (TSP_TOP_REG(REG_TOP_TSO4_5_MUX) & ~REG_TOP_TSO4_MASK)
1199*53ee8cc1Swenshuai.xi                                                     | (eInPad << REG_TOP_TSO4_SHIFT);
1200*53ee8cc1Swenshuai.xi                     // select S2P input clk source
1201*53ee8cc1Swenshuai.xi                 #ifdef CONFIG_MSTAR_CLKM
1202*53ee8cc1Swenshuai.xi                     {
1203*53ee8cc1Swenshuai.xi                         MS_S32 handle;
1204*53ee8cc1Swenshuai.xi                         MS_U8  u8NameIdx = 0;
1205*53ee8cc1Swenshuai.xi                         char* u8ClkSrcNames[] =
1206*53ee8cc1Swenshuai.xi                         {
1207*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD0",
1208*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD1",
1209*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD2",
1210*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD3",
1211*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD4",
1212*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD5",
1213*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD6"
1214*53ee8cc1Swenshuai.xi                         };
1215*53ee8cc1Swenshuai.xi 
1216*53ee8cc1Swenshuai.xi                         switch(eInPad)
1217*53ee8cc1Swenshuai.xi                         {
1218*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT0:
1219*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1220*53ee8cc1Swenshuai.xi                                 break;
1221*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT1:
1222*53ee8cc1Swenshuai.xi                                 u8NameIdx = 1;
1223*53ee8cc1Swenshuai.xi                                 break;
1224*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT2:
1225*53ee8cc1Swenshuai.xi                                 u8NameIdx = 2;
1226*53ee8cc1Swenshuai.xi                                 break;
1227*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT3:
1228*53ee8cc1Swenshuai.xi                                 u8NameIdx = 3;
1229*53ee8cc1Swenshuai.xi                                 break;
1230*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT4:
1231*53ee8cc1Swenshuai.xi                                 u8NameIdx = 4;
1232*53ee8cc1Swenshuai.xi                                 break;
1233*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT5:
1234*53ee8cc1Swenshuai.xi                                 u8NameIdx = 5;
1235*53ee8cc1Swenshuai.xi                                 break;
1236*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT6:
1237*53ee8cc1Swenshuai.xi                                 u8NameIdx = 6;
1238*53ee8cc1Swenshuai.xi                                 break;
1239*53ee8cc1Swenshuai.xi                             default:
1240*53ee8cc1Swenshuai.xi                                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] Pad not support !!\n",__FUNCTION__,__LINE__));
1241*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1242*53ee8cc1Swenshuai.xi                                 break;
1243*53ee8cc1Swenshuai.xi                         }
1244*53ee8cc1Swenshuai.xi 
1245*53ee8cc1Swenshuai.xi                         handle = Drv_Clkm_Get_Handle("g_clk_s2p_in");
1246*53ee8cc1Swenshuai.xi                         Drv_Clkm_Set_Clk_Source(handle, u8ClkSrcNames[u8NameIdx]);
1247*53ee8cc1Swenshuai.xi                     }
1248*53ee8cc1Swenshuai.xi                 #else
1249*53ee8cc1Swenshuai.xi                     TSP_CLKGEN0_REG(REG_CLKGEN0_S2P_IN_CLK_SRC) = (TSP_CLKGEN0_REG(REG_CLKGEN0_S2P_IN_CLK_SRC) & ~(REG_CLKGEN0_S2P_IN_CLK_MASK << REG_CLKGEN0_S2P_IN_CLK_SHIFT))
1250*53ee8cc1Swenshuai.xi                                                                 | ((eInPad & REG_CLKGEN0_S2P_IN_CLK_SRC_MASK) << (REG_CLKGEN0_S2P_IN_CLK_SHIFT + REG_CLKGEN0_S2P_IN_CLK_SRC_SHIFT));
1251*53ee8cc1Swenshuai.xi                 #endif
1252*53ee8cc1Swenshuai.xi                     break;
1253*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_S2P1:
1254*53ee8cc1Swenshuai.xi                     // input from S2P1
1255*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TS_OUTPUT_MODE) = (TSP_TOP_REG(REG_TOP_TS_OUTPUT_MODE) & ~(REG_TOP_TS_OUT_MODE_MASK << REG_TOP_TS_OUT_MODE_SHIFT))
1256*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_S2P1 << REG_TOP_TS_OUT_MODE_SHIFT);
1257*53ee8cc1Swenshuai.xi 
1258*53ee8cc1Swenshuai.xi                     u16Temp = REG_TSO_TSP_S2P1_EN | REG_TSO_TSP_S2P1_TS_SIN_C0 | REG_TSO_TSP_S2P1_TS_SIN_C1;// S2P1 enable bit , serial bit count setting
1259*53ee8cc1Swenshuai.xi                     if(eInPadMode == E_TSP_TS_PAD_MUX_PARALLEL)
1260*53ee8cc1Swenshuai.xi                     {
1261*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_BYPASS_S2P1;                                                 // bypass S2P1: if input is parallel , set it
1262*53ee8cc1Swenshuai.xi                     }
1263*53ee8cc1Swenshuai.xi                     else if(eInPadMode == E_TSP_TS_PAD_MUX_3WIRED_SERIAL)
1264*53ee8cc1Swenshuai.xi                     {
1265*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_S2P1_3WIRE;                                                  // input pad is 3-wire serial
1266*53ee8cc1Swenshuai.xi                     }
1267*53ee8cc1Swenshuai.xi                     // S2P1 config
1268*53ee8cc1Swenshuai.xi                     TSP_TSO_REG(REG_TSO_TSP_CONFIG0) = (TSP_TSO_REG(REG_TSO_TSP_CONFIG0) & ~REG_TSO_TSP_S2P1_MASK) | u16Temp;
1269*53ee8cc1Swenshuai.xi                     // select S2P1 input pad
1270*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TSO4_5_MUX) = (TSP_TOP_REG(REG_TOP_TSO4_5_MUX) & ~REG_TOP_TSO5_MASK)
1271*53ee8cc1Swenshuai.xi                                                     | (eInPad << REG_TOP_TSO5_SHIFT);
1272*53ee8cc1Swenshuai.xi                 #ifdef CONFIG_MSTAR_CLKM
1273*53ee8cc1Swenshuai.xi                     {
1274*53ee8cc1Swenshuai.xi                         MS_S32 handle;
1275*53ee8cc1Swenshuai.xi                         MS_U8  u8NameIdx = 0;
1276*53ee8cc1Swenshuai.xi                         char* u8ClkSrcNames[] =
1277*53ee8cc1Swenshuai.xi                         {
1278*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD0",
1279*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD1",
1280*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD2",
1281*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD3",
1282*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD4",
1283*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD5",
1284*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD6"
1285*53ee8cc1Swenshuai.xi                         };
1286*53ee8cc1Swenshuai.xi 
1287*53ee8cc1Swenshuai.xi                         switch(eInPad)
1288*53ee8cc1Swenshuai.xi                         {
1289*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT0:
1290*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1291*53ee8cc1Swenshuai.xi                                 break;
1292*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT1:
1293*53ee8cc1Swenshuai.xi                                 u8NameIdx = 1;
1294*53ee8cc1Swenshuai.xi                                 break;
1295*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT2:
1296*53ee8cc1Swenshuai.xi                                 u8NameIdx = 2;
1297*53ee8cc1Swenshuai.xi                                 break;
1298*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT3:
1299*53ee8cc1Swenshuai.xi                                 u8NameIdx = 3;
1300*53ee8cc1Swenshuai.xi                                 break;
1301*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT4:
1302*53ee8cc1Swenshuai.xi                                 u8NameIdx = 4;
1303*53ee8cc1Swenshuai.xi                                 break;
1304*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT5:
1305*53ee8cc1Swenshuai.xi                                 u8NameIdx = 5;
1306*53ee8cc1Swenshuai.xi                                 break;
1307*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT6:
1308*53ee8cc1Swenshuai.xi                                 u8NameIdx = 6;
1309*53ee8cc1Swenshuai.xi                                 break;
1310*53ee8cc1Swenshuai.xi                             default:
1311*53ee8cc1Swenshuai.xi                                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] Pad not support !!\n",__FUNCTION__,__LINE__));
1312*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1313*53ee8cc1Swenshuai.xi                                 break;
1314*53ee8cc1Swenshuai.xi                         }
1315*53ee8cc1Swenshuai.xi 
1316*53ee8cc1Swenshuai.xi                         handle = Drv_Clkm_Get_Handle("g_clk_s2p1_in");
1317*53ee8cc1Swenshuai.xi                         Drv_Clkm_Set_Clk_Source(handle, u8ClkSrcNames[u8NameIdx]);
1318*53ee8cc1Swenshuai.xi                     }
1319*53ee8cc1Swenshuai.xi                 #else
1320*53ee8cc1Swenshuai.xi                     // select S2P1 input clk source
1321*53ee8cc1Swenshuai.xi                     TSP_CLKGEN0_REG(REG_CLKGEN0_S2P_IN_CLK_SRC) = (TSP_CLKGEN0_REG(REG_CLKGEN0_S2P_IN_CLK_SRC) & ~(REG_CLKGEN0_S2P_IN_CLK_MASK << REG_CLKGEN0_S2P1_IN_CLK_SHIFT))
1322*53ee8cc1Swenshuai.xi                                                                 | ((eInPad & REG_CLKGEN0_S2P_IN_CLK_SRC_MASK) << (REG_CLKGEN0_S2P1_IN_CLK_SHIFT + REG_CLKGEN0_S2P_IN_CLK_SRC_SHIFT));
1323*53ee8cc1Swenshuai.xi                 #endif
1324*53ee8cc1Swenshuai.xi 
1325*53ee8cc1Swenshuai.xi                     break;
1326*53ee8cc1Swenshuai.xi                 default:
1327*53ee8cc1Swenshuai.xi                     HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%d] Warining wrong output PAD Mode:%u\n",__FUNCTION__,__LINE__, eOutPadMode));
1328*53ee8cc1Swenshuai.xi                     return FALSE;
1329*53ee8cc1Swenshuai.xi             }
1330*53ee8cc1Swenshuai.xi             break;
1331*53ee8cc1Swenshuai.xi         default:
1332*53ee8cc1Swenshuai.xi             HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] Pad not support !!\n",__FUNCTION__,__LINE__));
1333*53ee8cc1Swenshuai.xi             return FALSE;
1334*53ee8cc1Swenshuai.xi     }
1335*53ee8cc1Swenshuai.xi 
1336*53ee8cc1Swenshuai.xi     return TRUE;
1337*53ee8cc1Swenshuai.xi }
1338*53ee8cc1Swenshuai.xi 
_TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad,MS_U32 * pu32PADSrc,MS_U32 * pu32CLKSrc)1339*53ee8cc1Swenshuai.xi static MS_BOOL _TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad, MS_U32* pu32PADSrc, MS_U32* pu32CLKSrc)
1340*53ee8cc1Swenshuai.xi {
1341*53ee8cc1Swenshuai.xi     switch (eTSPad)
1342*53ee8cc1Swenshuai.xi     {
1343*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT0:
1344*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
1345*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_EXT0;
1346*53ee8cc1Swenshuai.xi             break;
1347*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1:
1348*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT1;
1349*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_EXT1;
1350*53ee8cc1Swenshuai.xi             break;
1351*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER0:
1352*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_DMD0;
1353*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_DMD0;
1354*53ee8cc1Swenshuai.xi             break;
1355*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSOUT0:
1356*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_TSO0;
1357*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_TSO0;
1358*53ee8cc1Swenshuai.xi             break;
1359*53ee8cc1Swenshuai.xi 
1360*53ee8cc1Swenshuai.xi         default:
1361*53ee8cc1Swenshuai.xi             return FALSE;
1362*53ee8cc1Swenshuai.xi     }
1363*53ee8cc1Swenshuai.xi 
1364*53ee8cc1Swenshuai.xi     return TRUE;
1365*53ee8cc1Swenshuai.xi }
1366*53ee8cc1Swenshuai.xi 
HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng,TSP_TS_PAD eTSPad)1367*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng, TSP_TS_PAD eTSPad)
1368*53ee8cc1Swenshuai.xi {
1369*53ee8cc1Swenshuai.xi     MS_U32 u32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
1370*53ee8cc1Swenshuai.xi     MS_U32 u32PADSrc = REG_TOP_TS_SRC_EXT0;
1371*53ee8cc1Swenshuai.xi     _TSP_Hal_TSPAD2RelatedReg_Mapping(eTSPad, &u32PADSrc, &u32CLKSrc);
1372*53ee8cc1Swenshuai.xi 
1373*53ee8cc1Swenshuai.xi     switch(u32TSOEng)
1374*53ee8cc1Swenshuai.xi     {
1375*53ee8cc1Swenshuai.xi         case 0:
1376*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TSO0_MUX) = (TSP_TOP_REG(REG_TOP_TSO0_MUX) & ~REG_TOP_TS_SRC_MASK) | u32PADSrc;
1377*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1378*53ee8cc1Swenshuai.xi             {
1379*53ee8cc1Swenshuai.xi                 MS_S32 handle;
1380*53ee8cc1Swenshuai.xi                 MS_U8  u8NameIdx = 0;
1381*53ee8cc1Swenshuai.xi                 char* u8ClkSrcNames[] =
1382*53ee8cc1Swenshuai.xi                 {
1383*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD0",
1384*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD1",
1385*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD2",
1386*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD3",
1387*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD4",
1388*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD5",
1389*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD6"
1390*53ee8cc1Swenshuai.xi                 };
1391*53ee8cc1Swenshuai.xi 
1392*53ee8cc1Swenshuai.xi                 switch(u32CLKSrc)
1393*53ee8cc1Swenshuai.xi                 {
1394*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT0:
1395*53ee8cc1Swenshuai.xi                         u8NameIdx = 0;
1396*53ee8cc1Swenshuai.xi                         break;
1397*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT1:
1398*53ee8cc1Swenshuai.xi                         u8NameIdx = 1;
1399*53ee8cc1Swenshuai.xi                         break;
1400*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT2:
1401*53ee8cc1Swenshuai.xi                         u8NameIdx = 2;
1402*53ee8cc1Swenshuai.xi                         break;
1403*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT3:
1404*53ee8cc1Swenshuai.xi                         u8NameIdx = 3;
1405*53ee8cc1Swenshuai.xi                         break;
1406*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT4:
1407*53ee8cc1Swenshuai.xi                         u8NameIdx = 4;
1408*53ee8cc1Swenshuai.xi                         break;
1409*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT5:
1410*53ee8cc1Swenshuai.xi                         u8NameIdx = 5;
1411*53ee8cc1Swenshuai.xi                         break;
1412*53ee8cc1Swenshuai.xi                     default:
1413*53ee8cc1Swenshuai.xi                         HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] Pad not support !!\n",__FUNCTION__,__LINE__));
1414*53ee8cc1Swenshuai.xi                         u8NameIdx = 0;
1415*53ee8cc1Swenshuai.xi                         break;
1416*53ee8cc1Swenshuai.xi                 }
1417*53ee8cc1Swenshuai.xi 
1418*53ee8cc1Swenshuai.xi                 handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
1419*53ee8cc1Swenshuai.xi                 Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1420*53ee8cc1Swenshuai.xi             }
1421*53ee8cc1Swenshuai.xi         #else
1422*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK)
1423*53ee8cc1Swenshuai.xi                 | (u32CLKSrc << (REG_CLKGEN0_TSO0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1424*53ee8cc1Swenshuai.xi         #endif
1425*53ee8cc1Swenshuai.xi             return TRUE;
1426*53ee8cc1Swenshuai.xi 
1427*53ee8cc1Swenshuai.xi         default:
1428*53ee8cc1Swenshuai.xi             return FALSE;
1429*53ee8cc1Swenshuai.xi     }
1430*53ee8cc1Swenshuai.xi }
1431*53ee8cc1Swenshuai.xi 
1432*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf,MS_BOOL bClkInv)1433*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf , MS_BOOL bClkInv)
1434*53ee8cc1Swenshuai.xi {
1435*53ee8cc1Swenshuai.xi     if (bClkInv)
1436*53ee8cc1Swenshuai.xi     {
1437*53ee8cc1Swenshuai.xi         switch (tsIf)
1438*53ee8cc1Swenshuai.xi         {
1439*53ee8cc1Swenshuai.xi             case 0:
1440*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
1441*53ee8cc1Swenshuai.xi                 break;
1442*53ee8cc1Swenshuai.xi             case 1:
1443*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
1444*53ee8cc1Swenshuai.xi                 break;
1445*53ee8cc1Swenshuai.xi             case 2:
1446*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
1447*53ee8cc1Swenshuai.xi                 break;
1448*53ee8cc1Swenshuai.xi             case 3:
1449*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS3_SHIFT));
1450*53ee8cc1Swenshuai.xi                 break;
1451*53ee8cc1Swenshuai.xi             default:
1452*53ee8cc1Swenshuai.xi                 return FALSE;
1453*53ee8cc1Swenshuai.xi         }
1454*53ee8cc1Swenshuai.xi     }
1455*53ee8cc1Swenshuai.xi     else
1456*53ee8cc1Swenshuai.xi     {
1457*53ee8cc1Swenshuai.xi         switch (tsIf)
1458*53ee8cc1Swenshuai.xi         {
1459*53ee8cc1Swenshuai.xi             case 0:
1460*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
1461*53ee8cc1Swenshuai.xi                 break;
1462*53ee8cc1Swenshuai.xi             case 1:
1463*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
1464*53ee8cc1Swenshuai.xi                 break;
1465*53ee8cc1Swenshuai.xi             case 2:
1466*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
1467*53ee8cc1Swenshuai.xi                 break;
1468*53ee8cc1Swenshuai.xi             case 3:
1469*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS3_SHIFT));
1470*53ee8cc1Swenshuai.xi                 break;
1471*53ee8cc1Swenshuai.xi             default:
1472*53ee8cc1Swenshuai.xi                 return FALSE;
1473*53ee8cc1Swenshuai.xi         }
1474*53ee8cc1Swenshuai.xi     }
1475*53ee8cc1Swenshuai.xi     return TRUE;
1476*53ee8cc1Swenshuai.xi }
1477*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf,MS_BOOL bClkDis)1478*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf , MS_BOOL bClkDis)
1479*53ee8cc1Swenshuai.xi {
1480*53ee8cc1Swenshuai.xi     if (bClkDis)
1481*53ee8cc1Swenshuai.xi     {
1482*53ee8cc1Swenshuai.xi     #ifdef CONFIG_MSTAR_CLKM
1483*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
1484*53ee8cc1Swenshuai.xi 
1485*53ee8cc1Swenshuai.xi         switch (tsIf)
1486*53ee8cc1Swenshuai.xi         {
1487*53ee8cc1Swenshuai.xi             case 0:
1488*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
1489*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1490*53ee8cc1Swenshuai.xi                 break;
1491*53ee8cc1Swenshuai.xi             case 1:
1492*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1493*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1494*53ee8cc1Swenshuai.xi                 break;
1495*53ee8cc1Swenshuai.xi             case 2:
1496*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1497*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1498*53ee8cc1Swenshuai.xi                 break;
1499*53ee8cc1Swenshuai.xi             case 3:
1500*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1501*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1502*53ee8cc1Swenshuai.xi                 break;
1503*53ee8cc1Swenshuai.xi             default:
1504*53ee8cc1Swenshuai.xi                 return FALSE;
1505*53ee8cc1Swenshuai.xi         }
1506*53ee8cc1Swenshuai.xi     #else
1507*53ee8cc1Swenshuai.xi         switch (tsIf)
1508*53ee8cc1Swenshuai.xi         {
1509*53ee8cc1Swenshuai.xi             case 0:
1510*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
1511*53ee8cc1Swenshuai.xi                 break;
1512*53ee8cc1Swenshuai.xi             case 1:
1513*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
1514*53ee8cc1Swenshuai.xi                 break;
1515*53ee8cc1Swenshuai.xi             case 2:
1516*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
1517*53ee8cc1Swenshuai.xi                 break;
1518*53ee8cc1Swenshuai.xi             case 3:
1519*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS3_SHIFT));
1520*53ee8cc1Swenshuai.xi                 break;
1521*53ee8cc1Swenshuai.xi             default:
1522*53ee8cc1Swenshuai.xi                 return FALSE;
1523*53ee8cc1Swenshuai.xi         }
1524*53ee8cc1Swenshuai.xi     #endif
1525*53ee8cc1Swenshuai.xi     }
1526*53ee8cc1Swenshuai.xi     else
1527*53ee8cc1Swenshuai.xi     {
1528*53ee8cc1Swenshuai.xi     #ifdef CONFIG_MSTAR_CLKM
1529*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
1530*53ee8cc1Swenshuai.xi         MS_U16 u16ClkSrc;
1531*53ee8cc1Swenshuai.xi         MS_U8  u8NameIdx = 0;
1532*53ee8cc1Swenshuai.xi         char* u8ClkSrcNames[] =
1533*53ee8cc1Swenshuai.xi         {
1534*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD0",
1535*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD1",
1536*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD2",
1537*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD3",
1538*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD4",
1539*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD5",
1540*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD6",
1541*53ee8cc1Swenshuai.xi             "CLK_TS0_PADTSO"
1542*53ee8cc1Swenshuai.xi         };
1543*53ee8cc1Swenshuai.xi 
1544*53ee8cc1Swenshuai.xi         switch (tsIf)
1545*53ee8cc1Swenshuai.xi         {
1546*53ee8cc1Swenshuai.xi             case 0:
1547*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
1548*53ee8cc1Swenshuai.xi                 u16ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & REG_CLKGEN0_TS_MASK) >> (REG_CLKGEN0_TS0_SHIFT + REG_CLKGEN0_TS_SRC_SHIFT);
1549*53ee8cc1Swenshuai.xi                 break;
1550*53ee8cc1Swenshuai.xi             case 1:
1551*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1552*53ee8cc1Swenshuai.xi                 u16ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & (REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS1_SHIFT)) >> (REG_CLKGEN0_TS1_SHIFT + REG_CLKGEN0_TS_SRC_SHIFT);
1553*53ee8cc1Swenshuai.xi                 break;
1554*53ee8cc1Swenshuai.xi             case 2:
1555*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1556*53ee8cc1Swenshuai.xi                 u16ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & (REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS2_SHIFT)) >> (REG_CLKGEN0_TS2_SHIFT + REG_CLKGEN0_TS_SRC_SHIFT);
1557*53ee8cc1Swenshuai.xi                 break;
1558*53ee8cc1Swenshuai.xi             case 3:
1559*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1560*53ee8cc1Swenshuai.xi                 u16ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & (REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS3_SHIFT)) >> (REG_CLKGEN0_TS3_SHIFT + REG_CLKGEN0_TS_SRC_SHIFT);
1561*53ee8cc1Swenshuai.xi                 break;
1562*53ee8cc1Swenshuai.xi             default:
1563*53ee8cc1Swenshuai.xi                 return FALSE;
1564*53ee8cc1Swenshuai.xi         }
1565*53ee8cc1Swenshuai.xi 
1566*53ee8cc1Swenshuai.xi         switch(u16ClkSrc)
1567*53ee8cc1Swenshuai.xi         {
1568*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT0:
1569*53ee8cc1Swenshuai.xi                 u8NameIdx = 0;
1570*53ee8cc1Swenshuai.xi                 break;
1571*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT1:
1572*53ee8cc1Swenshuai.xi                 u8NameIdx = 1;
1573*53ee8cc1Swenshuai.xi                 break;
1574*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT2:
1575*53ee8cc1Swenshuai.xi                 u8NameIdx = 2;
1576*53ee8cc1Swenshuai.xi                 break;
1577*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT3:
1578*53ee8cc1Swenshuai.xi                 u8NameIdx = 3;
1579*53ee8cc1Swenshuai.xi                 break;
1580*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT4:
1581*53ee8cc1Swenshuai.xi                 u8NameIdx = 4;
1582*53ee8cc1Swenshuai.xi                 break;
1583*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT5:
1584*53ee8cc1Swenshuai.xi                 u8NameIdx = 5;
1585*53ee8cc1Swenshuai.xi                 break;
1586*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT6:
1587*53ee8cc1Swenshuai.xi                 u8NameIdx = 6;
1588*53ee8cc1Swenshuai.xi                 break;
1589*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_TSO0:
1590*53ee8cc1Swenshuai.xi                 u8NameIdx = 7;
1591*53ee8cc1Swenshuai.xi                 break;
1592*53ee8cc1Swenshuai.xi             default:
1593*53ee8cc1Swenshuai.xi                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] Pad not support !!\n",__FUNCTION__,__LINE__));
1594*53ee8cc1Swenshuai.xi                 u8NameIdx = 0;
1595*53ee8cc1Swenshuai.xi                 break;
1596*53ee8cc1Swenshuai.xi         }
1597*53ee8cc1Swenshuai.xi 
1598*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle, u8ClkSrcNames[u8NameIdx]);
1599*53ee8cc1Swenshuai.xi     #else
1600*53ee8cc1Swenshuai.xi         switch (tsIf)
1601*53ee8cc1Swenshuai.xi         {
1602*53ee8cc1Swenshuai.xi             case 0:
1603*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
1604*53ee8cc1Swenshuai.xi                 break;
1605*53ee8cc1Swenshuai.xi             case 1:
1606*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
1607*53ee8cc1Swenshuai.xi                 break;
1608*53ee8cc1Swenshuai.xi             case 2:
1609*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
1610*53ee8cc1Swenshuai.xi                 break;
1611*53ee8cc1Swenshuai.xi             case 3:
1612*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS3_SHIFT));
1613*53ee8cc1Swenshuai.xi                 break;
1614*53ee8cc1Swenshuai.xi             default:
1615*53ee8cc1Swenshuai.xi                 return FALSE;
1616*53ee8cc1Swenshuai.xi         }
1617*53ee8cc1Swenshuai.xi     #endif
1618*53ee8cc1Swenshuai.xi     }
1619*53ee8cc1Swenshuai.xi     return TRUE;
1620*53ee8cc1Swenshuai.xi }
1621*53ee8cc1Swenshuai.xi 
1622*53ee8cc1Swenshuai.xi // @NOTE tsif0 and tsif2 can do filein and livein simulatenously,so tsif0 tsif2's output are both live TS Data
HAL_TSP_TSIF_FileEn(FILEENG_SEQ eFileEng,MS_BOOL bEnable)1623*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_FileEn(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
1624*53ee8cc1Swenshuai.xi {
1625*53ee8cc1Swenshuai.xi     if(bEnable)
1626*53ee8cc1Swenshuai.xi     {
1627*53ee8cc1Swenshuai.xi         switch(eFileEng)
1628*53ee8cc1Swenshuai.xi         {
1629*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1630*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);    // for wishbone DMA (load firmware or playback)
1631*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);        //Tsif0 output is live TS
1632*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);                 //filein enable
1633*53ee8cc1Swenshuai.xi                 break;
1634*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1635*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TSP_FILE_SEGMENT1);            // for wishbone DMA (load firmware or playback) we don't use this fileEng for FW
1636*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
1637*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
1638*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);         //filein enable
1639*53ee8cc1Swenshuai.xi                 break;
1640*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1641*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
1642*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
1643*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
1644*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
1645*53ee8cc1Swenshuai.xi                 break;
1646*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1647*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TSP_FILE_SEGMENT3);
1648*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_SEGMENT_TSIF3);
1649*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA_PORT_SEL3);
1650*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_IN_TSIF3);
1651*53ee8cc1Swenshuai.xi                 break;
1652*53ee8cc1Swenshuai.xi             default:
1653*53ee8cc1Swenshuai.xi                 return FALSE;
1654*53ee8cc1Swenshuai.xi         }
1655*53ee8cc1Swenshuai.xi     }
1656*53ee8cc1Swenshuai.xi     else
1657*53ee8cc1Swenshuai.xi     {
1658*53ee8cc1Swenshuai.xi         switch(eFileEng)
1659*53ee8cc1Swenshuai.xi         {
1660*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1661*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
1662*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);
1663*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);
1664*53ee8cc1Swenshuai.xi                 break;
1665*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1666*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TSP_FILE_SEGMENT1);
1667*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
1668*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
1669*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);
1670*53ee8cc1Swenshuai.xi                 break;
1671*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1672*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
1673*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
1674*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
1675*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
1676*53ee8cc1Swenshuai.xi                 break;
1677*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1678*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TSP_FILE_SEGMENT3);
1679*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_SEGMENT_TSIF3);
1680*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA_PORT_SEL3);
1681*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_IN_TSIF3);
1682*53ee8cc1Swenshuai.xi                 break;
1683*53ee8cc1Swenshuai.xi             default:
1684*53ee8cc1Swenshuai.xi                 return FALSE;
1685*53ee8cc1Swenshuai.xi         }
1686*53ee8cc1Swenshuai.xi     }
1687*53ee8cc1Swenshuai.xi 
1688*53ee8cc1Swenshuai.xi     return TRUE;
1689*53ee8cc1Swenshuai.xi }
1690*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_BitSwap(MS_U32 tsIf,MS_BOOL bEnable)1691*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_BitSwap(MS_U32 tsIf, MS_BOOL bEnable)
1692*53ee8cc1Swenshuai.xi {
1693*53ee8cc1Swenshuai.xi     if(bEnable)
1694*53ee8cc1Swenshuai.xi     {
1695*53ee8cc1Swenshuai.xi         switch(tsIf)
1696*53ee8cc1Swenshuai.xi         {
1697*53ee8cc1Swenshuai.xi             case 0:
1698*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1699*53ee8cc1Swenshuai.xi                 break;
1700*53ee8cc1Swenshuai.xi             case 1:
1701*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1702*53ee8cc1Swenshuai.xi                 break;
1703*53ee8cc1Swenshuai.xi             case 2:
1704*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1705*53ee8cc1Swenshuai.xi                 break;
1706*53ee8cc1Swenshuai.xi             case 3:
1707*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA3_SWAP);
1708*53ee8cc1Swenshuai.xi                 break;
1709*53ee8cc1Swenshuai.xi             default:
1710*53ee8cc1Swenshuai.xi                 return;
1711*53ee8cc1Swenshuai.xi         }
1712*53ee8cc1Swenshuai.xi     }
1713*53ee8cc1Swenshuai.xi     else
1714*53ee8cc1Swenshuai.xi     {
1715*53ee8cc1Swenshuai.xi         switch(tsIf)
1716*53ee8cc1Swenshuai.xi         {
1717*53ee8cc1Swenshuai.xi             case 0:
1718*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1719*53ee8cc1Swenshuai.xi                 break;
1720*53ee8cc1Swenshuai.xi             case 1:
1721*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1722*53ee8cc1Swenshuai.xi                 break;
1723*53ee8cc1Swenshuai.xi             case 2:
1724*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1725*53ee8cc1Swenshuai.xi                 break;
1726*53ee8cc1Swenshuai.xi             case 3:
1727*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA3_SWAP);
1728*53ee8cc1Swenshuai.xi                 break;
1729*53ee8cc1Swenshuai.xi             default:
1730*53ee8cc1Swenshuai.xi                 return;
1731*53ee8cc1Swenshuai.xi         }
1732*53ee8cc1Swenshuai.xi     }
1733*53ee8cc1Swenshuai.xi }
1734*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_ExtSync(MS_U32 tsIf,MS_BOOL bEnable)1735*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_ExtSync(MS_U32 tsIf, MS_BOOL bEnable)
1736*53ee8cc1Swenshuai.xi {
1737*53ee8cc1Swenshuai.xi     if(bEnable)
1738*53ee8cc1Swenshuai.xi     {
1739*53ee8cc1Swenshuai.xi         printf("External Sync\n");
1740*53ee8cc1Swenshuai.xi 
1741*53ee8cc1Swenshuai.xi         switch(tsIf)
1742*53ee8cc1Swenshuai.xi         {
1743*53ee8cc1Swenshuai.xi             case 0:
1744*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1745*53ee8cc1Swenshuai.xi                 break;
1746*53ee8cc1Swenshuai.xi             case 1:
1747*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1748*53ee8cc1Swenshuai.xi                 break;
1749*53ee8cc1Swenshuai.xi             case 2:
1750*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1751*53ee8cc1Swenshuai.xi                 break;
1752*53ee8cc1Swenshuai.xi             case 3:
1753*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_EXT_SYNC_SEL3);
1754*53ee8cc1Swenshuai.xi                 break;
1755*53ee8cc1Swenshuai.xi             default:
1756*53ee8cc1Swenshuai.xi                 return;
1757*53ee8cc1Swenshuai.xi         }
1758*53ee8cc1Swenshuai.xi     }
1759*53ee8cc1Swenshuai.xi     else
1760*53ee8cc1Swenshuai.xi     {
1761*53ee8cc1Swenshuai.xi         printf("Internal Sync\n");
1762*53ee8cc1Swenshuai.xi 
1763*53ee8cc1Swenshuai.xi         switch(tsIf)
1764*53ee8cc1Swenshuai.xi         {
1765*53ee8cc1Swenshuai.xi             case 0:
1766*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1767*53ee8cc1Swenshuai.xi                 break;
1768*53ee8cc1Swenshuai.xi             case 1:
1769*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1770*53ee8cc1Swenshuai.xi                 break;
1771*53ee8cc1Swenshuai.xi             case 2:
1772*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1773*53ee8cc1Swenshuai.xi                 break;
1774*53ee8cc1Swenshuai.xi             case 3:
1775*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_EXT_SYNC_SEL3);
1776*53ee8cc1Swenshuai.xi                 break;
1777*53ee8cc1Swenshuai.xi             default:
1778*53ee8cc1Swenshuai.xi                 return;
1779*53ee8cc1Swenshuai.xi         }
1780*53ee8cc1Swenshuai.xi     }
1781*53ee8cc1Swenshuai.xi }
1782*53ee8cc1Swenshuai.xi 
1783*53ee8cc1Swenshuai.xi //void HAL_TSP_TSIF_Full_Block(MS_U32 tsIf, MS_BOOL bEnable)
HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng,MS_BOOL bEnable)1784*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
1785*53ee8cc1Swenshuai.xi {
1786*53ee8cc1Swenshuai.xi     if(bEnable)
1787*53ee8cc1Swenshuai.xi     {
1788*53ee8cc1Swenshuai.xi         switch(eFileEng)
1789*53ee8cc1Swenshuai.xi         {
1790*53ee8cc1Swenshuai.xi             case 0:
1791*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP);
1792*53ee8cc1Swenshuai.xi                 break;
1793*53ee8cc1Swenshuai.xi             case 1:
1794*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP1);
1795*53ee8cc1Swenshuai.xi                 break;
1796*53ee8cc1Swenshuai.xi             case 2:
1797*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP2);
1798*53ee8cc1Swenshuai.xi                 break;
1799*53ee8cc1Swenshuai.xi             case 3:
1800*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP3);
1801*53ee8cc1Swenshuai.xi                 break;
1802*53ee8cc1Swenshuai.xi             default:
1803*53ee8cc1Swenshuai.xi                 return;
1804*53ee8cc1Swenshuai.xi         }
1805*53ee8cc1Swenshuai.xi 
1806*53ee8cc1Swenshuai.xi         REG16_MSK_W(&_RegCtrl3->CFG3_10,CFG3_10_PS_MODE_SRC_MASK,(eFileEng << CFG3_10_PS_MODE_SRC_SHIFT));
1807*53ee8cc1Swenshuai.xi     }
1808*53ee8cc1Swenshuai.xi     else
1809*53ee8cc1Swenshuai.xi     {
1810*53ee8cc1Swenshuai.xi         switch(eFileEng)
1811*53ee8cc1Swenshuai.xi         {
1812*53ee8cc1Swenshuai.xi             case 0:
1813*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP);
1814*53ee8cc1Swenshuai.xi                 break;
1815*53ee8cc1Swenshuai.xi             case 1:
1816*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP1);
1817*53ee8cc1Swenshuai.xi                 break;
1818*53ee8cc1Swenshuai.xi             case 2:
1819*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP2);
1820*53ee8cc1Swenshuai.xi                 break;
1821*53ee8cc1Swenshuai.xi             case 3:
1822*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP3);
1823*53ee8cc1Swenshuai.xi                 break;
1824*53ee8cc1Swenshuai.xi             default:
1825*53ee8cc1Swenshuai.xi                 return;
1826*53ee8cc1Swenshuai.xi         }
1827*53ee8cc1Swenshuai.xi 
1828*53ee8cc1Swenshuai.xi     }
1829*53ee8cc1Swenshuai.xi }
1830*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_Parl(MS_U32 tsIf,MS_BOOL bEnable)1831*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_Parl(MS_U32 tsIf, MS_BOOL bEnable)
1832*53ee8cc1Swenshuai.xi {
1833*53ee8cc1Swenshuai.xi     if(bEnable)
1834*53ee8cc1Swenshuai.xi     {
1835*53ee8cc1Swenshuai.xi         switch(tsIf)
1836*53ee8cc1Swenshuai.xi         {
1837*53ee8cc1Swenshuai.xi             case 0:
1838*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1839*53ee8cc1Swenshuai.xi                 break;
1840*53ee8cc1Swenshuai.xi             case 1:
1841*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1842*53ee8cc1Swenshuai.xi                 break;
1843*53ee8cc1Swenshuai.xi             case 2:
1844*53ee8cc1Swenshuai.xi                 REG32_SET(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1845*53ee8cc1Swenshuai.xi                 break;
1846*53ee8cc1Swenshuai.xi             case 3:
1847*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_0B), CFG_0B_P_SEL3);
1848*53ee8cc1Swenshuai.xi                 break;
1849*53ee8cc1Swenshuai.xi             default:
1850*53ee8cc1Swenshuai.xi                 return;
1851*53ee8cc1Swenshuai.xi         }
1852*53ee8cc1Swenshuai.xi     }
1853*53ee8cc1Swenshuai.xi     else
1854*53ee8cc1Swenshuai.xi     {
1855*53ee8cc1Swenshuai.xi         switch(tsIf)
1856*53ee8cc1Swenshuai.xi         {
1857*53ee8cc1Swenshuai.xi             case 0:
1858*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1859*53ee8cc1Swenshuai.xi                 break;
1860*53ee8cc1Swenshuai.xi             case 1:
1861*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1862*53ee8cc1Swenshuai.xi                 break;
1863*53ee8cc1Swenshuai.xi             case 2:
1864*53ee8cc1Swenshuai.xi                 REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1865*53ee8cc1Swenshuai.xi                 break;
1866*53ee8cc1Swenshuai.xi             case 3:
1867*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_0B), CFG_0B_P_SEL3);
1868*53ee8cc1Swenshuai.xi                 break;
1869*53ee8cc1Swenshuai.xi             default:
1870*53ee8cc1Swenshuai.xi                 return;
1871*53ee8cc1Swenshuai.xi         }
1872*53ee8cc1Swenshuai.xi     }
1873*53ee8cc1Swenshuai.xi }
1874*53ee8cc1Swenshuai.xi 
HAL_TSP_PAD_3Wire(MS_U32 u32Pad,MS_BOOL bEnable)1875*53ee8cc1Swenshuai.xi void HAL_TSP_PAD_3Wire(MS_U32 u32Pad, MS_BOOL bEnable)
1876*53ee8cc1Swenshuai.xi {
1877*53ee8cc1Swenshuai.xi #if 0 //@NOTE: Kano do NOT need to set
1878*53ee8cc1Swenshuai.xi     if(bEnable)
1879*53ee8cc1Swenshuai.xi     {
1880*53ee8cc1Swenshuai.xi         switch(u32Pad)
1881*53ee8cc1Swenshuai.xi         {
1882*53ee8cc1Swenshuai.xi             case 0:
1883*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS0_3WIRE_EN;
1884*53ee8cc1Swenshuai.xi                 break;
1885*53ee8cc1Swenshuai.xi             case 1:
1886*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS1_3WIRE_EN;
1887*53ee8cc1Swenshuai.xi                 break;
1888*53ee8cc1Swenshuai.xi             case 2:
1889*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE)| REG_TOP_TSP_TS2_3WIRE_EN;
1890*53ee8cc1Swenshuai.xi                 break;
1891*53ee8cc1Swenshuai.xi             case 3:
1892*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS3_3WIRE_EN;
1893*53ee8cc1Swenshuai.xi                 break;
1894*53ee8cc1Swenshuai.xi 
1895*53ee8cc1Swenshuai.xi             default:
1896*53ee8cc1Swenshuai.xi                 return;
1897*53ee8cc1Swenshuai.xi         }
1898*53ee8cc1Swenshuai.xi     }
1899*53ee8cc1Swenshuai.xi     else
1900*53ee8cc1Swenshuai.xi     {
1901*53ee8cc1Swenshuai.xi         switch(u32Pad)
1902*53ee8cc1Swenshuai.xi         {
1903*53ee8cc1Swenshuai.xi             case 0:
1904*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS0_3WIRE_EN;
1905*53ee8cc1Swenshuai.xi                 break;
1906*53ee8cc1Swenshuai.xi             case 1:
1907*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS1_3WIRE_EN;
1908*53ee8cc1Swenshuai.xi                 break;
1909*53ee8cc1Swenshuai.xi             case 2:
1910*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS2_3WIRE_EN;
1911*53ee8cc1Swenshuai.xi                 break;
1912*53ee8cc1Swenshuai.xi             case 3:
1913*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS3_3WIRE_EN;
1914*53ee8cc1Swenshuai.xi                 break;
1915*53ee8cc1Swenshuai.xi             default:
1916*53ee8cc1Swenshuai.xi                 return;
1917*53ee8cc1Swenshuai.xi         }
1918*53ee8cc1Swenshuai.xi     }
1919*53ee8cc1Swenshuai.xi #endif
1920*53ee8cc1Swenshuai.xi }
1921*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_3Wire(MS_U32 tsIf,MS_BOOL bEnable)1922*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_3Wire(MS_U32 tsIf, MS_BOOL bEnable)
1923*53ee8cc1Swenshuai.xi {
1924*53ee8cc1Swenshuai.xi     if(bEnable)
1925*53ee8cc1Swenshuai.xi     {
1926*53ee8cc1Swenshuai.xi         switch(tsIf)
1927*53ee8cc1Swenshuai.xi         {
1928*53ee8cc1Swenshuai.xi             case 0:
1929*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1930*53ee8cc1Swenshuai.xi                 break;
1931*53ee8cc1Swenshuai.xi             case 1:
1932*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1933*53ee8cc1Swenshuai.xi                 break;
1934*53ee8cc1Swenshuai.xi             case 2:
1935*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1936*53ee8cc1Swenshuai.xi                 break;
1937*53ee8cc1Swenshuai.xi             case 3:
1938*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS3);
1939*53ee8cc1Swenshuai.xi                 break;
1940*53ee8cc1Swenshuai.xi             default:
1941*53ee8cc1Swenshuai.xi                 return;
1942*53ee8cc1Swenshuai.xi         }
1943*53ee8cc1Swenshuai.xi     }
1944*53ee8cc1Swenshuai.xi     else
1945*53ee8cc1Swenshuai.xi     {
1946*53ee8cc1Swenshuai.xi         switch(tsIf)
1947*53ee8cc1Swenshuai.xi         {
1948*53ee8cc1Swenshuai.xi             case 0:
1949*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1950*53ee8cc1Swenshuai.xi                 break;
1951*53ee8cc1Swenshuai.xi             case 1:
1952*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1953*53ee8cc1Swenshuai.xi                 break;
1954*53ee8cc1Swenshuai.xi             case 2:
1955*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1956*53ee8cc1Swenshuai.xi                 break;
1957*53ee8cc1Swenshuai.xi             case 3:
1958*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS3);
1959*53ee8cc1Swenshuai.xi                 break;
1960*53ee8cc1Swenshuai.xi             default:
1961*53ee8cc1Swenshuai.xi                 return;
1962*53ee8cc1Swenshuai.xi         }
1963*53ee8cc1Swenshuai.xi     }
1964*53ee8cc1Swenshuai.xi 
1965*53ee8cc1Swenshuai.xi }
1966*53ee8cc1Swenshuai.xi 
HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId,MS_BOOL bEn)1967*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId, MS_BOOL bEn)
1968*53ee8cc1Swenshuai.xi {
1969*53ee8cc1Swenshuai.xi     if(bEn)
1970*53ee8cc1Swenshuai.xi     {
1971*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
1972*53ee8cc1Swenshuai.xi     }
1973*53ee8cc1Swenshuai.xi     else
1974*53ee8cc1Swenshuai.xi     {
1975*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
1976*53ee8cc1Swenshuai.xi     }
1977*53ee8cc1Swenshuai.xi }
1978*53ee8cc1Swenshuai.xi 
HAL_TSP_ReDirect_File(MS_U32 reDir,MS_U32 tsIf,MS_BOOL bEn)1979*53ee8cc1Swenshuai.xi void HAL_TSP_ReDirect_File(MS_U32 reDir, MS_U32 tsIf, MS_BOOL bEn)
1980*53ee8cc1Swenshuai.xi {
1981*53ee8cc1Swenshuai.xi    //@NOTE  Not support in KANO(K7)
1982*53ee8cc1Swenshuai.xi    #if 0
1983*53ee8cc1Swenshuai.xi     MS_U16 u16Src = 0;
1984*53ee8cc1Swenshuai.xi 
1985*53ee8cc1Swenshuai.xi     if((reDir > 0) || (tsIf > 1))
1986*53ee8cc1Swenshuai.xi         return;
1987*53ee8cc1Swenshuai.xi 
1988*53ee8cc1Swenshuai.xi     if(bEn)
1989*53ee8cc1Swenshuai.xi     {
1990*53ee8cc1Swenshuai.xi         u16Src = (MS_U16)(tsIf + 1) << CFG_01_PDFLT2_FILE_SRC_SHIFT;
1991*53ee8cc1Swenshuai.xi     }
1992*53ee8cc1Swenshuai.xi 
1993*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PDFLT2_FILE_SRC, u16Src);
1994*53ee8cc1Swenshuai.xi    #endif
1995*53ee8cc1Swenshuai.xi }
1996*53ee8cc1Swenshuai.xi 
HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)1997*53ee8cc1Swenshuai.xi void HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)
1998*53ee8cc1Swenshuai.xi {
1999*53ee8cc1Swenshuai.xi     if(bEn)
2000*53ee8cc1Swenshuai.xi     {
2001*53ee8cc1Swenshuai.xi         switch(u32Tsif)
2002*53ee8cc1Swenshuai.xi         {
2003*53ee8cc1Swenshuai.xi             case 0:
2004*53ee8cc1Swenshuai.xi                 switch (eFltType)
2005*53ee8cc1Swenshuai.xi                 {
2006*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2007*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
2008*53ee8cc1Swenshuai.xi                         break;
2009*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2010*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
2011*53ee8cc1Swenshuai.xi                         break;
2012*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2013*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
2014*53ee8cc1Swenshuai.xi                         break;
2015*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2016*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
2017*53ee8cc1Swenshuai.xi                         break;
2018*53ee8cc1Swenshuai.xi                     default:
2019*53ee8cc1Swenshuai.xi                         break;
2020*53ee8cc1Swenshuai.xi                 }
2021*53ee8cc1Swenshuai.xi                 break;
2022*53ee8cc1Swenshuai.xi             case 1:
2023*53ee8cc1Swenshuai.xi                 switch (eFltType)
2024*53ee8cc1Swenshuai.xi                 {
2025*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2026*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
2027*53ee8cc1Swenshuai.xi                         break;
2028*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2029*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
2030*53ee8cc1Swenshuai.xi                         break;
2031*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2032*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
2033*53ee8cc1Swenshuai.xi                         break;
2034*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2035*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
2036*53ee8cc1Swenshuai.xi                         break;
2037*53ee8cc1Swenshuai.xi                     default:
2038*53ee8cc1Swenshuai.xi                         break;
2039*53ee8cc1Swenshuai.xi                 }
2040*53ee8cc1Swenshuai.xi                 break;
2041*53ee8cc1Swenshuai.xi             case 2:
2042*53ee8cc1Swenshuai.xi                 switch (eFltType)
2043*53ee8cc1Swenshuai.xi                 {
2044*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2045*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
2046*53ee8cc1Swenshuai.xi                         break;
2047*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2048*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
2049*53ee8cc1Swenshuai.xi                         break;
2050*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2051*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
2052*53ee8cc1Swenshuai.xi                         break;
2053*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2054*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
2055*53ee8cc1Swenshuai.xi                         break;
2056*53ee8cc1Swenshuai.xi                     default:
2057*53ee8cc1Swenshuai.xi                         break;
2058*53ee8cc1Swenshuai.xi                 }
2059*53ee8cc1Swenshuai.xi                 break;
2060*53ee8cc1Swenshuai.xi             case 3:
2061*53ee8cc1Swenshuai.xi                 switch (eFltType)
2062*53ee8cc1Swenshuai.xi                 {
2063*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2064*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V_EN);
2065*53ee8cc1Swenshuai.xi                         break;
2066*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2067*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V3D_EN);
2068*53ee8cc1Swenshuai.xi                         break;
2069*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2070*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_A_EN);
2071*53ee8cc1Swenshuai.xi                         break;
2072*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2073*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AB_EN);
2074*53ee8cc1Swenshuai.xi                         break;
2075*53ee8cc1Swenshuai.xi                     default:
2076*53ee8cc1Swenshuai.xi                         break;
2077*53ee8cc1Swenshuai.xi                 }
2078*53ee8cc1Swenshuai.xi                 break;
2079*53ee8cc1Swenshuai.xi             default:
2080*53ee8cc1Swenshuai.xi                 break;
2081*53ee8cc1Swenshuai.xi         }
2082*53ee8cc1Swenshuai.xi     }
2083*53ee8cc1Swenshuai.xi     else
2084*53ee8cc1Swenshuai.xi     {
2085*53ee8cc1Swenshuai.xi         switch(u32Tsif)
2086*53ee8cc1Swenshuai.xi         {
2087*53ee8cc1Swenshuai.xi             case 0:
2088*53ee8cc1Swenshuai.xi                 switch (eFltType)
2089*53ee8cc1Swenshuai.xi                 {
2090*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2091*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
2092*53ee8cc1Swenshuai.xi                         break;
2093*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2094*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
2095*53ee8cc1Swenshuai.xi                         break;
2096*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2097*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
2098*53ee8cc1Swenshuai.xi                         break;
2099*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2100*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
2101*53ee8cc1Swenshuai.xi                         break;
2102*53ee8cc1Swenshuai.xi                     default:
2103*53ee8cc1Swenshuai.xi                         break;
2104*53ee8cc1Swenshuai.xi                 }
2105*53ee8cc1Swenshuai.xi                 break;
2106*53ee8cc1Swenshuai.xi             case 1:
2107*53ee8cc1Swenshuai.xi                 switch (eFltType)
2108*53ee8cc1Swenshuai.xi                 {
2109*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2110*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
2111*53ee8cc1Swenshuai.xi                         break;
2112*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2113*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
2114*53ee8cc1Swenshuai.xi                         break;
2115*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2116*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
2117*53ee8cc1Swenshuai.xi                         break;
2118*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2119*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
2120*53ee8cc1Swenshuai.xi                         break;
2121*53ee8cc1Swenshuai.xi                     default:
2122*53ee8cc1Swenshuai.xi                         break;
2123*53ee8cc1Swenshuai.xi                 }
2124*53ee8cc1Swenshuai.xi                 break;
2125*53ee8cc1Swenshuai.xi             case 2:
2126*53ee8cc1Swenshuai.xi                 switch (eFltType)
2127*53ee8cc1Swenshuai.xi                 {
2128*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2129*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
2130*53ee8cc1Swenshuai.xi                         break;
2131*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2132*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
2133*53ee8cc1Swenshuai.xi                         break;
2134*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2135*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
2136*53ee8cc1Swenshuai.xi                         break;
2137*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2138*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
2139*53ee8cc1Swenshuai.xi                         break;
2140*53ee8cc1Swenshuai.xi                     default:
2141*53ee8cc1Swenshuai.xi                         break;
2142*53ee8cc1Swenshuai.xi                 }
2143*53ee8cc1Swenshuai.xi                 break;
2144*53ee8cc1Swenshuai.xi             case 3:
2145*53ee8cc1Swenshuai.xi                 switch (eFltType)
2146*53ee8cc1Swenshuai.xi                 {
2147*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2148*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V_EN);
2149*53ee8cc1Swenshuai.xi                         break;
2150*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2151*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V3D_EN);
2152*53ee8cc1Swenshuai.xi                         break;
2153*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2154*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_A_EN);
2155*53ee8cc1Swenshuai.xi                         break;
2156*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2157*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AB_EN);
2158*53ee8cc1Swenshuai.xi                         break;
2159*53ee8cc1Swenshuai.xi                     default:
2160*53ee8cc1Swenshuai.xi                         break;
2161*53ee8cc1Swenshuai.xi                 }
2162*53ee8cc1Swenshuai.xi                 break;
2163*53ee8cc1Swenshuai.xi             default:
2164*53ee8cc1Swenshuai.xi                 break;
2165*53ee8cc1Swenshuai.xi         }
2166*53ee8cc1Swenshuai.xi     }
2167*53ee8cc1Swenshuai.xi }
2168*53ee8cc1Swenshuai.xi 
HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)2169*53ee8cc1Swenshuai.xi void HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)
2170*53ee8cc1Swenshuai.xi {
2171*53ee8cc1Swenshuai.xi 
2172*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
2173*53ee8cc1Swenshuai.xi     {
2174*53ee8cc1Swenshuai.xi         switch(u32BD)
2175*53ee8cc1Swenshuai.xi         {
2176*53ee8cc1Swenshuai.xi             case 0:
2177*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
2178*53ee8cc1Swenshuai.xi                 break;
2179*53ee8cc1Swenshuai.xi             case 1:
2180*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
2181*53ee8cc1Swenshuai.xi                 break;
2182*53ee8cc1Swenshuai.xi             default:
2183*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2184*53ee8cc1Swenshuai.xi                 break;
2185*53ee8cc1Swenshuai.xi         }
2186*53ee8cc1Swenshuai.xi     }
2187*53ee8cc1Swenshuai.xi     else
2188*53ee8cc1Swenshuai.xi     {
2189*53ee8cc1Swenshuai.xi         switch(u32BD)
2190*53ee8cc1Swenshuai.xi         {
2191*53ee8cc1Swenshuai.xi             case 0:
2192*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
2193*53ee8cc1Swenshuai.xi                 break;
2194*53ee8cc1Swenshuai.xi             case 1:
2195*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
2196*53ee8cc1Swenshuai.xi                 break;
2197*53ee8cc1Swenshuai.xi             default:
2198*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2199*53ee8cc1Swenshuai.xi                 break;
2200*53ee8cc1Swenshuai.xi 
2201*53ee8cc1Swenshuai.xi         }
2202*53ee8cc1Swenshuai.xi     }
2203*53ee8cc1Swenshuai.xi 
2204*53ee8cc1Swenshuai.xi }
2205*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng,MS_U32 u32PktSize)2206*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng, MS_U32 u32PktSize)
2207*53ee8cc1Swenshuai.xi {
2208*53ee8cc1Swenshuai.xi     MS_U32 u32PktLen = u32PktSize;
2209*53ee8cc1Swenshuai.xi 
2210*53ee8cc1Swenshuai.xi     if(u32PktSize == 130)
2211*53ee8cc1Swenshuai.xi     {
2212*53ee8cc1Swenshuai.xi         u32PktLen = 188;
2213*53ee8cc1Swenshuai.xi     }
2214*53ee8cc1Swenshuai.xi     else if(u32PktSize == 134)
2215*53ee8cc1Swenshuai.xi     {
2216*53ee8cc1Swenshuai.xi         u32PktLen = 192;
2217*53ee8cc1Swenshuai.xi     }
2218*53ee8cc1Swenshuai.xi 
2219*53ee8cc1Swenshuai.xi     if(u32PktSize == 130 || u32PktSize == 134) //RVU
2220*53ee8cc1Swenshuai.xi     {
2221*53ee8cc1Swenshuai.xi         MS_U16 u16value = 0;
2222*53ee8cc1Swenshuai.xi 
2223*53ee8cc1Swenshuai.xi         if(u32PktSize == 134)
2224*53ee8cc1Swenshuai.xi         {
2225*53ee8cc1Swenshuai.xi             switch(eFileEng)
2226*53ee8cc1Swenshuai.xi             {
2227*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF0:
2228*53ee8cc1Swenshuai.xi                     u16value = HW4_CFG36_PKT130_TIMESTAMP_EN0;
2229*53ee8cc1Swenshuai.xi                     break;
2230*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF1:
2231*53ee8cc1Swenshuai.xi                     u16value = HW4_CFG36_PKT130_TIMESTAMP_EN1;
2232*53ee8cc1Swenshuai.xi                     break;
2233*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF2:
2234*53ee8cc1Swenshuai.xi                     u16value = CFG4_54_RVU_TIMESTAMP_EN2;
2235*53ee8cc1Swenshuai.xi                     break;
2236*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF3:
2237*53ee8cc1Swenshuai.xi                     u16value = CFG4_54_RVU_TIMESTAMP_EN3;
2238*53ee8cc1Swenshuai.xi                     break;
2239*53ee8cc1Swenshuai.xi                 default:
2240*53ee8cc1Swenshuai.xi                     printf("Not support !!\n");
2241*53ee8cc1Swenshuai.xi                     break;
2242*53ee8cc1Swenshuai.xi             }
2243*53ee8cc1Swenshuai.xi         }
2244*53ee8cc1Swenshuai.xi 
2245*53ee8cc1Swenshuai.xi         switch(eFileEng)
2246*53ee8cc1Swenshuai.xi         {
2247*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2248*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG36_PKT130_PSI_EN0 | HW4_CFG36_PKT130_EN0;
2249*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_36, u16value);
2250*53ee8cc1Swenshuai.xi                 break;
2251*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2252*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG36_PKT130_PSI_EN1 | HW4_CFG36_PKT130_EN1;
2253*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_36, u16value);
2254*53ee8cc1Swenshuai.xi                 break;
2255*53ee8cc1Swenshuai.xi             //@TODO not implement
2256*53ee8cc1Swenshuai.xi 
2257*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2258*53ee8cc1Swenshuai.xi                 u16value |= CFG4_54_RVU_PSI_EN2 | CFG4_54_RVU_EN2;
2259*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl4->CFG4_54, u16value);
2260*53ee8cc1Swenshuai.xi                 break;
2261*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2262*53ee8cc1Swenshuai.xi                 u16value |= CFG4_54_RVU_PSI_EN3 | CFG4_54_RVU_EN3;
2263*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl4->CFG4_54, u16value);
2264*53ee8cc1Swenshuai.xi                 break;
2265*53ee8cc1Swenshuai.xi             default:
2266*53ee8cc1Swenshuai.xi                 return;
2267*53ee8cc1Swenshuai.xi         }
2268*53ee8cc1Swenshuai.xi 
2269*53ee8cc1Swenshuai.xi     }
2270*53ee8cc1Swenshuai.xi 
2271*53ee8cc1Swenshuai.xi     switch(eFileEng)
2272*53ee8cc1Swenshuai.xi     {
2273*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2274*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_ALT_TS_SIZE);
2275*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->PktChkSizeFilein, (REG16_R(&_RegCtrl->PktChkSizeFilein) & ~TSP_PKT_SIZE_MASK) | (TSP_PKT_SIZE_MASK & (u32PktLen-1)));
2276*53ee8cc1Swenshuai.xi             break;
2277*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2278*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_02, (REG16_R(&_RegCtrl2->CFG_02) & ~CFG_02_PKT_CHK_SIZE_FIN1) | (CFG_02_PKT_CHK_SIZE_FIN1 & (u32PktLen-1)));
2279*53ee8cc1Swenshuai.xi             break;
2280*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2281*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_07, (REG16_R(&_RegCtrl2->CFG_07) & ~CFG_07_PKT_CHK_SIZE_FILEIN2) | (CFG_07_PKT_CHK_SIZE_FILEIN2 & (u32PktLen-1)));
2282*53ee8cc1Swenshuai.xi             break;
2283*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2284*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_0C, (REG16_R(&_RegCtrl2->CFG_0C) & ~CFG_0C_PKT_CHK_SIZE_FILEIN3) | (CFG_0C_PKT_CHK_SIZE_FILEIN3 & (u32PktLen-1)));
2285*53ee8cc1Swenshuai.xi             break;
2286*53ee8cc1Swenshuai.xi         default:
2287*53ee8cc1Swenshuai.xi             break;
2288*53ee8cc1Swenshuai.xi     }
2289*53ee8cc1Swenshuai.xi }
2290*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng,MS_U32 addr)2291*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng, MS_U32 addr)
2292*53ee8cc1Swenshuai.xi {
2293*53ee8cc1Swenshuai.xi     switch(eFileEng)
2294*53ee8cc1Swenshuai.xi     {
2295*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2296*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsDma_Addr, addr);
2297*53ee8cc1Swenshuai.xi             break;
2298*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2299*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_30_31, addr);
2300*53ee8cc1Swenshuai.xi             break;
2301*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2302*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_35_36, addr);
2303*53ee8cc1Swenshuai.xi             break;
2304*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2305*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_3A_3B, addr);
2306*53ee8cc1Swenshuai.xi             break;
2307*53ee8cc1Swenshuai.xi         default:
2308*53ee8cc1Swenshuai.xi             break;
2309*53ee8cc1Swenshuai.xi     }
2310*53ee8cc1Swenshuai.xi }
2311*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng,MS_U32 size)2312*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng, MS_U32 size)
2313*53ee8cc1Swenshuai.xi {
2314*53ee8cc1Swenshuai.xi     switch(eFileEng)
2315*53ee8cc1Swenshuai.xi     {
2316*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2317*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsDma_Size, size);
2318*53ee8cc1Swenshuai.xi             break;
2319*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2320*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_32_33, size);
2321*53ee8cc1Swenshuai.xi             break;
2322*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2323*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_37_38, size);
2324*53ee8cc1Swenshuai.xi             break;
2325*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2326*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_3C_3D, size);
2327*53ee8cc1Swenshuai.xi             break;
2328*53ee8cc1Swenshuai.xi         default:
2329*53ee8cc1Swenshuai.xi             break;
2330*53ee8cc1Swenshuai.xi     }
2331*53ee8cc1Swenshuai.xi }
2332*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)2333*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)
2334*53ee8cc1Swenshuai.xi {
2335*53ee8cc1Swenshuai.xi     switch(eFileEng)
2336*53ee8cc1Swenshuai.xi     {
2337*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2338*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TsDma_Ctrl, TSP_TSDMA_CTRL_START);
2339*53ee8cc1Swenshuai.xi             break;
2340*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2341*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_34, CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START);
2342*53ee8cc1Swenshuai.xi             break;
2343*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2344*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_39, CFG_39_FILEIN_CTRL_TSIF2_START);
2345*53ee8cc1Swenshuai.xi             break;
2346*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2347*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_3E, CFG_3E_FILEIN_CTRL_TSIF3_START);
2348*53ee8cc1Swenshuai.xi             break;
2349*53ee8cc1Swenshuai.xi         default:
2350*53ee8cc1Swenshuai.xi             break;
2351*53ee8cc1Swenshuai.xi     }
2352*53ee8cc1Swenshuai.xi }
2353*53ee8cc1Swenshuai.xi 
HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)2354*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)
2355*53ee8cc1Swenshuai.xi {
2356*53ee8cc1Swenshuai.xi     switch (eFileEng)
2357*53ee8cc1Swenshuai.xi     {
2358*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2359*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
2360*53ee8cc1Swenshuai.xi             return TRUE;
2361*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2362*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
2363*53ee8cc1Swenshuai.xi             return TRUE;
2364*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2365*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
2366*53ee8cc1Swenshuai.xi             return TRUE;
2367*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2368*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF3_FILE_PAUSE);
2369*53ee8cc1Swenshuai.xi             return TRUE;
2370*53ee8cc1Swenshuai.xi         default:
2371*53ee8cc1Swenshuai.xi             return FALSE;
2372*53ee8cc1Swenshuai.xi     }
2373*53ee8cc1Swenshuai.xi }
2374*53ee8cc1Swenshuai.xi 
HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)2375*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)
2376*53ee8cc1Swenshuai.xi {
2377*53ee8cc1Swenshuai.xi     switch (eFileEng)
2378*53ee8cc1Swenshuai.xi     {
2379*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2380*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
2381*53ee8cc1Swenshuai.xi             return TRUE;
2382*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2383*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
2384*53ee8cc1Swenshuai.xi             return TRUE;
2385*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2386*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
2387*53ee8cc1Swenshuai.xi             return TRUE;
2388*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2389*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF3_FILE_PAUSE);
2390*53ee8cc1Swenshuai.xi             return TRUE;
2391*53ee8cc1Swenshuai.xi         default:
2392*53ee8cc1Swenshuai.xi             return FALSE;
2393*53ee8cc1Swenshuai.xi     }
2394*53ee8cc1Swenshuai.xi }
2395*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)2396*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)
2397*53ee8cc1Swenshuai.xi {
2398*53ee8cc1Swenshuai.xi     switch(eFileEng)
2399*53ee8cc1Swenshuai.xi     {
2400*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2401*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TsDma_Ctrl, (TSP_TSDMA_INIT_TRUST | TSP_TSDMA_CTRL_START));
2402*53ee8cc1Swenshuai.xi             break;
2403*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2404*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_34, (CFG_34_REG_TSP_FILEIN_INIT_TRUST_TSIF1 | CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START));
2405*53ee8cc1Swenshuai.xi             break;
2406*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2407*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_39, (CFG_39_FILEIN_INIT_TRUST_TSIF2 | CFG_39_FILEIN_CTRL_TSIF2_START));
2408*53ee8cc1Swenshuai.xi             break;
2409*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2410*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_3E, (CFG_3E_FILEIN_INIT_TRUST_TSIF3 | CFG_3E_FILEIN_CTRL_TSIF3_START));
2411*53ee8cc1Swenshuai.xi             break;
2412*53ee8cc1Swenshuai.xi         default:
2413*53ee8cc1Swenshuai.xi             break;
2414*53ee8cc1Swenshuai.xi     }
2415*53ee8cc1Swenshuai.xi }
2416*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng,MS_BOOL bEn)2417*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng, MS_BOOL bEn)
2418*53ee8cc1Swenshuai.xi {
2419*53ee8cc1Swenshuai.xi     if(bEn)
2420*53ee8cc1Swenshuai.xi     {
2421*53ee8cc1Swenshuai.xi         switch(eFileEng)
2422*53ee8cc1Swenshuai.xi         {
2423*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2424*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
2425*53ee8cc1Swenshuai.xi                 break;
2426*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2427*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
2428*53ee8cc1Swenshuai.xi                 break;
2429*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2430*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
2431*53ee8cc1Swenshuai.xi                 break;
2432*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2433*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF3);
2434*53ee8cc1Swenshuai.xi                 break;
2435*53ee8cc1Swenshuai.xi             default:
2436*53ee8cc1Swenshuai.xi                 break;
2437*53ee8cc1Swenshuai.xi         }
2438*53ee8cc1Swenshuai.xi     }
2439*53ee8cc1Swenshuai.xi     else
2440*53ee8cc1Swenshuai.xi     {
2441*53ee8cc1Swenshuai.xi         switch(eFileEng)
2442*53ee8cc1Swenshuai.xi         {
2443*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2444*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
2445*53ee8cc1Swenshuai.xi                 break;
2446*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2447*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
2448*53ee8cc1Swenshuai.xi                 break;
2449*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2450*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
2451*53ee8cc1Swenshuai.xi                 break;
2452*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2453*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF3);
2454*53ee8cc1Swenshuai.xi                 break;
2455*53ee8cc1Swenshuai.xi             default:
2456*53ee8cc1Swenshuai.xi                 break;
2457*53ee8cc1Swenshuai.xi         }
2458*53ee8cc1Swenshuai.xi     }
2459*53ee8cc1Swenshuai.xi }
2460*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)2461*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
2462*53ee8cc1Swenshuai.xi {
2463*53ee8cc1Swenshuai.xi     if(bEnable)
2464*53ee8cc1Swenshuai.xi     {
2465*53ee8cc1Swenshuai.xi         switch(eFileEng)
2466*53ee8cc1Swenshuai.xi         {
2467*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2468*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
2469*53ee8cc1Swenshuai.xi                 break;
2470*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2471*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
2472*53ee8cc1Swenshuai.xi                 break;
2473*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2474*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
2475*53ee8cc1Swenshuai.xi                 break;
2476*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2477*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
2478*53ee8cc1Swenshuai.xi                 break;
2479*53ee8cc1Swenshuai.xi             default:
2480*53ee8cc1Swenshuai.xi                 break;
2481*53ee8cc1Swenshuai.xi         }
2482*53ee8cc1Swenshuai.xi     }
2483*53ee8cc1Swenshuai.xi     else
2484*53ee8cc1Swenshuai.xi     {
2485*53ee8cc1Swenshuai.xi         switch(eFileEng)
2486*53ee8cc1Swenshuai.xi         {
2487*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2488*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
2489*53ee8cc1Swenshuai.xi                 break;
2490*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2491*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
2492*53ee8cc1Swenshuai.xi                 break;
2493*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2494*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
2495*53ee8cc1Swenshuai.xi                 break;
2496*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2497*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
2498*53ee8cc1Swenshuai.xi                 break;
2499*53ee8cc1Swenshuai.xi             default:
2500*53ee8cc1Swenshuai.xi                 break;
2501*53ee8cc1Swenshuai.xi         }
2502*53ee8cc1Swenshuai.xi     }
2503*53ee8cc1Swenshuai.xi }
2504*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)2505*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)
2506*53ee8cc1Swenshuai.xi {
2507*53ee8cc1Swenshuai.xi     switch(eFileEng)
2508*53ee8cc1Swenshuai.xi     {
2509*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2510*53ee8cc1Swenshuai.xi             return (TSP_CMDQ_SIZE - ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT));
2511*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2512*53ee8cc1Swenshuai.xi             return (CFG_3F_REG_TSIF1_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT));
2513*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2514*53ee8cc1Swenshuai.xi             return (CFG_40_REG_TSIF2_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT));
2515*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2516*53ee8cc1Swenshuai.xi             return (CFG_41_REG_TSIF3_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_CNT));
2517*53ee8cc1Swenshuai.xi 
2518*53ee8cc1Swenshuai.xi         default:
2519*53ee8cc1Swenshuai.xi             return 0;
2520*53ee8cc1Swenshuai.xi     }
2521*53ee8cc1Swenshuai.xi }
2522*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)2523*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)
2524*53ee8cc1Swenshuai.xi {
2525*53ee8cc1Swenshuai.xi     switch(eFileEng)
2526*53ee8cc1Swenshuai.xi     {
2527*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2528*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT);
2529*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2530*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT);
2531*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2532*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT);
2533*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2534*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_CNT);
2535*53ee8cc1Swenshuai.xi         default:
2536*53ee8cc1Swenshuai.xi             return 0;
2537*53ee8cc1Swenshuai.xi     }
2538*53ee8cc1Swenshuai.xi }
2539*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)2540*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)
2541*53ee8cc1Swenshuai.xi {
2542*53ee8cc1Swenshuai.xi     switch(eFileEng)
2543*53ee8cc1Swenshuai.xi     {
2544*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2545*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_CMDQ_WR_LEVEL_MASK) >> TSP_CMDQ_WR_LEVEL_SHFT);
2546*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2547*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2548*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2549*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2550*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2551*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2552*53ee8cc1Swenshuai.xi         default:
2553*53ee8cc1Swenshuai.xi             return 0;
2554*53ee8cc1Swenshuai.xi     }
2555*53ee8cc1Swenshuai.xi }
2556*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng,MS_U32 delay,MS_BOOL bEnable)2557*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng, MS_U32 delay, MS_BOOL bEnable)
2558*53ee8cc1Swenshuai.xi {
2559*53ee8cc1Swenshuai.xi     if(bEnable)
2560*53ee8cc1Swenshuai.xi     {
2561*53ee8cc1Swenshuai.xi         switch(eFileEng)
2562*53ee8cc1Swenshuai.xi         {
2563*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2564*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->TsFileIn_Timer, delay & TSP_FILE_TIMER_MASK);
2565*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
2566*53ee8cc1Swenshuai.xi                 break;
2567*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2568*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_03, delay & CFG_03_TSP_FILE_TIMER1);
2569*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
2570*53ee8cc1Swenshuai.xi                 break;
2571*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2572*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_08, delay & CFG_08_TSP_FILE_TIMER2);
2573*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
2574*53ee8cc1Swenshuai.xi                 break;
2575*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2576*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_0D, delay & CFG_0D_TSP_FILE_TIMER3);
2577*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TIMER_EN3);
2578*53ee8cc1Swenshuai.xi                 break;
2579*53ee8cc1Swenshuai.xi             default:
2580*53ee8cc1Swenshuai.xi                 break;
2581*53ee8cc1Swenshuai.xi         }
2582*53ee8cc1Swenshuai.xi     }
2583*53ee8cc1Swenshuai.xi     else
2584*53ee8cc1Swenshuai.xi     {
2585*53ee8cc1Swenshuai.xi         switch(eFileEng)
2586*53ee8cc1Swenshuai.xi         {
2587*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2588*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
2589*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->TsFileIn_Timer, 0x0000);
2590*53ee8cc1Swenshuai.xi                 break;
2591*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2592*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
2593*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_03, 0x0000);
2594*53ee8cc1Swenshuai.xi                 break;
2595*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2596*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
2597*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_08, 0x0000);
2598*53ee8cc1Swenshuai.xi                 break;
2599*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2600*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TIMER_EN3);
2601*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_0D, 0x0000);
2602*53ee8cc1Swenshuai.xi                 break;
2603*53ee8cc1Swenshuai.xi             default:
2604*53ee8cc1Swenshuai.xi                 break;
2605*53ee8cc1Swenshuai.xi         }
2606*53ee8cc1Swenshuai.xi     }
2607*53ee8cc1Swenshuai.xi }
2608*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)2609*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)
2610*53ee8cc1Swenshuai.xi {
2611*53ee8cc1Swenshuai.xi     switch(eFileEng)
2612*53ee8cc1Swenshuai.xi     {
2613*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2614*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_TSDMA_FILEIN_DONE);
2615*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2616*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_34) & CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_DONE);
2617*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2618*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_39) & CFG_39_FILEIN_CTRL_TSIF2_DONE);
2619*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2620*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_3E) & CFG_3E_FILEIN_CTRL_TSIF3_DONE);
2621*53ee8cc1Swenshuai.xi         default:
2622*53ee8cc1Swenshuai.xi             return 0;
2623*53ee8cc1Swenshuai.xi     }
2624*53ee8cc1Swenshuai.xi }
2625*53ee8cc1Swenshuai.xi 
2626*53ee8cc1Swenshuai.xi // Only used by [HW test code]
2627*53ee8cc1Swenshuai.xi /*
2628*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_Filein_Done_Status(FILEENG_SEQ eFileEng)
2629*53ee8cc1Swenshuai.xi {
2630*53ee8cc1Swenshuai.xi     return !HAL_TSP_Filein_Status(eFileEng);
2631*53ee8cc1Swenshuai.xi }
2632*53ee8cc1Swenshuai.xi */
2633*53ee8cc1Swenshuai.xi 
2634*53ee8cc1Swenshuai.xi //To do : only tsif0 has pause functionality in Kaiser
HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)2635*53ee8cc1Swenshuai.xi TSP_HAL_FileState HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)
2636*53ee8cc1Swenshuai.xi {
2637*53ee8cc1Swenshuai.xi     TSP_HAL_FileState       state = E_TSP_HAL_FILE_STATE_INVALID;
2638*53ee8cc1Swenshuai.xi     MS_U32                  u32Status = HAL_TSP_Filein_Status(eFileEng);
2639*53ee8cc1Swenshuai.xi 
2640*53ee8cc1Swenshuai.xi     // @FIXME in kaiser u01 only tsif0 file eng has pause function
2641*53ee8cc1Swenshuai.xi     switch (eFileEng)
2642*53ee8cc1Swenshuai.xi     {
2643*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2644*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl->TSP_Ctrl1) & TSP_CTRL1_FILEIN_PAUSE )
2645*53ee8cc1Swenshuai.xi             {
2646*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2647*53ee8cc1Swenshuai.xi             }
2648*53ee8cc1Swenshuai.xi             else if (u32Status)
2649*53ee8cc1Swenshuai.xi             {
2650*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2651*53ee8cc1Swenshuai.xi             }
2652*53ee8cc1Swenshuai.xi             else
2653*53ee8cc1Swenshuai.xi             {
2654*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2655*53ee8cc1Swenshuai.xi             }
2656*53ee8cc1Swenshuai.xi             break;
2657*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2658*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF1_FILE_PAUSE)
2659*53ee8cc1Swenshuai.xi             {
2660*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2661*53ee8cc1Swenshuai.xi             }
2662*53ee8cc1Swenshuai.xi             else if (u32Status)
2663*53ee8cc1Swenshuai.xi             {
2664*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2665*53ee8cc1Swenshuai.xi             }
2666*53ee8cc1Swenshuai.xi             else
2667*53ee8cc1Swenshuai.xi             {
2668*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2669*53ee8cc1Swenshuai.xi             }
2670*53ee8cc1Swenshuai.xi             break;
2671*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2672*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF2_FILE_PAUSE)
2673*53ee8cc1Swenshuai.xi             {
2674*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2675*53ee8cc1Swenshuai.xi             }
2676*53ee8cc1Swenshuai.xi             else if (u32Status)
2677*53ee8cc1Swenshuai.xi             {
2678*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2679*53ee8cc1Swenshuai.xi             }
2680*53ee8cc1Swenshuai.xi             else
2681*53ee8cc1Swenshuai.xi             {
2682*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2683*53ee8cc1Swenshuai.xi             }
2684*53ee8cc1Swenshuai.xi             break;
2685*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2686*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF3_FILE_PAUSE)
2687*53ee8cc1Swenshuai.xi             {
2688*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2689*53ee8cc1Swenshuai.xi             }
2690*53ee8cc1Swenshuai.xi             else if (u32Status)
2691*53ee8cc1Swenshuai.xi             {
2692*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2693*53ee8cc1Swenshuai.xi             }
2694*53ee8cc1Swenshuai.xi             else
2695*53ee8cc1Swenshuai.xi             {
2696*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2697*53ee8cc1Swenshuai.xi             }
2698*53ee8cc1Swenshuai.xi             break;
2699*53ee8cc1Swenshuai.xi         default:
2700*53ee8cc1Swenshuai.xi             state = E_TSP_HAL_FILE_STATE_INVALID;
2701*53ee8cc1Swenshuai.xi             break;
2702*53ee8cc1Swenshuai.xi     }
2703*53ee8cc1Swenshuai.xi     return state;
2704*53ee8cc1Swenshuai.xi }
2705*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)2706*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)
2707*53ee8cc1Swenshuai.xi {
2708*53ee8cc1Swenshuai.xi     if(bSet)
2709*53ee8cc1Swenshuai.xi     {
2710*53ee8cc1Swenshuai.xi         switch(eFileEng)
2711*53ee8cc1Swenshuai.xi         {
2712*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2713*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
2714*53ee8cc1Swenshuai.xi                 break;
2715*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2716*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
2717*53ee8cc1Swenshuai.xi                 break;
2718*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2719*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
2720*53ee8cc1Swenshuai.xi                 break;
2721*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2722*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_EN3);
2723*53ee8cc1Swenshuai.xi                 break;
2724*53ee8cc1Swenshuai.xi             default:
2725*53ee8cc1Swenshuai.xi                 break;
2726*53ee8cc1Swenshuai.xi         }
2727*53ee8cc1Swenshuai.xi     }
2728*53ee8cc1Swenshuai.xi     else
2729*53ee8cc1Swenshuai.xi     {
2730*53ee8cc1Swenshuai.xi         switch(eFileEng)
2731*53ee8cc1Swenshuai.xi         {
2732*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2733*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
2734*53ee8cc1Swenshuai.xi                 break;
2735*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2736*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
2737*53ee8cc1Swenshuai.xi                 break;
2738*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2739*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
2740*53ee8cc1Swenshuai.xi                 break;
2741*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2742*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_EN3);
2743*53ee8cc1Swenshuai.xi                 break;
2744*53ee8cc1Swenshuai.xi             default:
2745*53ee8cc1Swenshuai.xi                 break;
2746*53ee8cc1Swenshuai.xi         }
2747*53ee8cc1Swenshuai.xi     }
2748*53ee8cc1Swenshuai.xi 
2749*53ee8cc1Swenshuai.xi }
2750*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng,MS_BOOL bEn)2751*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng, MS_BOOL bEn)
2752*53ee8cc1Swenshuai.xi {
2753*53ee8cc1Swenshuai.xi     if(bEn)
2754*53ee8cc1Swenshuai.xi     {
2755*53ee8cc1Swenshuai.xi         switch(eFileEng)
2756*53ee8cc1Swenshuai.xi         {
2757*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2758*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
2759*53ee8cc1Swenshuai.xi                 break;
2760*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2761*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
2762*53ee8cc1Swenshuai.xi                 break;
2763*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2764*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
2765*53ee8cc1Swenshuai.xi                 break;
2766*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2767*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_BLK_DISABLE3);
2768*53ee8cc1Swenshuai.xi             default:
2769*53ee8cc1Swenshuai.xi                 break;
2770*53ee8cc1Swenshuai.xi         }
2771*53ee8cc1Swenshuai.xi     }
2772*53ee8cc1Swenshuai.xi     else
2773*53ee8cc1Swenshuai.xi     {
2774*53ee8cc1Swenshuai.xi         switch(eFileEng)
2775*53ee8cc1Swenshuai.xi         {
2776*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2777*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
2778*53ee8cc1Swenshuai.xi                 break;
2779*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2780*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
2781*53ee8cc1Swenshuai.xi                 break;
2782*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2783*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
2784*53ee8cc1Swenshuai.xi                 break;
2785*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2786*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_BLK_DISABLE3);
2787*53ee8cc1Swenshuai.xi                 break;
2788*53ee8cc1Swenshuai.xi             default:
2789*53ee8cc1Swenshuai.xi                 break;
2790*53ee8cc1Swenshuai.xi         }
2791*53ee8cc1Swenshuai.xi     }
2792*53ee8cc1Swenshuai.xi }
2793*53ee8cc1Swenshuai.xi 
_HAL_TSP_FILEIN_ResetPktTimeStamp(FILEENG_SEQ eFileEng,MS_U32 u32InitTimeStamp)2794*53ee8cc1Swenshuai.xi static void _HAL_TSP_FILEIN_ResetPktTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32InitTimeStamp)
2795*53ee8cc1Swenshuai.xi {
2796*53ee8cc1Swenshuai.xi     switch(eFileEng)
2797*53ee8cc1Swenshuai.xi     {
2798*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2799*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
2800*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_50_51, u32InitTimeStamp);
2801*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
2802*53ee8cc1Swenshuai.xi             break;
2803*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2804*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
2805*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_52_53, u32InitTimeStamp);
2806*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
2807*53ee8cc1Swenshuai.xi             break;
2808*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2809*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
2810*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_54_55, u32InitTimeStamp);
2811*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
2812*53ee8cc1Swenshuai.xi             break;
2813*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2814*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_3);
2815*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_56_57, u32InitTimeStamp);
2816*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_3);
2817*53ee8cc1Swenshuai.xi             break;
2818*53ee8cc1Swenshuai.xi         default:
2819*53ee8cc1Swenshuai.xi             break;
2820*53ee8cc1Swenshuai.xi     }
2821*53ee8cc1Swenshuai.xi }
2822*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng,MS_U32 u32Stamp)2823*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32Stamp)
2824*53ee8cc1Swenshuai.xi {
2825*53ee8cc1Swenshuai.xi     switch(eFileEng)
2826*53ee8cc1Swenshuai.xi     {
2827*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2828*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
2829*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->LPcr2, u32Stamp);
2830*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
2831*53ee8cc1Swenshuai.xi             break;
2832*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2833*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
2834*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_50_51, u32Stamp);
2835*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
2836*53ee8cc1Swenshuai.xi             break;
2837*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2838*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
2839*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_52_53, u32Stamp);
2840*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
2841*53ee8cc1Swenshuai.xi             break;
2842*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2843*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_LPCR2_WLD3);
2844*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_54_55, u32Stamp);
2845*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_LPCR2_WLD3);
2846*53ee8cc1Swenshuai.xi             break;
2847*53ee8cc1Swenshuai.xi         default:
2848*53ee8cc1Swenshuai.xi             break;
2849*53ee8cc1Swenshuai.xi     }
2850*53ee8cc1Swenshuai.xi 
2851*53ee8cc1Swenshuai.xi     _HAL_TSP_FILEIN_ResetPktTimeStamp(eFileEng, 0);
2852*53ee8cc1Swenshuai.xi }
2853*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng,TSP_HAL_TimeStamp_Clk eTimeStampClk)2854*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng, TSP_HAL_TimeStamp_Clk eTimeStampClk)
2855*53ee8cc1Swenshuai.xi {
2856*53ee8cc1Swenshuai.xi     switch(eFileEng)
2857*53ee8cc1Swenshuai.xi     {
2858*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2859*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2860*53ee8cc1Swenshuai.xi             {
2861*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
2862*53ee8cc1Swenshuai.xi             }
2863*53ee8cc1Swenshuai.xi             else
2864*53ee8cc1Swenshuai.xi             {
2865*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
2866*53ee8cc1Swenshuai.xi             }
2867*53ee8cc1Swenshuai.xi             break;
2868*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2869*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2870*53ee8cc1Swenshuai.xi             {
2871*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
2872*53ee8cc1Swenshuai.xi             }
2873*53ee8cc1Swenshuai.xi             else
2874*53ee8cc1Swenshuai.xi             {
2875*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
2876*53ee8cc1Swenshuai.xi             }
2877*53ee8cc1Swenshuai.xi             break;
2878*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2879*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2880*53ee8cc1Swenshuai.xi             {
2881*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
2882*53ee8cc1Swenshuai.xi             }
2883*53ee8cc1Swenshuai.xi             else
2884*53ee8cc1Swenshuai.xi             {
2885*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
2886*53ee8cc1Swenshuai.xi             }
2887*53ee8cc1Swenshuai.xi             break;
2888*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2889*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2890*53ee8cc1Swenshuai.xi             {
2891*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF3_C27M);
2892*53ee8cc1Swenshuai.xi             }
2893*53ee8cc1Swenshuai.xi             else
2894*53ee8cc1Swenshuai.xi             {
2895*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF3_C27M);
2896*53ee8cc1Swenshuai.xi             }
2897*53ee8cc1Swenshuai.xi             break;
2898*53ee8cc1Swenshuai.xi         default:
2899*53ee8cc1Swenshuai.xi             break;
2900*53ee8cc1Swenshuai.xi     }
2901*53ee8cc1Swenshuai.xi }
2902*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)2903*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)
2904*53ee8cc1Swenshuai.xi {
2905*53ee8cc1Swenshuai.xi     MS_U32 u32Stamp = 0;
2906*53ee8cc1Swenshuai.xi     switch(eFileEng)
2907*53ee8cc1Swenshuai.xi     {
2908*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2909*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
2910*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl->LPcr2);
2911*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
2912*53ee8cc1Swenshuai.xi             break;
2913*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2914*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
2915*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_50_51);
2916*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
2917*53ee8cc1Swenshuai.xi             break;
2918*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2919*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
2920*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_52_53);
2921*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
2922*53ee8cc1Swenshuai.xi             break;
2923*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2924*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_LPCR2_LOAD_TSIF3);
2925*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_54_55);
2926*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_LPCR2_LOAD_TSIF3);
2927*53ee8cc1Swenshuai.xi             break;
2928*53ee8cc1Swenshuai.xi         default:
2929*53ee8cc1Swenshuai.xi             u32Stamp = 0;
2930*53ee8cc1Swenshuai.xi             break;
2931*53ee8cc1Swenshuai.xi     }
2932*53ee8cc1Swenshuai.xi     return u32Stamp;
2933*53ee8cc1Swenshuai.xi }
2934*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)2935*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)
2936*53ee8cc1Swenshuai.xi {
2937*53ee8cc1Swenshuai.xi     switch(eFileEng)
2938*53ee8cc1Swenshuai.xi     {
2939*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2940*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl->TimeStamp_FileIn);
2941*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2942*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_42_43);
2943*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2944*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_44_45);
2945*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2946*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_46_47);
2947*53ee8cc1Swenshuai.xi         default:
2948*53ee8cc1Swenshuai.xi             break;
2949*53ee8cc1Swenshuai.xi     }
2950*53ee8cc1Swenshuai.xi     return 0;
2951*53ee8cc1Swenshuai.xi }
2952*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng,MS_PHY * pu32Addr)2953*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng, MS_PHY *pu32Addr)
2954*53ee8cc1Swenshuai.xi {
2955*53ee8cc1Swenshuai.xi     switch(eFileEng)
2956*53ee8cc1Swenshuai.xi     {
2957*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2958*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl->TsFileIn_RPtr) & TSP_FILE_RPTR_MASK);
2959*53ee8cc1Swenshuai.xi             break;
2960*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2961*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6A_6B) & CFG_6A_6B_TSP2MI_RADDR_S_TSIF1);
2962*53ee8cc1Swenshuai.xi             break;
2963*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2964*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6C_6D) & CFG_6C_6D_TSP2MI_RADDR_S_TSIF2);
2965*53ee8cc1Swenshuai.xi             break;
2966*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2967*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6E_6F) & CFG_6E_6F_TSP2MI_RADDR_S_TSIF3);
2968*53ee8cc1Swenshuai.xi             break;
2969*53ee8cc1Swenshuai.xi         default:
2970*53ee8cc1Swenshuai.xi             break;
2971*53ee8cc1Swenshuai.xi     }
2972*53ee8cc1Swenshuai.xi 
2973*53ee8cc1Swenshuai.xi }
2974*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)2975*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
2976*53ee8cc1Swenshuai.xi {
2977*53ee8cc1Swenshuai.xi     if(bEnable)
2978*53ee8cc1Swenshuai.xi     {
2979*53ee8cc1Swenshuai.xi         switch(eFileEng)
2980*53ee8cc1Swenshuai.xi         {
2981*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2982*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_RESET);
2983*53ee8cc1Swenshuai.xi                 break;
2984*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2985*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
2986*53ee8cc1Swenshuai.xi                 break;
2987*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2988*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
2989*53ee8cc1Swenshuai.xi                 break;
2990*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2991*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF3);
2992*53ee8cc1Swenshuai.xi                 break;
2993*53ee8cc1Swenshuai.xi             default:
2994*53ee8cc1Swenshuai.xi                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupported File Eng: %uld !\n",__FILE__,__FUNCTION__,__LINE__,(MS_U32)eFileEng));
2995*53ee8cc1Swenshuai.xi                 break;
2996*53ee8cc1Swenshuai.xi         }
2997*53ee8cc1Swenshuai.xi     }
2998*53ee8cc1Swenshuai.xi     else
2999*53ee8cc1Swenshuai.xi     {
3000*53ee8cc1Swenshuai.xi         switch(eFileEng)
3001*53ee8cc1Swenshuai.xi         {
3002*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3003*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_RESET);
3004*53ee8cc1Swenshuai.xi                 break;
3005*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3006*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
3007*53ee8cc1Swenshuai.xi                 break;
3008*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3009*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
3010*53ee8cc1Swenshuai.xi                 break;
3011*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3012*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF3);
3013*53ee8cc1Swenshuai.xi                 break;
3014*53ee8cc1Swenshuai.xi             default:
3015*53ee8cc1Swenshuai.xi                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupported File Eng: %uld !\n",__FILE__,__FUNCTION__,__LINE__,(MS_U32)eFileEng));
3016*53ee8cc1Swenshuai.xi                 break;
3017*53ee8cc1Swenshuai.xi         }
3018*53ee8cc1Swenshuai.xi     }
3019*53ee8cc1Swenshuai.xi }
3020*53ee8cc1Swenshuai.xi 
3021*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng,MS_BOOL bEnable,MS_U32 u32Key)3022*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng, MS_BOOL bEnable, MS_U32 u32Key)
3023*53ee8cc1Swenshuai.xi {
3024*53ee8cc1Swenshuai.xi     if(bEnable)
3025*53ee8cc1Swenshuai.xi     {
3026*53ee8cc1Swenshuai.xi         switch(eFileEng)
3027*53ee8cc1Swenshuai.xi         {
3028*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3029*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl->Mobf_Filein_Idx, (u32Key & TSP_MOBF_FILEIN_MASK));
3030*53ee8cc1Swenshuai.xi                 break;
3031*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3032*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_75, (u32Key & CFG_75_FI_MOBF_INDEC_TSIF1_MASK));
3033*53ee8cc1Swenshuai.xi                 break;
3034*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3035*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_76, (u32Key & CFG_76_FI_MOBF_INDEC_TSIF2_MASK));
3036*53ee8cc1Swenshuai.xi                 break;
3037*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3038*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_77, (u32Key & CFG_77_FI_MOBF_INDEC_TSIF3_MASK));
3039*53ee8cc1Swenshuai.xi                 break;
3040*53ee8cc1Swenshuai.xi             default:
3041*53ee8cc1Swenshuai.xi                 break;
3042*53ee8cc1Swenshuai.xi         }
3043*53ee8cc1Swenshuai.xi     }
3044*53ee8cc1Swenshuai.xi     else
3045*53ee8cc1Swenshuai.xi     {
3046*53ee8cc1Swenshuai.xi         switch(eFileEng)
3047*53ee8cc1Swenshuai.xi         {
3048*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3049*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl->Mobf_Filein_Idx, 0);
3050*53ee8cc1Swenshuai.xi                 break;
3051*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3052*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_75, 0);
3053*53ee8cc1Swenshuai.xi                 break;
3054*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3055*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_76, 0);
3056*53ee8cc1Swenshuai.xi                 break;
3057*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3058*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_77, 0);
3059*53ee8cc1Swenshuai.xi                 break;
3060*53ee8cc1Swenshuai.xi             default:
3061*53ee8cc1Swenshuai.xi                 break;
3062*53ee8cc1Swenshuai.xi         }
3063*53ee8cc1Swenshuai.xi     }
3064*53ee8cc1Swenshuai.xi }
3065*53ee8cc1Swenshuai.xi 
HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)3066*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
3067*53ee8cc1Swenshuai.xi {
3068*53ee8cc1Swenshuai.xi     switch (ePidFltSrc)
3069*53ee8cc1Swenshuai.xi     {
3070*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE0:
3071*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF0;
3072*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE1:
3073*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF2;
3074*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE2:
3075*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF3;
3076*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE3:
3077*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF1;
3078*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE0:
3079*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF1;
3080*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE1:
3081*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF3;
3082*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE2:
3083*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF0;
3084*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE3:
3085*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF2;
3086*53ee8cc1Swenshuai.xi         default:
3087*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong filter source!!!\n",__FUNCTION__, __LINE__);
3088*53ee8cc1Swenshuai.xi             break;
3089*53ee8cc1Swenshuai.xi     }
3090*53ee8cc1Swenshuai.xi 
3091*53ee8cc1Swenshuai.xi     return 0;
3092*53ee8cc1Swenshuai.xi }
3093*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId,MS_U32 u32FltIn)3094*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId, MS_U32 u32FltIn)
3095*53ee8cc1Swenshuai.xi {
3096*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
3097*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_IN_MASK) | ((u32FltIn << TSP_PIDFLT_TSIF_SHFT) & TSP_PIDFLT_IN_MASK));
3098*53ee8cc1Swenshuai.xi }
3099*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId,MS_U32 u32FltOut)3100*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId, MS_U32 u32FltOut)
3101*53ee8cc1Swenshuai.xi {
3102*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3103*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_OUT_MASK)) | (u32FltOut & TSP_PIDFLT_OUT_MASK)));
3104*53ee8cc1Swenshuai.xi }
3105*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId,MS_U32 u32SrcID)3106*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId, MS_U32 u32SrcID)
3107*53ee8cc1Swenshuai.xi {
3108*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3109*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcID << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
3110*53ee8cc1Swenshuai.xi }
3111*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId,MS_U32 u32SecFltId)3112*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId, MS_U32 u32SecFltId)
3113*53ee8cc1Swenshuai.xi {
3114*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3115*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_SECFLT_MASK) | ((u32SecFltId << TSP_PIDFLT_SECFLT_SHFT) & TSP_PIDFLT_SECFLT_MASK));
3116*53ee8cc1Swenshuai.xi }
3117*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId,MS_U32 u32PVREng,MS_BOOL bEn)3118*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId, MS_U32 u32PVREng, MS_BOOL bEn)
3119*53ee8cc1Swenshuai.xi {
3120*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3121*53ee8cc1Swenshuai.xi     if(bEn)
3122*53ee8cc1Swenshuai.xi     {
3123*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK) | (((1 << u32PVREng) << TSP_PIDFLT_PVRFLT_SHFT) & TSP_PIDFLT_PVRFLT_MASK));
3124*53ee8cc1Swenshuai.xi     }
3125*53ee8cc1Swenshuai.xi     else
3126*53ee8cc1Swenshuai.xi     {
3127*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK));
3128*53ee8cc1Swenshuai.xi     }
3129*53ee8cc1Swenshuai.xi }
3130*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId,MS_U8 u8Enable)3131*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId, MS_U8 u8Enable)
3132*53ee8cc1Swenshuai.xi {
3133*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3134*53ee8cc1Swenshuai.xi     if(u8Enable)
3135*53ee8cc1Swenshuai.xi         TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) | (TSP_PID_FLT_PKTPUSH_PASS));
3136*53ee8cc1Swenshuai.xi     else
3137*53ee8cc1Swenshuai.xi         TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) & ~(TSP_PID_FLT_PKTPUSH_PASS));
3138*53ee8cc1Swenshuai.xi }
3139*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetPid(MS_U32 fltId,MS_U32 u32Pid)3140*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPid(MS_U32 fltId, MS_U32 u32Pid)
3141*53ee8cc1Swenshuai.xi {
3142*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
3143*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PID_MASK) | ((u32Pid << TSP_PIDFLT_PID_SHFT) & TSP_PIDFLT_PID_MASK));
3144*53ee8cc1Swenshuai.xi }
3145*53ee8cc1Swenshuai.xi 
3146*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3147*53ee8cc1Swenshuai.xi // For section filter part
3148*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3149*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)3150*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)
3151*53ee8cc1Swenshuai.xi {
3152*53ee8cc1Swenshuai.xi      REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SEC_DMA_BURST_EN);
3153*53ee8cc1Swenshuai.xi      REG16_MSK_W(&_RegCtrl->Hw_Config4, TSP_HW_DMA_MODE_MASK, (burstMode << TSP_HW_DMA_MODE_SHIFT));
3154*53ee8cc1Swenshuai.xi }
3155*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetType(REG_SecFlt * pSecFlt,MS_U32 u32FltType)3156*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetType(REG_SecFlt *pSecFlt, MS_U32 u32FltType)
3157*53ee8cc1Swenshuai.xi {
3158*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_USER_MASK) | (u32FltType << TSP_SECFLT_USER_SHFT));
3159*53ee8cc1Swenshuai.xi }
3160*53ee8cc1Swenshuai.xi 
3161*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetMode(REG_SecFlt * pSecFlt,MS_U32 u32SecFltMode)3162*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMode(REG_SecFlt *pSecFlt, MS_U32 u32SecFltMode)
3163*53ee8cc1Swenshuai.xi {
3164*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_MASK) | ((u32SecFltMode << TSP_SECFLT_MODE_SHFT) & TSP_SECFLT_MODE_MASK));
3165*53ee8cc1Swenshuai.xi }
3166*53ee8cc1Swenshuai.xi 
3167*53ee8cc1Swenshuai.xi 
3168*53ee8cc1Swenshuai.xi // match mask --> 0 will compare
HAL_TSP_SecFlt_SetMask(REG_SecFlt * pSecFlt,MS_U8 * pu8Mask)3169*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMask(REG_SecFlt *pSecFlt, MS_U8 *pu8Mask)
3170*53ee8cc1Swenshuai.xi {
3171*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3172*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3173*53ee8cc1Swenshuai.xi 
3174*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3175*53ee8cc1Swenshuai.xi     {
3176*53ee8cc1Swenshuai.xi         j = (i<< 2);
3177*53ee8cc1Swenshuai.xi         u32Temp = (pu8Mask[j]) | (pu8Mask[j+ 1] << 8  ) | (pu8Mask[j+ 2] << 16  )| (pu8Mask[j+ 3] << 24);
3178*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->Mask[i], u32Temp);
3179*53ee8cc1Swenshuai.xi     }
3180*53ee8cc1Swenshuai.xi }
3181*53ee8cc1Swenshuai.xi 
3182*53ee8cc1Swenshuai.xi 
3183*53ee8cc1Swenshuai.xi // not match mask --> 1 will compare
HAL_TSP_SecFlt_SetNMask(REG_SecFlt * pSecFlt,MS_U8 * pu8NMask)3184*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetNMask(REG_SecFlt *pSecFlt, MS_U8 *pu8NMask)
3185*53ee8cc1Swenshuai.xi {
3186*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3187*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3188*53ee8cc1Swenshuai.xi 
3189*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3190*53ee8cc1Swenshuai.xi     {
3191*53ee8cc1Swenshuai.xi         j = (i<< 2);
3192*53ee8cc1Swenshuai.xi         u32Temp = (pu8NMask[j]) | (pu8NMask[j+ 1] << 8  ) | (pu8NMask[j+ 2] << 16  )| (pu8NMask[j+ 3] << 24);
3193*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->NMask[i], u32Temp);
3194*53ee8cc1Swenshuai.xi     }
3195*53ee8cc1Swenshuai.xi }
3196*53ee8cc1Swenshuai.xi 
3197*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetMatch(REG_SecFlt * pSecFlt,MS_U8 * pu8Match)3198*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMatch(REG_SecFlt *pSecFlt, MS_U8 *pu8Match)
3199*53ee8cc1Swenshuai.xi {
3200*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3201*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3202*53ee8cc1Swenshuai.xi 
3203*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3204*53ee8cc1Swenshuai.xi     {
3205*53ee8cc1Swenshuai.xi         j = (i<< 2);
3206*53ee8cc1Swenshuai.xi         u32Temp =  (pu8Match[j]) | (pu8Match[j+ 1] << 8  ) | (pu8Match[j+ 2] << 16  )| (pu8Match[j+ 3] << 24);
3207*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->Match[i], u32Temp);
3208*53ee8cc1Swenshuai.xi     }
3209*53ee8cc1Swenshuai.xi }
3210*53ee8cc1Swenshuai.xi 
3211*53ee8cc1Swenshuai.xi 
3212*53ee8cc1Swenshuai.xi //[LIMIT] Is impossible to identify the pidfilter is assigned a secfilter/buffer or not
HAL_TSP_SecFlt_SelSecBuf(REG_SecFlt * pSecFlt,MS_U16 u16BufId)3213*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SelSecBuf(REG_SecFlt *pSecFlt, MS_U16 u16BufId)
3214*53ee8cc1Swenshuai.xi {
3215*53ee8cc1Swenshuai.xi     TSP32_IdrW( &pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_SECBUF_MASK)
3216*53ee8cc1Swenshuai.xi             | ((u16BufId << TSP_SECFLT_SECBUF_SHFT) & TSP_SECFLT_SECBUF_MASK) );
3217*53ee8cc1Swenshuai.xi }
3218*53ee8cc1Swenshuai.xi 
3219*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt * pSecFlt)3220*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt *pSecFlt)
3221*53ee8cc1Swenshuai.xi {
3222*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_SECBUF_MASK) >> TSP_SECFLT_SECBUF_SHFT);
3223*53ee8cc1Swenshuai.xi }
3224*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt * pPidFlt)3225*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt *pPidFlt)
3226*53ee8cc1Swenshuai.xi {
3227*53ee8cc1Swenshuai.xi     return (TSP32_IdrR(pPidFlt) & TSP_PIDFLT_OUT_MASK);
3228*53ee8cc1Swenshuai.xi }
3229*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)3230*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)
3231*53ee8cc1Swenshuai.xi {
3232*53ee8cc1Swenshuai.xi // don't have to implement no reference
3233*53ee8cc1Swenshuai.xi }
3234*53ee8cc1Swenshuai.xi 
3235*53ee8cc1Swenshuai.xi 
3236*53ee8cc1Swenshuai.xi // @FIXME: Is it secflt or secbuf?
HAL_TSP_SecFlt_ResetState(REG_SecFlt * pSecFlt)3237*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetState(REG_SecFlt* pSecFlt)
3238*53ee8cc1Swenshuai.xi {
3239*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~(TSP_SECFLT_STATE_MASK));
3240*53ee8cc1Swenshuai.xi }
3241*53ee8cc1Swenshuai.xi 
3242*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt * pSecFlt)3243*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt *pSecFlt)
3244*53ee8cc1Swenshuai.xi {
3245*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, 0);
3246*53ee8cc1Swenshuai.xi }
3247*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetState(REG_SecFlt * pSecFlt)3248*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetState(REG_SecFlt *pSecFlt)
3249*53ee8cc1Swenshuai.xi {
3250*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_STATE_MASK) >> TSP_SECFLT_STATE_SHFT);
3251*53ee8cc1Swenshuai.xi }
3252*53ee8cc1Swenshuai.xi 
3253*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetMode(REG_SecFlt * pSecFlt)3254*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetMode(REG_SecFlt *pSecFlt)
3255*53ee8cc1Swenshuai.xi {
3256*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_MODE_MASK) >> TSP_SECFLT_MODE_SHFT);
3257*53ee8cc1Swenshuai.xi }
3258*53ee8cc1Swenshuai.xi 
3259*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_PcrReset(REG_SecFlt * pSecFlt)3260*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_PcrReset(REG_SecFlt *pSecFlt)
3261*53ee8cc1Swenshuai.xi {
3262*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_PCRRST);
3263*53ee8cc1Swenshuai.xi }
3264*53ee8cc1Swenshuai.xi 
3265*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_TryAlloc(REG_SecFlt * pSecFlt,MS_U16 u16TSPId)3266*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecFlt_TryAlloc(REG_SecFlt* pSecFlt, MS_U16 u16TSPId)
3267*53ee8cc1Swenshuai.xi {
3268*53ee8cc1Swenshuai.xi     MS_U32              reg;
3269*53ee8cc1Swenshuai.xi 
3270*53ee8cc1Swenshuai.xi     //_TSP_HW_Lock();
3271*53ee8cc1Swenshuai.xi 
3272*53ee8cc1Swenshuai.xi     // rmn counter doesn't need 32bit (check 13818) so we use some of it to store owner and alloc info
3273*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecFlt->RmnCnt) & (TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
3274*53ee8cc1Swenshuai.xi     if (reg & TSP_SECFLT_ALLOC_MASK)
3275*53ee8cc1Swenshuai.xi     {
3276*53ee8cc1Swenshuai.xi         //_TSP_HW_Unlock();
3277*53ee8cc1Swenshuai.xi         return FALSE;
3278*53ee8cc1Swenshuai.xi     }
3279*53ee8cc1Swenshuai.xi     reg |= TSP_SECFLT_ALLOC_MASK | ((u16TSPId<<TSP_SECFLT_OWNER_SHFT) & TSP_SECFLT_OWNER_MASK);
3280*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, reg);
3281*53ee8cc1Swenshuai.xi 
3282*53ee8cc1Swenshuai.xi     //_TSP_HW_Unlock();
3283*53ee8cc1Swenshuai.xi     return TRUE;
3284*53ee8cc1Swenshuai.xi }
3285*53ee8cc1Swenshuai.xi 
3286*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt * pSecFlt,MS_BOOL bSet)3287*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt *pSecFlt, MS_BOOL bSet)
3288*53ee8cc1Swenshuai.xi {
3289*53ee8cc1Swenshuai.xi     if(bSet)
3290*53ee8cc1Swenshuai.xi     {
3291*53ee8cc1Swenshuai.xi         TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_MODE_AUTO_CRCCHK);
3292*53ee8cc1Swenshuai.xi     }
3293*53ee8cc1Swenshuai.xi     else
3294*53ee8cc1Swenshuai.xi     {
3295*53ee8cc1Swenshuai.xi         TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_AUTO_CRCCHK);
3296*53ee8cc1Swenshuai.xi     }
3297*53ee8cc1Swenshuai.xi }
3298*53ee8cc1Swenshuai.xi 
3299*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_Free(REG_SecFlt * pSecFlt)3300*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_Free(REG_SecFlt* pSecFlt)
3301*53ee8cc1Swenshuai.xi {
3302*53ee8cc1Swenshuai.xi     MS_U32              reg;
3303*53ee8cc1Swenshuai.xi 
3304*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
3305*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, reg);
3306*53ee8cc1Swenshuai.xi }
3307*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt * pSecFlt)3308*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt* pSecFlt)
3309*53ee8cc1Swenshuai.xi {
3310*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECBUF_RMNCNT_MASK));
3311*53ee8cc1Swenshuai.xi }
3312*53ee8cc1Swenshuai.xi 
3313*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3314*53ee8cc1Swenshuai.xi //  For section buffer part
3315*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_TSP_SecBuf_SetBuf(REG_SecBuf * pSecBuf,MS_U32 u32StartAddr,MS_U32 u32BufSize)3316*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetBuf(REG_SecBuf *pSecBuf, MS_U32 u32StartAddr, MS_U32 u32BufSize)
3317*53ee8cc1Swenshuai.xi {
3318*53ee8cc1Swenshuai.xi     // Check MIU select
3319*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
3320*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetSecBuf;
3321*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetSecBuf, u32StartAddr);
3322*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl6->CFG6_2D_REG_MIU_SEL_FW, (REG16_R(&_RegCtrl6->CFG6_2D_REG_MIU_SEL_FW) & (~REG_MIU_SEL_SECTION_MASK)) | ((u8MiuSel << REG_MIU_SEL_SECTION_SHIFT) & REG_MIU_SEL_SECTION_MASK));
3323*53ee8cc1Swenshuai.xi 
3324*53ee8cc1Swenshuai.xi     MS_U32              owner;
3325*53ee8cc1Swenshuai.xi     // To avoid SW read hidden HW byte enable information.
3326*53ee8cc1Swenshuai.xi     owner = TSP32_IdrR(&pSecBuf->Start); // @FIXME local variable but not used?
3327*53ee8cc1Swenshuai.xi 
3328*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Start, phyMiuOffsetSecBuf);
3329*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->End, phyMiuOffsetSecBuf + u32BufSize);
3330*53ee8cc1Swenshuai.xi }
3331*53ee8cc1Swenshuai.xi 
3332*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_SetRead(REG_SecBuf * pSecBuf,MS_U32 u32ReadAddr)3333*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetRead(REG_SecBuf *pSecBuf, MS_U32 u32ReadAddr)
3334*53ee8cc1Swenshuai.xi {
3335*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Read, u32ReadAddr);
3336*53ee8cc1Swenshuai.xi }
3337*53ee8cc1Swenshuai.xi 
3338*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetStart(REG_SecBuf * pSecBuf)3339*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetStart(REG_SecBuf *pSecBuf)
3340*53ee8cc1Swenshuai.xi {
3341*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->Start);
3342*53ee8cc1Swenshuai.xi }
3343*53ee8cc1Swenshuai.xi 
3344*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetEnd(REG_SecBuf * pSecBuf)3345*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetEnd(REG_SecBuf *pSecBuf)
3346*53ee8cc1Swenshuai.xi {
3347*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->End);
3348*53ee8cc1Swenshuai.xi }
3349*53ee8cc1Swenshuai.xi 
3350*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetBufCur(REG_SecBuf * pSecBuf)3351*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetBufCur(REG_SecBuf *pSecBuf)
3352*53ee8cc1Swenshuai.xi {
3353*53ee8cc1Swenshuai.xi     //BufCur is control by firmware
3354*53ee8cc1Swenshuai.xi     //we use Cur pointer to receive the newest data
3355*53ee8cc1Swenshuai.xi     //and use write pointer to guarantee that the data between
3356*53ee8cc1Swenshuai.xi     //read and write pointer is correct, so that user won't get
3357*53ee8cc1Swenshuai.xi     //unverified data.
3358*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->Cur);
3359*53ee8cc1Swenshuai.xi }
3360*53ee8cc1Swenshuai.xi 
3361*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_Reset(REG_SecBuf * pSecBuf)3362*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Reset(REG_SecBuf *pSecBuf)
3363*53ee8cc1Swenshuai.xi {
3364*53ee8cc1Swenshuai.xi     MS_U32              start;
3365*53ee8cc1Swenshuai.xi 
3366*53ee8cc1Swenshuai.xi     start = TSP32_IdrR(&pSecBuf->Start);
3367*53ee8cc1Swenshuai.xi 
3368*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Cur,    start);
3369*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Read,   start);
3370*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Write,  start);
3371*53ee8cc1Swenshuai.xi 
3372*53ee8cc1Swenshuai.xi     start = ( (MS_VIRT)pSecBuf - (MS_VIRT)REG_SECBUF_BASE ) / sizeof(REG_SecBuf)  ;
3373*53ee8cc1Swenshuai.xi     HAL_TSP_HCMD_BufRst(start); // @FIXME seems we don't need to do this
3374*53ee8cc1Swenshuai.xi }
3375*53ee8cc1Swenshuai.xi 
3376*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetRead(REG_SecBuf * pSecBuf)3377*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_SecBuf_GetRead(REG_SecBuf *pSecBuf)
3378*53ee8cc1Swenshuai.xi {
3379*53ee8cc1Swenshuai.xi     return TSP32_IdrR((TSP32*)&pSecBuf->Read);
3380*53ee8cc1Swenshuai.xi }
3381*53ee8cc1Swenshuai.xi 
3382*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetWrite(REG_SecBuf * pSecBuf)3383*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_SecBuf_GetWrite(REG_SecBuf *pSecBuf)
3384*53ee8cc1Swenshuai.xi {
3385*53ee8cc1Swenshuai.xi     return TSP32_IdrR((TSP32*)&pSecBuf->Write);
3386*53ee8cc1Swenshuai.xi }
3387*53ee8cc1Swenshuai.xi 
3388*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_TryAlloc(REG_SecBuf * pSecBuf,MS_U16 u16TSPId)3389*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecBuf_TryAlloc(REG_SecBuf *pSecBuf, MS_U16 u16TSPId)
3390*53ee8cc1Swenshuai.xi {
3391*53ee8cc1Swenshuai.xi     // @TODO make sure the owner and alloc info is necessary or not.
3392*53ee8cc1Swenshuai.xi     MS_U32              reg;
3393*53ee8cc1Swenshuai.xi 
3394*53ee8cc1Swenshuai.xi     //_TSP_HW_Lock();
3395*53ee8cc1Swenshuai.xi 
3396*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecBuf->Start) & (TSP_SECBUF_OWNER_MASK | TSP_SECBUF_ALLOC_MASK);
3397*53ee8cc1Swenshuai.xi     //if (reg & TSP_SECBUF_ALLOC_MASK)
3398*53ee8cc1Swenshuai.xi     //{
3399*53ee8cc1Swenshuai.xi     //    //_TSP_HW_Unlock();
3400*53ee8cc1Swenshuai.xi     //    return FALSE;
3401*53ee8cc1Swenshuai.xi     //}
3402*53ee8cc1Swenshuai.xi     reg |= TSP_SECBUF_ALLOC_MASK | ((u16TSPId<<TSP_SECBUF_OWNER_SHFT) & TSP_SECBUF_OWNER_MASK);
3403*53ee8cc1Swenshuai.xi     //TSP32_IdrW(&pSecBuf->Start, reg);
3404*53ee8cc1Swenshuai.xi 
3405*53ee8cc1Swenshuai.xi     //_TSP_HW_Unlock();
3406*53ee8cc1Swenshuai.xi     return TRUE;
3407*53ee8cc1Swenshuai.xi }
3408*53ee8cc1Swenshuai.xi 
3409*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_Free(REG_SecBuf * pSecBuf)3410*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Free(REG_SecBuf *pSecBuf)
3411*53ee8cc1Swenshuai.xi {
3412*53ee8cc1Swenshuai.xi     // @TODO ref to HAL_TSP_SecBuf_TryAlloc
3413*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Start, 0x0);
3414*53ee8cc1Swenshuai.xi }
3415*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_GetPid(REG_PidFlt * pPidFlt)3416*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetPid(REG_PidFlt* pPidFlt)
3417*53ee8cc1Swenshuai.xi {
3418*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(pPidFlt) & TSP_PIDFLT_PID_MASK) >> TSP_PIDFLT_PID_SHFT);
3419*53ee8cc1Swenshuai.xi }
3420*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId,MS_BOOL bEnable)3421*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId, MS_BOOL bEnable)
3422*53ee8cc1Swenshuai.xi {
3423*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3424*53ee8cc1Swenshuai.xi     {
3425*53ee8cc1Swenshuai.xi         case 0:
3426*53ee8cc1Swenshuai.xi             if(bEnable)
3427*53ee8cc1Swenshuai.xi             {
3428*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
3429*53ee8cc1Swenshuai.xi             }
3430*53ee8cc1Swenshuai.xi             else
3431*53ee8cc1Swenshuai.xi             {
3432*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
3433*53ee8cc1Swenshuai.xi             }
3434*53ee8cc1Swenshuai.xi             break;
3435*53ee8cc1Swenshuai.xi         case 1:
3436*53ee8cc1Swenshuai.xi             if(bEnable)
3437*53ee8cc1Swenshuai.xi             {
3438*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
3439*53ee8cc1Swenshuai.xi             }
3440*53ee8cc1Swenshuai.xi             else
3441*53ee8cc1Swenshuai.xi             {
3442*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
3443*53ee8cc1Swenshuai.xi             }
3444*53ee8cc1Swenshuai.xi             break;
3445*53ee8cc1Swenshuai.xi         default:
3446*53ee8cc1Swenshuai.xi             break;
3447*53ee8cc1Swenshuai.xi     }
3448*53ee8cc1Swenshuai.xi }
3449*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId,MS_U32 u32Pid)3450*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId, MS_U32 u32Pid)
3451*53ee8cc1Swenshuai.xi {
3452*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3453*53ee8cc1Swenshuai.xi     {
3454*53ee8cc1Swenshuai.xi         case 0:
3455*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_PID_MASK, u32Pid);
3456*53ee8cc1Swenshuai.xi             break;
3457*53ee8cc1Swenshuai.xi         case 1:
3458*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_PID_MASK, u32Pid);
3459*53ee8cc1Swenshuai.xi             break;
3460*53ee8cc1Swenshuai.xi         default:
3461*53ee8cc1Swenshuai.xi             break;
3462*53ee8cc1Swenshuai.xi     }
3463*53ee8cc1Swenshuai.xi 
3464*53ee8cc1Swenshuai.xi }
3465*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)3466*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)
3467*53ee8cc1Swenshuai.xi {
3468*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3469*53ee8cc1Swenshuai.xi     {
3470*53ee8cc1Swenshuai.xi         case 0:
3471*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->PIDFLT_PCR0) & TSP_PIDFLT_PCR0_PID_MASK);
3472*53ee8cc1Swenshuai.xi         case 1:
3473*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->PIDFLT_PCR1) & TSP_PIDFLT_PCR1_PID_MASK);
3474*53ee8cc1Swenshuai.xi         default:
3475*53ee8cc1Swenshuai.xi             HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] PCR flt id not support !!\n",__FUNCTION__,__LINE__));
3476*53ee8cc1Swenshuai.xi             return PVR_PIDFLT_DEF;
3477*53ee8cc1Swenshuai.xi     }
3478*53ee8cc1Swenshuai.xi }
3479*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId,TSP_PCR_SRC src)3480*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId, TSP_PCR_SRC src)
3481*53ee8cc1Swenshuai.xi {
3482*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3483*53ee8cc1Swenshuai.xi     {
3484*53ee8cc1Swenshuai.xi         case 0:
3485*53ee8cc1Swenshuai.xi             //src 0
3486*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR0_SRC_MASK, src << CFG_01_PCR0_SRC_SHIFT);
3487*53ee8cc1Swenshuai.xi             break;
3488*53ee8cc1Swenshuai.xi         case 1:
3489*53ee8cc1Swenshuai.xi             //src 1
3490*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR1_SRC_MASK, src << CFG_01_PCR1_SRC_SHIFT);
3491*53ee8cc1Swenshuai.xi             break;
3492*53ee8cc1Swenshuai.xi         default:
3493*53ee8cc1Swenshuai.xi             break;
3494*53ee8cc1Swenshuai.xi     }
3495*53ee8cc1Swenshuai.xi }
3496*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId,TSP_PCR_SRC * pPcrSrc)3497*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId, TSP_PCR_SRC *pPcrSrc)
3498*53ee8cc1Swenshuai.xi {
3499*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3500*53ee8cc1Swenshuai.xi     {
3501*53ee8cc1Swenshuai.xi         case 0:
3502*53ee8cc1Swenshuai.xi             //src 0
3503*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR0_SRC_MASK) >> CFG_01_PCR0_SRC_SHIFT;
3504*53ee8cc1Swenshuai.xi             break;
3505*53ee8cc1Swenshuai.xi         case 1:
3506*53ee8cc1Swenshuai.xi             //src 1
3507*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR1_SRC_MASK) >> CFG_01_PCR1_SRC_SHIFT;
3508*53ee8cc1Swenshuai.xi             break;
3509*53ee8cc1Swenshuai.xi         default:
3510*53ee8cc1Swenshuai.xi             break;
3511*53ee8cc1Swenshuai.xi     }
3512*53ee8cc1Swenshuai.xi }
3513*53ee8cc1Swenshuai.xi 
3514*53ee8cc1Swenshuai.xi 
HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)3515*53ee8cc1Swenshuai.xi TSP_PCR_SRC HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
3516*53ee8cc1Swenshuai.xi {
3517*53ee8cc1Swenshuai.xi     TSP_PCR_SRC ePcrSrc = E_TSP_PCR_SRC_INVALID;
3518*53ee8cc1Swenshuai.xi     switch(ePidFltSrc)
3519*53ee8cc1Swenshuai.xi     {
3520*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE0:
3521*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF0;
3522*53ee8cc1Swenshuai.xi             break;
3523*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE1:
3524*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF2;
3525*53ee8cc1Swenshuai.xi             break;
3526*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE2:
3527*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF3;
3528*53ee8cc1Swenshuai.xi             break;
3529*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE3:
3530*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF1;
3531*53ee8cc1Swenshuai.xi             break;
3532*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE0:
3533*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF1;
3534*53ee8cc1Swenshuai.xi             break;
3535*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE1:
3536*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF3;
3537*53ee8cc1Swenshuai.xi             break;
3538*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE2:
3539*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF0;
3540*53ee8cc1Swenshuai.xi             break;
3541*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE3:
3542*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF2;
3543*53ee8cc1Swenshuai.xi             break;
3544*53ee8cc1Swenshuai.xi         default:
3545*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong Flt Src type!!!\n",__FUNCTION__,__LINE__);
3546*53ee8cc1Swenshuai.xi             break;
3547*53ee8cc1Swenshuai.xi     }
3548*53ee8cc1Swenshuai.xi     return ePcrSrc;
3549*53ee8cc1Swenshuai.xi 
3550*53ee8cc1Swenshuai.xi }
3551*53ee8cc1Swenshuai.xi 
3552*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId,MS_U32 * pu32Pcr_H,MS_U32 * pu32Pcr)3553*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId, MS_U32 *pu32Pcr_H, MS_U32 *pu32Pcr)
3554*53ee8cc1Swenshuai.xi {
3555*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3556*53ee8cc1Swenshuai.xi     {
3557*53ee8cc1Swenshuai.xi         case 0:
3558*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
3559*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl->HWPCR0_L);
3560*53ee8cc1Swenshuai.xi             *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR0_H) & 0x1;
3561*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
3562*53ee8cc1Swenshuai.xi             break;
3563*53ee8cc1Swenshuai.xi         case 1:
3564*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
3565*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl->HWPCR1_L);
3566*53ee8cc1Swenshuai.xi             *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR1_H) & 0x1;
3567*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
3568*53ee8cc1Swenshuai.xi             break;
3569*53ee8cc1Swenshuai.xi         default:
3570*53ee8cc1Swenshuai.xi             break;
3571*53ee8cc1Swenshuai.xi     }
3572*53ee8cc1Swenshuai.xi }
3573*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)3574*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)
3575*53ee8cc1Swenshuai.xi {
3576*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3577*53ee8cc1Swenshuai.xi     {
3578*53ee8cc1Swenshuai.xi         case 0:
3579*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
3580*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
3581*53ee8cc1Swenshuai.xi             break;
3582*53ee8cc1Swenshuai.xi         case 1:
3583*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
3584*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
3585*53ee8cc1Swenshuai.xi             break;
3586*53ee8cc1Swenshuai.xi         default:
3587*53ee8cc1Swenshuai.xi             break;
3588*53ee8cc1Swenshuai.xi     }
3589*53ee8cc1Swenshuai.xi }
3590*53ee8cc1Swenshuai.xi 
3591*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)3592*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)
3593*53ee8cc1Swenshuai.xi {
3594*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3595*53ee8cc1Swenshuai.xi     {
3596*53ee8cc1Swenshuai.xi         case 0:
3597*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->SwInt_Stat1_L,TSP_HWINT2_PCR0_UPDATE_END);
3598*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->SwInt_Stat1_L,
3599*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->SwInt_Stat1_L) & (~TSP_HWINT2_STATUS_MASK)) |
3600*53ee8cc1Swenshuai.xi             (~TSP_HWINT2_PCR0_UPDATE_END & TSP_HWINT2_STATUS_MASK));
3601*53ee8cc1Swenshuai.xi             break;
3602*53ee8cc1Swenshuai.xi         case 1:
3603*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->SwInt_Stat1_L,TSP_HWINT2_PCR1_UPDATE_END);
3604*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->SwInt_Stat1_L,
3605*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->SwInt_Stat1_L) & (~TSP_HWINT2_STATUS_MASK)) |
3606*53ee8cc1Swenshuai.xi             (~TSP_HWINT2_PCR1_UPDATE_END & TSP_HWINT2_STATUS_MASK));
3607*53ee8cc1Swenshuai.xi             break;
3608*53ee8cc1Swenshuai.xi         default:
3609*53ee8cc1Swenshuai.xi             break;
3610*53ee8cc1Swenshuai.xi     }
3611*53ee8cc1Swenshuai.xi }
3612*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)3613*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)
3614*53ee8cc1Swenshuai.xi {
3615*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3616*53ee8cc1Swenshuai.xi     {
3617*53ee8cc1Swenshuai.xi         case 0:
3618*53ee8cc1Swenshuai.xi             return (TSP_HWINT2_PCR0_UPDATE_END_EN << 8);
3619*53ee8cc1Swenshuai.xi         case 1:
3620*53ee8cc1Swenshuai.xi             return (TSP_HWINT2_PCR1_UPDATE_END_EN << 8);
3621*53ee8cc1Swenshuai.xi         default:
3622*53ee8cc1Swenshuai.xi             HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[TSP ERROR][%s][%d] PCR flt id not support !!\n",__FUNCTION__,__LINE__));
3623*53ee8cc1Swenshuai.xi             return 0;
3624*53ee8cc1Swenshuai.xi     }
3625*53ee8cc1Swenshuai.xi }
3626*53ee8cc1Swenshuai.xi 
HAL_TSP_STC_Init(void)3627*53ee8cc1Swenshuai.xi void HAL_TSP_STC_Init(void)
3628*53ee8cc1Swenshuai.xi {
3629*53ee8cc1Swenshuai.xi     /////////////Set STC control by HK////////////////
3630*53ee8cc1Swenshuai.xi     // select synth from chip top : bit 1 -> 0 -> controlled by HK
3631*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
3632*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
3633*53ee8cc1Swenshuai.xi 
3634*53ee8cc1Swenshuai.xi     // set HK STC synth CW
3635*53ee8cc1Swenshuai.xi      //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
3636*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L) = 0x0000;
3637*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) = 0x2800;
3638*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = 0x0000;
3639*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = 0x2800;
3640*53ee8cc1Swenshuai.xi 
3641*53ee8cc1Swenshuai.xi     // set STC synth
3642*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3643*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_EN;
3644*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3645*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3646*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_EN;
3647*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3648*53ee8cc1Swenshuai.xi 
3649*53ee8cc1Swenshuai.xi #if 0  // we don't use TSP CPU to control STC anymmore, so we don't have to do the following
3650*53ee8cc1Swenshuai.xi     /////////////Set STC control by TSP////////////////
3651*53ee8cc1Swenshuai.xi     // select synth from TSP      : bit 1 -> 1 -> controlled by TSP
3652*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_SEL;
3653*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_SEL;
3654*53ee8cc1Swenshuai.xi 
3655*53ee8cc1Swenshuai.xi     // set TSP STC synth CW
3656*53ee8cc1Swenshuai.xi     //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
3657*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021024c<<1), 0x28000000);
3658*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x00210280<<1), 0x28000000); //STC1
3659*53ee8cc1Swenshuai.xi 
3660*53ee8cc1Swenshuai.xi     // t2 , t3 had no 0x0021025c, it was add after t4, eanble synthesizer
3661*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x01);
3662*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x01);
3663*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x02); //STC1
3664*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x02);
3665*53ee8cc1Swenshuai.xi #endif
3666*53ee8cc1Swenshuai.xi }
3667*53ee8cc1Swenshuai.xi 
HAL_TSP_GetSTCSynth(MS_U32 Eng,MS_U32 * u32Sync)3668*53ee8cc1Swenshuai.xi void HAL_TSP_GetSTCSynth(MS_U32 Eng, MS_U32* u32Sync)
3669*53ee8cc1Swenshuai.xi {
3670*53ee8cc1Swenshuai.xi     switch (Eng)
3671*53ee8cc1Swenshuai.xi     {
3672*53ee8cc1Swenshuai.xi         case 0:
3673*53ee8cc1Swenshuai.xi             // get HK STC synth CW
3674*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L);
3675*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) << 16 ;
3676*53ee8cc1Swenshuai.xi             break;
3677*53ee8cc1Swenshuai.xi         case 1:
3678*53ee8cc1Swenshuai.xi             // get HK STC synth CW
3679*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L);
3680*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) << 16 ;
3681*53ee8cc1Swenshuai.xi             break;
3682*53ee8cc1Swenshuai.xi     }
3683*53ee8cc1Swenshuai.xi }
3684*53ee8cc1Swenshuai.xi 
HAL_TSP_SetSTCSynth(MS_U32 Eng,MS_U32 u32Sync)3685*53ee8cc1Swenshuai.xi void HAL_TSP_SetSTCSynth(MS_U32 Eng, MS_U32 u32Sync)
3686*53ee8cc1Swenshuai.xi {
3687*53ee8cc1Swenshuai.xi     switch (Eng)
3688*53ee8cc1Swenshuai.xi     {
3689*53ee8cc1Swenshuai.xi         case 0:
3690*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
3691*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
3692*53ee8cc1Swenshuai.xi 
3693*53ee8cc1Swenshuai.xi             // set HK STC synth CW
3694*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L) = u32Sync & 0xFFFF;
3695*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) = u32Sync >> 16;
3696*53ee8cc1Swenshuai.xi 
3697*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
3698*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3699*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |=   REG_CLKGEN0_STC_CW_EN;
3700*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3701*53ee8cc1Swenshuai.xi             break;
3702*53ee8cc1Swenshuai.xi         case 1:
3703*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
3704*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
3705*53ee8cc1Swenshuai.xi 
3706*53ee8cc1Swenshuai.xi             // set HK STC synth CW
3707*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = u32Sync & 0xFFFF;
3708*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = u32Sync >> 16;
3709*53ee8cc1Swenshuai.xi 
3710*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
3711*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3712*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |=   REG_CLKGEN0_STC1_CW_EN;
3713*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3714*53ee8cc1Swenshuai.xi             break;
3715*53ee8cc1Swenshuai.xi     }
3716*53ee8cc1Swenshuai.xi }
3717*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)3718*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)
3719*53ee8cc1Swenshuai.xi {
3720*53ee8cc1Swenshuai.xi     if (bEnable)
3721*53ee8cc1Swenshuai.xi     {
3722*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
3723*53ee8cc1Swenshuai.xi     }
3724*53ee8cc1Swenshuai.xi     else
3725*53ee8cc1Swenshuai.xi     {
3726*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
3727*53ee8cc1Swenshuai.xi     }
3728*53ee8cc1Swenshuai.xi }
3729*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Set(MS_U32 Eng,MS_U32 stcH,MS_U32 stcL)3730*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Set(MS_U32 Eng, MS_U32 stcH, MS_U32 stcL)
3731*53ee8cc1Swenshuai.xi {
3732*53ee8cc1Swenshuai.xi     switch (Eng)
3733*53ee8cc1Swenshuai.xi     {
3734*53ee8cc1Swenshuai.xi         case 0:
3735*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Pcr_L, stcL);
3736*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Pcr_H, stcH);
3737*53ee8cc1Swenshuai.xi             break;
3738*53ee8cc1Swenshuai.xi         case 1:
3739*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PCR64_2_L, stcL);
3740*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PCR64_2_H, stcH);
3741*53ee8cc1Swenshuai.xi             break;
3742*53ee8cc1Swenshuai.xi     }
3743*53ee8cc1Swenshuai.xi }
3744*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Get(MS_U32 Eng,MS_U32 * pStcH,MS_U32 * pStcL)3745*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Get(MS_U32 Eng, MS_U32* pStcH, MS_U32* pStcL)
3746*53ee8cc1Swenshuai.xi {
3747*53ee8cc1Swenshuai.xi     switch (Eng)
3748*53ee8cc1Swenshuai.xi     {
3749*53ee8cc1Swenshuai.xi         case 0:
3750*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3751*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl->Pcr_H);
3752*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl->Pcr_L);
3753*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3754*53ee8cc1Swenshuai.xi             break;
3755*53ee8cc1Swenshuai.xi         case 1:
3756*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
3757*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl->PCR64_2_H);
3758*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl->PCR64_2_L);
3759*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
3760*53ee8cc1Swenshuai.xi             break;
3761*53ee8cc1Swenshuai.xi     }
3762*53ee8cc1Swenshuai.xi }
3763*53ee8cc1Swenshuai.xi 
HAL_TSP_STC33_CmdQSet(MS_U32 stcH,MS_U32 stcL)3764*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQSet(MS_U32 stcH, MS_U32 stcL)
3765*53ee8cc1Swenshuai.xi {
3766*53ee8cc1Swenshuai.xi     // @TODO ask designer for the difference between 64bit STC and 33 Bit STC
3767*53ee8cc1Swenshuai.xi     // and it's hw limit (like: cmdQ delay)
3768*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Pcr_H_CmdQ, stcH & TSP_REG_PCR_CMDQ_H);
3769*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Pcr_L_CmdQ, stcL);
3770*53ee8cc1Swenshuai.xi }
3771*53ee8cc1Swenshuai.xi 
HAL_TSP_STC33_CmdQGet(MS_U32 * pStcH,MS_U32 * pStcL)3772*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQGet(MS_U32* pStcH, MS_U32* pStcL)
3773*53ee8cc1Swenshuai.xi {
3774*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3775*53ee8cc1Swenshuai.xi     *pStcH = REG16_R(&_RegCtrl->Pcr_H_CmdQ) & TSP_REG_PCR_CMDQ_H;
3776*53ee8cc1Swenshuai.xi     *pStcL = REG32_R(&_RegCtrl->Pcr_L_CmdQ);
3777*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3778*53ee8cc1Swenshuai.xi }
3779*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType,MS_U32 pktDmxId)3780*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType, MS_U32 pktDmxId)
3781*53ee8cc1Swenshuai.xi {
3782*53ee8cc1Swenshuai.xi     switch (eFltType)
3783*53ee8cc1Swenshuai.xi     {
3784*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
3785*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID_SRC_SHIFT);
3786*53ee8cc1Swenshuai.xi             break;
3787*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
3788*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID3D_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID3D_SRC_SHIFT);
3789*53ee8cc1Swenshuai.xi             break;
3790*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
3791*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUD_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUD_SRC_SHIFT);
3792*53ee8cc1Swenshuai.xi             break;
3793*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
3794*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUDB_SRC_MASK, ((MS_U16)pktDmxId)  << TSP_AUDB_SRC_SHIFT);
3795*53ee8cc1Swenshuai.xi             break;
3796*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
3797*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PCR_Cfg, TSP_AUDC_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUDC_SRC_SHIFT);
3798*53ee8cc1Swenshuai.xi             break;
3799*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
3800*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PCR_Cfg, TSP_AUDD_SRC_MASK, ((MS_U16)pktDmxId)  << TSP_AUDD_SRC_SHIFT);
3801*53ee8cc1Swenshuai.xi             break;
3802*53ee8cc1Swenshuai.xi         default:
3803*53ee8cc1Swenshuai.xi             break;
3804*53ee8cc1Swenshuai.xi     }
3805*53ee8cc1Swenshuai.xi }
3806*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType,TSP_SRC_SEQ * pktDmxId)3807*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType, TSP_SRC_SEQ *pktDmxId)
3808*53ee8cc1Swenshuai.xi {
3809*53ee8cc1Swenshuai.xi     switch (eFltType)
3810*53ee8cc1Swenshuai.xi     {
3811*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
3812*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID_SRC_MASK) >> TSP_VID_SRC_SHIFT;
3813*53ee8cc1Swenshuai.xi             break;
3814*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
3815*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID3D_SRC_MASK) >> TSP_VID3D_SRC_SHIFT;
3816*53ee8cc1Swenshuai.xi             break;
3817*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
3818*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUD_SRC_MASK) >> TSP_AUD_SRC_SHIFT;
3819*53ee8cc1Swenshuai.xi             break;
3820*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
3821*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUDB_SRC_MASK) >> TSP_AUDB_SRC_SHIFT;
3822*53ee8cc1Swenshuai.xi             break;
3823*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
3824*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->PCR_Cfg)) & TSP_AUDC_SRC_MASK) >> TSP_AUDC_SRC_SHIFT;
3825*53ee8cc1Swenshuai.xi             break;
3826*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
3827*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->PCR_Cfg)) & TSP_AUDD_SRC_MASK) >> TSP_AUDD_SRC_SHIFT;
3828*53ee8cc1Swenshuai.xi             break;
3829*53ee8cc1Swenshuai.xi         default:
3830*53ee8cc1Swenshuai.xi             break;
3831*53ee8cc1Swenshuai.xi     }
3832*53ee8cc1Swenshuai.xi }
3833*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ClearAll()3834*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ClearAll()
3835*53ee8cc1Swenshuai.xi {
3836*53ee8cc1Swenshuai.xi     // clear ALL FIFO !!!
3837*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
3838*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
3839*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
3840*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
3841*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
3842*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
3843*53ee8cc1Swenshuai.xi 
3844*53ee8cc1Swenshuai.xi }
3845*53ee8cc1Swenshuai.xi 
3846*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Connect(MS_BOOL bEn)3847*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Connect(MS_BOOL bEn)
3848*53ee8cc1Swenshuai.xi {
3849*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
3850*53ee8cc1Swenshuai.xi     {
3851*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
3852*53ee8cc1Swenshuai.xi     }
3853*53ee8cc1Swenshuai.xi     else
3854*53ee8cc1Swenshuai.xi     {
3855*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
3856*53ee8cc1Swenshuai.xi     }
3857*53ee8cc1Swenshuai.xi 
3858*53ee8cc1Swenshuai.xi }
3859*53ee8cc1Swenshuai.xi 
3860*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadPkt(void)3861*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_FIFO_ReadPkt(void)
3862*53ee8cc1Swenshuai.xi {
3863*53ee8cc1Swenshuai.xi     return (REG16_R(&_RegCtrl->PKT_CNT) & TSP_PKT_CNT_MASK);
3864*53ee8cc1Swenshuai.xi }
3865*53ee8cc1Swenshuai.xi 
3866*53ee8cc1Swenshuai.xi 
3867*53ee8cc1Swenshuai.xi 
3868*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)3869*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)
3870*53ee8cc1Swenshuai.xi {
3871*53ee8cc1Swenshuai.xi     switch (eFltType)
3872*53ee8cc1Swenshuai.xi     {
3873*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
3874*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_V) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
3875*53ee8cc1Swenshuai.xi             break;
3876*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
3877*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_A) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
3878*53ee8cc1Swenshuai.xi             break;
3879*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
3880*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_AB) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
3881*53ee8cc1Swenshuai.xi             break;
3882*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
3883*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_V3D) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
3884*53ee8cc1Swenshuai.xi             break;
3885*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
3886*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_AC) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
3887*53ee8cc1Swenshuai.xi             break;
3888*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
3889*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_AD) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
3890*53ee8cc1Swenshuai.xi             break;
3891*53ee8cc1Swenshuai.xi         default:
3892*53ee8cc1Swenshuai.xi             break;
3893*53ee8cc1Swenshuai.xi     }
3894*53ee8cc1Swenshuai.xi }
3895*53ee8cc1Swenshuai.xi 
3896*53ee8cc1Swenshuai.xi 
3897*53ee8cc1Swenshuai.xi 
3898*53ee8cc1Swenshuai.xi 
3899*53ee8cc1Swenshuai.xi //@NOTE for TS mode
3900*53ee8cc1Swenshuai.xi //@TODO need to rename (TS enable or PKTDMX_BYPASS)
HAL_TSP_Flt_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)3901*53ee8cc1Swenshuai.xi void HAL_TSP_Flt_Bypass(TSP_DST_SEQ eFltType, MS_BOOL bEn) // @NOTE this function only for Tsif0 fileEng other fileEng has no by pass capability
3902*53ee8cc1Swenshuai.xi {
3903*53ee8cc1Swenshuai.xi     if(bEn)
3904*53ee8cc1Swenshuai.xi     {
3905*53ee8cc1Swenshuai.xi         switch (eFltType)
3906*53ee8cc1Swenshuai.xi         {
3907*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
3908*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
3909*53ee8cc1Swenshuai.xi                 break;
3910*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
3911*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
3912*53ee8cc1Swenshuai.xi                 break;
3913*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
3914*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
3915*53ee8cc1Swenshuai.xi                 break;
3916*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
3917*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
3918*53ee8cc1Swenshuai.xi                 break;
3919*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
3920*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_C_BYPASS);
3921*53ee8cc1Swenshuai.xi                 break;
3922*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
3923*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_D_BYPASS);
3924*53ee8cc1Swenshuai.xi                 break;
3925*53ee8cc1Swenshuai.xi             default:
3926*53ee8cc1Swenshuai.xi                 break;
3927*53ee8cc1Swenshuai.xi         }
3928*53ee8cc1Swenshuai.xi     }
3929*53ee8cc1Swenshuai.xi     else
3930*53ee8cc1Swenshuai.xi     {
3931*53ee8cc1Swenshuai.xi         switch (eFltType)
3932*53ee8cc1Swenshuai.xi         {
3933*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
3934*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
3935*53ee8cc1Swenshuai.xi                 break;
3936*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
3937*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
3938*53ee8cc1Swenshuai.xi                 break;
3939*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
3940*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
3941*53ee8cc1Swenshuai.xi                 break;
3942*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
3943*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
3944*53ee8cc1Swenshuai.xi                 break;
3945*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
3946*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_C_BYPASS);
3947*53ee8cc1Swenshuai.xi                 break;
3948*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
3949*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_D_BYPASS);
3950*53ee8cc1Swenshuai.xi                 break;
3951*53ee8cc1Swenshuai.xi             default:
3952*53ee8cc1Swenshuai.xi                 break;
3953*53ee8cc1Swenshuai.xi 
3954*53ee8cc1Swenshuai.xi         }
3955*53ee8cc1Swenshuai.xi     }
3956*53ee8cc1Swenshuai.xi }
3957*53ee8cc1Swenshuai.xi 
3958*53ee8cc1Swenshuai.xi 
HAL_TSP_PS_SRC(MS_U32 tsIf)3959*53ee8cc1Swenshuai.xi void HAL_TSP_PS_SRC(MS_U32 tsIf)
3960*53ee8cc1Swenshuai.xi {
3961*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl3->CFG3_10, CFG3_10_PS_MODE_SRC_MASK,(((MS_U16)tsIf)<< CFG3_10_PS_MODE_SRC_SHIFT));
3962*53ee8cc1Swenshuai.xi }
3963*53ee8cc1Swenshuai.xi 
3964*53ee8cc1Swenshuai.xi 
3965*53ee8cc1Swenshuai.xi 
3966*53ee8cc1Swenshuai.xi //PS MODE
3967*53ee8cc1Swenshuai.xi //NEED TO rename
HAL_TSP_FIFO_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)3968*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Bypass(TSP_DST_SEQ eFltType, MS_BOOL bEn) // @NOTE this function only for Tsif0 fileEng other fileEng has no by pass capability
3969*53ee8cc1Swenshuai.xi {
3970*53ee8cc1Swenshuai.xi     if(bEn)
3971*53ee8cc1Swenshuai.xi     {
3972*53ee8cc1Swenshuai.xi         switch (eFltType)
3973*53ee8cc1Swenshuai.xi         {
3974*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
3975*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
3976*53ee8cc1Swenshuai.xi                 break;
3977*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
3978*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
3979*53ee8cc1Swenshuai.xi                 break;
3980*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
3981*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
3982*53ee8cc1Swenshuai.xi                 break;
3983*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
3984*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
3985*53ee8cc1Swenshuai.xi                 break;
3986*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
3987*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
3988*53ee8cc1Swenshuai.xi                 break;
3989*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
3990*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
3991*53ee8cc1Swenshuai.xi                 break;
3992*53ee8cc1Swenshuai.xi             default:
3993*53ee8cc1Swenshuai.xi                 break;
3994*53ee8cc1Swenshuai.xi         }
3995*53ee8cc1Swenshuai.xi     }
3996*53ee8cc1Swenshuai.xi     else
3997*53ee8cc1Swenshuai.xi     {
3998*53ee8cc1Swenshuai.xi         switch (eFltType)
3999*53ee8cc1Swenshuai.xi         {
4000*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4001*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4002*53ee8cc1Swenshuai.xi                 break;
4003*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4004*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4005*53ee8cc1Swenshuai.xi                 break;
4006*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4007*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4008*53ee8cc1Swenshuai.xi                 break;
4009*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4010*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4011*53ee8cc1Swenshuai.xi                 break;
4012*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4013*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4014*53ee8cc1Swenshuai.xi                 break;
4015*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4016*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4017*53ee8cc1Swenshuai.xi                 break;
4018*53ee8cc1Swenshuai.xi             default:
4019*53ee8cc1Swenshuai.xi                 break;
4020*53ee8cc1Swenshuai.xi         }
4021*53ee8cc1Swenshuai.xi     }
4022*53ee8cc1Swenshuai.xi }
4023*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng,TSP_DST_SEQ eFltType)4024*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng, TSP_DST_SEQ eFltType)
4025*53ee8cc1Swenshuai.xi {
4026*53ee8cc1Swenshuai.xi    // (K6 HW CL) Kano doesn't support
4027*53ee8cc1Swenshuai.xi    // PS mode source sel need to be independent
4028*53ee8cc1Swenshuai.xi }
4029*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)4030*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)
4031*53ee8cc1Swenshuai.xi {
4032*53ee8cc1Swenshuai.xi     switch (eFltType)
4033*53ee8cc1Swenshuai.xi     {
4034*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO :
4035*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl->Vd_Pid_Hit) & TSP_VPID_MASK;
4036*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3D :
4037*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_70) & CFG_70_MATCHECED_VPID_3D_MASK;
4038*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO :
4039*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl->Aud_Pid_Hit) & TSP_APID_MASK;
4040*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO2 :
4041*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_71) & CFG_71_MATCHECED_APID_B_MASK;
4042*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO3 :
4043*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_74) & CFG_74_MATCHECED_APID_C_MASK;
4044*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO4 :
4045*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_7C) & CFG_7C_MATCHECED_APID_D_MASK;
4046*53ee8cc1Swenshuai.xi     default:
4047*53ee8cc1Swenshuai.xi         return PVR_PIDFLT_DEF;
4048*53ee8cc1Swenshuai.xi     }
4049*53ee8cc1Swenshuai.xi }
4050*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType,MS_BOOL bReset)4051*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType, MS_BOOL bReset)
4052*53ee8cc1Swenshuai.xi {
4053*53ee8cc1Swenshuai.xi     if (bReset)
4054*53ee8cc1Swenshuai.xi     {
4055*53ee8cc1Swenshuai.xi         switch (eFltType)
4056*53ee8cc1Swenshuai.xi         {
4057*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4058*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
4059*53ee8cc1Swenshuai.xi                 break;
4060*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4061*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
4062*53ee8cc1Swenshuai.xi                 break;
4063*53ee8cc1Swenshuai.xi 
4064*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4065*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
4066*53ee8cc1Swenshuai.xi                 break;
4067*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4068*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
4069*53ee8cc1Swenshuai.xi                 break;
4070*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4071*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO3);
4072*53ee8cc1Swenshuai.xi                 break;
4073*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4074*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_RESET_AFIFO4);
4075*53ee8cc1Swenshuai.xi                 break;
4076*53ee8cc1Swenshuai.xi             default :
4077*53ee8cc1Swenshuai.xi                 break;
4078*53ee8cc1Swenshuai.xi         }
4079*53ee8cc1Swenshuai.xi     }
4080*53ee8cc1Swenshuai.xi     else
4081*53ee8cc1Swenshuai.xi     {
4082*53ee8cc1Swenshuai.xi         switch (eFltType)
4083*53ee8cc1Swenshuai.xi         {
4084*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4085*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
4086*53ee8cc1Swenshuai.xi                 break;
4087*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4088*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
4089*53ee8cc1Swenshuai.xi                 break;
4090*53ee8cc1Swenshuai.xi 
4091*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4092*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
4093*53ee8cc1Swenshuai.xi                 break;
4094*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4095*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
4096*53ee8cc1Swenshuai.xi                 break;
4097*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4098*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO3);
4099*53ee8cc1Swenshuai.xi                 break;
4100*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4101*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_RESET_AFIFO4);
4102*53ee8cc1Swenshuai.xi                 break;
4103*53ee8cc1Swenshuai.xi             default :
4104*53ee8cc1Swenshuai.xi                 break;
4105*53ee8cc1Swenshuai.xi         }
4106*53ee8cc1Swenshuai.xi     }
4107*53ee8cc1Swenshuai.xi 
4108*53ee8cc1Swenshuai.xi     _delay(1);
4109*53ee8cc1Swenshuai.xi }
4110*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)4111*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)
4112*53ee8cc1Swenshuai.xi {
4113*53ee8cc1Swenshuai.xi     if(bSkip)
4114*53ee8cc1Swenshuai.xi     {
4115*53ee8cc1Swenshuai.xi         switch(eFltType)
4116*53ee8cc1Swenshuai.xi         {
4117*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4118*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
4119*53ee8cc1Swenshuai.xi                 break;
4120*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4121*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
4122*53ee8cc1Swenshuai.xi                 break;
4123*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4124*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
4125*53ee8cc1Swenshuai.xi                 break;
4126*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4127*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
4128*53ee8cc1Swenshuai.xi                 break;
4129*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4130*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AC_EN);
4131*53ee8cc1Swenshuai.xi                 break;
4132*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4133*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AD_EN);
4134*53ee8cc1Swenshuai.xi                 break;
4135*53ee8cc1Swenshuai.xi             default:
4136*53ee8cc1Swenshuai.xi                 break;
4137*53ee8cc1Swenshuai.xi         }
4138*53ee8cc1Swenshuai.xi     }
4139*53ee8cc1Swenshuai.xi     else
4140*53ee8cc1Swenshuai.xi     {
4141*53ee8cc1Swenshuai.xi         switch(eFltType)
4142*53ee8cc1Swenshuai.xi         {
4143*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4144*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
4145*53ee8cc1Swenshuai.xi                 break;
4146*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4147*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
4148*53ee8cc1Swenshuai.xi                 break;
4149*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4150*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
4151*53ee8cc1Swenshuai.xi                 break;
4152*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4153*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
4154*53ee8cc1Swenshuai.xi                 break;
4155*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4156*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AC_EN);
4157*53ee8cc1Swenshuai.xi                 break;
4158*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4159*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AD_EN);
4160*53ee8cc1Swenshuai.xi                 break;
4161*53ee8cc1Swenshuai.xi             default:
4162*53ee8cc1Swenshuai.xi                 break;
4163*53ee8cc1Swenshuai.xi         }
4164*53ee8cc1Swenshuai.xi 
4165*53ee8cc1Swenshuai.xi     }
4166*53ee8cc1Swenshuai.xi }
4167*53ee8cc1Swenshuai.xi 
4168*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType,MS_BOOL bDisable)4169*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType, MS_BOOL bDisable)
4170*53ee8cc1Swenshuai.xi {
4171*53ee8cc1Swenshuai.xi     if(bDisable)
4172*53ee8cc1Swenshuai.xi     {
4173*53ee8cc1Swenshuai.xi         switch(eFltType)
4174*53ee8cc1Swenshuai.xi         {
4175*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4176*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
4177*53ee8cc1Swenshuai.xi                 break;
4178*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4179*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
4180*53ee8cc1Swenshuai.xi                 break;
4181*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4182*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
4183*53ee8cc1Swenshuai.xi                 break;
4184*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4185*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
4186*53ee8cc1Swenshuai.xi                 break;
4187*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4188*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_AC_BLOCK_DIS);
4189*53ee8cc1Swenshuai.xi                 break;
4190*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4191*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_ADD_BLOCK_DIS);
4192*53ee8cc1Swenshuai.xi                 break;
4193*53ee8cc1Swenshuai.xi             default:
4194*53ee8cc1Swenshuai.xi                 break;
4195*53ee8cc1Swenshuai.xi         }
4196*53ee8cc1Swenshuai.xi     }
4197*53ee8cc1Swenshuai.xi     else
4198*53ee8cc1Swenshuai.xi     {
4199*53ee8cc1Swenshuai.xi         switch(eFltType)
4200*53ee8cc1Swenshuai.xi         {
4201*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4202*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
4203*53ee8cc1Swenshuai.xi                 break;
4204*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4205*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
4206*53ee8cc1Swenshuai.xi                 break;
4207*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4208*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
4209*53ee8cc1Swenshuai.xi                 break;
4210*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4211*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
4212*53ee8cc1Swenshuai.xi                 break;
4213*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4214*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AC_BLOCK_DIS);
4215*53ee8cc1Swenshuai.xi                 break;
4216*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4217*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_ADD_BLOCK_DIS);
4218*53ee8cc1Swenshuai.xi                 break;
4219*53ee8cc1Swenshuai.xi             default:
4220*53ee8cc1Swenshuai.xi                 break;
4221*53ee8cc1Swenshuai.xi         }
4222*53ee8cc1Swenshuai.xi     }
4223*53ee8cc1Swenshuai.xi }
4224*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)4225*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)
4226*53ee8cc1Swenshuai.xi {
4227*53ee8cc1Swenshuai.xi     MS_U32 u32Matched = 0;
4228*53ee8cc1Swenshuai.xi     switch (eFltType)
4229*53ee8cc1Swenshuai.xi     {
4230*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4231*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO;
4232*53ee8cc1Swenshuai.xi             break;
4233*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4234*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO3D;
4235*53ee8cc1Swenshuai.xi             break;
4236*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4237*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO;
4238*53ee8cc1Swenshuai.xi             break;
4239*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4240*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO2;
4241*53ee8cc1Swenshuai.xi             break;
4242*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4243*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO3;
4244*53ee8cc1Swenshuai.xi             break;
4245*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4246*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->PktChkSizeFilein) & TSP_RESET_AFIFO4;
4247*53ee8cc1Swenshuai.xi             break;
4248*53ee8cc1Swenshuai.xi         default :
4249*53ee8cc1Swenshuai.xi             return FALSE;
4250*53ee8cc1Swenshuai.xi     }
4251*53ee8cc1Swenshuai.xi     return (u32Matched) ? TRUE: FALSE;
4252*53ee8cc1Swenshuai.xi }
4253*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)4254*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)
4255*53ee8cc1Swenshuai.xi {
4256*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_ISRESET    0x80000000
4257*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_EMPTY      0x00000001
4258*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_OVERFLOW   0x00000002
4259*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_LEVEL      0x0000000C
4260*53ee8cc1Swenshuai.xi     #define TSP_FIFO_STATUS_LEVEL_SHFT            2   //shift the value get from HAL_TSP_FIFO_Level to the u32Status level position
4261*53ee8cc1Swenshuai.xi     // @NOTE please follow K2 like series to return this value
4262*53ee8cc1Swenshuai.xi     // since API layer didn't define for each column
4263*53ee8cc1Swenshuai.xi     // we only defined that 0x80000000 stands for this fifo reset is High
4264*53ee8cc1Swenshuai.xi     //                               0x00000001 stands for this fifo is empty
4265*53ee8cc1Swenshuai.xi     //                               0x00000002 stands for this fifo is overflow
4266*53ee8cc1Swenshuai.xi     //                               0x0000000C is a mask for this fifo level
4267*53ee8cc1Swenshuai.xi     // this is exclusive usage
4268*53ee8cc1Swenshuai.xi     MS_U32 u32Status = 0;
4269*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_IsReset(eFltType))
4270*53ee8cc1Swenshuai.xi     {
4271*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_ISRESET;
4272*53ee8cc1Swenshuai.xi     }
4273*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_Empty(eFltType))
4274*53ee8cc1Swenshuai.xi     {
4275*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_EMPTY;
4276*53ee8cc1Swenshuai.xi     }
4277*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_Overflow(eFltType))
4278*53ee8cc1Swenshuai.xi     {
4279*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_OVERFLOW;
4280*53ee8cc1Swenshuai.xi     }
4281*53ee8cc1Swenshuai.xi 
4282*53ee8cc1Swenshuai.xi     u32Status |= ((HAL_TSP_FIFO_Level(eFltType)<<TSP_FIFO_STATUS_LEVEL_SHFT)&E_TSP_FIFO_STATUS_LEVEL);
4283*53ee8cc1Swenshuai.xi 
4284*53ee8cc1Swenshuai.xi     return u32Status;
4285*53ee8cc1Swenshuai.xi }
4286*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)4287*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)
4288*53ee8cc1Swenshuai.xi {
4289*53ee8cc1Swenshuai.xi     switch (eFltType)
4290*53ee8cc1Swenshuai.xi     {
4291*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO :
4292*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_LEVEL)  >> TSP_VFIFO_LEVEL_SHFT;
4293*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3D :
4294*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_LEVEL)  >> TSP_VFIFO3D_LEVEL_SHFT;
4295*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO :
4296*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_LEVEL)  >> TSP_AFIFO_LEVEL_SHFT;
4297*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO2 :
4298*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_LEVEL)  >> TSP_AFIFOB_LEVEL_SHFT;
4299*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO3 :
4300*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_LEVEL)  >> TSP_AFIFOC_LEVEL_SHFT;
4301*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO4:
4302*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_LEVEL)  >> TSP_AFIFOD_LEVEL_SHFT;
4303*53ee8cc1Swenshuai.xi     default :
4304*53ee8cc1Swenshuai.xi         return 0;
4305*53ee8cc1Swenshuai.xi     }
4306*53ee8cc1Swenshuai.xi }
4307*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)4308*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)
4309*53ee8cc1Swenshuai.xi {
4310*53ee8cc1Swenshuai.xi     switch (eFltType)
4311*53ee8cc1Swenshuai.xi     {
4312*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4313*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_FULL)  >> TSP_VFIFO_FULL_SHFT;
4314*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
4315*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_FULL)  >> TSP_VFIFO3D_FULL_SHFT;
4316*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4317*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_FULL)  >> TSP_AFIFO_FULL_SHFT;
4318*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4319*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_FULL)  >> TSP_AFIFOB_FULL_SHFT;
4320*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4321*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_FULL)  >> TSP_AFIFOC_FULL_SHFT;
4322*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4323*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_FULL)  >> TSP_AFIFOD_FULL_SHFT;
4324*53ee8cc1Swenshuai.xi         default :
4325*53ee8cc1Swenshuai.xi             return FALSE;
4326*53ee8cc1Swenshuai.xi     }
4327*53ee8cc1Swenshuai.xi }
4328*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)4329*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)
4330*53ee8cc1Swenshuai.xi {
4331*53ee8cc1Swenshuai.xi     switch (eFltType)
4332*53ee8cc1Swenshuai.xi     {
4333*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4334*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_EMPTY)  >> TSP_VFIFO_EMPTY_SHFT;
4335*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4336*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_EMPTY)  >> TSP_VFIFO3D_EMPTY_SHFT;
4337*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4338*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_EMPTY)  >> TSP_AFIFO_EMPTY_SHFT;
4339*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4340*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_EMPTY)  >> TSP_AFIFOB_EMPTY_SHFT;
4341*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4342*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_EMPTY)  >> TSP_AFIFOC_EMPTY_SHFT;
4343*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4344*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_EMPTY)  >> TSP_AFIFOD_EMPTY_SHFT;
4345*53ee8cc1Swenshuai.xi         default :
4346*53ee8cc1Swenshuai.xi             return FALSE;
4347*53ee8cc1Swenshuai.xi     }
4348*53ee8cc1Swenshuai.xi }
4349*53ee8cc1Swenshuai.xi 
_HAL_TSP_VQ_TxConfig(MS_U32 vqId)4350*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_TSP_VQ_TxConfig(MS_U32 vqId)
4351*53ee8cc1Swenshuai.xi {
4352*53ee8cc1Swenshuai.xi     // reg_vq_wr_threshold = 0x8
4353*53ee8cc1Swenshuai.xi     // reg_vq_forcefire_cnt_1k= 0xC
4354*53ee8cc1Swenshuai.xi 
4355*53ee8cc1Swenshuai.xi     switch(vqId)
4356*53ee8cc1Swenshuai.xi     {
4357*53ee8cc1Swenshuai.xi         case 0:
4358*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ0_CTRL, (REG16_R(&_RegCtrl->VQ0_CTRL) & (~TSP_VQ0_WR_THRESHOLD_MASK)) | ((0x8 << TSP_VQ0_WR_THRESHOLD_SHIFT) & TSP_VQ0_WR_THRESHOLD_MASK));
4359*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ0_CTRL, (REG16_R(&_RegCtrl->VQ0_CTRL) & (~TSP_VQ0_FORCE_FIRE_CNT_1K_MASK)) | ((0xC << TSP_VQ0_FORCE_FIRE_CNT_1K_SHIFT) & TSP_VQ0_FORCE_FIRE_CNT_1K_MASK));
4360*53ee8cc1Swenshuai.xi             break;
4361*53ee8cc1Swenshuai.xi         case 1:
4362*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ1_Config, (REG16_R(&_RegCtrl->VQ1_Config) & (~TSP_VQ1_WR_THRESHOLD_MASK)) | ((0x8 << TSP_VQ1_WR_THRESHOLD_SHIFT) & TSP_VQ1_WR_THRESHOLD_MASK));
4363*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ1_Config, (REG16_R(&_RegCtrl->VQ1_Config) & (~TSP_VQ1_FORCEFIRE_CNT_1K_MASK)) | ((0xC << TSP_VQ1_FORCEFIRE_CNT_1K_SHIFT) & TSP_VQ1_FORCEFIRE_CNT_1K_MASK));
4364*53ee8cc1Swenshuai.xi             break;
4365*53ee8cc1Swenshuai.xi         case 2:
4366*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ2_Config, (REG16_R(&_RegCtrl->VQ2_Config) & (~TSP_VQ2_WR_THRESHOLD_MASK)) | ((0x8 << TSP_VQ2_WR_THRESHOLD_SHIFT) & TSP_VQ2_WR_THRESHOLD_MASK));
4367*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ2_Config, (REG16_R(&_RegCtrl->VQ2_Config) & (~TSP_VQ2_FORCEFIRE_CNT_1K_MASK)) | ((0xC << TSP_VQ2_FORCEFIRE_CNT_1K_SHIFT) & TSP_VQ2_FORCEFIRE_CNT_1K_MASK));
4368*53ee8cc1Swenshuai.xi             break;
4369*53ee8cc1Swenshuai.xi         case 3:
4370*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ3_Config, (REG16_R(&_RegCtrl->VQ3_Config) & (~TSP_VQ3_WR_THRESHOLD_MASK)) | ((0x8 << TSP_VQ3_WR_THRESHOLD_SHIFT) & TSP_VQ3_WR_THRESHOLD_MASK));
4371*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ3_Config, (REG16_R(&_RegCtrl->VQ3_Config) & (~TSP_VQ3_FORCEFIRE_CNT_1K_MASK)) | ((0xC << TSP_VQ3_FORCEFIRE_CNT_1K_SHIFT) & TSP_VQ3_FORCEFIRE_CNT_1K_MASK));
4372*53ee8cc1Swenshuai.xi             break;
4373*53ee8cc1Swenshuai.xi         default:
4374*53ee8cc1Swenshuai.xi             return FALSE;
4375*53ee8cc1Swenshuai.xi     }
4376*53ee8cc1Swenshuai.xi     return TRUE;
4377*53ee8cc1Swenshuai.xi }
4378*53ee8cc1Swenshuai.xi 
HAL_TSP_SetVQ(MS_PHYADDR u32BaseAddr,MS_U32 u32BufLen)4379*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetVQ( MS_PHYADDR u32BaseAddr, MS_U32 u32BufLen)
4380*53ee8cc1Swenshuai.xi {
4381*53ee8cc1Swenshuai.xi     MS_U32 vqId = 0;
4382*53ee8cc1Swenshuai.xi     MS_U32 u32VQ_PktNum = 0;
4383*53ee8cc1Swenshuai.xi     MS_U32 u32Addr = 0;
4384*53ee8cc1Swenshuai.xi     MS_U32 u32OneBufSize = 0;
4385*53ee8cc1Swenshuai.xi 
4386*53ee8cc1Swenshuai.xi     // Check MIU select
4387*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel = 0;
4388*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, u32Addr, u32BaseAddr);
4389*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl6->CFG6_2D_REG_MIU_SEL_FW, (REG16_R(&_RegCtrl6->CFG6_2D_REG_MIU_SEL_FW) & (~REG_MIU_SEL_VQ_MASK)) | ((u8MiuSel << REG_MIU_SEL_VQ_SHIFT) & REG_MIU_SEL_VQ_MASK));
4390*53ee8cc1Swenshuai.xi 
4391*53ee8cc1Swenshuai.xi     u32OneBufSize = ((u32BufLen >> MIU_BUS) / VQ_NUM) << MIU_BUS; //miu alignment
4392*53ee8cc1Swenshuai.xi     u32VQ_PktNum = u32OneBufSize / VQ_PACKET_UNIT_LEN;
4393*53ee8cc1Swenshuai.xi 
4394*53ee8cc1Swenshuai.xi     for(vqId = 0; vqId < VQ_NUM; vqId ++)
4395*53ee8cc1Swenshuai.xi     {
4396*53ee8cc1Swenshuai.xi         if(TRUE != _HAL_TSP_VQ_TxConfig(vqId))
4397*53ee8cc1Swenshuai.xi         {
4398*53ee8cc1Swenshuai.xi             return FALSE;
4399*53ee8cc1Swenshuai.xi         }
4400*53ee8cc1Swenshuai.xi 
4401*53ee8cc1Swenshuai.xi         // in kaiser we needs to set 6 VQ and the base unit is 208 so total vq size should be N*208*6
4402*53ee8cc1Swenshuai.xi         if (TRUE != HAL_TSP_VQ_Buffer(vqId, u32Addr, u32VQ_PktNum))
4403*53ee8cc1Swenshuai.xi         {
4404*53ee8cc1Swenshuai.xi             return FALSE;
4405*53ee8cc1Swenshuai.xi         }
4406*53ee8cc1Swenshuai.xi         u32Addr += u32OneBufSize;
4407*53ee8cc1Swenshuai.xi     }
4408*53ee8cc1Swenshuai.xi 
4409*53ee8cc1Swenshuai.xi     HAL_TSP_VQ_Enable(TRUE);
4410*53ee8cc1Swenshuai.xi     return TRUE;
4411*53ee8cc1Swenshuai.xi 
4412*53ee8cc1Swenshuai.xi }
4413*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Buffer(MS_U32 vqId,MS_PHYADDR u32BaseAddr,MS_U32 u32VQ_PktNum)4414*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Buffer(MS_U32 vqId, MS_PHYADDR u32BaseAddr, MS_U32 u32VQ_PktNum)
4415*53ee8cc1Swenshuai.xi {
4416*53ee8cc1Swenshuai.xi     switch(vqId)
4417*53ee8cc1Swenshuai.xi     {
4418*53ee8cc1Swenshuai.xi         case 0:
4419*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ0_BASE, (u32BaseAddr >> MIU_BUS));
4420*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ0_SIZE, u32VQ_PktNum);
4421*53ee8cc1Swenshuai.xi             break;
4422*53ee8cc1Swenshuai.xi         case 1:
4423*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ1_Base, (u32BaseAddr >> MIU_BUS));
4424*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ1_Size,  u32VQ_PktNum);
4425*53ee8cc1Swenshuai.xi             break;
4426*53ee8cc1Swenshuai.xi         case 2:
4427*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ2_Base, (u32BaseAddr >> MIU_BUS));
4428*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ2_Size, u32VQ_PktNum);
4429*53ee8cc1Swenshuai.xi             break;
4430*53ee8cc1Swenshuai.xi         case 3:
4431*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ3_Base, (u32BaseAddr >> MIU_BUS));
4432*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ3_Size, u32VQ_PktNum);
4433*53ee8cc1Swenshuai.xi             break;
4434*53ee8cc1Swenshuai.xi         default:
4435*53ee8cc1Swenshuai.xi             return FALSE;
4436*53ee8cc1Swenshuai.xi     }
4437*53ee8cc1Swenshuai.xi     return TRUE;
4438*53ee8cc1Swenshuai.xi }
4439*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)4440*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)
4441*53ee8cc1Swenshuai.xi {
4442*53ee8cc1Swenshuai.xi     if(bDis == TRUE)
4443*53ee8cc1Swenshuai.xi     {
4444*53ee8cc1Swenshuai.xi         switch(vqId)
4445*53ee8cc1Swenshuai.xi         {
4446*53ee8cc1Swenshuai.xi             case 0:
4447*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
4448*53ee8cc1Swenshuai.xi                 break;
4449*53ee8cc1Swenshuai.xi             case 1:
4450*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
4451*53ee8cc1Swenshuai.xi                 break;
4452*53ee8cc1Swenshuai.xi             case 2:
4453*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
4454*53ee8cc1Swenshuai.xi                 break;
4455*53ee8cc1Swenshuai.xi             case 3:
4456*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX3_BLOCK_DIS);
4457*53ee8cc1Swenshuai.xi                 break;
4458*53ee8cc1Swenshuai.xi             default:
4459*53ee8cc1Swenshuai.xi                 return FALSE;
4460*53ee8cc1Swenshuai.xi         }
4461*53ee8cc1Swenshuai.xi     }
4462*53ee8cc1Swenshuai.xi     else
4463*53ee8cc1Swenshuai.xi     {
4464*53ee8cc1Swenshuai.xi         switch(vqId)
4465*53ee8cc1Swenshuai.xi         {
4466*53ee8cc1Swenshuai.xi             case 0:
4467*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
4468*53ee8cc1Swenshuai.xi                 break;
4469*53ee8cc1Swenshuai.xi             case 1:
4470*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
4471*53ee8cc1Swenshuai.xi                 break;
4472*53ee8cc1Swenshuai.xi             case 2:
4473*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
4474*53ee8cc1Swenshuai.xi                 break;
4475*53ee8cc1Swenshuai.xi             case 3:
4476*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX3_BLOCK_DIS);
4477*53ee8cc1Swenshuai.xi                 break;
4478*53ee8cc1Swenshuai.xi             default:
4479*53ee8cc1Swenshuai.xi                 return FALSE;
4480*53ee8cc1Swenshuai.xi         }
4481*53ee8cc1Swenshuai.xi     }
4482*53ee8cc1Swenshuai.xi 
4483*53ee8cc1Swenshuai.xi     return TRUE;
4484*53ee8cc1Swenshuai.xi }
4485*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Enable(MS_BOOL bEn)4486*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Enable(MS_BOOL bEn)
4487*53ee8cc1Swenshuai.xi {
4488*53ee8cc1Swenshuai.xi     if (bEn)
4489*53ee8cc1Swenshuai.xi     {
4490*53ee8cc1Swenshuai.xi           REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
4491*53ee8cc1Swenshuai.xi     }
4492*53ee8cc1Swenshuai.xi     else
4493*53ee8cc1Swenshuai.xi     {
4494*53ee8cc1Swenshuai.xi           REG16_CLR(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
4495*53ee8cc1Swenshuai.xi     }
4496*53ee8cc1Swenshuai.xi }
HAL_TSP_VQ_Reset(MS_U32 vqId,MS_BOOL bEn)4497*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Reset(MS_U32 vqId, MS_BOOL bEn)
4498*53ee8cc1Swenshuai.xi {
4499*53ee8cc1Swenshuai.xi     if(bEn)
4500*53ee8cc1Swenshuai.xi     {
4501*53ee8cc1Swenshuai.xi         switch(vqId)
4502*53ee8cc1Swenshuai.xi         {
4503*53ee8cc1Swenshuai.xi             case 0:
4504*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
4505*53ee8cc1Swenshuai.xi                 break;
4506*53ee8cc1Swenshuai.xi             case 1:
4507*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
4508*53ee8cc1Swenshuai.xi                 break;
4509*53ee8cc1Swenshuai.xi             case 2:
4510*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
4511*53ee8cc1Swenshuai.xi                 break;
4512*53ee8cc1Swenshuai.xi           case 3:
4513*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_RESET);
4514*53ee8cc1Swenshuai.xi                 break;
4515*53ee8cc1Swenshuai.xi             default:
4516*53ee8cc1Swenshuai.xi                 break;
4517*53ee8cc1Swenshuai.xi         }
4518*53ee8cc1Swenshuai.xi     }
4519*53ee8cc1Swenshuai.xi     else
4520*53ee8cc1Swenshuai.xi     {
4521*53ee8cc1Swenshuai.xi         switch(vqId)
4522*53ee8cc1Swenshuai.xi         {
4523*53ee8cc1Swenshuai.xi             case 0:
4524*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
4525*53ee8cc1Swenshuai.xi                 break;
4526*53ee8cc1Swenshuai.xi             case 1:
4527*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
4528*53ee8cc1Swenshuai.xi                 break;
4529*53ee8cc1Swenshuai.xi             case 2:
4530*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
4531*53ee8cc1Swenshuai.xi                 break;
4532*53ee8cc1Swenshuai.xi             case 3:
4533*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_RESET);
4534*53ee8cc1Swenshuai.xi                 break;
4535*53ee8cc1Swenshuai.xi             default:
4536*53ee8cc1Swenshuai.xi                 break;
4537*53ee8cc1Swenshuai.xi         }
4538*53ee8cc1Swenshuai.xi     }
4539*53ee8cc1Swenshuai.xi }
4540*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId,MS_BOOL bEn)4541*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId, MS_BOOL bEn)
4542*53ee8cc1Swenshuai.xi {
4543*53ee8cc1Swenshuai.xi     if(bEn)
4544*53ee8cc1Swenshuai.xi     {
4545*53ee8cc1Swenshuai.xi         switch(vqId)
4546*53ee8cc1Swenshuai.xi         {
4547*53ee8cc1Swenshuai.xi             case 0:
4548*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
4549*53ee8cc1Swenshuai.xi                 break;
4550*53ee8cc1Swenshuai.xi             case 1:
4551*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
4552*53ee8cc1Swenshuai.xi                 break;
4553*53ee8cc1Swenshuai.xi             case 2:
4554*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
4555*53ee8cc1Swenshuai.xi                 break;
4556*53ee8cc1Swenshuai.xi             case 3:
4557*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_OVF_INT_EN);
4558*53ee8cc1Swenshuai.xi                 break;
4559*53ee8cc1Swenshuai.xi             default:
4560*53ee8cc1Swenshuai.xi                 break;
4561*53ee8cc1Swenshuai.xi         }
4562*53ee8cc1Swenshuai.xi     }
4563*53ee8cc1Swenshuai.xi     else
4564*53ee8cc1Swenshuai.xi     {
4565*53ee8cc1Swenshuai.xi         switch(vqId)
4566*53ee8cc1Swenshuai.xi         {
4567*53ee8cc1Swenshuai.xi             case 0:
4568*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
4569*53ee8cc1Swenshuai.xi                 break;
4570*53ee8cc1Swenshuai.xi             case 1:
4571*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
4572*53ee8cc1Swenshuai.xi                 break;
4573*53ee8cc1Swenshuai.xi             case 2:
4574*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
4575*53ee8cc1Swenshuai.xi                 break;
4576*53ee8cc1Swenshuai.xi             case 3:
4577*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_OVF_INT_EN);
4578*53ee8cc1Swenshuai.xi                 break;
4579*53ee8cc1Swenshuai.xi             default:
4580*53ee8cc1Swenshuai.xi                 break;
4581*53ee8cc1Swenshuai.xi         }
4582*53ee8cc1Swenshuai.xi     }
4583*53ee8cc1Swenshuai.xi }
4584*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId,MS_BOOL bEn)4585*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId, MS_BOOL bEn)
4586*53ee8cc1Swenshuai.xi {
4587*53ee8cc1Swenshuai.xi     if(bEn)
4588*53ee8cc1Swenshuai.xi     {
4589*53ee8cc1Swenshuai.xi         switch(vqId)
4590*53ee8cc1Swenshuai.xi         {
4591*53ee8cc1Swenshuai.xi             case 0:
4592*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
4593*53ee8cc1Swenshuai.xi                 break;
4594*53ee8cc1Swenshuai.xi             case 1:
4595*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
4596*53ee8cc1Swenshuai.xi                 break;
4597*53ee8cc1Swenshuai.xi             case 2:
4598*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
4599*53ee8cc1Swenshuai.xi                 break;
4600*53ee8cc1Swenshuai.xi             case 3:
4601*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_CLR_OVF_INT);
4602*53ee8cc1Swenshuai.xi                 break;
4603*53ee8cc1Swenshuai.xi             default:
4604*53ee8cc1Swenshuai.xi                 break;
4605*53ee8cc1Swenshuai.xi         }
4606*53ee8cc1Swenshuai.xi     }
4607*53ee8cc1Swenshuai.xi     else
4608*53ee8cc1Swenshuai.xi     {
4609*53ee8cc1Swenshuai.xi         switch(vqId)
4610*53ee8cc1Swenshuai.xi         {
4611*53ee8cc1Swenshuai.xi             case 0:
4612*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
4613*53ee8cc1Swenshuai.xi                 break;
4614*53ee8cc1Swenshuai.xi             case 1:
4615*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
4616*53ee8cc1Swenshuai.xi                 break;
4617*53ee8cc1Swenshuai.xi             case 2:
4618*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
4619*53ee8cc1Swenshuai.xi                 break;
4620*53ee8cc1Swenshuai.xi             case 3:
4621*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_CLR_OVF_INT);
4622*53ee8cc1Swenshuai.xi                 break;
4623*53ee8cc1Swenshuai.xi             default:
4624*53ee8cc1Swenshuai.xi                 break;
4625*53ee8cc1Swenshuai.xi         }
4626*53ee8cc1Swenshuai.xi     }
4627*53ee8cc1Swenshuai.xi }
4628*53ee8cc1Swenshuai.xi 
HAL_PVR_Init(MS_U32 u32PVREng,MS_U32 pktDmxId)4629*53ee8cc1Swenshuai.xi void HAL_PVR_Init(MS_U32 u32PVREng, MS_U32 pktDmxId)
4630*53ee8cc1Swenshuai.xi {
4631*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4632*53ee8cc1Swenshuai.xi     {
4633*53ee8cc1Swenshuai.xi         case 0:
4634*53ee8cc1Swenshuai.xi             // PVR 1
4635*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
4636*53ee8cc1Swenshuai.xi             REG16_W(&(_RegCtrl->FIFO_Src), (REG16_R(&(_RegCtrl->FIFO_Src)) & ~TSP_PVR1_SRC_MASK) | (((MS_U16)pktDmxId) << TSP_PVR1_SRC_SHIFT));
4637*53ee8cc1Swenshuai.xi             break;
4638*53ee8cc1Swenshuai.xi         case 1:
4639*53ee8cc1Swenshuai.xi             // PVR 2
4640*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
4641*53ee8cc1Swenshuai.xi             REG16_W(&(_RegCtrl->FIFO_Src), (REG16_R(&(_RegCtrl->FIFO_Src)) & ~TSP_PVR2_SRC_MASK_L) | ((((MS_U16)pktDmxId) & 0x01) << TSP_PVR2_SRC_SHIFT_L));
4642*53ee8cc1Swenshuai.xi             REG16_W(&(_RegCtrl->PCR_Cfg), (REG16_R(&(_RegCtrl->PCR_Cfg)) & ~TSP_PVR2_SRC_MASK_H) | ((((MS_U16)pktDmxId) >> 1) << TSP_PVR2_SRC_SHIFT_H));
4643*53ee8cc1Swenshuai.xi             break;
4644*53ee8cc1Swenshuai.xi         case 2:
4645*53ee8cc1Swenshuai.xi             // PVR 3
4646*53ee8cc1Swenshuai.xi             REG16_MSK_W(&(_RegCtrl2->CFG_15), CFG_15_PVR3_SRC, pktDmxId << CFG_15_PVR3_SRC_SHIFT);
4647*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_REG_PINGPONG_EN);
4648*53ee8cc1Swenshuai.xi             break;
4649*53ee8cc1Swenshuai.xi         case 3:
4650*53ee8cc1Swenshuai.xi             // PVR 3
4651*53ee8cc1Swenshuai.xi             REG16_MSK_W(&(_RegCtrl2->CFG_15), CFG_15_PVR4_SRC, pktDmxId << CFG_15_PVR4_SRC_SHIFT);
4652*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_REG_PINGPONG_EN);
4653*53ee8cc1Swenshuai.xi             break;
4654*53ee8cc1Swenshuai.xi         default:
4655*53ee8cc1Swenshuai.xi             break;
4656*53ee8cc1Swenshuai.xi     }
4657*53ee8cc1Swenshuai.xi }
4658*53ee8cc1Swenshuai.xi 
HAL_PVR_Exit(MS_U32 u32PVREng)4659*53ee8cc1Swenshuai.xi void HAL_PVR_Exit(MS_U32 u32PVREng)
4660*53ee8cc1Swenshuai.xi {
4661*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4662*53ee8cc1Swenshuai.xi     {
4663*53ee8cc1Swenshuai.xi         case 0:
4664*53ee8cc1Swenshuai.xi             //reset pvr control registers
4665*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
4666*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR1_SRC_MASK);
4667*53ee8cc1Swenshuai.xi 
4668*53ee8cc1Swenshuai.xi             //reset write address
4669*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4670*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4671*53ee8cc1Swenshuai.xi             break;
4672*53ee8cc1Swenshuai.xi         case 1:
4673*53ee8cc1Swenshuai.xi             //reset pvr control registers
4674*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
4675*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR2_SRC_MASK_L);
4676*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->PCR_Cfg), TSP_PVR2_SRC_MASK_H);
4677*53ee8cc1Swenshuai.xi 
4678*53ee8cc1Swenshuai.xi             //reset write address
4679*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4680*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4681*53ee8cc1Swenshuai.xi             break;
4682*53ee8cc1Swenshuai.xi         case 2:
4683*53ee8cc1Swenshuai.xi             //reset pvr control registers
4684*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_15), CFG_15_PVR3_SRC);
4685*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_REG_PINGPONG_EN);
4686*53ee8cc1Swenshuai.xi 
4687*53ee8cc1Swenshuai.xi             //reset write address
4688*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4689*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4690*53ee8cc1Swenshuai.xi             break;
4691*53ee8cc1Swenshuai.xi         case 3:
4692*53ee8cc1Swenshuai.xi             //reset pvr control registers
4693*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_15), CFG_15_PVR4_SRC);
4694*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_REG_PINGPONG_EN);
4695*53ee8cc1Swenshuai.xi 
4696*53ee8cc1Swenshuai.xi             //reset write address
4697*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4698*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4699*53ee8cc1Swenshuai.xi             break;
4700*53ee8cc1Swenshuai.xi         default:
4701*53ee8cc1Swenshuai.xi             break;
4702*53ee8cc1Swenshuai.xi     }
4703*53ee8cc1Swenshuai.xi 
4704*53ee8cc1Swenshuai.xi     //reset PVR buffer to non-OverWrite state
4705*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32PVREng].bPA2KSEG1_Mapping== TRUE)
4706*53ee8cc1Swenshuai.xi     {
4707*53ee8cc1Swenshuai.xi         _stPvrBuf[u32PVREng].bOverWrite = FALSE;
4708*53ee8cc1Swenshuai.xi     }
4709*53ee8cc1Swenshuai.xi     //reset time-stamp
4710*53ee8cc1Swenshuai.xi     HAL_PVR_SetPVRTimeStamp(u32PVREng,0);
4711*53ee8cc1Swenshuai.xi 
4712*53ee8cc1Swenshuai.xi }
4713*53ee8cc1Swenshuai.xi 
HAL_PVR_Start(MS_U32 u32PVREng)4714*53ee8cc1Swenshuai.xi void HAL_PVR_Start(MS_U32 u32PVREng)
4715*53ee8cc1Swenshuai.xi {
4716*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4717*53ee8cc1Swenshuai.xi     {
4718*53ee8cc1Swenshuai.xi         case 0:
4719*53ee8cc1Swenshuai.xi             //reset write address
4720*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4721*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4722*53ee8cc1Swenshuai.xi 
4723*53ee8cc1Swenshuai.xi             //enable string to miu
4724*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
4725*53ee8cc1Swenshuai.xi             break;
4726*53ee8cc1Swenshuai.xi         case 1:
4727*53ee8cc1Swenshuai.xi             //reset write address
4728*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4729*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4730*53ee8cc1Swenshuai.xi 
4731*53ee8cc1Swenshuai.xi             //enable string to miu
4732*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
4733*53ee8cc1Swenshuai.xi             break;
4734*53ee8cc1Swenshuai.xi         case 2:
4735*53ee8cc1Swenshuai.xi             //reset write address
4736*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4737*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4738*53ee8cc1Swenshuai.xi 
4739*53ee8cc1Swenshuai.xi             //enable string to miu
4740*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_EN);
4741*53ee8cc1Swenshuai.xi             break;
4742*53ee8cc1Swenshuai.xi         case 3:
4743*53ee8cc1Swenshuai.xi             //reset write address
4744*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4745*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4746*53ee8cc1Swenshuai.xi 
4747*53ee8cc1Swenshuai.xi             //enable string to miu
4748*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_EN);
4749*53ee8cc1Swenshuai.xi             break;
4750*53ee8cc1Swenshuai.xi         default:
4751*53ee8cc1Swenshuai.xi             break;
4752*53ee8cc1Swenshuai.xi     }
4753*53ee8cc1Swenshuai.xi 
4754*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32PVREng].bPA2KSEG1_Mapping== TRUE)
4755*53ee8cc1Swenshuai.xi     {
4756*53ee8cc1Swenshuai.xi         if((E_TSP_PVR_PVRENG_START <= u32PVREng) && (E_TSP_PVR_PVRENG_END > u32PVREng)) // PVR Eng number check
4757*53ee8cc1Swenshuai.xi         {
4758*53ee8cc1Swenshuai.xi             _stPvrBuf[u32PVREng].bOverWrite = FALSE; // Set PVR buffer to non-OverWrite state
4759*53ee8cc1Swenshuai.xi         }
4760*53ee8cc1Swenshuai.xi     }
4761*53ee8cc1Swenshuai.xi }
4762*53ee8cc1Swenshuai.xi 
HAL_PVR_Stop(MS_U32 u32PVREng)4763*53ee8cc1Swenshuai.xi void HAL_PVR_Stop(MS_U32 u32PVREng)
4764*53ee8cc1Swenshuai.xi {
4765*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4766*53ee8cc1Swenshuai.xi     {
4767*53ee8cc1Swenshuai.xi         case 0:
4768*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
4769*53ee8cc1Swenshuai.xi             break;
4770*53ee8cc1Swenshuai.xi         case 1:
4771*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
4772*53ee8cc1Swenshuai.xi             break;
4773*53ee8cc1Swenshuai.xi         case 2:
4774*53ee8cc1Swenshuai.xi             //clear string to miu
4775*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_EN);
4776*53ee8cc1Swenshuai.xi             break;
4777*53ee8cc1Swenshuai.xi         case 3:
4778*53ee8cc1Swenshuai.xi             //clear string to miu
4779*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_EN);
4780*53ee8cc1Swenshuai.xi             break;
4781*53ee8cc1Swenshuai.xi         default:
4782*53ee8cc1Swenshuai.xi             break;
4783*53ee8cc1Swenshuai.xi     }
4784*53ee8cc1Swenshuai.xi }
4785*53ee8cc1Swenshuai.xi 
HAL_PVR_Pause(MS_U32 u32PVREng,MS_BOOL bPause)4786*53ee8cc1Swenshuai.xi void HAL_PVR_Pause(MS_U32 u32PVREng , MS_BOOL bPause)
4787*53ee8cc1Swenshuai.xi {
4788*53ee8cc1Swenshuai.xi     if(bPause)
4789*53ee8cc1Swenshuai.xi     {
4790*53ee8cc1Swenshuai.xi         switch(u32PVREng)
4791*53ee8cc1Swenshuai.xi         {
4792*53ee8cc1Swenshuai.xi             case 0:
4793*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
4794*53ee8cc1Swenshuai.xi                 break;
4795*53ee8cc1Swenshuai.xi             case 1:
4796*53ee8cc1Swenshuai.xi                 REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
4797*53ee8cc1Swenshuai.xi                 break;
4798*53ee8cc1Swenshuai.xi             case 2:
4799*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_PAUSE);
4800*53ee8cc1Swenshuai.xi                 break;
4801*53ee8cc1Swenshuai.xi             case 3:
4802*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_PAUSE);
4803*53ee8cc1Swenshuai.xi                 break;
4804*53ee8cc1Swenshuai.xi             default:
4805*53ee8cc1Swenshuai.xi                 break;
4806*53ee8cc1Swenshuai.xi         }
4807*53ee8cc1Swenshuai.xi     }
4808*53ee8cc1Swenshuai.xi     else
4809*53ee8cc1Swenshuai.xi     {
4810*53ee8cc1Swenshuai.xi         switch(u32PVREng)
4811*53ee8cc1Swenshuai.xi         {
4812*53ee8cc1Swenshuai.xi             case 0:
4813*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
4814*53ee8cc1Swenshuai.xi                 break;
4815*53ee8cc1Swenshuai.xi             case 1:
4816*53ee8cc1Swenshuai.xi                 REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
4817*53ee8cc1Swenshuai.xi                 break;
4818*53ee8cc1Swenshuai.xi             case 2:
4819*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_PAUSE);
4820*53ee8cc1Swenshuai.xi                 break;
4821*53ee8cc1Swenshuai.xi             case 3:
4822*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_PAUSE);
4823*53ee8cc1Swenshuai.xi                 break;
4824*53ee8cc1Swenshuai.xi             default:
4825*53ee8cc1Swenshuai.xi                 break;
4826*53ee8cc1Swenshuai.xi         }
4827*53ee8cc1Swenshuai.xi     }
4828*53ee8cc1Swenshuai.xi }
4829*53ee8cc1Swenshuai.xi 
HAL_PVR_RecPid(MS_U32 u32PVREng,MS_BOOL bSet)4830*53ee8cc1Swenshuai.xi void HAL_PVR_RecPid(MS_U32 u32PVREng , MS_BOOL bSet)
4831*53ee8cc1Swenshuai.xi {
4832*53ee8cc1Swenshuai.xi     if(bSet)
4833*53ee8cc1Swenshuai.xi     {
4834*53ee8cc1Swenshuai.xi         switch(u32PVREng)
4835*53ee8cc1Swenshuai.xi         {
4836*53ee8cc1Swenshuai.xi             case 0:
4837*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
4838*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
4839*53ee8cc1Swenshuai.xi                 break;
4840*53ee8cc1Swenshuai.xi             case 1:
4841*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
4842*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
4843*53ee8cc1Swenshuai.xi                 break;
4844*53ee8cc1Swenshuai.xi             case 2:
4845*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PID_BYPASS3_REC);
4846*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_REC_ALL3);
4847*53ee8cc1Swenshuai.xi                 break;
4848*53ee8cc1Swenshuai.xi             case 3:
4849*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PID_BYPASS4_REC);
4850*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_REC_ALL4);
4851*53ee8cc1Swenshuai.xi                 break;
4852*53ee8cc1Swenshuai.xi             default:
4853*53ee8cc1Swenshuai.xi                 break;
4854*53ee8cc1Swenshuai.xi         }
4855*53ee8cc1Swenshuai.xi     }
4856*53ee8cc1Swenshuai.xi     else
4857*53ee8cc1Swenshuai.xi     {
4858*53ee8cc1Swenshuai.xi         switch(u32PVREng)
4859*53ee8cc1Swenshuai.xi         {
4860*53ee8cc1Swenshuai.xi             case 0:
4861*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
4862*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
4863*53ee8cc1Swenshuai.xi                 break;
4864*53ee8cc1Swenshuai.xi             case 1:
4865*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
4866*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
4867*53ee8cc1Swenshuai.xi                 break;
4868*53ee8cc1Swenshuai.xi             case 2:
4869*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PID_BYPASS3_REC);
4870*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_REC_ALL3);
4871*53ee8cc1Swenshuai.xi                 break;
4872*53ee8cc1Swenshuai.xi             case 3:
4873*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PID_BYPASS4_REC);
4874*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_REC_ALL4);
4875*53ee8cc1Swenshuai.xi                 break;
4876*53ee8cc1Swenshuai.xi             default:
4877*53ee8cc1Swenshuai.xi                 break;
4878*53ee8cc1Swenshuai.xi         }
4879*53ee8cc1Swenshuai.xi     }
4880*53ee8cc1Swenshuai.xi }
4881*53ee8cc1Swenshuai.xi 
HAL_PVR_RecNull(MS_BOOL bSet)4882*53ee8cc1Swenshuai.xi void HAL_PVR_RecNull(MS_BOOL bSet)
4883*53ee8cc1Swenshuai.xi {
4884*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
4885*53ee8cc1Swenshuai.xi     {
4886*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
4887*53ee8cc1Swenshuai.xi     }
4888*53ee8cc1Swenshuai.xi     else
4889*53ee8cc1Swenshuai.xi     {
4890*53ee8cc1Swenshuai.xi         REG16_CLR(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
4891*53ee8cc1Swenshuai.xi     }
4892*53ee8cc1Swenshuai.xi }
4893*53ee8cc1Swenshuai.xi 
HAL_PVR_SetBuf(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32BufSize0,MS_U32 u32StartAddr1,MS_U32 u32BufSize1)4894*53ee8cc1Swenshuai.xi void HAL_PVR_SetBuf(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32BufSize0, MS_U32 u32StartAddr1, MS_U32 u32BufSize1)
4895*53ee8cc1Swenshuai.xi {
4896*53ee8cc1Swenshuai.xi     // Check MIU select
4897*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
4898*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetPvrBuf0, phyMiuOffsetPvrBuf1;
4899*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetPvrBuf0, u32StartAddr0);
4900*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetPvrBuf1, u32StartAddr1);
4901*53ee8cc1Swenshuai.xi 
4902*53ee8cc1Swenshuai.xi     MS_U32 u32EndAddr0 = phyMiuOffsetPvrBuf0 + u32BufSize0;
4903*53ee8cc1Swenshuai.xi     MS_U32 u32EndAddr1 = phyMiuOffsetPvrBuf1 + u32BufSize1;
4904*53ee8cc1Swenshuai.xi     //MS_U32  u32Temp;
4905*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4906*53ee8cc1Swenshuai.xi     {
4907*53ee8cc1Swenshuai.xi         case 0:
4908*53ee8cc1Swenshuai.xi             // Select MIU
4909*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ, (REG16_R(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ) & (~REG_MIU_SEL_PVR1_MASK)) | ((u8MiuSel << REG_MIU_SEL_PVR1_SHIFT) & REG_MIU_SEL_PVR1_MASK));
4910*53ee8cc1Swenshuai.xi 
4911*53ee8cc1Swenshuai.xi             //head1
4912*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsRec_Head, (phyMiuOffsetPvrBuf0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4913*53ee8cc1Swenshuai.xi             //end1
4914*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4915*53ee8cc1Swenshuai.xi             //mid1
4916*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (phyMiuOffsetPvrBuf0 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4917*53ee8cc1Swenshuai.xi 
4918*53ee8cc1Swenshuai.xi             //head2
4919*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2pvr1, (phyMiuOffsetPvrBuf1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
4920*53ee8cc1Swenshuai.xi             //end2
4921*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
4922*53ee8cc1Swenshuai.xi             //mid2
4923*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (phyMiuOffsetPvrBuf1>>MIU_BUS) & TSP_HW_PVR1_BUF_MID2_MASK);
4924*53ee8cc1Swenshuai.xi             break;
4925*53ee8cc1Swenshuai.xi         case 1:
4926*53ee8cc1Swenshuai.xi             // Select MIU
4927*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ, (REG16_R(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ) & (~REG_MIU_SEL_PVR2_MASK)) | ((u8MiuSel << REG_MIU_SEL_PVR2_SHIFT) & REG_MIU_SEL_PVR2_MASK));
4928*53ee8cc1Swenshuai.xi 
4929*53ee8cc1Swenshuai.xi             //head1
4930*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (phyMiuOffsetPvrBuf0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4931*53ee8cc1Swenshuai.xi             //end1
4932*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4933*53ee8cc1Swenshuai.xi             //mid1
4934*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (phyMiuOffsetPvrBuf0 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4935*53ee8cc1Swenshuai.xi 
4936*53ee8cc1Swenshuai.xi             //head2
4937*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (phyMiuOffsetPvrBuf1 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4938*53ee8cc1Swenshuai.xi             //end2
4939*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4940*53ee8cc1Swenshuai.xi             //mid2
4941*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (phyMiuOffsetPvrBuf1 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4942*53ee8cc1Swenshuai.xi             break;
4943*53ee8cc1Swenshuai.xi         case 2:
4944*53ee8cc1Swenshuai.xi             // Select MIU
4945*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ, (REG16_R(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ) & (~REG_MIU_SEL_PVR3_MASK)) | ((u8MiuSel << REG_MIU_SEL_PVR3_SHIFT) & REG_MIU_SEL_PVR3_MASK));
4946*53ee8cc1Swenshuai.xi 
4947*53ee8cc1Swenshuai.xi             //head1
4948*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_17_18), (phyMiuOffsetPvrBuf0 >> MIU_BUS) & CFG_17_18_PVR3_STR2MI_HEAD);
4949*53ee8cc1Swenshuai.xi             //end1
4950*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1B_1C), (u32EndAddr0 >> MIU_BUS) & CFG_1B_1C_PVR3_STR2MI_TAIL);
4951*53ee8cc1Swenshuai.xi             //mid1
4952*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_19_1A), (phyMiuOffsetPvrBuf0 >> MIU_BUS) & CFG_19_1A_PVR3_STR2MI_MID);
4953*53ee8cc1Swenshuai.xi 
4954*53ee8cc1Swenshuai.xi             //head2
4955*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1D_1E), (phyMiuOffsetPvrBuf1 >> MIU_BUS) & CFG_1D_1E_PVR3_STR2MI_HEAD2);
4956*53ee8cc1Swenshuai.xi             //end2
4957*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_21_22), (u32EndAddr1 >> MIU_BUS) & CFG_21_22_PVR3_STR2MI_TAIL2);
4958*53ee8cc1Swenshuai.xi             //mid2
4959*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1F_20), (phyMiuOffsetPvrBuf1 >> MIU_BUS) & CFG_1F_20_PVR3_STR2MI_MID2);
4960*53ee8cc1Swenshuai.xi             break;
4961*53ee8cc1Swenshuai.xi         case 3:
4962*53ee8cc1Swenshuai.xi             // Select MIU
4963*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ, (REG16_R(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ) & (~REG_MIU_SEL_PVR4_MASK)) | ((u8MiuSel << REG_MIU_SEL_PVR4_SHIFT) & REG_MIU_SEL_PVR4_MASK));
4964*53ee8cc1Swenshuai.xi 
4965*53ee8cc1Swenshuai.xi             //head1
4966*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_24_25), (phyMiuOffsetPvrBuf0>>MIU_BUS) & CFG_24_25_PVR4_STR2MI_HEAD);
4967*53ee8cc1Swenshuai.xi             //end1
4968*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_28_29), (u32EndAddr0>>MIU_BUS) & CFG_28_29_PVR4_STR2MI_TAIL);
4969*53ee8cc1Swenshuai.xi             //mid1
4970*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_26_27), (phyMiuOffsetPvrBuf0>>MIU_BUS) & CFG_26_27_PVR4_STR2MI_MID);
4971*53ee8cc1Swenshuai.xi 
4972*53ee8cc1Swenshuai.xi             //head2
4973*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2A_2B), (phyMiuOffsetPvrBuf1>>MIU_BUS) & CFG_2A_2B_PVR4_STR2MI_HEAD2);
4974*53ee8cc1Swenshuai.xi             //end2
4975*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2E_2F), (u32EndAddr1>>MIU_BUS) & CFG_2E_2F_PVR4_STR2MI_TAIL2);
4976*53ee8cc1Swenshuai.xi             //mid2
4977*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2C_2D), (phyMiuOffsetPvrBuf1>>MIU_BUS) & CFG_2C_2D_PVR4_STR2MI_MID2);
4978*53ee8cc1Swenshuai.xi             break;
4979*53ee8cc1Swenshuai.xi 
4980*53ee8cc1Swenshuai.xi         default:
4981*53ee8cc1Swenshuai.xi             break;
4982*53ee8cc1Swenshuai.xi     }
4983*53ee8cc1Swenshuai.xi }
4984*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32StartAddr1)4985*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32StartAddr1)
4986*53ee8cc1Swenshuai.xi {
4987*53ee8cc1Swenshuai.xi     //MS_U32  u32Temp;
4988*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4989*53ee8cc1Swenshuai.xi     {
4990*53ee8cc1Swenshuai.xi         case 0:
4991*53ee8cc1Swenshuai.xi             //head1
4992*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsRec_Head, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
4993*53ee8cc1Swenshuai.xi 
4994*53ee8cc1Swenshuai.xi             //head2
4995*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2pvr1, (u32StartAddr1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
4996*53ee8cc1Swenshuai.xi             break;
4997*53ee8cc1Swenshuai.xi         case 1:
4998*53ee8cc1Swenshuai.xi             //head1
4999*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5000*53ee8cc1Swenshuai.xi 
5001*53ee8cc1Swenshuai.xi             //head2
5002*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (u32StartAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5003*53ee8cc1Swenshuai.xi 
5004*53ee8cc1Swenshuai.xi             break;
5005*53ee8cc1Swenshuai.xi         case 2:
5006*53ee8cc1Swenshuai.xi             //head1
5007*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_17_18), (u32StartAddr0>>MIU_BUS) & CFG_17_18_PVR3_STR2MI_HEAD);
5008*53ee8cc1Swenshuai.xi 
5009*53ee8cc1Swenshuai.xi             //head2
5010*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1D_1E), (u32StartAddr1>>MIU_BUS) & CFG_1D_1E_PVR3_STR2MI_HEAD2);
5011*53ee8cc1Swenshuai.xi             break;
5012*53ee8cc1Swenshuai.xi         case 3:
5013*53ee8cc1Swenshuai.xi             //head1
5014*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_24_25), (u32StartAddr0>>MIU_BUS) & CFG_24_25_PVR4_STR2MI_HEAD);
5015*53ee8cc1Swenshuai.xi 
5016*53ee8cc1Swenshuai.xi             //head2
5017*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2A_2B), (u32StartAddr1>>MIU_BUS) & CFG_2A_2B_PVR4_STR2MI_HEAD2);
5018*53ee8cc1Swenshuai.xi             break;
5019*53ee8cc1Swenshuai.xi         default:
5020*53ee8cc1Swenshuai.xi             break;
5021*53ee8cc1Swenshuai.xi     }
5022*53ee8cc1Swenshuai.xi     MS_VIRT virtStart = MsOS_PA2KSEG1(u32StartAddr0);
5023*53ee8cc1Swenshuai.xi     //PA2KSEG1 mapping detection, 0 : not mapping.
5024*53ee8cc1Swenshuai.xi     if(0 == virtStart)
5025*53ee8cc1Swenshuai.xi     {
5026*53ee8cc1Swenshuai.xi         HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_INFO, E_HAL_TSP_DBG_MODEL_ALL, printf("[PA2KSEG1_Mapping][%s][%d] PA2KSEG1_Mapping fail !!\n",__FUNCTION__,__LINE__));
5027*53ee8cc1Swenshuai.xi         _stPvrBuf[u32PVREng].bPA2KSEG1_Mapping= FALSE;
5028*53ee8cc1Swenshuai.xi     }
5029*53ee8cc1Swenshuai.xi     else
5030*53ee8cc1Swenshuai.xi     {
5031*53ee8cc1Swenshuai.xi         if((E_TSP_PVR_PVRENG_START <= u32PVREng) && (E_TSP_PVR_PVRENG_END > u32PVREng)) // PVR Eng number check
5032*53ee8cc1Swenshuai.xi         {
5033*53ee8cc1Swenshuai.xi             _stPvrBuf[u32PVREng].u32Start = u32StartAddr0;
5034*53ee8cc1Swenshuai.xi 
5035*53ee8cc1Swenshuai.xi             if( (!_stPvrBuf[u32PVREng].bOverWrite) && (_stPvrBuf[u32PVREng].u32Start!= 0) )
5036*53ee8cc1Swenshuai.xi             {
5037*53ee8cc1Swenshuai.xi                 *((MS_U64*)(MsOS_PA2KSEG1(_stPvrBuf[u32PVREng].u32Start)))= PVR_NON_OVERWRITE;
5038*53ee8cc1Swenshuai.xi             }
5039*53ee8cc1Swenshuai.xi         }
5040*53ee8cc1Swenshuai.xi         _stPvrBuf[u32PVREng].bPA2KSEG1_Mapping= TRUE;
5041*53ee8cc1Swenshuai.xi     }
5042*53ee8cc1Swenshuai.xi }
5043*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng,MS_U32 u32MidAddr0,MS_U32 u32MidAddr1)5044*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng , MS_U32 u32MidAddr0, MS_U32 u32MidAddr1)
5045*53ee8cc1Swenshuai.xi {
5046*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5047*53ee8cc1Swenshuai.xi     {
5048*53ee8cc1Swenshuai.xi         case 0:
5049*53ee8cc1Swenshuai.xi             //mid1
5050*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
5051*53ee8cc1Swenshuai.xi 
5052*53ee8cc1Swenshuai.xi             //mid2
5053*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (u32MidAddr1>>4) & TSP_HW_PVR1_BUF_MID2_MASK);
5054*53ee8cc1Swenshuai.xi             break;
5055*53ee8cc1Swenshuai.xi         case 1:
5056*53ee8cc1Swenshuai.xi             //mid1
5057*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
5058*53ee8cc1Swenshuai.xi 
5059*53ee8cc1Swenshuai.xi             //mid2
5060*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (u32MidAddr1>>4) & TSP_STR2MI2_ADDR_MASK);
5061*53ee8cc1Swenshuai.xi             break;
5062*53ee8cc1Swenshuai.xi         case 2:
5063*53ee8cc1Swenshuai.xi             //mid1
5064*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_19_1A), (u32MidAddr0>>4) & CFG_19_1A_PVR3_STR2MI_MID);
5065*53ee8cc1Swenshuai.xi 
5066*53ee8cc1Swenshuai.xi             //mid2
5067*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1F_20), (u32MidAddr1>>4) & CFG_1F_20_PVR3_STR2MI_MID2);
5068*53ee8cc1Swenshuai.xi             break;
5069*53ee8cc1Swenshuai.xi         case 3:
5070*53ee8cc1Swenshuai.xi             //mid1
5071*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_26_27), (u32MidAddr0>>4) & CFG_26_27_PVR4_STR2MI_MID);
5072*53ee8cc1Swenshuai.xi 
5073*53ee8cc1Swenshuai.xi             //mid2
5074*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2C_2D), (u32MidAddr1>>4) & CFG_2C_2D_PVR4_STR2MI_MID2);
5075*53ee8cc1Swenshuai.xi             break;
5076*53ee8cc1Swenshuai.xi         default:
5077*53ee8cc1Swenshuai.xi             break;
5078*53ee8cc1Swenshuai.xi     }
5079*53ee8cc1Swenshuai.xi }
5080*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng,MS_U32 u32EndAddr0,MS_U32 u32EndAddr1)5081*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng , MS_U32 u32EndAddr0, MS_U32 u32EndAddr1)
5082*53ee8cc1Swenshuai.xi {
5083*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5084*53ee8cc1Swenshuai.xi     {
5085*53ee8cc1Swenshuai.xi         case 0:
5086*53ee8cc1Swenshuai.xi             //end1
5087*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5088*53ee8cc1Swenshuai.xi 
5089*53ee8cc1Swenshuai.xi             //end2
5090*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
5091*53ee8cc1Swenshuai.xi             break;
5092*53ee8cc1Swenshuai.xi         case 1:
5093*53ee8cc1Swenshuai.xi             //end1
5094*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5095*53ee8cc1Swenshuai.xi 
5096*53ee8cc1Swenshuai.xi             //end2
5097*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5098*53ee8cc1Swenshuai.xi             break;
5099*53ee8cc1Swenshuai.xi         case 2:
5100*53ee8cc1Swenshuai.xi             //end1
5101*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1B_1C), (u32EndAddr0>>MIU_BUS) & CFG_1B_1C_PVR3_STR2MI_TAIL);
5102*53ee8cc1Swenshuai.xi 
5103*53ee8cc1Swenshuai.xi             //end2
5104*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_21_22), (u32EndAddr1>>MIU_BUS) & CFG_21_22_PVR3_STR2MI_TAIL2);
5105*53ee8cc1Swenshuai.xi             break;
5106*53ee8cc1Swenshuai.xi         case 3:
5107*53ee8cc1Swenshuai.xi             //end1
5108*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_28_29), (u32EndAddr0>>MIU_BUS) & CFG_28_29_PVR4_STR2MI_TAIL);
5109*53ee8cc1Swenshuai.xi 
5110*53ee8cc1Swenshuai.xi             //end2
5111*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2E_2F), (u32EndAddr1>>MIU_BUS) & CFG_2E_2F_PVR4_STR2MI_TAIL2);
5112*53ee8cc1Swenshuai.xi             break;
5113*53ee8cc1Swenshuai.xi         default:
5114*53ee8cc1Swenshuai.xi             break;
5115*53ee8cc1Swenshuai.xi     }
5116*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32PVREng].bPA2KSEG1_Mapping == TRUE)
5117*53ee8cc1Swenshuai.xi     {
5118*53ee8cc1Swenshuai.xi         if((E_TSP_PVR_PVRENG_START <= u32PVREng) && (E_TSP_PVR_PVRENG_END > u32PVREng)) // PVR Eng number check
5119*53ee8cc1Swenshuai.xi         {
5120*53ee8cc1Swenshuai.xi             _stPvrBuf[u32PVREng].u32End = u32EndAddr1;
5121*53ee8cc1Swenshuai.xi         }
5122*53ee8cc1Swenshuai.xi     }
5123*53ee8cc1Swenshuai.xi }
5124*53ee8cc1Swenshuai.xi 
HAL_PVR_GetWritePtr(MS_U32 u32PVREng)5125*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetWritePtr(MS_U32 u32PVREng)
5126*53ee8cc1Swenshuai.xi {
5127*53ee8cc1Swenshuai.xi     MS_U32 WritePtr;
5128*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5129*53ee8cc1Swenshuai.xi     {
5130*53ee8cc1Swenshuai.xi         case 0:
5131*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&_RegCtrl->TsRec_Mid_PVR1_WPTR) << MIU_BUS;
5132*53ee8cc1Swenshuai.xi             break;
5133*53ee8cc1Swenshuai.xi         case 1:
5134*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&_RegCtrl->Str2mi_mid1_wptr_pvr2) << MIU_BUS;
5135*53ee8cc1Swenshuai.xi             break;
5136*53ee8cc1Swenshuai.xi         case 2:
5137*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&(_RegCtrl2->CFG_66_67)) << MIU_BUS;
5138*53ee8cc1Swenshuai.xi             break;
5139*53ee8cc1Swenshuai.xi         case 3:
5140*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&(_RegCtrl2->CFG_68_69)) << MIU_BUS;
5141*53ee8cc1Swenshuai.xi             break;
5142*53ee8cc1Swenshuai.xi         default:
5143*53ee8cc1Swenshuai.xi             WritePtr = 0;
5144*53ee8cc1Swenshuai.xi             break;
5145*53ee8cc1Swenshuai.xi     }
5146*53ee8cc1Swenshuai.xi     return _Adjust_PVR_WritePtr(u32PVREng, WritePtr);
5147*53ee8cc1Swenshuai.xi }
5148*53ee8cc1Swenshuai.xi 
5149*53ee8cc1Swenshuai.xi 
HAL_PVR_GetEngSrc(MS_U32 u32EngDst,TSP_SRC_SEQ * eSrc)5150*53ee8cc1Swenshuai.xi void HAL_PVR_GetEngSrc(MS_U32 u32EngDst, TSP_SRC_SEQ *eSrc)
5151*53ee8cc1Swenshuai.xi {
5152*53ee8cc1Swenshuai.xi     MS_U16 u16Value = 0;
5153*53ee8cc1Swenshuai.xi 
5154*53ee8cc1Swenshuai.xi     switch(u32EngDst)
5155*53ee8cc1Swenshuai.xi     {
5156*53ee8cc1Swenshuai.xi         case 0:
5157*53ee8cc1Swenshuai.xi             // PVR 1
5158*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR1_SRC_MASK) >> TSP_PVR1_SRC_SHIFT);
5159*53ee8cc1Swenshuai.xi             break;
5160*53ee8cc1Swenshuai.xi         case 1:
5161*53ee8cc1Swenshuai.xi             // PVR 2
5162*53ee8cc1Swenshuai.xi             u16Value = (REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR2_SRC_MASK_L) >> TSP_PVR2_SRC_SHIFT_L;
5163*53ee8cc1Swenshuai.xi             u16Value |= ((REG16_R(&(_RegCtrl->PCR_Cfg)) & TSP_PVR2_SRC_MASK_H) << 1);
5164*53ee8cc1Swenshuai.xi             *eSrc = (TSP_SRC_SEQ)u16Value;
5165*53ee8cc1Swenshuai.xi             break;
5166*53ee8cc1Swenshuai.xi         case 2:
5167*53ee8cc1Swenshuai.xi             // PVR 3
5168*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl2->CFG_15 )) & CFG_15_PVR3_SRC)   >> CFG_15_PVR3_SRC_SHIFT);
5169*53ee8cc1Swenshuai.xi             break;
5170*53ee8cc1Swenshuai.xi         case 3:
5171*53ee8cc1Swenshuai.xi             // PVR 4
5172*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl2->CFG_15 )) & CFG_15_PVR4_SRC)   >> CFG_15_PVR4_SRC_SHIFT);
5173*53ee8cc1Swenshuai.xi             break;
5174*53ee8cc1Swenshuai.xi         default:
5175*53ee8cc1Swenshuai.xi             break;
5176*53ee8cc1Swenshuai.xi     }
5177*53ee8cc1Swenshuai.xi }
5178*53ee8cc1Swenshuai.xi 
5179*53ee8cc1Swenshuai.xi 
5180*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)5181*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)
5182*53ee8cc1Swenshuai.xi {
5183*53ee8cc1Swenshuai.xi     switch (u32FileEng)
5184*53ee8cc1Swenshuai.xi     {
5185*53ee8cc1Swenshuai.xi         case 0: //File in Eng 0
5186*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF1;
5187*53ee8cc1Swenshuai.xi         case 1: //File in Eng 1
5188*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF3;
5189*53ee8cc1Swenshuai.xi         case 2: //File in Eng 2
5190*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF0;
5191*53ee8cc1Swenshuai.xi         case 3: //File in Eng 3
5192*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF2;
5193*53ee8cc1Swenshuai.xi         default:
5194*53ee8cc1Swenshuai.xi             return E_FILEENG_INVALID;
5195*53ee8cc1Swenshuai.xi     }
5196*53ee8cc1Swenshuai.xi }
5197*53ee8cc1Swenshuai.xi 
5198*53ee8cc1Swenshuai.xi // @NOTE for backward competible when calling flowset pvr
5199*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)5200*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)
5201*53ee8cc1Swenshuai.xi {
5202*53ee8cc1Swenshuai.xi     switch(u32Eng)
5203*53ee8cc1Swenshuai.xi     {
5204*53ee8cc1Swenshuai.xi         case 0:
5205*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
5206*53ee8cc1Swenshuai.xi         case 1:
5207*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
5208*53ee8cc1Swenshuai.xi         case 2:
5209*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
5210*53ee8cc1Swenshuai.xi         case 3:
5211*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
5212*53ee8cc1Swenshuai.xi         default:
5213*53ee8cc1Swenshuai.xi             return E_TSP_SRC_INVALID;
5214*53ee8cc1Swenshuai.xi     }
5215*53ee8cc1Swenshuai.xi }
5216*53ee8cc1Swenshuai.xi 
5217*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF,MS_BOOL bFileIn)5218*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF, MS_BOOL bFileIn)
5219*53ee8cc1Swenshuai.xi {
5220*53ee8cc1Swenshuai.xi     MS_U32  u32PhyTSIF = 0;
5221*53ee8cc1Swenshuai.xi     switch (eTSIF)
5222*53ee8cc1Swenshuai.xi     {
5223*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_0:
5224*53ee8cc1Swenshuai.xi             if(bFileIn)
5225*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF1; // @NOTE tsif1 is used for playback0 file-in
5226*53ee8cc1Swenshuai.xi             else
5227*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF0;
5228*53ee8cc1Swenshuai.xi             break;
5229*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_1:
5230*53ee8cc1Swenshuai.xi             if(bFileIn)
5231*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF3; // @NOTE tsif3 is used for playback0 file-in
5232*53ee8cc1Swenshuai.xi             else
5233*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF2;
5234*53ee8cc1Swenshuai.xi             break;
5235*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_2:
5236*53ee8cc1Swenshuai.xi             if(bFileIn)
5237*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF0;
5238*53ee8cc1Swenshuai.xi             else
5239*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF3;
5240*53ee8cc1Swenshuai.xi             break;
5241*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_3:
5242*53ee8cc1Swenshuai.xi             if(bFileIn)
5243*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF2;
5244*53ee8cc1Swenshuai.xi             else
5245*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF1;
5246*53ee8cc1Swenshuai.xi             break;
5247*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR0:
5248*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF2;
5249*53ee8cc1Swenshuai.xi             break;
5250*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR1:
5251*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF3;
5252*53ee8cc1Swenshuai.xi             break;
5253*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR2:
5254*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF2;
5255*53ee8cc1Swenshuai.xi             break;
5256*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR3:
5257*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF3;
5258*53ee8cc1Swenshuai.xi             break;
5259*53ee8cc1Swenshuai.xi        default:
5260*53ee8cc1Swenshuai.xi             printf("[PVR ERROR][%s][%d] mapping TSIF error\n",__FUNCTION__,__LINE__);
5261*53ee8cc1Swenshuai.xi             break;
5262*53ee8cc1Swenshuai.xi     }
5263*53ee8cc1Swenshuai.xi 
5264*53ee8cc1Swenshuai.xi     return u32PhyTSIF;
5265*53ee8cc1Swenshuai.xi }
5266*53ee8cc1Swenshuai.xi 
5267*53ee8cc1Swenshuai.xi 
5268*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)5269*53ee8cc1Swenshuai.xi TSP_PIDFLT_SRC HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)
5270*53ee8cc1Swenshuai.xi {
5271*53ee8cc1Swenshuai.xi     // @NOTE we map hw pkt dmx setting to api layer flow at this function
5272*53ee8cc1Swenshuai.xi 
5273*53ee8cc1Swenshuai.xi     TSP_PIDFLT_SRC ePidFltSrc = E_TSP_PIDFLT_INVALID;
5274*53ee8cc1Swenshuai.xi 
5275*53ee8cc1Swenshuai.xi     switch (eSrc)
5276*53ee8cc1Swenshuai.xi     {
5277*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
5278*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_LIVE0;
5279*53ee8cc1Swenshuai.xi             break;
5280*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
5281*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_FILE0;
5282*53ee8cc1Swenshuai.xi             break;
5283*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
5284*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_LIVE1;
5285*53ee8cc1Swenshuai.xi             break;
5286*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
5287*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_FILE1;
5288*53ee8cc1Swenshuai.xi             break;
5289*53ee8cc1Swenshuai.xi         default:
5290*53ee8cc1Swenshuai.xi             // @TODO add assert
5291*53ee8cc1Swenshuai.xi             printf ("[TSP_ERR][%s][%d] Wrong Engine Source!!\n", __FUNCTION__,__LINE__);
5292*53ee8cc1Swenshuai.xi             break;
5293*53ee8cc1Swenshuai.xi     }
5294*53ee8cc1Swenshuai.xi 
5295*53ee8cc1Swenshuai.xi     return ePidFltSrc;
5296*53ee8cc1Swenshuai.xi }
5297*53ee8cc1Swenshuai.xi 
HAL_TSP_GetDefaultFileinEng(void)5298*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_GetDefaultFileinEng(void)
5299*53ee8cc1Swenshuai.xi {
5300*53ee8cc1Swenshuai.xi     return E_FILEENG_TSIF1;
5301*53ee8cc1Swenshuai.xi }
5302*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType,MS_U32 u32Eng)5303*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType, MS_U32 u32Eng)
5304*53ee8cc1Swenshuai.xi {
5305*53ee8cc1Swenshuai.xi     if(eDstType == E_TSP_PIDFLT_DST_VIDEO)
5306*53ee8cc1Swenshuai.xi     {
5307*53ee8cc1Swenshuai.xi         switch(u32Eng)
5308*53ee8cc1Swenshuai.xi         {
5309*53ee8cc1Swenshuai.xi             case 0:
5310*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO;
5311*53ee8cc1Swenshuai.xi             case 1:
5312*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO3D;
5313*53ee8cc1Swenshuai.xi             default:
5314*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping Vfifo eng error\n", __FUNCTION__, __LINE__);
5315*53ee8cc1Swenshuai.xi                 return 0;
5316*53ee8cc1Swenshuai.xi         }
5317*53ee8cc1Swenshuai.xi     }
5318*53ee8cc1Swenshuai.xi     else if(eDstType == E_TSP_PIDFLT_DST_AUDIO)
5319*53ee8cc1Swenshuai.xi     {
5320*53ee8cc1Swenshuai.xi         switch(u32Eng)
5321*53ee8cc1Swenshuai.xi         {
5322*53ee8cc1Swenshuai.xi             case 0:
5323*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO;
5324*53ee8cc1Swenshuai.xi             case 1:
5325*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO2;
5326*53ee8cc1Swenshuai.xi             case 2:
5327*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO3;
5328*53ee8cc1Swenshuai.xi             case 3:
5329*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO4;
5330*53ee8cc1Swenshuai.xi             default:
5331*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping Afifo eng error\n", __FUNCTION__, __LINE__);
5332*53ee8cc1Swenshuai.xi                 return 0;
5333*53ee8cc1Swenshuai.xi         }
5334*53ee8cc1Swenshuai.xi     }
5335*53ee8cc1Swenshuai.xi     if(eDstType == E_TSP_PIDFLT_DST_PVR)
5336*53ee8cc1Swenshuai.xi     {
5337*53ee8cc1Swenshuai.xi         switch(u32Eng)
5338*53ee8cc1Swenshuai.xi         {
5339*53ee8cc1Swenshuai.xi             case 0:
5340*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR1;
5341*53ee8cc1Swenshuai.xi             case 1:
5342*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR2;
5343*53ee8cc1Swenshuai.xi             case 2:
5344*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR3;
5345*53ee8cc1Swenshuai.xi             case 3:
5346*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR4;
5347*53ee8cc1Swenshuai.xi             default:
5348*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping PVR eng error\n",__FUNCTION__,__LINE__);
5349*53ee8cc1Swenshuai.xi                 return 0;
5350*53ee8cc1Swenshuai.xi         }
5351*53ee8cc1Swenshuai.xi     }
5352*53ee8cc1Swenshuai.xi     else
5353*53ee8cc1Swenshuai.xi     {
5354*53ee8cc1Swenshuai.xi         printf("[TSP ERROR][%s][%d] pid filter destination type error\n", __FUNCTION__, __LINE__);
5355*53ee8cc1Swenshuai.xi         return 0;
5356*53ee8cc1Swenshuai.xi     }
5357*53ee8cc1Swenshuai.xi }
5358*53ee8cc1Swenshuai.xi 
HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)5359*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)
5360*53ee8cc1Swenshuai.xi {
5361*53ee8cc1Swenshuai.xi     MS_U32  u32Fq = 0;
5362*53ee8cc1Swenshuai.xi 
5363*53ee8cc1Swenshuai.xi     switch (u32Tsif)
5364*53ee8cc1Swenshuai.xi     {
5365*53ee8cc1Swenshuai.xi         case 0:
5366*53ee8cc1Swenshuai.xi             u32Fq = 0;
5367*53ee8cc1Swenshuai.xi             break;
5368*53ee8cc1Swenshuai.xi         case 1:
5369*53ee8cc1Swenshuai.xi             u32Fq = 2;
5370*53ee8cc1Swenshuai.xi             break;
5371*53ee8cc1Swenshuai.xi         case 2:
5372*53ee8cc1Swenshuai.xi             u32Fq = 3;
5373*53ee8cc1Swenshuai.xi             break;
5374*53ee8cc1Swenshuai.xi         case 3:
5375*53ee8cc1Swenshuai.xi             u32Fq = 1;
5376*53ee8cc1Swenshuai.xi             break;
5377*53ee8cc1Swenshuai.xi        default:
5378*53ee8cc1Swenshuai.xi             printf("[PVR ERROR][%s][%d] mapping TSIF:%u error\n",__FUNCTION__,__LINE__,(unsigned int)u32Tsif);
5379*53ee8cc1Swenshuai.xi             break;
5380*53ee8cc1Swenshuai.xi     }
5381*53ee8cc1Swenshuai.xi 
5382*53ee8cc1Swenshuai.xi     return u32Fq;
5383*53ee8cc1Swenshuai.xi }
5384*53ee8cc1Swenshuai.xi 
HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)5385*53ee8cc1Swenshuai.xi TSP_TS_PAD HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)
5386*53ee8cc1Swenshuai.xi {
5387*53ee8cc1Swenshuai.xi     switch(u8Pad3WireId)
5388*53ee8cc1Swenshuai.xi     {
5389*53ee8cc1Swenshuai.xi         case 0:
5390*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT3;
5391*53ee8cc1Swenshuai.xi         case 1:
5392*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT4;
5393*53ee8cc1Swenshuai.xi         case 2:
5394*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT5;
5395*53ee8cc1Swenshuai.xi         case 3:
5396*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT6;
5397*53ee8cc1Swenshuai.xi         default:
5398*53ee8cc1Swenshuai.xi             HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[PVR ERROR][%s][%d] mapping 3WirePad:%u error\n",__FUNCTION__,__LINE__,u8Pad3WireId));
5399*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_INVALID;
5400*53ee8cc1Swenshuai.xi     }
5401*53ee8cc1Swenshuai.xi }
5402*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng,MS_BOOL bSet)5403*53ee8cc1Swenshuai.xi void HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng , MS_BOOL bSet)
5404*53ee8cc1Swenshuai.xi {
5405*53ee8cc1Swenshuai.xi     if(bSet)
5406*53ee8cc1Swenshuai.xi     {
5407*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5408*53ee8cc1Swenshuai.xi         {
5409*53ee8cc1Swenshuai.xi             case 0:
5410*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160C, TSP_RECORD192_EN);
5411*53ee8cc1Swenshuai.xi                 break;
5412*53ee8cc1Swenshuai.xi             case 1:
5413*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
5414*53ee8cc1Swenshuai.xi                 break;
5415*53ee8cc1Swenshuai.xi             case 2:
5416*53ee8cc1Swenshuai.xi                 REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_PKT192_EN);
5417*53ee8cc1Swenshuai.xi                 break;
5418*53ee8cc1Swenshuai.xi             case 3:
5419*53ee8cc1Swenshuai.xi                 REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_PKT192_EN);
5420*53ee8cc1Swenshuai.xi                 break;
5421*53ee8cc1Swenshuai.xi             default:
5422*53ee8cc1Swenshuai.xi                 break;
5423*53ee8cc1Swenshuai.xi         }
5424*53ee8cc1Swenshuai.xi     }
5425*53ee8cc1Swenshuai.xi     else
5426*53ee8cc1Swenshuai.xi     {
5427*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5428*53ee8cc1Swenshuai.xi         {
5429*53ee8cc1Swenshuai.xi             case 0:
5430*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160C, TSP_RECORD192_EN);
5431*53ee8cc1Swenshuai.xi                 break;
5432*53ee8cc1Swenshuai.xi             case 1:
5433*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
5434*53ee8cc1Swenshuai.xi                 break;
5435*53ee8cc1Swenshuai.xi             case 2:
5436*53ee8cc1Swenshuai.xi                 REG16_CLR((&_RegCtrl2->CFG_16), CFG_16_PVR3_PKT192_EN);
5437*53ee8cc1Swenshuai.xi                 break;
5438*53ee8cc1Swenshuai.xi             case 3:
5439*53ee8cc1Swenshuai.xi                 REG16_CLR((&_RegCtrl2->CFG_23), CFG_23_PVR4_PKT192_EN);
5440*53ee8cc1Swenshuai.xi                 break;
5441*53ee8cc1Swenshuai.xi             default:
5442*53ee8cc1Swenshuai.xi                 break;
5443*53ee8cc1Swenshuai.xi         }
5444*53ee8cc1Swenshuai.xi     }
5445*53ee8cc1Swenshuai.xi }
5446*53ee8cc1Swenshuai.xi 
HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)5447*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)
5448*53ee8cc1Swenshuai.xi {
5449*53ee8cc1Swenshuai.xi     MS_U32 u32lpcr = 0;
5450*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5451*53ee8cc1Swenshuai.xi     {
5452*53ee8cc1Swenshuai.xi         case 0:
5453*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
5454*53ee8cc1Swenshuai.xi 
5455*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R(&_RegCtrl->PVR1_LPcr1);
5456*53ee8cc1Swenshuai.xi 
5457*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
5458*53ee8cc1Swenshuai.xi 
5459*53ee8cc1Swenshuai.xi             return u32lpcr;
5460*53ee8cc1Swenshuai.xi         case 1:
5461*53ee8cc1Swenshuai.xi             REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
5462*53ee8cc1Swenshuai.xi 
5463*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R(&_RegCtrl->PVR2_LPCR1);
5464*53ee8cc1Swenshuai.xi 
5465*53ee8cc1Swenshuai.xi             REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
5466*53ee8cc1Swenshuai.xi             return u32lpcr;
5467*53ee8cc1Swenshuai.xi         case 2:
5468*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
5469*53ee8cc1Swenshuai.xi 
5470*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R((&_RegCtrl2->CFG_62_63));
5471*53ee8cc1Swenshuai.xi 
5472*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
5473*53ee8cc1Swenshuai.xi             return u32lpcr;
5474*53ee8cc1Swenshuai.xi         case 3:
5475*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
5476*53ee8cc1Swenshuai.xi 
5477*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R((&_RegCtrl2->CFG_64_65));
5478*53ee8cc1Swenshuai.xi 
5479*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
5480*53ee8cc1Swenshuai.xi             return u32lpcr;
5481*53ee8cc1Swenshuai.xi         default:
5482*53ee8cc1Swenshuai.xi             break;
5483*53ee8cc1Swenshuai.xi     }
5484*53ee8cc1Swenshuai.xi     return 0;
5485*53ee8cc1Swenshuai.xi }
5486*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng,MS_U32 u32Stamp)5487*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng , MS_U32 u32Stamp)
5488*53ee8cc1Swenshuai.xi {
5489*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5490*53ee8cc1Swenshuai.xi     {
5491*53ee8cc1Swenshuai.xi         case 0:
5492*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
5493*53ee8cc1Swenshuai.xi 
5494*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PVR1_LPcr1, u32Stamp);
5495*53ee8cc1Swenshuai.xi 
5496*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
5497*53ee8cc1Swenshuai.xi             break;
5498*53ee8cc1Swenshuai.xi         case 1:
5499*53ee8cc1Swenshuai.xi             REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
5500*53ee8cc1Swenshuai.xi 
5501*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PVR2_LPCR1, u32Stamp);
5502*53ee8cc1Swenshuai.xi 
5503*53ee8cc1Swenshuai.xi             REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
5504*53ee8cc1Swenshuai.xi             break;
5505*53ee8cc1Swenshuai.xi         case 2:
5506*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_LPCR1_WLD);
5507*53ee8cc1Swenshuai.xi 
5508*53ee8cc1Swenshuai.xi             REG32_W((&_RegCtrl2->CFG_62_63), u32Stamp);
5509*53ee8cc1Swenshuai.xi 
5510*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_LPCR1_WLD);
5511*53ee8cc1Swenshuai.xi             break;
5512*53ee8cc1Swenshuai.xi         case 3:
5513*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_LPCR1_WLD);
5514*53ee8cc1Swenshuai.xi 
5515*53ee8cc1Swenshuai.xi             REG32_W((&_RegCtrl2->CFG_64_65), u32Stamp);
5516*53ee8cc1Swenshuai.xi 
5517*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_LPCR1_WLD);
5518*53ee8cc1Swenshuai.xi             break;
5519*53ee8cc1Swenshuai.xi         default:
5520*53ee8cc1Swenshuai.xi             break;
5521*53ee8cc1Swenshuai.xi     }
5522*53ee8cc1Swenshuai.xi }
5523*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng,MS_U32 u32Stamp)5524*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng , MS_U32 u32Stamp)
5525*53ee8cc1Swenshuai.xi {
5526*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5527*53ee8cc1Swenshuai.xi     {
5528*53ee8cc1Swenshuai.xi         case 0:
5529*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
5530*53ee8cc1Swenshuai.xi 
5531*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_56_57, u32Stamp);
5532*53ee8cc1Swenshuai.xi 
5533*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
5534*53ee8cc1Swenshuai.xi             break;
5535*53ee8cc1Swenshuai.xi         case 1:
5536*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
5537*53ee8cc1Swenshuai.xi 
5538*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_58_59, u32Stamp);
5539*53ee8cc1Swenshuai.xi 
5540*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
5541*53ee8cc1Swenshuai.xi             break;
5542*53ee8cc1Swenshuai.xi         case 2:
5543*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD2);
5544*53ee8cc1Swenshuai.xi 
5545*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_5A_5B, u32Stamp);
5546*53ee8cc1Swenshuai.xi 
5547*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD2);
5548*53ee8cc1Swenshuai.xi             break;
5549*53ee8cc1Swenshuai.xi         case 3:
5550*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD3);
5551*53ee8cc1Swenshuai.xi 
5552*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_5C_5D, u32Stamp);
5553*53ee8cc1Swenshuai.xi 
5554*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD3);
5555*53ee8cc1Swenshuai.xi             break;
5556*53ee8cc1Swenshuai.xi         default:
5557*53ee8cc1Swenshuai.xi             break;
5558*53ee8cc1Swenshuai.xi     }
5559*53ee8cc1Swenshuai.xi }
5560*53ee8cc1Swenshuai.xi 
HAL_PVR_Alignment_Enable(MS_U32 u32PVREng,MS_BOOL bEnable)5561*53ee8cc1Swenshuai.xi void HAL_PVR_Alignment_Enable(MS_U32 u32PVREng, MS_BOOL bEnable)
5562*53ee8cc1Swenshuai.xi {
5563*53ee8cc1Swenshuai.xi     if(bEnable)
5564*53ee8cc1Swenshuai.xi     {
5565*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5566*53ee8cc1Swenshuai.xi         {
5567*53ee8cc1Swenshuai.xi             case 0:
5568*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
5569*53ee8cc1Swenshuai.xi                 break;
5570*53ee8cc1Swenshuai.xi             case 1:
5571*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
5572*53ee8cc1Swenshuai.xi                 break;
5573*53ee8cc1Swenshuai.xi             case 2:
5574*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_PVR_ALIGN_EN);
5575*53ee8cc1Swenshuai.xi                 break;
5576*53ee8cc1Swenshuai.xi             case 3:
5577*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_PVR_ALIGN_EN);
5578*53ee8cc1Swenshuai.xi                 break;
5579*53ee8cc1Swenshuai.xi             default:
5580*53ee8cc1Swenshuai.xi                 break;
5581*53ee8cc1Swenshuai.xi         }
5582*53ee8cc1Swenshuai.xi     }
5583*53ee8cc1Swenshuai.xi     else
5584*53ee8cc1Swenshuai.xi     {
5585*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5586*53ee8cc1Swenshuai.xi         {
5587*53ee8cc1Swenshuai.xi             case 0:
5588*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
5589*53ee8cc1Swenshuai.xi                 break;
5590*53ee8cc1Swenshuai.xi             case 1:
5591*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
5592*53ee8cc1Swenshuai.xi                 break;
5593*53ee8cc1Swenshuai.xi             case 2:
5594*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_PVR_ALIGN_EN);
5595*53ee8cc1Swenshuai.xi                 break;
5596*53ee8cc1Swenshuai.xi             case 3:
5597*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_PVR_ALIGN_EN);
5598*53ee8cc1Swenshuai.xi                 break;
5599*53ee8cc1Swenshuai.xi             default:
5600*53ee8cc1Swenshuai.xi                 break;
5601*53ee8cc1Swenshuai.xi         }
5602*53ee8cc1Swenshuai.xi     }
5603*53ee8cc1Swenshuai.xi }
5604*53ee8cc1Swenshuai.xi 
HAL_PVR_FlushData(MS_U32 u32PVREng)5605*53ee8cc1Swenshuai.xi void HAL_PVR_FlushData(MS_U32 u32PVREng)
5606*53ee8cc1Swenshuai.xi {
5607*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5608*53ee8cc1Swenshuai.xi     {
5609*53ee8cc1Swenshuai.xi         case 0:
5610*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
5611*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
5612*53ee8cc1Swenshuai.xi             break;
5613*53ee8cc1Swenshuai.xi         case 1:
5614*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
5615*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
5616*53ee8cc1Swenshuai.xi             break;
5617*53ee8cc1Swenshuai.xi         case 2:
5618*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR2_DATA);
5619*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR2_DATA);
5620*53ee8cc1Swenshuai.xi             break;
5621*53ee8cc1Swenshuai.xi         case 3:
5622*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR3_DATA);
5623*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR3_DATA);
5624*53ee8cc1Swenshuai.xi             break;
5625*53ee8cc1Swenshuai.xi         default:
5626*53ee8cc1Swenshuai.xi             break;
5627*53ee8cc1Swenshuai.xi     }
5628*53ee8cc1Swenshuai.xi }
5629*53ee8cc1Swenshuai.xi 
HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)5630*53ee8cc1Swenshuai.xi void HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)
5631*53ee8cc1Swenshuai.xi {
5632*53ee8cc1Swenshuai.xi     if(bSkip)
5633*53ee8cc1Swenshuai.xi     {
5634*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5635*53ee8cc1Swenshuai.xi         {
5636*53ee8cc1Swenshuai.xi             case 0:
5637*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
5638*53ee8cc1Swenshuai.xi                 break;
5639*53ee8cc1Swenshuai.xi             case 1:
5640*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
5641*53ee8cc1Swenshuai.xi                 break;
5642*53ee8cc1Swenshuai.xi             case 2:
5643*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR3_EN);
5644*53ee8cc1Swenshuai.xi                 break;
5645*53ee8cc1Swenshuai.xi             case 3:
5646*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR4_EN);
5647*53ee8cc1Swenshuai.xi                 break;
5648*53ee8cc1Swenshuai.xi             default:
5649*53ee8cc1Swenshuai.xi                 break;
5650*53ee8cc1Swenshuai.xi         }
5651*53ee8cc1Swenshuai.xi     }
5652*53ee8cc1Swenshuai.xi     else
5653*53ee8cc1Swenshuai.xi     {
5654*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5655*53ee8cc1Swenshuai.xi         {
5656*53ee8cc1Swenshuai.xi             case 0:
5657*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
5658*53ee8cc1Swenshuai.xi                 break;
5659*53ee8cc1Swenshuai.xi             case 1:
5660*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
5661*53ee8cc1Swenshuai.xi                 break;
5662*53ee8cc1Swenshuai.xi             case 2:
5663*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR3_EN);
5664*53ee8cc1Swenshuai.xi                 break;
5665*53ee8cc1Swenshuai.xi             case 3:
5666*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR4_EN);
5667*53ee8cc1Swenshuai.xi                 break;
5668*53ee8cc1Swenshuai.xi             default:
5669*53ee8cc1Swenshuai.xi                 break;
5670*53ee8cc1Swenshuai.xi         }
5671*53ee8cc1Swenshuai.xi     }
5672*53ee8cc1Swenshuai.xi }
5673*53ee8cc1Swenshuai.xi 
5674*53ee8cc1Swenshuai.xi 
HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)5675*53ee8cc1Swenshuai.xi void HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)
5676*53ee8cc1Swenshuai.xi {
5677*53ee8cc1Swenshuai.xi     if(bDisable)
5678*53ee8cc1Swenshuai.xi     {
5679*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5680*53ee8cc1Swenshuai.xi         {
5681*53ee8cc1Swenshuai.xi             case 0:
5682*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
5683*53ee8cc1Swenshuai.xi                 break;
5684*53ee8cc1Swenshuai.xi             case 1:
5685*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
5686*53ee8cc1Swenshuai.xi                 break;
5687*53ee8cc1Swenshuai.xi             case 2:
5688*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_BLOCK_DIS);
5689*53ee8cc1Swenshuai.xi                 break;
5690*53ee8cc1Swenshuai.xi             case 3:
5691*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_BLOCK_DIS);
5692*53ee8cc1Swenshuai.xi                 break;
5693*53ee8cc1Swenshuai.xi             default:
5694*53ee8cc1Swenshuai.xi                 break;
5695*53ee8cc1Swenshuai.xi         }
5696*53ee8cc1Swenshuai.xi     }
5697*53ee8cc1Swenshuai.xi     else
5698*53ee8cc1Swenshuai.xi     {
5699*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5700*53ee8cc1Swenshuai.xi         {
5701*53ee8cc1Swenshuai.xi             case 0:
5702*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
5703*53ee8cc1Swenshuai.xi                 break;
5704*53ee8cc1Swenshuai.xi             case 1:
5705*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
5706*53ee8cc1Swenshuai.xi                 break;
5707*53ee8cc1Swenshuai.xi             case 2:
5708*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_BLOCK_DIS);
5709*53ee8cc1Swenshuai.xi                 break;
5710*53ee8cc1Swenshuai.xi             case 3:
5711*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_BLOCK_DIS);
5712*53ee8cc1Swenshuai.xi                 break;
5713*53ee8cc1Swenshuai.xi             default:
5714*53ee8cc1Swenshuai.xi                 break;
5715*53ee8cc1Swenshuai.xi         }
5716*53ee8cc1Swenshuai.xi 
5717*53ee8cc1Swenshuai.xi     }
5718*53ee8cc1Swenshuai.xi }
5719*53ee8cc1Swenshuai.xi 
HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)5720*53ee8cc1Swenshuai.xi void HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)
5721*53ee8cc1Swenshuai.xi {
5722*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5723*53ee8cc1Swenshuai.xi     {
5724*53ee8cc1Swenshuai.xi         case 0:
5725*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->reg15b8, TSP_BURST_LEN_MASK, (u16BurstMode << TSP_BURST_LEN_SHIFT));
5726*53ee8cc1Swenshuai.xi             break;
5727*53ee8cc1Swenshuai.xi         case 1:
5728*53ee8cc1Swenshuai.xi             REG32_MSK_W(&_RegCtrl->PVR2_Config, TSP_PVR2_BURST_LEN_MASK, (u16BurstMode << TSP_PVR2_BURST_LEN_SHIFT));
5729*53ee8cc1Swenshuai.xi             break;
5730*53ee8cc1Swenshuai.xi         case 2:
5731*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_16, CFG_16_PVR3_BURST_LEN_MASK, (u16BurstMode << CFG_16_PVR3_BURST_LEN_SHIFT));
5732*53ee8cc1Swenshuai.xi             break;
5733*53ee8cc1Swenshuai.xi         case 3:
5734*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_23, CFG_23_PVR4_BURST_LEN_MASK, (u16BurstMode << CFG_23_PVR4_BURST_LEN_SHIFT));
5735*53ee8cc1Swenshuai.xi             break;
5736*53ee8cc1Swenshuai.xi         default:
5737*53ee8cc1Swenshuai.xi             break;
5738*53ee8cc1Swenshuai.xi     }
5739*53ee8cc1Swenshuai.xi }
5740*53ee8cc1Swenshuai.xi 
HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng,MS_BOOL bLocal_Stream)5741*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng, MS_BOOL bLocal_Stream)
5742*53ee8cc1Swenshuai.xi {
5743*53ee8cc1Swenshuai.xi     if (u32PVREng>=TSP_PVRENG_NUM)
5744*53ee8cc1Swenshuai.xi     {
5745*53ee8cc1Swenshuai.xi         return;
5746*53ee8cc1Swenshuai.xi     }
5747*53ee8cc1Swenshuai.xi 
5748*53ee8cc1Swenshuai.xi     if (bLocal_Stream) //Stream
5749*53ee8cc1Swenshuai.xi     {
5750*53ee8cc1Swenshuai.xi         REG16_SET((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
5751*53ee8cc1Swenshuai.xi     }
5752*53ee8cc1Swenshuai.xi     else //local
5753*53ee8cc1Swenshuai.xi     {
5754*53ee8cc1Swenshuai.xi         REG16_CLR((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
5755*53ee8cc1Swenshuai.xi     }
5756*53ee8cc1Swenshuai.xi }
5757*53ee8cc1Swenshuai.xi 
HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)5758*53ee8cc1Swenshuai.xi void HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)
5759*53ee8cc1Swenshuai.xi {
5760*53ee8cc1Swenshuai.xi     if(bEnable)
5761*53ee8cc1Swenshuai.xi     {
5762*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5763*53ee8cc1Swenshuai.xi         {
5764*53ee8cc1Swenshuai.xi             case 0:
5765*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
5766*53ee8cc1Swenshuai.xi                 break;
5767*53ee8cc1Swenshuai.xi             case 1:
5768*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
5769*53ee8cc1Swenshuai.xi                 break;
5770*53ee8cc1Swenshuai.xi             case 2:
5771*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL3);
5772*53ee8cc1Swenshuai.xi                 break;
5773*53ee8cc1Swenshuai.xi             case 3:
5774*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL4);
5775*53ee8cc1Swenshuai.xi                 break;
5776*53ee8cc1Swenshuai.xi             default:
5777*53ee8cc1Swenshuai.xi                 break;
5778*53ee8cc1Swenshuai.xi         }
5779*53ee8cc1Swenshuai.xi     }
5780*53ee8cc1Swenshuai.xi     else
5781*53ee8cc1Swenshuai.xi     {
5782*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5783*53ee8cc1Swenshuai.xi         {
5784*53ee8cc1Swenshuai.xi             case 0:
5785*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
5786*53ee8cc1Swenshuai.xi                 break;
5787*53ee8cc1Swenshuai.xi             case 1:
5788*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
5789*53ee8cc1Swenshuai.xi                 break;
5790*53ee8cc1Swenshuai.xi             case 2:
5791*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL3);
5792*53ee8cc1Swenshuai.xi                 break;
5793*53ee8cc1Swenshuai.xi             case 3:
5794*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL4);
5795*53ee8cc1Swenshuai.xi                 break;
5796*53ee8cc1Swenshuai.xi             default:
5797*53ee8cc1Swenshuai.xi                 break;
5798*53ee8cc1Swenshuai.xi         }
5799*53ee8cc1Swenshuai.xi     }
5800*53ee8cc1Swenshuai.xi }
5801*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)5802*53ee8cc1Swenshuai.xi void HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)
5803*53ee8cc1Swenshuai.xi {
5804*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5805*53ee8cc1Swenshuai.xi     {
5806*53ee8cc1Swenshuai.xi         case 0:
5807*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_44_45, u32PauseTime);
5808*53ee8cc1Swenshuai.xi             break;
5809*53ee8cc1Swenshuai.xi         case 1:
5810*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_46_47, u32PauseTime);
5811*53ee8cc1Swenshuai.xi             break;
5812*53ee8cc1Swenshuai.xi         case 2:
5813*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_48_49, u32PauseTime);
5814*53ee8cc1Swenshuai.xi             break;
5815*53ee8cc1Swenshuai.xi         case 3:
5816*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_4A_4B, u32PauseTime);
5817*53ee8cc1Swenshuai.xi             break;
5818*53ee8cc1Swenshuai.xi         default:
5819*53ee8cc1Swenshuai.xi             break;
5820*53ee8cc1Swenshuai.xi     }
5821*53ee8cc1Swenshuai.xi }
5822*53ee8cc1Swenshuai.xi 
HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId,MS_BOOL bEnable)5823*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId, MS_BOOL bEnable)
5824*53ee8cc1Swenshuai.xi {
5825*53ee8cc1Swenshuai.xi     if (bEnable)
5826*53ee8cc1Swenshuai.xi     {
5827*53ee8cc1Swenshuai.xi         REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
5828*53ee8cc1Swenshuai.xi     }
5829*53ee8cc1Swenshuai.xi     else
5830*53ee8cc1Swenshuai.xi     {
5831*53ee8cc1Swenshuai.xi         REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
5832*53ee8cc1Swenshuai.xi     }
5833*53ee8cc1Swenshuai.xi }
5834*53ee8cc1Swenshuai.xi 
HAL_PVR_MOBF_Enable(MS_U32 u32PVREng,MS_BOOL bEnable,MS_U32 u32Key)5835*53ee8cc1Swenshuai.xi void HAL_PVR_MOBF_Enable(MS_U32 u32PVREng, MS_BOOL bEnable, MS_U32 u32Key)
5836*53ee8cc1Swenshuai.xi {
5837*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5838*53ee8cc1Swenshuai.xi     {
5839*53ee8cc1Swenshuai.xi         case 0:
5840*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->MOBF_PVR1_Index[0], (u32Key & TSP_MOBF_PVR1_INDEX_MASK));
5841*53ee8cc1Swenshuai.xi             break;
5842*53ee8cc1Swenshuai.xi         case 1:
5843*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->MOBF_PVR2_Index[0], (u32Key & TSP_MOBF_PVR2_INDEX_MASK));
5844*53ee8cc1Swenshuai.xi             break;
5845*53ee8cc1Swenshuai.xi         case 2:
5846*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_78_7B[0], (u32Key & CFG_78_PVR3_INDEX));
5847*53ee8cc1Swenshuai.xi             break;
5848*53ee8cc1Swenshuai.xi         case 3:
5849*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_78_7B[2], (u32Key & CFG_78_PVR3_INDEX));
5850*53ee8cc1Swenshuai.xi             break;
5851*53ee8cc1Swenshuai.xi         default:
5852*53ee8cc1Swenshuai.xi             break;
5853*53ee8cc1Swenshuai.xi     }
5854*53ee8cc1Swenshuai.xi }
5855*53ee8cc1Swenshuai.xi 
5856*53ee8cc1Swenshuai.xi /*
5857*53ee8cc1Swenshuai.xi void HAL_PVR_SetTSIF(MS_U32 u32PVREng , MS_BOOL bPara, MS_BOOL bExtSync, MS_BOOL bDataSWP)
5858*53ee8cc1Swenshuai.xi {
5859*53ee8cc1Swenshuai.xi     if (bPara)
5860*53ee8cc1Swenshuai.xi     {
5861*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
5862*53ee8cc1Swenshuai.xi     }
5863*53ee8cc1Swenshuai.xi     else
5864*53ee8cc1Swenshuai.xi     {
5865*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
5866*53ee8cc1Swenshuai.xi     }
5867*53ee8cc1Swenshuai.xi 
5868*53ee8cc1Swenshuai.xi     if (bExtSync)
5869*53ee8cc1Swenshuai.xi     {
5870*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
5871*53ee8cc1Swenshuai.xi     }
5872*53ee8cc1Swenshuai.xi     else
5873*53ee8cc1Swenshuai.xi     {
5874*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
5875*53ee8cc1Swenshuai.xi     }
5876*53ee8cc1Swenshuai.xi 
5877*53ee8cc1Swenshuai.xi     if (bDataSWP)
5878*53ee8cc1Swenshuai.xi     {
5879*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
5880*53ee8cc1Swenshuai.xi     }
5881*53ee8cc1Swenshuai.xi     else
5882*53ee8cc1Swenshuai.xi     {
5883*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
5884*53ee8cc1Swenshuai.xi     }
5885*53ee8cc1Swenshuai.xi }
5886*53ee8cc1Swenshuai.xi 
5887*53ee8cc1Swenshuai.xi void HAL_PVR_RecAtSync_Dis(MS_U32 u32PVREng, MS_BOOL bDis)
5888*53ee8cc1Swenshuai.xi {
5889*53ee8cc1Swenshuai.xi     if(bDis)
5890*53ee8cc1Swenshuai.xi     {
5891*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
5892*53ee8cc1Swenshuai.xi     }
5893*53ee8cc1Swenshuai.xi     else
5894*53ee8cc1Swenshuai.xi     {
5895*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
5896*53ee8cc1Swenshuai.xi     }
5897*53ee8cc1Swenshuai.xi }
5898*53ee8cc1Swenshuai.xi 
5899*53ee8cc1Swenshuai.xi void HAL_PVR_SetDataSwap(MS_U32 u32PVREng, MS_BOOL bEn)
5900*53ee8cc1Swenshuai.xi {
5901*53ee8cc1Swenshuai.xi     if(bEn)
5902*53ee8cc1Swenshuai.xi     {
5903*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
5904*53ee8cc1Swenshuai.xi     }
5905*53ee8cc1Swenshuai.xi     else
5906*53ee8cc1Swenshuai.xi     {
5907*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
5908*53ee8cc1Swenshuai.xi     }
5909*53ee8cc1Swenshuai.xi }
5910*53ee8cc1Swenshuai.xi */
5911*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)5912*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)
5913*53ee8cc1Swenshuai.xi {
5914*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
5915*53ee8cc1Swenshuai.xi 
5916*53ee8cc1Swenshuai.xi //reserved
5917*53ee8cc1Swenshuai.xi     switch (u32Type)
5918*53ee8cc1Swenshuai.xi     {
5919*53ee8cc1Swenshuai.xi 
5920*53ee8cc1Swenshuai.xi     case INFO_FW_VERSION:
5921*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
5922*53ee8cc1Swenshuai.xi         break;
5923*53ee8cc1Swenshuai.xi     case INFO_FW_DATE:
5924*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_DATE);
5925*53ee8cc1Swenshuai.xi         break;
5926*53ee8cc1Swenshuai.xi     default:
5927*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
5928*53ee8cc1Swenshuai.xi         break;
5929*53ee8cc1Swenshuai.xi 
5930*53ee8cc1Swenshuai.xi     }
5931*53ee8cc1Swenshuai.xi 
5932*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_INFO);
5933*53ee8cc1Swenshuai.xi 
5934*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
5935*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
5936*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
5937*53ee8cc1Swenshuai.xi 
5938*53ee8cc1Swenshuai.xi     return u32Data;
5939*53ee8cc1Swenshuai.xi }
5940*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_BufRst(MS_U32 u32Value)5941*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value)
5942*53ee8cc1Swenshuai.xi {
5943*53ee8cc1Swenshuai.xi  //   MS_U32              u32Data;
5944*53ee8cc1Swenshuai.xi 
5945*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0 , u32Value);
5946*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd   , TSP_MCU_CMD_BUFRST);
5947*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
5948*53ee8cc1Swenshuai.xi 
5949*53ee8cc1Swenshuai.xi     return TRUE;
5950*53ee8cc1Swenshuai.xi }
5951*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Read(MS_U32 u32Addr)5952*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Read(MS_U32 u32Addr)
5953*53ee8cc1Swenshuai.xi {
5954*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
5955*53ee8cc1Swenshuai.xi 
5956*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
5957*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_READ);
5958*53ee8cc1Swenshuai.xi 
5959*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
5960*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
5961*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
5962*53ee8cc1Swenshuai.xi 
5963*53ee8cc1Swenshuai.xi     return u32Data;
5964*53ee8cc1Swenshuai.xi }
5965*53ee8cc1Swenshuai.xi 
5966*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Write(MS_U32 u32Addr,MS_U32 u32Value)5967*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Write(MS_U32 u32Addr, MS_U32 u32Value)
5968*53ee8cc1Swenshuai.xi {
5969*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
5970*53ee8cc1Swenshuai.xi 
5971*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
5972*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, u32Value);
5973*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_WRITE);
5974*53ee8cc1Swenshuai.xi 
5975*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
5976*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
5977*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
5978*53ee8cc1Swenshuai.xi 
5979*53ee8cc1Swenshuai.xi     return TRUE;
5980*53ee8cc1Swenshuai.xi }
5981*53ee8cc1Swenshuai.xi 
5982*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Alive(void)5983*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Alive(void)
5984*53ee8cc1Swenshuai.xi {
5985*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
5986*53ee8cc1Swenshuai.xi 
5987*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, 0);
5988*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_ALIVE);  //@TODO check FW HCMD
5989*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
5990*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
5991*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
5992*53ee8cc1Swenshuai.xi 
5993*53ee8cc1Swenshuai.xi     return (u32Data == TSP_MCU_DATA_ALIVE)? TRUE : FALSE;
5994*53ee8cc1Swenshuai.xi }
5995*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_SET(MS_U32 mcu_cmd,MS_U32 mcu_data0,MS_U32 mcu_data1)5996*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SET(MS_U32 mcu_cmd, MS_U32 mcu_data0, MS_U32 mcu_data1)
5997*53ee8cc1Swenshuai.xi {
5998*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, mcu_data0);
5999*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, mcu_data1);
6000*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd,   mcu_cmd);
6001*53ee8cc1Swenshuai.xi }
6002*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_GET(MS_U32 * pmcu_cmd,MS_U32 * pmcu_data0,MS_U32 * pmcu_data1)6003*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_GET(MS_U32* pmcu_cmd, MS_U32* pmcu_data0, MS_U32* pmcu_data1)
6004*53ee8cc1Swenshuai.xi {
6005*53ee8cc1Swenshuai.xi     *pmcu_cmd   = REG32_R(&_RegCtrl->MCU_Cmd);
6006*53ee8cc1Swenshuai.xi     *pmcu_data0 = REG32_R(&_RegCtrl->MCU_Data0);
6007*53ee8cc1Swenshuai.xi     *pmcu_data1 = REG32_R(&_RegCtrl->MCU_Data1);
6008*53ee8cc1Swenshuai.xi }
6009*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId,MS_BOOL bDis)6010*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId ,MS_BOOL bDis)
6011*53ee8cc1Swenshuai.xi {
6012*53ee8cc1Swenshuai.xi     MS_U32              u32Data = bDis ;
6013*53ee8cc1Swenshuai.xi 
6014*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, FltId);
6015*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1,u32Data);
6016*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SECRDYINT_DISABLE); // @TODO add HCMD list here
6017*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6018*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6019*53ee8cc1Swenshuai.xi 
6020*53ee8cc1Swenshuai.xi     return ;
6021*53ee8cc1Swenshuai.xi }
6022*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)6023*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)
6024*53ee8cc1Swenshuai.xi {
6025*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6026*53ee8cc1Swenshuai.xi 
6027*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Enable);
6028*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_DBG);
6029*53ee8cc1Swenshuai.xi 
6030*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6031*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6032*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6033*53ee8cc1Swenshuai.xi 
6034*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->MCU_Data1);
6035*53ee8cc1Swenshuai.xi }
6036*53ee8cc1Swenshuai.xi 
HAL_TSP_GetDBGStatus(MS_U16 u16Sel)6037*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_GetDBGStatus(MS_U16 u16Sel)
6038*53ee8cc1Swenshuai.xi {
6039*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->DBG_SEL, 0);
6040*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->DBG_SEL, ((u16Sel << TSP_DBG_SEL_SHIFT) & TSP_DBG_SEL_MASK));
6041*53ee8cc1Swenshuai.xi 
6042*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->TSP_Debug);
6043*53ee8cc1Swenshuai.xi }
6044*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_Enable(MS_U32 u32Mask)6045*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Enable(MS_U32 u32Mask)
6046*53ee8cc1Swenshuai.xi {
6047*53ee8cc1Swenshuai.xi     // Low  byte for bank 0x15 7e bit[0:7]
6048*53ee8cc1Swenshuai.xi     /*
6049*53ee8cc1Swenshuai.xi         7: audio/video packet error
6050*53ee8cc1Swenshuai.xi         6: DMA read done
6051*53ee8cc1Swenshuai.xi         5: HK_INT_FORCE.            // it's trigure bit is at bank 15 44 bit[15]
6052*53ee8cc1Swenshuai.xi         4: TSP_FILE_RP meets TSP_FILE_TAIL.
6053*53ee8cc1Swenshuai.xi         3: TSP_FILE_RP meets TSP_FILE_MID.
6054*53ee8cc1Swenshuai.xi         2: HK_INT_FORCE.            // it's trigure bit is at bank 15 39 bit[15]
6055*53ee8cc1Swenshuai.xi         1: STR2MI_WADR meets STR2MI_MID.
6056*53ee8cc1Swenshuai.xi         0: STR2MI_WADR meets STR2MI_TAIL."
6057*53ee8cc1Swenshuai.xi     */
6058*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt_Stat, TSP_INT_EN_MASK & u32Mask);
6059*53ee8cc1Swenshuai.xi 
6060*53ee8cc1Swenshuai.xi     // High byte for bank 0x16 6c bit[0:7]
6061*53ee8cc1Swenshuai.xi     /*
6062*53ee8cc1Swenshuai.xi         [7] : PVR2 meet_tail  or PVR2_meet_mid
6063*53ee8cc1Swenshuai.xi         [6] : vq0, vq1, vq2, vq3 overflow interrupt
6064*53ee8cc1Swenshuai.xi         [5] : all DMA write address not in the protect zone interrupt
6065*53ee8cc1Swenshuai.xi         [4] : PVR_cb meet the mid or PVR_cb meet the tail
6066*53ee8cc1Swenshuai.xi         [3] : pcr filter 0 update finish
6067*53ee8cc1Swenshuai.xi         [2] : pcr filter 1 update finish
6068*53ee8cc1Swenshuai.xi         [1] : OTV HW interrupt
6069*53ee8cc1Swenshuai.xi         [0] : reserved
6070*53ee8cc1Swenshuai.xi     */
6071*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->SwInt_Stat1_L, (TSP_HWINT2_EN_MASK & (u32Mask >> 8)) | TSP_HWINT2_STATUS_MASK);
6072*53ee8cc1Swenshuai.xi }
6073*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_Disable(MS_U32 u32Mask)6074*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Disable(MS_U32 u32Mask)
6075*53ee8cc1Swenshuai.xi {
6076*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->HwInt_Stat, TSP_INT_EN_MASK & u32Mask);
6077*53ee8cc1Swenshuai.xi 
6078*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->SwInt_Stat1_L, TSP_HWINT2_EN_MASK & (u32Mask >> 8));
6079*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->SwInt_Stat1_L,
6080*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->SwInt_Stat1_L) & ~(TSP_HWINT2_EN_MASK & (u32Mask >> 8))) |
6081*53ee8cc1Swenshuai.xi         TSP_HWINT2_STATUS_MASK);
6082*53ee8cc1Swenshuai.xi }
6083*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_ClrHW(MS_U32 u32Mask)6084*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrHW(MS_U32 u32Mask)
6085*53ee8cc1Swenshuai.xi {
6086*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->HwInt_Stat, (u32Mask & 0x00FF) << 8);
6087*53ee8cc1Swenshuai.xi 
6088*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->SwInt_Stat1_L, u32Mask & 0xFF00);
6089*53ee8cc1Swenshuai.xi      REG16_W(&_RegCtrl->SwInt_Stat1_L,
6090*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->SwInt_Stat1_L) & (~TSP_HWINT2_STATUS_MASK)) |
6091*53ee8cc1Swenshuai.xi         (((~(u32Mask >> 8))<< TSP_HWINT2_STATUS_SHIFT) & TSP_HWINT2_STATUS_MASK) );
6092*53ee8cc1Swenshuai.xi }
6093*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_GetHW(void)6094*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetHW(void)
6095*53ee8cc1Swenshuai.xi {
6096*53ee8cc1Swenshuai.xi     MS_U32              status=0;
6097*53ee8cc1Swenshuai.xi 
6098*53ee8cc1Swenshuai.xi     status |= ((MS_U32)(((REG16_R(&_RegCtrl->SwInt_Stat1_L) & TSP_HWINT2_STATUS_MASK) >> TSP_HWINT2_STATUS_SHIFT) << 8));
6099*53ee8cc1Swenshuai.xi 
6100*53ee8cc1Swenshuai.xi     status |= ((MS_U32)((REG16_R(&_RegCtrl->HwInt_Stat) & TSP_HWINT_STATUS_MASK) >> TSP_HWINT_STATUS_SHIFT));
6101*53ee8cc1Swenshuai.xi 
6102*53ee8cc1Swenshuai.xi     return (status & 0x00FFFFFF);
6103*53ee8cc1Swenshuai.xi }
6104*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_ClrSW(void)6105*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrSW(void)
6106*53ee8cc1Swenshuai.xi {
6107*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->SwInt_Stat, 0);
6108*53ee8cc1Swenshuai.xi }
6109*53ee8cc1Swenshuai.xi 
6110*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_GetSW(void)6111*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetSW(void)
6112*53ee8cc1Swenshuai.xi {
6113*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->SwInt_Stat);
6114*53ee8cc1Swenshuai.xi }
6115*53ee8cc1Swenshuai.xi 
HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx,MS_U32 inputSrc)6116*53ee8cc1Swenshuai.xi void HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx, MS_U32 inputSrc)
6117*53ee8cc1Swenshuai.xi {
6118*53ee8cc1Swenshuai.xi     switch (bufIdx)
6119*53ee8cc1Swenshuai.xi     {
6120*53ee8cc1Swenshuai.xi         case 0:
6121*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF0_SRC, inputSrc<<(bufIdx * 2));
6122*53ee8cc1Swenshuai.xi              break;
6123*53ee8cc1Swenshuai.xi         case 1:
6124*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF1_SRC, inputSrc<<(bufIdx * 2));
6125*53ee8cc1Swenshuai.xi             break;
6126*53ee8cc1Swenshuai.xi         case 2:
6127*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF2_SRC, inputSrc<<(bufIdx * 2));
6128*53ee8cc1Swenshuai.xi             break;
6129*53ee8cc1Swenshuai.xi         case 3:
6130*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF3_SRC, inputSrc<<(bufIdx * 2));
6131*53ee8cc1Swenshuai.xi             break;
6132*53ee8cc1Swenshuai.xi         default:
6133*53ee8cc1Swenshuai.xi             break;
6134*53ee8cc1Swenshuai.xi     }
6135*53ee8cc1Swenshuai.xi }
6136*53ee8cc1Swenshuai.xi 
HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)6137*53ee8cc1Swenshuai.xi void HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)
6138*53ee8cc1Swenshuai.xi {
6139*53ee8cc1Swenshuai.xi     if (bByPassEn)
6140*53ee8cc1Swenshuai.xi     {
6141*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_52, CFG3_52_SPD_TSIF0_BYPASS | CFG3_52_SPD_TSIF1_BYPASS | CFG3_52_SPD_TSIF2_BYPASS | CFG3_52_SPD_TSIF3_BYPASS);
6142*53ee8cc1Swenshuai.xi     }
6143*53ee8cc1Swenshuai.xi     else
6144*53ee8cc1Swenshuai.xi     {
6145*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_52, CFG3_52_SPD_TSIF0_BYPASS | CFG3_52_SPD_TSIF1_BYPASS | CFG3_52_SPD_TSIF2_BYPASS | CFG3_52_SPD_TSIF3_BYPASS);
6146*53ee8cc1Swenshuai.xi     }
6147*53ee8cc1Swenshuai.xi }
6148*53ee8cc1Swenshuai.xi 
6149*53ee8cc1Swenshuai.xi //@TODO
6150*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_FileIn_SPDConfig(MS_U32 tsif,MS_BOOL CTR_mode)6151*53ee8cc1Swenshuai.xi void HAL_TSP_FileIn_SPDConfig(MS_U32 tsif, MS_BOOL CTR_mode)
6152*53ee8cc1Swenshuai.xi {
6153*53ee8cc1Swenshuai.xi     if(CTR_mode == TRUE)
6154*53ee8cc1Swenshuai.xi     {
6155*53ee8cc1Swenshuai.xi         printf("SPD CTR mode = %p\n",&(_RegCtrl7[tsif].CFG7_05));
6156*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_CTR_MODE_SPD_FILEIN); //set CTR mode enable
6157*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[0]), 0x0000);                  //set counter IV
6158*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[1]), 0x0000);
6159*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[2]), 0x0000);
6160*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[3]), 0x0000);
6161*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_04), CFG7_04_CTR_IV_SPD_MAX_1K);     //set counter IV max vld
6162*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_LOAD_INIT_CNT_SPD);   //load counter IV
6163*53ee8cc1Swenshuai.xi     }
6164*53ee8cc1Swenshuai.xi 
6165*53ee8cc1Swenshuai.xi     switch(tsif)
6166*53ee8cc1Swenshuai.xi     {
6167*53ee8cc1Swenshuai.xi         case 0: REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_FI_KEY_MASK, HW4_CFG43_SRC_AES_FI0_KEY << HW4_CFG43_SRC_AES_FI_KEY_SHIFT);
6168*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6169*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6170*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6171*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6172*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6173*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6174*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6175*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6176*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY0);
6177*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF0_BYPASS);//bypass SPD
6178*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET); //TSIF SPD reset
6179*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET);
6180*53ee8cc1Swenshuai.xi                 break;
6181*53ee8cc1Swenshuai.xi         case 1: REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_FI_KEY_MASK, HW4_CFG43_SRC_AES_FI1_KEY << HW4_CFG43_SRC_AES_FI_KEY_SHIFT);
6182*53ee8cc1Swenshuai.xi                 /*
6183*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x2222);             //file-in SPD key
6184*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x2222);
6185*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x2222);
6186*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x2222);
6187*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x3333);
6188*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x3333);
6189*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x3333);
6190*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x3333);
6191*53ee8cc1Swenshuai.xi                 */
6192*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6193*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6194*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6195*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6196*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6197*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6198*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6199*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6200*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY1);
6201*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF1_BYPASS);//bypass SPD
6202*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET); //TSIF SPD reset
6203*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET);
6204*53ee8cc1Swenshuai.xi                 break;
6205*53ee8cc1Swenshuai.xi         case 2: REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_FI_KEY_MASK, HW4_CFG43_SRC_AES_FI2_KEY << HW4_CFG43_SRC_AES_FI_KEY_SHIFT);
6206*53ee8cc1Swenshuai.xi                 /*
6207*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x4444);             //file-in SPD key
6208*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x4444);
6209*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x4444);
6210*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x4444);
6211*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x5555);
6212*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x5555);
6213*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x5555);
6214*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x5555);
6215*53ee8cc1Swenshuai.xi                 */
6216*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6217*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6218*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6219*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6220*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6221*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6222*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6223*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6224*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY2);
6225*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF2_BYPASS);//bypass SPD
6226*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET); //TSIF SPD reset
6227*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET);
6228*53ee8cc1Swenshuai.xi                 break;
6229*53ee8cc1Swenshuai.xi         case 3: REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_FI_KEY_MASK, HW4_CFG43_SRC_AES_FI3_KEY << HW4_CFG43_SRC_AES_FI_KEY_SHIFT);
6230*53ee8cc1Swenshuai.xi                 /*
6231*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x6666);             //file-in SPD key
6232*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x6666);
6233*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x6666);
6234*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x6666);
6235*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x7777);
6236*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x7777);
6237*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x7777);
6238*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x7777);
6239*53ee8cc1Swenshuai.xi                 */
6240*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6241*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6242*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6243*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6244*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6245*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6246*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6247*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6248*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY3);
6249*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF3_BYPASS);//bypass SPD
6250*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF3_SPD_RESET); //TSIF SPD reset
6251*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF3_SPD_RESET);
6252*53ee8cc1Swenshuai.xi                 break;
6253*53ee8cc1Swenshuai.xi         default:printf("Not Support !!\n");
6254*53ee8cc1Swenshuai.xi                 break;
6255*53ee8cc1Swenshuai.xi     }
6256*53ee8cc1Swenshuai.xi }
6257*53ee8cc1Swenshuai.xi #endif
6258*53ee8cc1Swenshuai.xi 
6259*53ee8cc1Swenshuai.xi // for TSO
HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId,MS_U32 u32TSOEng,MS_BOOL bEn)6260*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId, MS_U32 u32TSOEng, MS_BOOL bEn)
6261*53ee8cc1Swenshuai.xi {
6262*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
6263*53ee8cc1Swenshuai.xi     if(bEn)
6264*53ee8cc1Swenshuai.xi     {
6265*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_TSOFLT_MASK) | (((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK));
6266*53ee8cc1Swenshuai.xi     }
6267*53ee8cc1Swenshuai.xi     else
6268*53ee8cc1Swenshuai.xi     {
6269*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~(((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK)));
6270*53ee8cc1Swenshuai.xi     }
6271*53ee8cc1Swenshuai.xi }
6272*53ee8cc1Swenshuai.xi 
HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap,MS_U32 * pu32CapInfo)6273*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap, MS_U32 *pu32CapInfo)
6274*53ee8cc1Swenshuai.xi {
6275*53ee8cc1Swenshuai.xi     switch (eCap)
6276*53ee8cc1Swenshuai.xi     {
6277*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PIDFLT_NUM :
6278*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PIDFLT_NUM;
6279*53ee8cc1Swenshuai.xi             break;
6280*53ee8cc1Swenshuai.xi 
6281*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECFLT_NUM :
6282*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECFLT_NUM;
6283*53ee8cc1Swenshuai.xi             break;
6284*53ee8cc1Swenshuai.xi 
6285*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECBUF_NUM :
6286*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_NUM;
6287*53ee8cc1Swenshuai.xi             break;
6288*53ee8cc1Swenshuai.xi 
6289*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECENG_NUM :
6290*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECENG_NUM;
6291*53ee8cc1Swenshuai.xi             break;
6292*53ee8cc1Swenshuai.xi 
6293*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECFLT_NUM :
6294*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_NUM;
6295*53ee8cc1Swenshuai.xi             break;
6296*53ee8cc1Swenshuai.xi 
6297*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_TSIF_NUM :
6298*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSIF_NUM;
6299*53ee8cc1Swenshuai.xi             break;
6300*53ee8cc1Swenshuai.xi 
6301*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_DEMOD_NUM :
6302*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_DEMOD_NUM;
6303*53ee8cc1Swenshuai.xi             break;
6304*53ee8cc1Swenshuai.xi 
6305*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_TSPAD_NUM :
6306*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSPAD_NUM;
6307*53ee8cc1Swenshuai.xi             break;
6308*53ee8cc1Swenshuai.xi 
6309*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_NUM :
6310*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_NUM;
6311*53ee8cc1Swenshuai.xi             break;
6312*53ee8cc1Swenshuai.xi 
6313*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_CAFLT_NUM :
6314*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAFLT_NUM;
6315*53ee8cc1Swenshuai.xi             break;
6316*53ee8cc1Swenshuai.xi 
6317*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_CAKEY_NUM :
6318*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAKEY_NUM;
6319*53ee8cc1Swenshuai.xi             break;
6320*53ee8cc1Swenshuai.xi 
6321*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECBUF_ALIGN :
6322*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_ALIGN;
6323*53ee8cc1Swenshuai.xi             break;
6324*53ee8cc1Swenshuai.xi 
6325*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PVR_ALIGN:
6326*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PVR_ALIGN;
6327*53ee8cc1Swenshuai.xi             break;
6328*53ee8cc1Swenshuai.xi 
6329*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_FW_ALIGN :
6330*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_ALIGN;
6331*53ee8cc1Swenshuai.xi             break;
6332*53ee8cc1Swenshuai.xi 
6333*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_ALIGN :
6334*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_ALIGN;
6335*53ee8cc1Swenshuai.xi             break;
6336*53ee8cc1Swenshuai.xi 
6337*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_PITCH :
6338*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_PITCH;
6339*53ee8cc1Swenshuai.xi             break;
6340*53ee8cc1Swenshuai.xi 
6341*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_MMFI_AUDIO_FILTER_NUM:
6342*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_AUDIO_FILTER_NUM;
6343*53ee8cc1Swenshuai.xi             break;
6344*53ee8cc1Swenshuai.xi 
6345*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_MMFI_V3D_FILTER_NUM:
6346*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_V3D_FILTER_NUM;
6347*53ee8cc1Swenshuai.xi             break;
6348*53ee8cc1Swenshuai.xi 
6349*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_HW_TYPE:
6350*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HW_TYPE;
6351*53ee8cc1Swenshuai.xi             break;
6352*53ee8cc1Swenshuai.xi 
6353*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECFLT_IDX :
6354*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_IDX;
6355*53ee8cc1Swenshuai.xi             break;
6356*53ee8cc1Swenshuai.xi 
6357*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PCRFLT_START_IDX :
6358*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PCRFLT_START_IDX;
6359*53ee8cc1Swenshuai.xi             break;
6360*53ee8cc1Swenshuai.xi 
6361*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VFIFO_NUM:
6362*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VFIFO_NUM;
6363*53ee8cc1Swenshuai.xi             break;
6364*53ee8cc1Swenshuai.xi 
6365*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_AFIFO_NUM:
6366*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_AFIFO_NUM;
6367*53ee8cc1Swenshuai.xi             break;
6368*53ee8cc1Swenshuai.xi 
6369*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_HWPCR_SUPPORT:
6370*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HWPCR_SUPPORT;
6371*53ee8cc1Swenshuai.xi             break;
6372*53ee8cc1Swenshuai.xi 
6373*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FIQ_NUM:
6374*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FIQ_NUM;
6375*53ee8cc1Swenshuai.xi             break;
6376*53ee8cc1Swenshuai.xi 
6377*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FW_BUF_SIZE:
6378*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_BUF_SIZE;
6379*53ee8cc1Swenshuai.xi             break;
6380*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FW_BUF_RANGE:
6381*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_FW_BUF_LOW_BUD;
6382*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_FW_BUF_UP_BUD;
6383*53ee8cc1Swenshuai.xi             break;
6384*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_VQ_BUF_RANGE:
6385*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_VQ_BUF_LOW_BUD;
6386*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_VQ_BUF_UP_BUD;
6387*53ee8cc1Swenshuai.xi             break;
6388*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_SEC_BUF_RANGE:
6389*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_SEC_BUF_LOW_BUD;
6390*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_SEC_BUF_UP_BUD;
6391*53ee8cc1Swenshuai.xi             break;
6392*53ee8cc1Swenshuai.xi         default:
6393*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_NULL;
6394*53ee8cc1Swenshuai.xi             return FALSE;
6395*53ee8cc1Swenshuai.xi     }
6396*53ee8cc1Swenshuai.xi 
6397*53ee8cc1Swenshuai.xi     return TRUE;
6398*53ee8cc1Swenshuai.xi }
6399*53ee8cc1Swenshuai.xi 
HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)6400*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)
6401*53ee8cc1Swenshuai.xi {
6402*53ee8cc1Swenshuai.xi     if(bEnable)
6403*53ee8cc1Swenshuai.xi     {
6404*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
6405*53ee8cc1Swenshuai.xi     }
6406*53ee8cc1Swenshuai.xi     else
6407*53ee8cc1Swenshuai.xi     {
6408*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
6409*53ee8cc1Swenshuai.xi     }
6410*53ee8cc1Swenshuai.xi }
6411*53ee8cc1Swenshuai.xi 
HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType,MS_BOOL bEnable)6412*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType, MS_BOOL bEnable)
6413*53ee8cc1Swenshuai.xi {
6414*53ee8cc1Swenshuai.xi     if(bEnable)
6415*53ee8cc1Swenshuai.xi     {
6416*53ee8cc1Swenshuai.xi         switch (eHalPktType)
6417*53ee8cc1Swenshuai.xi        {
6418*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
6419*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
6420*53ee8cc1Swenshuai.xi               break;
6421*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
6422*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
6423*53ee8cc1Swenshuai.xi               break;
6424*53ee8cc1Swenshuai.xi           default:
6425*53ee8cc1Swenshuai.xi               break;
6426*53ee8cc1Swenshuai.xi         }
6427*53ee8cc1Swenshuai.xi     }
6428*53ee8cc1Swenshuai.xi     else
6429*53ee8cc1Swenshuai.xi     {
6430*53ee8cc1Swenshuai.xi        switch (eHalPktType)
6431*53ee8cc1Swenshuai.xi        {
6432*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
6433*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
6434*53ee8cc1Swenshuai.xi               break;
6435*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
6436*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
6437*53ee8cc1Swenshuai.xi               break;
6438*53ee8cc1Swenshuai.xi           default:
6439*53ee8cc1Swenshuai.xi               break;
6440*53ee8cc1Swenshuai.xi         }
6441*53ee8cc1Swenshuai.xi     }
6442*53ee8cc1Swenshuai.xi }
6443*53ee8cc1Swenshuai.xi 
HAL_TSP_TEI_SKIP(MS_U32 tsIf,MS_BOOL bEnable)6444*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_SKIP(MS_U32 tsIf, MS_BOOL bEnable)
6445*53ee8cc1Swenshuai.xi {
6446*53ee8cc1Swenshuai.xi     if(bEnable)
6447*53ee8cc1Swenshuai.xi     {
6448*53ee8cc1Swenshuai.xi         switch (tsIf)
6449*53ee8cc1Swenshuai.xi        {
6450*53ee8cc1Swenshuai.xi           case 0:
6451*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
6452*53ee8cc1Swenshuai.xi               break;
6453*53ee8cc1Swenshuai.xi           case 1:
6454*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
6455*53ee8cc1Swenshuai.xi               break;
6456*53ee8cc1Swenshuai.xi           case 2:
6457*53ee8cc1Swenshuai.xi               REG32_SET(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
6458*53ee8cc1Swenshuai.xi               break;
6459*53ee8cc1Swenshuai.xi           case 3:
6460*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID3);
6461*53ee8cc1Swenshuai.xi               break;
6462*53ee8cc1Swenshuai.xi           default:
6463*53ee8cc1Swenshuai.xi               break;
6464*53ee8cc1Swenshuai.xi         }
6465*53ee8cc1Swenshuai.xi     }
6466*53ee8cc1Swenshuai.xi     else
6467*53ee8cc1Swenshuai.xi     {
6468*53ee8cc1Swenshuai.xi        switch (tsIf)
6469*53ee8cc1Swenshuai.xi        {
6470*53ee8cc1Swenshuai.xi           case 0:
6471*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
6472*53ee8cc1Swenshuai.xi               break;
6473*53ee8cc1Swenshuai.xi           case 1:
6474*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
6475*53ee8cc1Swenshuai.xi               break;
6476*53ee8cc1Swenshuai.xi           case 2:
6477*53ee8cc1Swenshuai.xi               REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
6478*53ee8cc1Swenshuai.xi               break;
6479*53ee8cc1Swenshuai.xi           case 3:
6480*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID3);
6481*53ee8cc1Swenshuai.xi               break;
6482*53ee8cc1Swenshuai.xi           default:
6483*53ee8cc1Swenshuai.xi               break;
6484*53ee8cc1Swenshuai.xi         }
6485*53ee8cc1Swenshuai.xi     }
6486*53ee8cc1Swenshuai.xi 
6487*53ee8cc1Swenshuai.xi }
6488*53ee8cc1Swenshuai.xi 
HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)6489*53ee8cc1Swenshuai.xi void HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)
6490*53ee8cc1Swenshuai.xi {
6491*53ee8cc1Swenshuai.xi     switch (eFltType)
6492*53ee8cc1Swenshuai.xi     {
6493*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
6494*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
6495*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
6496*53ee8cc1Swenshuai.xi             break;
6497*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
6498*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
6499*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
6500*53ee8cc1Swenshuai.xi             break;
6501*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
6502*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
6503*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
6504*53ee8cc1Swenshuai.xi             break;
6505*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
6506*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
6507*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
6508*53ee8cc1Swenshuai.xi             break;
6509*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
6510*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
6511*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
6512*53ee8cc1Swenshuai.xi             break;
6513*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
6514*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
6515*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
6516*53ee8cc1Swenshuai.xi             break;
6517*53ee8cc1Swenshuai.xi         default :
6518*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] Clear AVPktNum Error\n",__FILE__,__FUNCTION__,__LINE__);
6519*53ee8cc1Swenshuai.xi             break;
6520*53ee8cc1Swenshuai.xi     }
6521*53ee8cc1Swenshuai.xi }
6522*53ee8cc1Swenshuai.xi 
_HAL_TSP_MIU_OFFSET(MS_PHY Phyaddr)6523*53ee8cc1Swenshuai.xi static MS_PHY _HAL_TSP_MIU_OFFSET(MS_PHY Phyaddr)
6524*53ee8cc1Swenshuai.xi {
6525*53ee8cc1Swenshuai.xi     #ifdef HAL_MIU2_BASE
6526*53ee8cc1Swenshuai.xi     if(Phyaddr >= (MS_PHY)HAL_MIU2_BASE)
6527*53ee8cc1Swenshuai.xi         return (MS_PHY)HAL_MIU2_BASE;
6528*53ee8cc1Swenshuai.xi     else
6529*53ee8cc1Swenshuai.xi     #endif  //HAL_MIU2_BUS_BASE
6530*53ee8cc1Swenshuai.xi     #ifdef HAL_MIU1_BASE
6531*53ee8cc1Swenshuai.xi     if(Phyaddr >= (MS_PHY)HAL_MIU1_BASE)
6532*53ee8cc1Swenshuai.xi         return (MS_PHY)HAL_MIU1_BASE;
6533*53ee8cc1Swenshuai.xi     else
6534*53ee8cc1Swenshuai.xi     #endif //HAL_MIU1_BUS_BASE
6535*53ee8cc1Swenshuai.xi         return (MS_PHY)HAL_MIU0_BASE;
6536*53ee8cc1Swenshuai.xi }
6537*53ee8cc1Swenshuai.xi 
HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)6538*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)
6539*53ee8cc1Swenshuai.xi {
6540*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
6541*53ee8cc1Swenshuai.xi     {
6542*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
6543*53ee8cc1Swenshuai.xi     }
6544*53ee8cc1Swenshuai.xi     else
6545*53ee8cc1Swenshuai.xi     {
6546*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
6547*53ee8cc1Swenshuai.xi     }
6548*53ee8cc1Swenshuai.xi }
6549*53ee8cc1Swenshuai.xi 
HAL_TSP_OR_Address_Protect(MS_PHY u32AddrH,MS_PHY u32AddrL)6550*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect(MS_PHY u32AddrH, MS_PHY u32AddrL)
6551*53ee8cc1Swenshuai.xi {
6552*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
6553*53ee8cc1Swenshuai.xi 
6554*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->ORZ_DMAW_LBND,(MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_ORZ_DMAW_LBND_MASK));
6555*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->ORZ_DMAW_UBND,(MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_ORZ_DMAW_UBND_MASK));
6556*53ee8cc1Swenshuai.xi }
6557*53ee8cc1Swenshuai.xi 
HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)6558*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)
6559*53ee8cc1Swenshuai.xi {
6560*53ee8cc1Swenshuai.xi 
6561*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
6562*53ee8cc1Swenshuai.xi     {
6563*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
6564*53ee8cc1Swenshuai.xi     }
6565*53ee8cc1Swenshuai.xi     else
6566*53ee8cc1Swenshuai.xi     {
6567*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
6568*53ee8cc1Swenshuai.xi     }
6569*53ee8cc1Swenshuai.xi }
6570*53ee8cc1Swenshuai.xi 
HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID,MS_PHY u32AddrH,MS_PHY u32AddrL)6571*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID, MS_PHY u32AddrH, MS_PHY u32AddrL)
6572*53ee8cc1Swenshuai.xi {
6573*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
6574*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_DMAW_BND_MASK);
6575*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_DMAW_BND_MASK);
6576*53ee8cc1Swenshuai.xi 
6577*53ee8cc1Swenshuai.xi     switch(u8SecID)
6578*53ee8cc1Swenshuai.xi     {
6579*53ee8cc1Swenshuai.xi         case 0:
6580*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND0,u32LBnd);
6581*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND0,u32UBnd);
6582*53ee8cc1Swenshuai.xi             break;
6583*53ee8cc1Swenshuai.xi         case 1:
6584*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND1,u32LBnd);
6585*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND1,u32UBnd);
6586*53ee8cc1Swenshuai.xi             break;
6587*53ee8cc1Swenshuai.xi         default:
6588*53ee8cc1Swenshuai.xi             break;
6589*53ee8cc1Swenshuai.xi     }
6590*53ee8cc1Swenshuai.xi }
6591*53ee8cc1Swenshuai.xi 
HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)6592*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)
6593*53ee8cc1Swenshuai.xi {
6594*53ee8cc1Swenshuai.xi     if(bEnable)
6595*53ee8cc1Swenshuai.xi     {
6596*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6597*53ee8cc1Swenshuai.xi         {
6598*53ee8cc1Swenshuai.xi             case 0:
6599*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
6600*53ee8cc1Swenshuai.xi                 break;
6601*53ee8cc1Swenshuai.xi             case 1:
6602*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
6603*53ee8cc1Swenshuai.xi                 break;
6604*53ee8cc1Swenshuai.xi             case 2:
6605*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR3_DMAW_PROTECT_EN);
6606*53ee8cc1Swenshuai.xi                 break;
6607*53ee8cc1Swenshuai.xi             case 3:
6608*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR4_DMAW_PROTECT_EN);
6609*53ee8cc1Swenshuai.xi                 break;
6610*53ee8cc1Swenshuai.xi             default:
6611*53ee8cc1Swenshuai.xi                 break;
6612*53ee8cc1Swenshuai.xi         }
6613*53ee8cc1Swenshuai.xi     }
6614*53ee8cc1Swenshuai.xi     else
6615*53ee8cc1Swenshuai.xi     {
6616*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6617*53ee8cc1Swenshuai.xi         {
6618*53ee8cc1Swenshuai.xi             case 0:
6619*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
6620*53ee8cc1Swenshuai.xi                 break;
6621*53ee8cc1Swenshuai.xi             case 1:
6622*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
6623*53ee8cc1Swenshuai.xi                 break;
6624*53ee8cc1Swenshuai.xi             case 2:
6625*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR3_DMAW_PROTECT_EN);
6626*53ee8cc1Swenshuai.xi                 break;
6627*53ee8cc1Swenshuai.xi             case 3:
6628*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR4_DMAW_PROTECT_EN);
6629*53ee8cc1Swenshuai.xi                 break;
6630*53ee8cc1Swenshuai.xi             default:
6631*53ee8cc1Swenshuai.xi                 break;
6632*53ee8cc1Swenshuai.xi         }
6633*53ee8cc1Swenshuai.xi     }
6634*53ee8cc1Swenshuai.xi }
6635*53ee8cc1Swenshuai.xi 
HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32AddrH,MS_PHY u32AddrL)6636*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32AddrH, MS_PHY u32AddrL)
6637*53ee8cc1Swenshuai.xi {
6638*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
6639*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_PVR_MASK);
6640*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_PVR_MASK);
6641*53ee8cc1Swenshuai.xi 
6642*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6643*53ee8cc1Swenshuai.xi     {
6644*53ee8cc1Swenshuai.xi         case 0:
6645*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND2, u32LBnd);
6646*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND2, u32UBnd);
6647*53ee8cc1Swenshuai.xi             break;
6648*53ee8cc1Swenshuai.xi         case 1:
6649*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND3, u32LBnd);
6650*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND3, u32UBnd);
6651*53ee8cc1Swenshuai.xi             break;
6652*53ee8cc1Swenshuai.xi         case 2:
6653*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND4, u32LBnd);
6654*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND4, u32UBnd);
6655*53ee8cc1Swenshuai.xi             break;
6656*53ee8cc1Swenshuai.xi         case 3:
6657*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_12_13, u32LBnd);
6658*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_14_15, u32UBnd);
6659*53ee8cc1Swenshuai.xi             break;
6660*53ee8cc1Swenshuai.xi         default:
6661*53ee8cc1Swenshuai.xi             break;
6662*53ee8cc1Swenshuai.xi     }
6663*53ee8cc1Swenshuai.xi }
6664*53ee8cc1Swenshuai.xi 
HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)6665*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)
6666*53ee8cc1Swenshuai.xi {
6667*53ee8cc1Swenshuai.xi     if(bEnable)
6668*53ee8cc1Swenshuai.xi     {
6669*53ee8cc1Swenshuai.xi         switch(eFileEng)
6670*53ee8cc1Swenshuai.xi         {
6671*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
6672*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
6673*53ee8cc1Swenshuai.xi                 break;
6674*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
6675*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
6676*53ee8cc1Swenshuai.xi                 break;
6677*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
6678*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
6679*53ee8cc1Swenshuai.xi                 break;
6680*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
6681*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN3_DMAR_PROTECT_EN);
6682*53ee8cc1Swenshuai.xi                 break;
6683*53ee8cc1Swenshuai.xi             default:
6684*53ee8cc1Swenshuai.xi                 break;
6685*53ee8cc1Swenshuai.xi         }
6686*53ee8cc1Swenshuai.xi     }
6687*53ee8cc1Swenshuai.xi     else
6688*53ee8cc1Swenshuai.xi     {
6689*53ee8cc1Swenshuai.xi         switch(eFileEng)
6690*53ee8cc1Swenshuai.xi         {
6691*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
6692*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
6693*53ee8cc1Swenshuai.xi                 break;
6694*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
6695*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
6696*53ee8cc1Swenshuai.xi                 break;
6697*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
6698*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
6699*53ee8cc1Swenshuai.xi                 break;
6700*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
6701*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN3_DMAR_PROTECT_EN);
6702*53ee8cc1Swenshuai.xi                 break;
6703*53ee8cc1Swenshuai.xi             default:
6704*53ee8cc1Swenshuai.xi                 break;
6705*53ee8cc1Swenshuai.xi         }
6706*53ee8cc1Swenshuai.xi     }
6707*53ee8cc1Swenshuai.xi }
6708*53ee8cc1Swenshuai.xi 
HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32AddrH,MS_PHY u32AddrL)6709*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32AddrH, MS_PHY u32AddrL)
6710*53ee8cc1Swenshuai.xi {
6711*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
6712*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
6713*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
6714*53ee8cc1Swenshuai.xi 
6715*53ee8cc1Swenshuai.xi     switch(eFileEng)
6716*53ee8cc1Swenshuai.xi     {
6717*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
6718*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_30_31, u32LBnd);
6719*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_32_33, u32UBnd);
6720*53ee8cc1Swenshuai.xi             break;
6721*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
6722*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_34_35, u32LBnd);
6723*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_36_37, u32UBnd);
6724*53ee8cc1Swenshuai.xi             break;
6725*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
6726*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_38_39, u32LBnd);
6727*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_3A_3B, u32UBnd);
6728*53ee8cc1Swenshuai.xi             break;
6729*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
6730*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_3C_3D, u32LBnd);
6731*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_3E_3F, u32UBnd);
6732*53ee8cc1Swenshuai.xi             break;
6733*53ee8cc1Swenshuai.xi         default:
6734*53ee8cc1Swenshuai.xi             break;
6735*53ee8cc1Swenshuai.xi     }
6736*53ee8cc1Swenshuai.xi }
6737*53ee8cc1Swenshuai.xi 
HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)6738*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)
6739*53ee8cc1Swenshuai.xi {
6740*53ee8cc1Swenshuai.xi     if(bEnable)
6741*53ee8cc1Swenshuai.xi     {
6742*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
6743*53ee8cc1Swenshuai.xi         {
6744*53ee8cc1Swenshuai.xi             case 0:
6745*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
6746*53ee8cc1Swenshuai.xi                 break;
6747*53ee8cc1Swenshuai.xi             case 1:
6748*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
6749*53ee8cc1Swenshuai.xi                 break;
6750*53ee8cc1Swenshuai.xi             default:
6751*53ee8cc1Swenshuai.xi                 break;
6752*53ee8cc1Swenshuai.xi         }
6753*53ee8cc1Swenshuai.xi     }
6754*53ee8cc1Swenshuai.xi     else
6755*53ee8cc1Swenshuai.xi     {
6756*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
6757*53ee8cc1Swenshuai.xi         {
6758*53ee8cc1Swenshuai.xi             case 0:
6759*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
6760*53ee8cc1Swenshuai.xi                 break;
6761*53ee8cc1Swenshuai.xi             case 1:
6762*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
6763*53ee8cc1Swenshuai.xi                 break;
6764*53ee8cc1Swenshuai.xi             default:
6765*53ee8cc1Swenshuai.xi                 break;
6766*53ee8cc1Swenshuai.xi         }
6767*53ee8cc1Swenshuai.xi     }
6768*53ee8cc1Swenshuai.xi }
6769*53ee8cc1Swenshuai.xi 
HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32AddrH,MS_PHY u32AddrL)6770*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32AddrH, MS_PHY u32AddrL)
6771*53ee8cc1Swenshuai.xi {
6772*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
6773*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
6774*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
6775*53ee8cc1Swenshuai.xi 
6776*53ee8cc1Swenshuai.xi     switch(u32MMFIEng)
6777*53ee8cc1Swenshuai.xi     {
6778*53ee8cc1Swenshuai.xi         case 0:
6779*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_48_49, u32LBnd);
6780*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_4A_4B, u32UBnd);
6781*53ee8cc1Swenshuai.xi             break;
6782*53ee8cc1Swenshuai.xi         case 1:
6783*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_4C_4D, u32LBnd);
6784*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_4E_4F, u32UBnd);
6785*53ee8cc1Swenshuai.xi             break;
6786*53ee8cc1Swenshuai.xi         default:
6787*53ee8cc1Swenshuai.xi             break;
6788*53ee8cc1Swenshuai.xi     }
6789*53ee8cc1Swenshuai.xi }
6790*53ee8cc1Swenshuai.xi 
6791*53ee8cc1Swenshuai.xi 
HAL_TSP_SaveFltState(void)6792*53ee8cc1Swenshuai.xi void HAL_TSP_SaveFltState(void)
6793*53ee8cc1Swenshuai.xi {
6794*53ee8cc1Swenshuai.xi     MS_U32              u32Size;
6795*53ee8cc1Swenshuai.xi     TSP32 *             pRegEnd;
6796*53ee8cc1Swenshuai.xi     TSP32 *             pReg;
6797*53ee8cc1Swenshuai.xi     int                 i, j;
6798*53ee8cc1Swenshuai.xi 
6799*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_PIDFLT_NUM; i++)
6800*53ee8cc1Swenshuai.xi     {
6801*53ee8cc1Swenshuai.xi          _u32PidFltReg[i] = TSP32_IdrR(&(_REGPid0->Flt[i]));
6802*53ee8cc1Swenshuai.xi          _u32PidDstReg[i] = TSP32_IdrR(&(_REGPid1->Flt[i]));
6803*53ee8cc1Swenshuai.xi     }
6804*53ee8cc1Swenshuai.xi 
6805*53ee8cc1Swenshuai.xi     u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
6806*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_SECFLT_NUM; i++)
6807*53ee8cc1Swenshuai.xi     {
6808*53ee8cc1Swenshuai.xi          pReg = (TSP32*)&(_REGSec->Flt[i]);
6809*53ee8cc1Swenshuai.xi          pRegEnd = pReg + u32Size;
6810*53ee8cc1Swenshuai.xi          j = 0;
6811*53ee8cc1Swenshuai.xi          for ( ; pReg < pRegEnd; pReg++)
6812*53ee8cc1Swenshuai.xi          {
6813*53ee8cc1Swenshuai.xi              _u32SecReg[i*u32Size+j] = TSP32_IdrR(pReg);
6814*53ee8cc1Swenshuai.xi              j++;
6815*53ee8cc1Swenshuai.xi          }
6816*53ee8cc1Swenshuai.xi     }
6817*53ee8cc1Swenshuai.xi }
6818*53ee8cc1Swenshuai.xi 
HAL_TSP_CMD_Run(MS_U32 u32Cmd,MS_U32 u32Config0,MS_U32 u32Config1,MS_U32 * pData)6819*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1, MS_U32* pData)
6820*53ee8cc1Swenshuai.xi {
6821*53ee8cc1Swenshuai.xi     MS_U32 u32Data = 0;
6822*53ee8cc1Swenshuai.xi     MS_BOOL brtn = FALSE;
6823*53ee8cc1Swenshuai.xi 
6824*53ee8cc1Swenshuai.xi     //printf("\033[31m [%s] Mode = %lX , Config0 =%lX , Config1 = %lX \033[m\n",__FUNCTION__,u32Cmd,u32Config0,u32Config1);  // Eason test
6825*53ee8cc1Swenshuai.xi 
6826*53ee8cc1Swenshuai.xi     switch (u32Cmd)
6827*53ee8cc1Swenshuai.xi     {
6828*53ee8cc1Swenshuai.xi         case HAL_DMX_CMD_RUN_DISABLE_SEC_CC_CHECK:
6829*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Data1, u32Config0);
6830*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SEC_CC_CHECK_DISABLE);
6831*53ee8cc1Swenshuai.xi             _delay(10); // supposed TSP is able to respond in 10us
6832*53ee8cc1Swenshuai.xi             u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6833*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6834*53ee8cc1Swenshuai.xi             brtn = (u32Data == TSP_MCU_CMD_SEC_CC_CHECK_DISABLE)? TRUE : FALSE;
6835*53ee8cc1Swenshuai.xi             break;
6836*53ee8cc1Swenshuai.xi         default:
6837*53ee8cc1Swenshuai.xi             break;
6838*53ee8cc1Swenshuai.xi     }
6839*53ee8cc1Swenshuai.xi     return brtn;
6840*53ee8cc1Swenshuai.xi }
6841*53ee8cc1Swenshuai.xi 
HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng,MS_BOOL bEnable)6842*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_BOOL bEnable)
6843*53ee8cc1Swenshuai.xi {
6844*53ee8cc1Swenshuai.xi     printf("[%s] not support!!\n",__FUNCTION__);
6845*53ee8cc1Swenshuai.xi     return FALSE;
6846*53ee8cc1Swenshuai.xi }
6847*53ee8cc1Swenshuai.xi 
HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng,MS_U16 u16CaPvrMode,MS_BOOL bEnable)6848*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng, MS_U16 u16CaPvrMode, MS_BOOL bEnable)
6849*53ee8cc1Swenshuai.xi {
6850*53ee8cc1Swenshuai.xi     MS_U16 u16value = REG16_R(&_RegCtrl3->CFG3_38);
6851*53ee8cc1Swenshuai.xi 
6852*53ee8cc1Swenshuai.xi     switch(u32Eng)
6853*53ee8cc1Swenshuai.xi     {
6854*53ee8cc1Swenshuai.xi         case 0:
6855*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR1_SEL_MASK|HW4_CFG38_PKT192_SPS_EN1);
6856*53ee8cc1Swenshuai.xi             break;
6857*53ee8cc1Swenshuai.xi         case 1:
6858*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR2_SEL_MASK|HW4_CFG38_PKT192_SPS_EN2);
6859*53ee8cc1Swenshuai.xi             break;
6860*53ee8cc1Swenshuai.xi         case 2:
6861*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR3_SEL_MASK|HW4_CFG38_PKT192_SPS_EN3);
6862*53ee8cc1Swenshuai.xi             break;
6863*53ee8cc1Swenshuai.xi         case 3:
6864*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR4_SEL_MASK|HW4_CFG38_PKT192_SPS_EN4);
6865*53ee8cc1Swenshuai.xi             break;
6866*53ee8cc1Swenshuai.xi         default:
6867*53ee8cc1Swenshuai.xi             return FALSE;
6868*53ee8cc1Swenshuai.xi     }
6869*53ee8cc1Swenshuai.xi 
6870*53ee8cc1Swenshuai.xi     if(bEnable)
6871*53ee8cc1Swenshuai.xi     {
6872*53ee8cc1Swenshuai.xi         switch(u32Eng)
6873*53ee8cc1Swenshuai.xi         {
6874*53ee8cc1Swenshuai.xi             case 0:
6875*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR1_SEL_SHIFT);
6876*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN1;
6877*53ee8cc1Swenshuai.xi                 break;
6878*53ee8cc1Swenshuai.xi             case 1:
6879*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR2_SEL_SHIFT);
6880*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN2;
6881*53ee8cc1Swenshuai.xi                 break;
6882*53ee8cc1Swenshuai.xi             case 2:
6883*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR3_SEL_SHIFT);
6884*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN3;
6885*53ee8cc1Swenshuai.xi                 break;
6886*53ee8cc1Swenshuai.xi             case 3:
6887*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR4_SEL_SHIFT);
6888*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN4;
6889*53ee8cc1Swenshuai.xi                 break;
6890*53ee8cc1Swenshuai.xi         }
6891*53ee8cc1Swenshuai.xi     }
6892*53ee8cc1Swenshuai.xi 
6893*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl3->CFG3_38, u16value);
6894*53ee8cc1Swenshuai.xi 
6895*53ee8cc1Swenshuai.xi     return TRUE;
6896*53ee8cc1Swenshuai.xi 
6897*53ee8cc1Swenshuai.xi }
6898*53ee8cc1Swenshuai.xi 
6899*53ee8cc1Swenshuai.xi //@TODO
6900*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng,MS_BOOL CTR_mode)6901*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng, MS_BOOL CTR_mode)
6902*53ee8cc1Swenshuai.xi {
6903*53ee8cc1Swenshuai.xi     switch(u32Eng)
6904*53ee8cc1Swenshuai.xi     {
6905*53ee8cc1Swenshuai.xi         case 0: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN1);
6906*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR1_KEY);
6907*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
6908*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
6909*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
6910*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
6911*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
6912*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
6913*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
6914*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
6915*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY1);
6916*53ee8cc1Swenshuai.xi                 break;
6917*53ee8cc1Swenshuai.xi         case 1: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN2);
6918*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR2_KEY);
6919*53ee8cc1Swenshuai.xi                 /*
6920*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x2222);//PVR SPS key
6921*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x2222);
6922*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x2222);
6923*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x2222);
6924*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x3333);
6925*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x3333);
6926*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x3333);
6927*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x3333);
6928*53ee8cc1Swenshuai.xi                 */
6929*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
6930*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
6931*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
6932*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
6933*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
6934*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
6935*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
6936*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
6937*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY2);
6938*53ee8cc1Swenshuai.xi                 break;
6939*53ee8cc1Swenshuai.xi         case 2: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN3);
6940*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR3_KEY);
6941*53ee8cc1Swenshuai.xi                 /*
6942*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x4444);//PVR SPS key
6943*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x4444);
6944*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x4444);
6945*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x4444);
6946*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x5555);
6947*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x5555);
6948*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x5555);
6949*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x5555);
6950*53ee8cc1Swenshuai.xi                 */
6951*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
6952*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
6953*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
6954*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
6955*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
6956*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
6957*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
6958*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
6959*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY3);
6960*53ee8cc1Swenshuai.xi                 break;
6961*53ee8cc1Swenshuai.xi         case 3: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN4);
6962*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR4_KEY);
6963*53ee8cc1Swenshuai.xi                 /*
6964*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x6666);//PVR SPS key
6965*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x6666);
6966*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x6666);
6967*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x6666);
6968*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x7777);
6969*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x7777);
6970*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x7777);
6971*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x7777);
6972*53ee8cc1Swenshuai.xi                 */
6973*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
6974*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
6975*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
6976*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
6977*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
6978*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
6979*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
6980*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
6981*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY4);
6982*53ee8cc1Swenshuai.xi                 break;
6983*53ee8cc1Swenshuai.xi         default: printf("Not Support !!\n");
6984*53ee8cc1Swenshuai.xi                  break;
6985*53ee8cc1Swenshuai.xi     }
6986*53ee8cc1Swenshuai.xi 
6987*53ee8cc1Swenshuai.xi     if(CTR_mode == TRUE)
6988*53ee8cc1Swenshuai.xi     {
6989*53ee8cc1Swenshuai.xi         printf("SPS CTR mode = %p\n",&(_RegCtrl8[u32Eng].CFG8_05));
6990*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_CTR_MODE_SPS_PVR1);   //set CTR mode
6991*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[0]), 0x0000);                 //set counter IV
6992*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[1]), 0x0000);
6993*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[2]), 0x0000);
6994*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[3]), 0x0000);
6995*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_04), CFG8_04_CTR_IV_SPS_MAX_1K);    //set counter IV max vld
6996*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_LOAD_INIT_CNT_SPS1);  //load counter IV
6997*53ee8cc1Swenshuai.xi     }
6998*53ee8cc1Swenshuai.xi }
6999*53ee8cc1Swenshuai.xi #endif
7000*53ee8cc1Swenshuai.xi 
7001*53ee8cc1Swenshuai.xi // u32GroupId: 0 -> filter0  ~ filter31
7002*53ee8cc1Swenshuai.xi // u32GroupId: 1 -> filter32 ~ filter63
7003*53ee8cc1Swenshuai.xi // u32GroupId: 2 -> filter64 ~ filter95
7004*53ee8cc1Swenshuai.xi // u32GroupId: 3 -> filter96 ~ filter127
7005*53ee8cc1Swenshuai.xi // u32GroupId: 4 -> filter128 ~ filter159
7006*53ee8cc1Swenshuai.xi // u32GroupId: 5 -> filter160 ~ filter191
7007*53ee8cc1Swenshuai.xi 
7008*53ee8cc1Swenshuai.xi 
HAL_DSCMB_GetStatus(MS_U32 u32PktDmx,MS_U32 u32GroupId,MS_U32 u32PidFltId,MS_U32 * pu32ScmbSts)7009*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_GetStatus(MS_U32 u32PktDmx, MS_U32 u32GroupId, MS_U32 u32PidFltId, MS_U32 *pu32ScmbSts)
7010*53ee8cc1Swenshuai.xi {
7011*53ee8cc1Swenshuai.xi     MS_U16              u16PktDmxSrc;
7012*53ee8cc1Swenshuai.xi     MS_U16              u16WordId;
7013*53ee8cc1Swenshuai.xi     MS_U32              u32PIDFltMask = u32PidFltId;
7014*53ee8cc1Swenshuai.xi 
7015*53ee8cc1Swenshuai.xi     if(u32PidFltId != 0xFFFFFFFF)
7016*53ee8cc1Swenshuai.xi     {
7017*53ee8cc1Swenshuai.xi         u32PIDFltMask = (1 << (u32PidFltId & 0x1F));
7018*53ee8cc1Swenshuai.xi     }
7019*53ee8cc1Swenshuai.xi 
7020*53ee8cc1Swenshuai.xi     u16PktDmxSrc = _CLR_(REG16_R(&_RegCtrl->reg15b8), TSP_MATCH_PID_SRC_MASK);
7021*53ee8cc1Swenshuai.xi 
7022*53ee8cc1Swenshuai.xi     switch(u32PktDmx)
7023*53ee8cc1Swenshuai.xi     {
7024*53ee8cc1Swenshuai.xi         case 0:
7025*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX0 << TSP_MATCH_PID_SRC_SHIFT);
7026*53ee8cc1Swenshuai.xi             break;
7027*53ee8cc1Swenshuai.xi         case 1:
7028*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX1 << TSP_MATCH_PID_SRC_SHIFT);
7029*53ee8cc1Swenshuai.xi             break;
7030*53ee8cc1Swenshuai.xi         case 2:
7031*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX2 << TSP_MATCH_PID_SRC_SHIFT);
7032*53ee8cc1Swenshuai.xi             break;
7033*53ee8cc1Swenshuai.xi         case 3:
7034*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX3 << TSP_MATCH_PID_SRC_SHIFT);
7035*53ee8cc1Swenshuai.xi             break;
7036*53ee8cc1Swenshuai.xi         default:
7037*53ee8cc1Swenshuai.xi             break;
7038*53ee8cc1Swenshuai.xi     }
7039*53ee8cc1Swenshuai.xi 
7040*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->reg15b8, u16PktDmxSrc);
7041*53ee8cc1Swenshuai.xi 
7042*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // Set 1 to load match_pid_num
7043*53ee8cc1Swenshuai.xi 
7044*53ee8cc1Swenshuai.xi     // get status
7045*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // freeze
7046*53ee8cc1Swenshuai.xi 
7047*53ee8cc1Swenshuai.xi     u16WordId =  _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_SEL_MASK);
7048*53ee8cc1Swenshuai.xi 
7049*53ee8cc1Swenshuai.xi     if (u32GroupId < 6)
7050*53ee8cc1Swenshuai.xi     {
7051*53ee8cc1Swenshuai.xi         u16WordId = _SET_(u16WordId, u32GroupId << TSP_MATCH_PID_SEL_SHIFT);
7052*53ee8cc1Swenshuai.xi         REG16_MSK_W(&_RegCtrl->PVRConfig,TSP_MATCH_PID_SEL_MASK,u16WordId);
7053*53ee8cc1Swenshuai.xi     }
7054*53ee8cc1Swenshuai.xi     else
7055*53ee8cc1Swenshuai.xi     {
7056*53ee8cc1Swenshuai.xi         printf("[TSP_ERR][%s][%d] Unsupported u32GroupId (%lu)!!!\n",__FUNCTION__, __LINE__, (long unsigned int)u32GroupId);
7057*53ee8cc1Swenshuai.xi     }
7058*53ee8cc1Swenshuai.xi 
7059*53ee8cc1Swenshuai.xi     *pu32ScmbSts = _AND_(REG32_R(&_RegCtrl->TsPidScmbStatTsin), u32PIDFltMask);
7060*53ee8cc1Swenshuai.xi 
7061*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // re-enable
7062*53ee8cc1Swenshuai.xi 
7063*53ee8cc1Swenshuai.xi     if(u32PIDFltMask != 0xFFFFFFFF)
7064*53ee8cc1Swenshuai.xi     {
7065*53ee8cc1Swenshuai.xi         *pu32ScmbSts = ((*pu32ScmbSts > 0) ? 1: 0);
7066*53ee8cc1Swenshuai.xi     }
7067*53ee8cc1Swenshuai.xi 
7068*53ee8cc1Swenshuai.xi     return TRUE;
7069*53ee8cc1Swenshuai.xi }
7070*53ee8cc1Swenshuai.xi 
7071*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
7072*53ee8cc1Swenshuai.xi // Merge Stream
7073*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path,MS_U8 u8Idx,MS_U8 * pu8SyncByte,MS_BOOL bSet)7074*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path, MS_U8 u8Idx, MS_U8 *pu8SyncByte, MS_BOOL bSet)
7075*53ee8cc1Swenshuai.xi {
7076*53ee8cc1Swenshuai.xi     REG16 *SynReg=0;
7077*53ee8cc1Swenshuai.xi     MS_U16 u16Mask = 0x00FF, u16Sync = 0, u16Shift = 0;
7078*53ee8cc1Swenshuai.xi 
7079*53ee8cc1Swenshuai.xi     switch(u8Path)
7080*53ee8cc1Swenshuai.xi     {
7081*53ee8cc1Swenshuai.xi         case TSP_TSIF0:
7082*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif0[u8Idx>>1]);
7083*53ee8cc1Swenshuai.xi             break;
7084*53ee8cc1Swenshuai.xi         case TSP_TSIF1:
7085*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif1[u8Idx>>1]);
7086*53ee8cc1Swenshuai.xi             break;
7087*53ee8cc1Swenshuai.xi         case TSP_TSIF2:
7088*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif2[u8Idx>>1]);
7089*53ee8cc1Swenshuai.xi             break;
7090*53ee8cc1Swenshuai.xi         case TSP_TSIF3:
7091*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif3[u8Idx>>1]);
7092*53ee8cc1Swenshuai.xi             break;
7093*53ee8cc1Swenshuai.xi         default:
7094*53ee8cc1Swenshuai.xi             return FALSE;
7095*53ee8cc1Swenshuai.xi     }
7096*53ee8cc1Swenshuai.xi 
7097*53ee8cc1Swenshuai.xi 
7098*53ee8cc1Swenshuai.xi     if(u8Idx & 0x1)
7099*53ee8cc1Swenshuai.xi     {
7100*53ee8cc1Swenshuai.xi         u16Shift = 8;
7101*53ee8cc1Swenshuai.xi     }
7102*53ee8cc1Swenshuai.xi 
7103*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
7104*53ee8cc1Swenshuai.xi     {
7105*53ee8cc1Swenshuai.xi         u16Sync = (MS_U16)(*pu8SyncByte & 0xFF);
7106*53ee8cc1Swenshuai.xi         REG16_W(SynReg,((REG16_R(SynReg) & ~(u16Mask << u16Shift)) | (u16Sync << u16Shift)));
7107*53ee8cc1Swenshuai.xi     }
7108*53ee8cc1Swenshuai.xi     else
7109*53ee8cc1Swenshuai.xi     {
7110*53ee8cc1Swenshuai.xi         u16Sync = (REG16_R(SynReg) & (u16Mask << u16Shift)) >> u16Shift;
7111*53ee8cc1Swenshuai.xi         *pu8SyncByte = (MS_U8)u16Sync;
7112*53ee8cc1Swenshuai.xi     }
7113*53ee8cc1Swenshuai.xi 
7114*53ee8cc1Swenshuai.xi     return TRUE;
7115*53ee8cc1Swenshuai.xi 
7116*53ee8cc1Swenshuai.xi }
7117*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path,MS_U8 u8Idx,MS_U8 * pu8SrcId,MS_BOOL bSet)7118*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path, MS_U8 u8Idx, MS_U8 *pu8SrcId, MS_BOOL bSet)
7119*53ee8cc1Swenshuai.xi {
7120*53ee8cc1Swenshuai.xi     REG16 *SrcIdReg =0;
7121*53ee8cc1Swenshuai.xi     MS_U16 u16SrcId = 0, u16Mask = 0x000F, u16Shift = 0;
7122*53ee8cc1Swenshuai.xi 
7123*53ee8cc1Swenshuai.xi     switch(u8Path)
7124*53ee8cc1Swenshuai.xi     {
7125*53ee8cc1Swenshuai.xi         case TSP_TSIF0:
7126*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif0[u8Idx>>2]);
7127*53ee8cc1Swenshuai.xi             break;
7128*53ee8cc1Swenshuai.xi         case TSP_TSIF1:
7129*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif1[u8Idx>>2]);
7130*53ee8cc1Swenshuai.xi             break;
7131*53ee8cc1Swenshuai.xi         case TSP_TSIF2:
7132*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif2[u8Idx>>2]);
7133*53ee8cc1Swenshuai.xi             break;
7134*53ee8cc1Swenshuai.xi         case TSP_TSIF3:
7135*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif3[u8Idx>>2]);
7136*53ee8cc1Swenshuai.xi             break;
7137*53ee8cc1Swenshuai.xi         default:
7138*53ee8cc1Swenshuai.xi             return FALSE;
7139*53ee8cc1Swenshuai.xi     }
7140*53ee8cc1Swenshuai.xi 
7141*53ee8cc1Swenshuai.xi     switch(u8Idx & 0x3)
7142*53ee8cc1Swenshuai.xi     {
7143*53ee8cc1Swenshuai.xi         case 0x1:
7144*53ee8cc1Swenshuai.xi             u16Shift = 4;
7145*53ee8cc1Swenshuai.xi             u16SrcId <<= 4;
7146*53ee8cc1Swenshuai.xi             u16Mask <<= 4;
7147*53ee8cc1Swenshuai.xi             break;
7148*53ee8cc1Swenshuai.xi         case 0x2:
7149*53ee8cc1Swenshuai.xi             u16Shift = 8;
7150*53ee8cc1Swenshuai.xi             u16SrcId <<= 8;
7151*53ee8cc1Swenshuai.xi             u16Mask <<= 8;
7152*53ee8cc1Swenshuai.xi             break;
7153*53ee8cc1Swenshuai.xi         case 0x3:
7154*53ee8cc1Swenshuai.xi             u16Shift = 12;
7155*53ee8cc1Swenshuai.xi             u16SrcId <<= 12;
7156*53ee8cc1Swenshuai.xi             u16Mask <<= 12;
7157*53ee8cc1Swenshuai.xi             break;
7158*53ee8cc1Swenshuai.xi     }
7159*53ee8cc1Swenshuai.xi 
7160*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
7161*53ee8cc1Swenshuai.xi     {
7162*53ee8cc1Swenshuai.xi         u16SrcId = (MS_U16)(*pu8SrcId & 0xFF);
7163*53ee8cc1Swenshuai.xi         REG16_W(SrcIdReg,((REG16_R(SrcIdReg) & ~(u16Mask << u16Shift)) | (u16SrcId << u16Shift)));
7164*53ee8cc1Swenshuai.xi     }
7165*53ee8cc1Swenshuai.xi     else
7166*53ee8cc1Swenshuai.xi     {
7167*53ee8cc1Swenshuai.xi         u16SrcId = (REG16_R(SrcIdReg) & (u16Mask << u16Shift)) >> u16Shift;
7168*53ee8cc1Swenshuai.xi         *pu8SrcId = (MS_U8)u16SrcId;
7169*53ee8cc1Swenshuai.xi     }
7170*53ee8cc1Swenshuai.xi 
7171*53ee8cc1Swenshuai.xi     return TRUE;
7172*53ee8cc1Swenshuai.xi }
7173*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path,MS_U8 u8PktHeaderLen)7174*53ee8cc1Swenshuai.xi static void HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path, MS_U8 u8PktHeaderLen)
7175*53ee8cc1Swenshuai.xi {
7176*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7177*53ee8cc1Swenshuai.xi 
7178*53ee8cc1Swenshuai.xi     REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_MXL_PKT_HEADER_MASK)) | ((u8PktHeaderLen << TSP_MXL_PKT_HEADER_SHIFT) & TSP_MXL_PKT_HEADER_MASK)));
7179*53ee8cc1Swenshuai.xi }
7180*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_PktMode(MS_U8 u8Path,TSP_HAL_PKT_MODE ePktMode)7181*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_PktMode(MS_U8 u8Path, TSP_HAL_PKT_MODE ePktMode)
7182*53ee8cc1Swenshuai.xi {
7183*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7184*53ee8cc1Swenshuai.xi 
7185*53ee8cc1Swenshuai.xi     switch(ePktMode)
7186*53ee8cc1Swenshuai.xi     {
7187*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_NORMAL:
7188*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_188Mode));
7189*53ee8cc1Swenshuai.xi             break;
7190*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_CI:
7191*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_CIMode));
7192*53ee8cc1Swenshuai.xi             break;
7193*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_OPEN_CABLE:
7194*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_OpenCableMode));
7195*53ee8cc1Swenshuai.xi             break;
7196*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_ATS:
7197*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_ATSMode));
7198*53ee8cc1Swenshuai.xi             break;
7199*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_192:
7200*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7201*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,4);
7202*53ee8cc1Swenshuai.xi             break;
7203*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_196:
7204*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7205*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,8);
7206*53ee8cc1Swenshuai.xi             break;
7207*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_200:
7208*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7209*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,12);
7210*53ee8cc1Swenshuai.xi             break;
7211*53ee8cc1Swenshuai.xi         default:
7212*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong PktConverter Packet Mode!!!\n",__FUNCTION__,__LINE__);
7213*53ee8cc1Swenshuai.xi             return FALSE;
7214*53ee8cc1Swenshuai.xi     }
7215*53ee8cc1Swenshuai.xi 
7216*53ee8cc1Swenshuai.xi     return TRUE;
7217*53ee8cc1Swenshuai.xi }
7218*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path,MS_BOOL bEnable)7219*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path, MS_BOOL bEnable)
7220*53ee8cc1Swenshuai.xi {
7221*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7222*53ee8cc1Swenshuai.xi 
7223*53ee8cc1Swenshuai.xi     if(bEnable)
7224*53ee8cc1Swenshuai.xi     {
7225*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _SET_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47)); // Set 1 to force sync byte be 0x47
7226*53ee8cc1Swenshuai.xi     }
7227*53ee8cc1Swenshuai.xi     else
7228*53ee8cc1Swenshuai.xi     {
7229*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47));
7230*53ee8cc1Swenshuai.xi     }
7231*53ee8cc1Swenshuai.xi }
7232*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SrcIdFlt(MS_U8 u8Path,MS_BOOL bEnable)7233*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_SrcIdFlt(MS_U8 u8Path, MS_BOOL bEnable)
7234*53ee8cc1Swenshuai.xi {
7235*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7236*53ee8cc1Swenshuai.xi 
7237*53ee8cc1Swenshuai.xi     if(bEnable)
7238*53ee8cc1Swenshuai.xi     {
7239*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _SET_(REG16_R(PktConverterReg), TSP_SRC_ID_FLT_EN)); //  Set 1 to enable filter sync byte and path ID match
7240*53ee8cc1Swenshuai.xi     }
7241*53ee8cc1Swenshuai.xi     else
7242*53ee8cc1Swenshuai.xi     {
7243*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_SRC_ID_FLT_EN));
7244*53ee8cc1Swenshuai.xi     }
7245*53ee8cc1Swenshuai.xi }
7246*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId,MS_U32 u32SrcId)7247*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId, MS_U32 u32SrcId)
7248*53ee8cc1Swenshuai.xi {
7249*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
7250*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcId << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
7251*53ee8cc1Swenshuai.xi }
7252*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId,MS_U32 u32SrcId)7253*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId, MS_U32 u32SrcId)
7254*53ee8cc1Swenshuai.xi {
7255*53ee8cc1Swenshuai.xi     switch(pcrFltId)
7256*53ee8cc1Swenshuai.xi     {
7257*53ee8cc1Swenshuai.xi         case 0:
7258*53ee8cc1Swenshuai.xi             //src 0
7259*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_72,CFG3_72_PIDFLT_PCR_SCR_ID_MASK,(u32SrcId << CFG3_72_PIDFLT_PCR0_SCR_ID_SHIFT));
7260*53ee8cc1Swenshuai.xi             break;
7261*53ee8cc1Swenshuai.xi         case 1:
7262*53ee8cc1Swenshuai.xi             //src 1
7263*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_72,CFG3_72_PIDFLT_PCR_SCR_ID_MASK<<CFG3_72_PIDFLT_PCR1_SCR_ID_SHIFT,(u32SrcId << CFG3_72_PIDFLT_PCR1_SCR_ID_SHIFT));
7264*53ee8cc1Swenshuai.xi 
7265*53ee8cc1Swenshuai.xi             break;
7266*53ee8cc1Swenshuai.xi         default:
7267*53ee8cc1Swenshuai.xi             break;
7268*53ee8cc1Swenshuai.xi     }
7269*53ee8cc1Swenshuai.xi }
7270*53ee8cc1Swenshuai.xi 
HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)7271*53ee8cc1Swenshuai.xi void HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)
7272*53ee8cc1Swenshuai.xi {
7273*53ee8cc1Swenshuai.xi     MS_U8   u8Id;
7274*53ee8cc1Swenshuai.xi     MS_U8   u8SyncByte;
7275*53ee8cc1Swenshuai.xi 
7276*53ee8cc1Swenshuai.xi     u8SyncByte = 0x47;
7277*53ee8cc1Swenshuai.xi     for(u8Id = 0; u8Id < TSP_MERGESTREAM_NUM; u8Id++,u8SyncByte++)
7278*53ee8cc1Swenshuai.xi     {
7279*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Id, &u8SyncByte, TRUE);
7280*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SetSrcId(u8Path, u8Id, &u8Id, TRUE);
7281*53ee8cc1Swenshuai.xi     }
7282*53ee8cc1Swenshuai.xi     HAL_TSP_PktConverter_PktMode(u8Path,E_TSP_HAL_PKT_MODE_NORMAL);
7283*53ee8cc1Swenshuai.xi }
7284*53ee8cc1Swenshuai.xi 
7285*53ee8cc1Swenshuai.xi 
7286*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
7287*53ee8cc1Swenshuai.xi //  For Debug Table
7288*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
7289*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)7290*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)
7291*53ee8cc1Swenshuai.xi {
7292*53ee8cc1Swenshuai.xi     switch (eFlow)
7293*53ee8cc1Swenshuai.xi     {
7294*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE0:
7295*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX0;
7296*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE1:
7297*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
7298*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE2:
7299*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
7300*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE3:
7301*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX1;
7302*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE0:
7303*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX1;
7304*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE1:
7305*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
7306*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE2:
7307*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX0;
7308*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE3:
7309*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
7310*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_MMFI0:
7311*53ee8cc1Swenshuai.xi             return E_TSP_SRC_MMFI0;
7312*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_MMFI1:
7313*53ee8cc1Swenshuai.xi             return E_TSP_SRC_MMFI1;
7314*53ee8cc1Swenshuai.xi         default:
7315*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] UnSupported Debug Flow : %d !!!\n",__FUNCTION__, __LINE__,eFlow);
7316*53ee8cc1Swenshuai.xi             return E_TSP_SRC_INVALID;
7317*53ee8cc1Swenshuai.xi     }
7318*53ee8cc1Swenshuai.xi }
7319*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)7320*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)
7321*53ee8cc1Swenshuai.xi {
7322*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
7323*53ee8cc1Swenshuai.xi 
7324*53ee8cc1Swenshuai.xi     switch(u32TsIf)
7325*53ee8cc1Swenshuai.xi     {
7326*53ee8cc1Swenshuai.xi         case 0:
7327*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
7328*53ee8cc1Swenshuai.xi             break;
7329*53ee8cc1Swenshuai.xi         case 1:
7330*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
7331*53ee8cc1Swenshuai.xi             break;
7332*53ee8cc1Swenshuai.xi         case 2:
7333*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
7334*53ee8cc1Swenshuai.xi             break;
7335*53ee8cc1Swenshuai.xi         case 3:
7336*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
7337*53ee8cc1Swenshuai.xi             break;
7338*53ee8cc1Swenshuai.xi         default:
7339*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7340*53ee8cc1Swenshuai.xi             break;
7341*53ee8cc1Swenshuai.xi     }
7342*53ee8cc1Swenshuai.xi 
7343*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_TSIF_SRC_SEL_MASK,(u16TSIF << CFG5_7F_TSIF_SRC_SEL_SHIFT));
7344*53ee8cc1Swenshuai.xi }
7345*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)7346*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
7347*53ee8cc1Swenshuai.xi {
7348*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7349*53ee8cc1Swenshuai.xi     {
7350*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7351*53ee8cc1Swenshuai.xi         {
7352*53ee8cc1Swenshuai.xi             case 0:
7353*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
7354*53ee8cc1Swenshuai.xi                 break;
7355*53ee8cc1Swenshuai.xi             case 1:
7356*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
7357*53ee8cc1Swenshuai.xi                 break;
7358*53ee8cc1Swenshuai.xi             case 2:
7359*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
7360*53ee8cc1Swenshuai.xi                 break;
7361*53ee8cc1Swenshuai.xi             case 3:
7362*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_3_LOAD);
7363*53ee8cc1Swenshuai.xi                 break;
7364*53ee8cc1Swenshuai.xi             default:
7365*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7366*53ee8cc1Swenshuai.xi                 break;
7367*53ee8cc1Swenshuai.xi         }
7368*53ee8cc1Swenshuai.xi     }
7369*53ee8cc1Swenshuai.xi     else
7370*53ee8cc1Swenshuai.xi     {
7371*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7372*53ee8cc1Swenshuai.xi         {
7373*53ee8cc1Swenshuai.xi             case 0:
7374*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
7375*53ee8cc1Swenshuai.xi                 break;
7376*53ee8cc1Swenshuai.xi             case 1:
7377*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
7378*53ee8cc1Swenshuai.xi                 break;
7379*53ee8cc1Swenshuai.xi             case 2:
7380*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
7381*53ee8cc1Swenshuai.xi                 break;
7382*53ee8cc1Swenshuai.xi             case 3:
7383*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_3_LOAD);
7384*53ee8cc1Swenshuai.xi                 break;
7385*53ee8cc1Swenshuai.xi             default:
7386*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7387*53ee8cc1Swenshuai.xi                 break;
7388*53ee8cc1Swenshuai.xi         }
7389*53ee8cc1Swenshuai.xi     }
7390*53ee8cc1Swenshuai.xi 
7391*53ee8cc1Swenshuai.xi }
7392*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf,MS_BOOL bLock)7393*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf, MS_BOOL bLock)
7394*53ee8cc1Swenshuai.xi {
7395*53ee8cc1Swenshuai.xi     if(bLock)  // 188 mode
7396*53ee8cc1Swenshuai.xi     {
7397*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
7398*53ee8cc1Swenshuai.xi     }
7399*53ee8cc1Swenshuai.xi     else       // Non 188 mode
7400*53ee8cc1Swenshuai.xi     {
7401*53ee8cc1Swenshuai.xi        REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
7402*53ee8cc1Swenshuai.xi     }
7403*53ee8cc1Swenshuai.xi 
7404*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Locked_PKT_Cnt);
7405*53ee8cc1Swenshuai.xi }
7406*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)7407*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)
7408*53ee8cc1Swenshuai.xi {
7409*53ee8cc1Swenshuai.xi     switch (u32Tsif)
7410*53ee8cc1Swenshuai.xi     {
7411*53ee8cc1Swenshuai.xi         case 0 :
7412*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
7413*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
7414*53ee8cc1Swenshuai.xi             break;
7415*53ee8cc1Swenshuai.xi         case 1:
7416*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
7417*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
7418*53ee8cc1Swenshuai.xi             break;
7419*53ee8cc1Swenshuai.xi         case 2:
7420*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
7421*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
7422*53ee8cc1Swenshuai.xi             break;
7423*53ee8cc1Swenshuai.xi         case 3:
7424*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_3_CLR);
7425*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_3_CLR);
7426*53ee8cc1Swenshuai.xi             break;
7427*53ee8cc1Swenshuai.xi         default :
7428*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
7429*53ee8cc1Swenshuai.xi             break;
7430*53ee8cc1Swenshuai.xi     }
7431*53ee8cc1Swenshuai.xi }
7432*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)7433*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)
7434*53ee8cc1Swenshuai.xi {
7435*53ee8cc1Swenshuai.xi     switch (eClrSrc)
7436*53ee8cc1Swenshuai.xi     {
7437*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7438*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX0 << CFG5_7F_CLR_SRC_SHIFT);
7439*53ee8cc1Swenshuai.xi             break;
7440*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7441*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX1 << CFG5_7F_CLR_SRC_SHIFT);
7442*53ee8cc1Swenshuai.xi             break;
7443*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7444*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX2 << CFG5_7F_CLR_SRC_SHIFT);
7445*53ee8cc1Swenshuai.xi             break;
7446*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7447*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX3 << CFG5_7F_CLR_SRC_SHIFT);
7448*53ee8cc1Swenshuai.xi             break;
7449*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7450*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI0 << CFG5_7F_CLR_SRC_SHIFT);
7451*53ee8cc1Swenshuai.xi             break;
7452*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7453*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI1 << CFG5_7F_CLR_SRC_SHIFT);
7454*53ee8cc1Swenshuai.xi             break;
7455*53ee8cc1Swenshuai.xi         default:
7456*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported Clear Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,eClrSrc);
7457*53ee8cc1Swenshuai.xi             break;
7458*53ee8cc1Swenshuai.xi     }
7459*53ee8cc1Swenshuai.xi }
7460*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)7461*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType, TSP_SRC_SEQ ePktDmxId)
7462*53ee8cc1Swenshuai.xi {
7463*53ee8cc1Swenshuai.xi     MS_U16 u16AvSrc = 0;
7464*53ee8cc1Swenshuai.xi 
7465*53ee8cc1Swenshuai.xi     switch(ePktDmxId)
7466*53ee8cc1Swenshuai.xi     {
7467*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7468*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX0;
7469*53ee8cc1Swenshuai.xi             break;
7470*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7471*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX1;
7472*53ee8cc1Swenshuai.xi             break;
7473*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7474*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX2;
7475*53ee8cc1Swenshuai.xi             break;
7476*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7477*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX3;
7478*53ee8cc1Swenshuai.xi             break;
7479*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7480*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_MMFI0;
7481*53ee8cc1Swenshuai.xi             break;
7482*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7483*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_MMFI1;
7484*53ee8cc1Swenshuai.xi             break;
7485*53ee8cc1Swenshuai.xi         default:
7486*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Source : %d!\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
7487*53ee8cc1Swenshuai.xi             break;
7488*53ee8cc1Swenshuai.xi     }
7489*53ee8cc1Swenshuai.xi 
7490*53ee8cc1Swenshuai.xi     switch (eAvType)
7491*53ee8cc1Swenshuai.xi     {
7492*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7493*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_SRC_MASK, u16AvSrc << CFG5_7E_VID_SRC_SHIFT);
7494*53ee8cc1Swenshuai.xi             break;
7495*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
7496*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_3D_SRC_MASK, u16AvSrc << CFG5_7E_VID_3D_SRC_SHIFT);
7497*53ee8cc1Swenshuai.xi             break;
7498*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7499*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDA_SRC_MASK, u16AvSrc << CFG5_7E_AUDA_SRC_SHIFT);
7500*53ee8cc1Swenshuai.xi             break;
7501*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7502*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDB_SRC_MASK, u16AvSrc << CFG5_7E_AUDB_SRC_SHIFT);
7503*53ee8cc1Swenshuai.xi             break;
7504*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7505*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_AUDC_SRC_MASK, u16AvSrc << CFG5_78_AUDC_SRC_SHIFT);
7506*53ee8cc1Swenshuai.xi             break;
7507*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7508*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_AUDD_SRC_MASK, u16AvSrc << CFG5_78_AUDD_SRC_SHIFT);
7509*53ee8cc1Swenshuai.xi             break;
7510*53ee8cc1Swenshuai.xi         default:
7511*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7512*53ee8cc1Swenshuai.xi             break;
7513*53ee8cc1Swenshuai.xi     }
7514*53ee8cc1Swenshuai.xi }
7515*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)7516*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType, MS_BOOL bEn)
7517*53ee8cc1Swenshuai.xi {
7518*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7519*53ee8cc1Swenshuai.xi     {
7520*53ee8cc1Swenshuai.xi         switch (eAvType)
7521*53ee8cc1Swenshuai.xi         {
7522*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7523*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
7524*53ee8cc1Swenshuai.xi                 break;
7525*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7526*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
7527*53ee8cc1Swenshuai.xi                 break;
7528*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7529*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
7530*53ee8cc1Swenshuai.xi                 break;
7531*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7532*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
7533*53ee8cc1Swenshuai.xi                 break;
7534*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7535*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_ADC_PKT_CNT_LOAD);
7536*53ee8cc1Swenshuai.xi                 break;
7537*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7538*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_ADD_PKT_CNT_LOAD);
7539*53ee8cc1Swenshuai.xi                 break;
7540*53ee8cc1Swenshuai.xi             default :
7541*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7542*53ee8cc1Swenshuai.xi                 break;
7543*53ee8cc1Swenshuai.xi         }
7544*53ee8cc1Swenshuai.xi     }
7545*53ee8cc1Swenshuai.xi     else
7546*53ee8cc1Swenshuai.xi     {
7547*53ee8cc1Swenshuai.xi         switch (eAvType)
7548*53ee8cc1Swenshuai.xi         {
7549*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7550*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
7551*53ee8cc1Swenshuai.xi                 break;
7552*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7553*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
7554*53ee8cc1Swenshuai.xi                 break;
7555*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7556*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
7557*53ee8cc1Swenshuai.xi                 break;
7558*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7559*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
7560*53ee8cc1Swenshuai.xi                 break;
7561*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7562*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_ADC_PKT_CNT_LOAD);
7563*53ee8cc1Swenshuai.xi                 break;
7564*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7565*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_ADD_PKT_CNT_LOAD);
7566*53ee8cc1Swenshuai.xi                 break;
7567*53ee8cc1Swenshuai.xi             default :
7568*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7569*53ee8cc1Swenshuai.xi                 break;
7570*53ee8cc1Swenshuai.xi         }
7571*53ee8cc1Swenshuai.xi     }
7572*53ee8cc1Swenshuai.xi }
7573*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)7574*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)
7575*53ee8cc1Swenshuai.xi {
7576*53ee8cc1Swenshuai.xi     switch (eAvType)
7577*53ee8cc1Swenshuai.xi     {
7578*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7579*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7580*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
7581*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
7582*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7583*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
7584*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7585*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7586*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
7587*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7588*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7589*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
7590*53ee8cc1Swenshuai.xi         default :
7591*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7592*53ee8cc1Swenshuai.xi             return 0;
7593*53ee8cc1Swenshuai.xi     }
7594*53ee8cc1Swenshuai.xi }
7595*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)7596*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)
7597*53ee8cc1Swenshuai.xi {
7598*53ee8cc1Swenshuai.xi     switch (eAvType)
7599*53ee8cc1Swenshuai.xi     {
7600*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7601*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
7602*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
7603*53ee8cc1Swenshuai.xi             break;
7604*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
7605*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
7606*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
7607*53ee8cc1Swenshuai.xi             break;
7608*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7609*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
7610*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
7611*53ee8cc1Swenshuai.xi             break;
7612*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7613*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
7614*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
7615*53ee8cc1Swenshuai.xi             break;
7616*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7617*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_ADC_PKT_CNT_CLR);
7618*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_ADC_PKT_CNT_CLR);
7619*53ee8cc1Swenshuai.xi             break;
7620*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7621*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_ADD_PKT_CNT_CLR);
7622*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_ADD_PKT_CNT_CLR);
7623*53ee8cc1Swenshuai.xi             break;
7624*53ee8cc1Swenshuai.xi         default :
7625*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7626*53ee8cc1Swenshuai.xi             break;
7627*53ee8cc1Swenshuai.xi     }
7628*53ee8cc1Swenshuai.xi }
7629*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)7630*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)
7631*53ee8cc1Swenshuai.xi {
7632*53ee8cc1Swenshuai.xi     MS_U16 u16AvType = 0;
7633*53ee8cc1Swenshuai.xi 
7634*53ee8cc1Swenshuai.xi     switch(eAvType)
7635*53ee8cc1Swenshuai.xi     {
7636*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
7637*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V;
7638*53ee8cc1Swenshuai.xi             break;
7639*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
7640*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V3D;
7641*53ee8cc1Swenshuai.xi             break;
7642*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
7643*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_A;
7644*53ee8cc1Swenshuai.xi             break;
7645*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
7646*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_AD;
7647*53ee8cc1Swenshuai.xi             break;
7648*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
7649*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_ADC;
7650*53ee8cc1Swenshuai.xi             break;
7651*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
7652*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_ADD;
7653*53ee8cc1Swenshuai.xi             break;
7654*53ee8cc1Swenshuai.xi         default:
7655*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7656*53ee8cc1Swenshuai.xi             break;
7657*53ee8cc1Swenshuai.xi     }
7658*53ee8cc1Swenshuai.xi 
7659*53ee8cc1Swenshuai.xi     switch(ePktDmxId)
7660*53ee8cc1Swenshuai.xi     {
7661*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7662*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL_SHIFT));
7663*53ee8cc1Swenshuai.xi             break;
7664*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7665*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL1_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL1_SHIFT));
7666*53ee8cc1Swenshuai.xi             break;
7667*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7668*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL2_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL2_SHIFT));
7669*53ee8cc1Swenshuai.xi             break;
7670*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7671*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL3_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL3_SHIFT));
7672*53ee8cc1Swenshuai.xi             break;
7673*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7674*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI0_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI0_SHIFT));
7675*53ee8cc1Swenshuai.xi             break;
7676*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7677*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI1_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI1_SHIFT));
7678*53ee8cc1Swenshuai.xi             break;
7679*53ee8cc1Swenshuai.xi         default:
7680*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV FIFO Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
7681*53ee8cc1Swenshuai.xi             break;
7682*53ee8cc1Swenshuai.xi     }
7683*53ee8cc1Swenshuai.xi }
7684*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)7685*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)
7686*53ee8cc1Swenshuai.xi {
7687*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7688*53ee8cc1Swenshuai.xi     {
7689*53ee8cc1Swenshuai.xi         switch (eAvType)
7690*53ee8cc1Swenshuai.xi         {
7691*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7692*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
7693*53ee8cc1Swenshuai.xi                 break;
7694*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7695*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
7696*53ee8cc1Swenshuai.xi                 break;
7697*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7698*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
7699*53ee8cc1Swenshuai.xi                 break;
7700*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7701*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
7702*53ee8cc1Swenshuai.xi                 break;
7703*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7704*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADC_LOAD);
7705*53ee8cc1Swenshuai.xi                 break;
7706*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7707*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADD_LOAD);
7708*53ee8cc1Swenshuai.xi                 break;
7709*53ee8cc1Swenshuai.xi             default :
7710*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7711*53ee8cc1Swenshuai.xi                 break;
7712*53ee8cc1Swenshuai.xi         }
7713*53ee8cc1Swenshuai.xi     }
7714*53ee8cc1Swenshuai.xi     else
7715*53ee8cc1Swenshuai.xi     {
7716*53ee8cc1Swenshuai.xi         switch (eAvType)
7717*53ee8cc1Swenshuai.xi         {
7718*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7719*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
7720*53ee8cc1Swenshuai.xi                 break;
7721*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7722*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
7723*53ee8cc1Swenshuai.xi                 break;
7724*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7725*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
7726*53ee8cc1Swenshuai.xi                 break;
7727*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7728*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
7729*53ee8cc1Swenshuai.xi                 break;
7730*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7731*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADC_LOAD);
7732*53ee8cc1Swenshuai.xi                 break;
7733*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7734*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADD_LOAD);
7735*53ee8cc1Swenshuai.xi                 break;
7736*53ee8cc1Swenshuai.xi             default :
7737*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7738*53ee8cc1Swenshuai.xi                 break;
7739*53ee8cc1Swenshuai.xi         }
7740*53ee8cc1Swenshuai.xi     }
7741*53ee8cc1Swenshuai.xi }
7742*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)7743*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)
7744*53ee8cc1Swenshuai.xi {
7745*53ee8cc1Swenshuai.xi     if(bPayload)
7746*53ee8cc1Swenshuai.xi     {
7747*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
7748*53ee8cc1Swenshuai.xi     }
7749*53ee8cc1Swenshuai.xi     else
7750*53ee8cc1Swenshuai.xi     {
7751*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
7752*53ee8cc1Swenshuai.xi     }
7753*53ee8cc1Swenshuai.xi 
7754*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7755*53ee8cc1Swenshuai.xi     {
7756*53ee8cc1Swenshuai.xi         switch (eAvType)
7757*53ee8cc1Swenshuai.xi         {
7758*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7759*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
7760*53ee8cc1Swenshuai.xi                 break;
7761*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7762*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
7763*53ee8cc1Swenshuai.xi                 break;
7764*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7765*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
7766*53ee8cc1Swenshuai.xi                 break;
7767*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7768*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADC_LOAD);
7769*53ee8cc1Swenshuai.xi                 break;
7770*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7771*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADD_LOAD);
7772*53ee8cc1Swenshuai.xi                 break;
7773*53ee8cc1Swenshuai.xi             default :
7774*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7775*53ee8cc1Swenshuai.xi                 break;
7776*53ee8cc1Swenshuai.xi         }
7777*53ee8cc1Swenshuai.xi     }
7778*53ee8cc1Swenshuai.xi     else
7779*53ee8cc1Swenshuai.xi     {
7780*53ee8cc1Swenshuai.xi         switch (eAvType)
7781*53ee8cc1Swenshuai.xi         {
7782*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7783*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
7784*53ee8cc1Swenshuai.xi                 break;
7785*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7786*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
7787*53ee8cc1Swenshuai.xi                 break;
7788*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7789*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
7790*53ee8cc1Swenshuai.xi                 break;
7791*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7792*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADC_LOAD);
7793*53ee8cc1Swenshuai.xi                 break;
7794*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7795*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADD_LOAD);
7796*53ee8cc1Swenshuai.xi                 break;
7797*53ee8cc1Swenshuai.xi             default :
7798*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7799*53ee8cc1Swenshuai.xi                 break;
7800*53ee8cc1Swenshuai.xi         }
7801*53ee8cc1Swenshuai.xi     }
7802*53ee8cc1Swenshuai.xi }
7803*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId,MS_BOOL bDrop)7804*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId, MS_BOOL bDrop)
7805*53ee8cc1Swenshuai.xi {
7806*53ee8cc1Swenshuai.xi     if(bDrop)
7807*53ee8cc1Swenshuai.xi     {
7808*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
7809*53ee8cc1Swenshuai.xi     }
7810*53ee8cc1Swenshuai.xi     else
7811*53ee8cc1Swenshuai.xi     {
7812*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
7813*53ee8cc1Swenshuai.xi     }
7814*53ee8cc1Swenshuai.xi 
7815*53ee8cc1Swenshuai.xi     switch (ePktDmxId)
7816*53ee8cc1Swenshuai.xi     {
7817*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7818*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_0);
7819*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7820*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_1);
7821*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7822*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_2);
7823*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7824*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_3);
7825*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7826*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->CFG5_0B);
7827*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7828*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->CFG5_0C);
7829*53ee8cc1Swenshuai.xi         default :
7830*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV FIFO Source : %d\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
7831*53ee8cc1Swenshuai.xi             return 0;
7832*53ee8cc1Swenshuai.xi     }
7833*53ee8cc1Swenshuai.xi }
7834*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)7835*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)
7836*53ee8cc1Swenshuai.xi {
7837*53ee8cc1Swenshuai.xi     switch (eAvType)
7838*53ee8cc1Swenshuai.xi     {
7839*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7840*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
7841*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
7842*53ee8cc1Swenshuai.xi             break;
7843*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
7844*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
7845*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
7846*53ee8cc1Swenshuai.xi             break;
7847*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7848*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
7849*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
7850*53ee8cc1Swenshuai.xi             break;
7851*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7852*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
7853*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
7854*53ee8cc1Swenshuai.xi             break;
7855*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7856*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADC_CLR);
7857*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADC_CLR);
7858*53ee8cc1Swenshuai.xi             break;
7859*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7860*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADD_CLR);
7861*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADD_CLR);
7862*53ee8cc1Swenshuai.xi             break;
7863*53ee8cc1Swenshuai.xi         default :
7864*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7865*53ee8cc1Swenshuai.xi             break;
7866*53ee8cc1Swenshuai.xi     }
7867*53ee8cc1Swenshuai.xi }
7868*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)7869*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)
7870*53ee8cc1Swenshuai.xi {
7871*53ee8cc1Swenshuai.xi     switch (eAvType)
7872*53ee8cc1Swenshuai.xi     {
7873*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7874*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
7875*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
7876*53ee8cc1Swenshuai.xi             break;
7877*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7878*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
7879*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
7880*53ee8cc1Swenshuai.xi             break;
7881*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7882*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
7883*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
7884*53ee8cc1Swenshuai.xi             break;
7885*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7886*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
7887*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
7888*53ee8cc1Swenshuai.xi             break;
7889*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7890*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
7891*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
7892*53ee8cc1Swenshuai.xi             break;
7893*53ee8cc1Swenshuai.xi         default :
7894*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7895*53ee8cc1Swenshuai.xi             break;
7896*53ee8cc1Swenshuai.xi     }
7897*53ee8cc1Swenshuai.xi }
7898*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)7899*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)
7900*53ee8cc1Swenshuai.xi {
7901*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
7902*53ee8cc1Swenshuai.xi 
7903*53ee8cc1Swenshuai.xi     switch(u32TsIf)
7904*53ee8cc1Swenshuai.xi     {
7905*53ee8cc1Swenshuai.xi         case 0:
7906*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
7907*53ee8cc1Swenshuai.xi             break;
7908*53ee8cc1Swenshuai.xi         case 1:
7909*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
7910*53ee8cc1Swenshuai.xi             break;
7911*53ee8cc1Swenshuai.xi         case 2:
7912*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
7913*53ee8cc1Swenshuai.xi             break;
7914*53ee8cc1Swenshuai.xi         case 3:
7915*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
7916*53ee8cc1Swenshuai.xi             break;
7917*53ee8cc1Swenshuai.xi         default:
7918*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7919*53ee8cc1Swenshuai.xi             break;
7920*53ee8cc1Swenshuai.xi     }
7921*53ee8cc1Swenshuai.xi 
7922*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_ERR_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_ERR_PKT_SRC_SEL_SHIFT));
7923*53ee8cc1Swenshuai.xi }
7924*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)7925*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
7926*53ee8cc1Swenshuai.xi {
7927*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7928*53ee8cc1Swenshuai.xi     {
7929*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7930*53ee8cc1Swenshuai.xi         {
7931*53ee8cc1Swenshuai.xi             case 0:
7932*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
7933*53ee8cc1Swenshuai.xi                 break;
7934*53ee8cc1Swenshuai.xi             case 1:
7935*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
7936*53ee8cc1Swenshuai.xi                 break;
7937*53ee8cc1Swenshuai.xi             case 2:
7938*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
7939*53ee8cc1Swenshuai.xi                 break;
7940*53ee8cc1Swenshuai.xi             case 3:
7941*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_3_LOAD);
7942*53ee8cc1Swenshuai.xi                 break;
7943*53ee8cc1Swenshuai.xi             default:
7944*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7945*53ee8cc1Swenshuai.xi                 break;
7946*53ee8cc1Swenshuai.xi         }
7947*53ee8cc1Swenshuai.xi     }
7948*53ee8cc1Swenshuai.xi     else
7949*53ee8cc1Swenshuai.xi     {
7950*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7951*53ee8cc1Swenshuai.xi         {
7952*53ee8cc1Swenshuai.xi             case 0:
7953*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
7954*53ee8cc1Swenshuai.xi                 break;
7955*53ee8cc1Swenshuai.xi             case 1:
7956*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
7957*53ee8cc1Swenshuai.xi                 break;
7958*53ee8cc1Swenshuai.xi             case 2:
7959*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
7960*53ee8cc1Swenshuai.xi                 break;
7961*53ee8cc1Swenshuai.xi             case 3:
7962*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_3_LOAD);
7963*53ee8cc1Swenshuai.xi                 break;
7964*53ee8cc1Swenshuai.xi             default:
7965*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7966*53ee8cc1Swenshuai.xi                 break;
7967*53ee8cc1Swenshuai.xi         }
7968*53ee8cc1Swenshuai.xi     }
7969*53ee8cc1Swenshuai.xi 
7970*53ee8cc1Swenshuai.xi }
7971*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Get(void)7972*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_ErrPktCnt_Get(void)
7973*53ee8cc1Swenshuai.xi {
7974*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Err_PKT_Cnt);
7975*53ee8cc1Swenshuai.xi }
7976*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)7977*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)
7978*53ee8cc1Swenshuai.xi {
7979*53ee8cc1Swenshuai.xi     switch (u32Tsif)
7980*53ee8cc1Swenshuai.xi     {
7981*53ee8cc1Swenshuai.xi         case 0 :
7982*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
7983*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
7984*53ee8cc1Swenshuai.xi             break;
7985*53ee8cc1Swenshuai.xi         case 1:
7986*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
7987*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
7988*53ee8cc1Swenshuai.xi             break;
7989*53ee8cc1Swenshuai.xi         case 2 :
7990*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
7991*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
7992*53ee8cc1Swenshuai.xi             break;
7993*53ee8cc1Swenshuai.xi         case 3 :
7994*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_3_CLR);
7995*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_3_CLR);
7996*53ee8cc1Swenshuai.xi             break;
7997*53ee8cc1Swenshuai.xi 
7998*53ee8cc1Swenshuai.xi         default :
7999*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
8000*53ee8cc1Swenshuai.xi             break;
8001*53ee8cc1Swenshuai.xi     }
8002*53ee8cc1Swenshuai.xi }
8003*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)8004*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)
8005*53ee8cc1Swenshuai.xi {
8006*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
8007*53ee8cc1Swenshuai.xi 
8008*53ee8cc1Swenshuai.xi     switch(u32TsIf)
8009*53ee8cc1Swenshuai.xi     {
8010*53ee8cc1Swenshuai.xi         case 0:
8011*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
8012*53ee8cc1Swenshuai.xi             break;
8013*53ee8cc1Swenshuai.xi         case 1:
8014*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
8015*53ee8cc1Swenshuai.xi             break;
8016*53ee8cc1Swenshuai.xi         case 2:
8017*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
8018*53ee8cc1Swenshuai.xi             break;
8019*53ee8cc1Swenshuai.xi         case 3:
8020*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
8021*53ee8cc1Swenshuai.xi             break;
8022*53ee8cc1Swenshuai.xi         default:
8023*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8024*53ee8cc1Swenshuai.xi             break;
8025*53ee8cc1Swenshuai.xi     }
8026*53ee8cc1Swenshuai.xi 
8027*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_INPUT_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_INPUT_PKT_SRC_SEL_SHIT));
8028*53ee8cc1Swenshuai.xi }
8029*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)8030*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
8031*53ee8cc1Swenshuai.xi {
8032*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8033*53ee8cc1Swenshuai.xi     {
8034*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8035*53ee8cc1Swenshuai.xi         {
8036*53ee8cc1Swenshuai.xi             case 0:
8037*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
8038*53ee8cc1Swenshuai.xi                 break;
8039*53ee8cc1Swenshuai.xi             case 1:
8040*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
8041*53ee8cc1Swenshuai.xi                 break;
8042*53ee8cc1Swenshuai.xi             case 2:
8043*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
8044*53ee8cc1Swenshuai.xi                 break;
8045*53ee8cc1Swenshuai.xi             case 3:
8046*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_3_LOAD);
8047*53ee8cc1Swenshuai.xi                 break;
8048*53ee8cc1Swenshuai.xi             default:
8049*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8050*53ee8cc1Swenshuai.xi                 break;
8051*53ee8cc1Swenshuai.xi         }
8052*53ee8cc1Swenshuai.xi     }
8053*53ee8cc1Swenshuai.xi     else
8054*53ee8cc1Swenshuai.xi     {
8055*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8056*53ee8cc1Swenshuai.xi         {
8057*53ee8cc1Swenshuai.xi             case 0:
8058*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
8059*53ee8cc1Swenshuai.xi                 break;
8060*53ee8cc1Swenshuai.xi             case 1:
8061*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
8062*53ee8cc1Swenshuai.xi                 break;
8063*53ee8cc1Swenshuai.xi             case 2:
8064*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
8065*53ee8cc1Swenshuai.xi                 break;
8066*53ee8cc1Swenshuai.xi             case 3:
8067*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_3_LOAD);
8068*53ee8cc1Swenshuai.xi                 break;
8069*53ee8cc1Swenshuai.xi             default:
8070*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8071*53ee8cc1Swenshuai.xi                 break;
8072*53ee8cc1Swenshuai.xi         }
8073*53ee8cc1Swenshuai.xi     }
8074*53ee8cc1Swenshuai.xi }
8075*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Get(void)8076*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_InputPktCnt_Get(void)
8077*53ee8cc1Swenshuai.xi {
8078*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Input_PKT_Cnt);
8079*53ee8cc1Swenshuai.xi }
8080*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)8081*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)
8082*53ee8cc1Swenshuai.xi {
8083*53ee8cc1Swenshuai.xi     switch (u32Tsif)
8084*53ee8cc1Swenshuai.xi     {
8085*53ee8cc1Swenshuai.xi         case 0 :
8086*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
8087*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
8088*53ee8cc1Swenshuai.xi             break;
8089*53ee8cc1Swenshuai.xi         case 1:
8090*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
8091*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
8092*53ee8cc1Swenshuai.xi             break;
8093*53ee8cc1Swenshuai.xi         case 2 :
8094*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
8095*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
8096*53ee8cc1Swenshuai.xi             break;
8097*53ee8cc1Swenshuai.xi         case 3 :
8098*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_3_CLR);
8099*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_3_CLR);
8100*53ee8cc1Swenshuai.xi             break;
8101*53ee8cc1Swenshuai.xi 
8102*53ee8cc1Swenshuai.xi         default :
8103*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
8104*53ee8cc1Swenshuai.xi             break;
8105*53ee8cc1Swenshuai.xi     }
8106*53ee8cc1Swenshuai.xi 
8107*53ee8cc1Swenshuai.xi }
8108*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng,MS_U32 u32FQSrc)8109*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng, MS_U32 u32FQSrc)
8110*53ee8cc1Swenshuai.xi {
8111*53ee8cc1Swenshuai.xi     // not support
8112*53ee8cc1Swenshuai.xi     HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_INFO, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupport feature!\n",__FILE__,__FUNCTION__,__LINE__));
8113*53ee8cc1Swenshuai.xi     return FALSE;
8114*53ee8cc1Swenshuai.xi }
8115*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)8116*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)
8117*53ee8cc1Swenshuai.xi {
8118*53ee8cc1Swenshuai.xi    // not support
8119*53ee8cc1Swenshuai.xi     HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_INFO, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupport feature!\n",__FILE__,__FUNCTION__,__LINE__));
8120*53ee8cc1Swenshuai.xi     return 0xFF;
8121*53ee8cc1Swenshuai.xi }
8122*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng,MS_BOOL bFltNull)8123*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng, MS_BOOL bFltNull)
8124*53ee8cc1Swenshuai.xi {
8125*53ee8cc1Swenshuai.xi     if(KANOU03)
8126*53ee8cc1Swenshuai.xi     {
8127*53ee8cc1Swenshuai.xi         if(bFltNull)
8128*53ee8cc1Swenshuai.xi         {
8129*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_FILTER_NULL_PKT);
8130*53ee8cc1Swenshuai.xi         }
8131*53ee8cc1Swenshuai.xi         else
8132*53ee8cc1Swenshuai.xi         {
8133*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_FILTER_NULL_PKT);
8134*53ee8cc1Swenshuai.xi         }
8135*53ee8cc1Swenshuai.xi         return TRUE;
8136*53ee8cc1Swenshuai.xi     }
8137*53ee8cc1Swenshuai.xi     else
8138*53ee8cc1Swenshuai.xi     {
8139*53ee8cc1Swenshuai.xi         // not support
8140*53ee8cc1Swenshuai.xi         HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupport feature!\n",__FILE__,__FUNCTION__,__LINE__));
8141*53ee8cc1Swenshuai.xi         return FALSE;
8142*53ee8cc1Swenshuai.xi     }
8143*53ee8cc1Swenshuai.xi }
8144*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_MMFI_MIU_Sel(TSP_HAL_MIU_SEL_TYPE eType,MS_U8 u8Eng,MS_PHY phyBufStart)8145*53ee8cc1Swenshuai.xi void HAL_TSP_FQ_MMFI_MIU_Sel(TSP_HAL_MIU_SEL_TYPE eType, MS_U8 u8Eng, MS_PHY phyBufStart)
8146*53ee8cc1Swenshuai.xi {
8147*53ee8cc1Swenshuai.xi     MS_U8   u8MiuSel = 0;
8148*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffsetFileinAddr = 0;
8149*53ee8cc1Swenshuai.xi     MS_U8   u8Shift = u8Eng * TSP_MIU_SEL_BITS_LEN;
8150*53ee8cc1Swenshuai.xi 
8151*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFileinAddr, phyBufStart);
8152*53ee8cc1Swenshuai.xi 
8153*53ee8cc1Swenshuai.xi     switch(eType)
8154*53ee8cc1Swenshuai.xi     {
8155*53ee8cc1Swenshuai.xi         case E_TSP_HAL_MIU_SEL_MMFI:
8156*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl6->CFG6_2C_REG_MIU_SEL_FILEIN_MM, (REG_MIU_SEL_MMFI0_MASK << u8Shift), (u8MiuSel << (REG_MIU_SEL_MMFI0_SHIFT + u8Shift)));
8157*53ee8cc1Swenshuai.xi             break;
8158*53ee8cc1Swenshuai.xi         case E_TSP_HAL_MIU_SEL_FQ:
8159*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl6->CFG6_2E_REG_MIU_PVR_FQ, (REG_MIU_SEL_FIQ0_MASK << u8Shift), (u8MiuSel << (REG_MIU_SEL_FIQ0_SHIFT + u8Shift)));
8160*53ee8cc1Swenshuai.xi             break;
8161*53ee8cc1Swenshuai.xi         default:
8162*53ee8cc1Swenshuai.xi             break;
8163*53ee8cc1Swenshuai.xi     }
8164*53ee8cc1Swenshuai.xi }
8165*53ee8cc1Swenshuai.xi 
8166*53ee8cc1Swenshuai.xi 
8167