xref: /utopia/UTPA2-700.0.x/modules/dmx/hal/k6lite/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 
29*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
30*53ee8cc1Swenshuai.xi     #include "drvCLKM.h"
31*53ee8cc1Swenshuai.xi #endif
32*53ee8cc1Swenshuai.xi 
33*53ee8cc1Swenshuai.xi #define TSP_MIU_SEL_BITS_LEN    2
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
36*53ee8cc1Swenshuai.xi //  Driver Compiler Option
37*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi 
40*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
41*53ee8cc1Swenshuai.xi //  TSP Hardware Abstraction Layer
42*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
43*53ee8cc1Swenshuai.xi MS_VIRT              _u32RegBase                       = 0;
44*53ee8cc1Swenshuai.xi 
45*53ee8cc1Swenshuai.xi static REG_Ctrl*    _RegCtrl                          = NULL;    // TSP0 and TSP1
46*53ee8cc1Swenshuai.xi static REG_Ctrl2*   _RegCtrl2                         = NULL;    // TSP3
47*53ee8cc1Swenshuai.xi static REG_Ctrl3*   _RegCtrl3                         = NULL;    // TSP4
48*53ee8cc1Swenshuai.xi static REG_Ctrl4*   _RegCtrl4                         = NULL;    // TSP6
49*53ee8cc1Swenshuai.xi static REG_Ctrl5*   _RegCtrl5                         = NULL;    // TSP7
50*53ee8cc1Swenshuai.xi static REG_Ctrl6*   _RegCtrl6                         = NULL;    // TSP8
51*53ee8cc1Swenshuai.xi static REG_Ctrl7*   _RegCtrl7                         = NULL;    // TSP9
52*53ee8cc1Swenshuai.xi static REG_Ctrl8*   _RegCtrl8                         = NULL;    // TSP10
53*53ee8cc1Swenshuai.xi static REG_Ctrl8_1* _RegCtrl8_1                       = NULL;    // TSP10
54*53ee8cc1Swenshuai.xi 
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi 
57*53ee8cc1Swenshuai.xi 
58*53ee8cc1Swenshuai.xi // @F_TODO These parameters need to be combined with global variables in Utopia 2.0
59*53ee8cc1Swenshuai.xi static MS_U32                       _u32PidFltReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
60*53ee8cc1Swenshuai.xi static MS_U32                       _u32PidDstReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
61*53ee8cc1Swenshuai.xi static MS_U32                       _u32SecReg[(TSP_SECFLT_NUM * ((sizeof(REG_SecFlt) - sizeof(((REG_SecFlt*)0)->_x50))/sizeof(TSP32)))];
62*53ee8cc1Swenshuai.xi 
63*53ee8cc1Swenshuai.xi 
64*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
65*53ee8cc1Swenshuai.xi //  Local Functions
66*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
67*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value);
68*53ee8cc1Swenshuai.xi 
_delay(MS_U32 usec)69*53ee8cc1Swenshuai.xi static void _delay(MS_U32 usec)
70*53ee8cc1Swenshuai.xi {
71*53ee8cc1Swenshuai.xi     MsOS_DelayTaskUs_Poll(usec);
72*53ee8cc1Swenshuai.xi }
73*53ee8cc1Swenshuai.xi 
REG32_R(REG32 * reg)74*53ee8cc1Swenshuai.xi static MS_U32 REG32_R(REG32 *reg)
75*53ee8cc1Swenshuai.xi {
76*53ee8cc1Swenshuai.xi     MS_U32              value = 0;
77*53ee8cc1Swenshuai.xi     value  = (reg)->low;
78*53ee8cc1Swenshuai.xi     value |= (reg)->high << 16;
79*53ee8cc1Swenshuai.xi     return value;
80*53ee8cc1Swenshuai.xi }
81*53ee8cc1Swenshuai.xi 
82*53ee8cc1Swenshuai.xi 
REG16_R(REG16 * reg)83*53ee8cc1Swenshuai.xi static MS_U16 REG16_R(REG16 *reg)
84*53ee8cc1Swenshuai.xi {
85*53ee8cc1Swenshuai.xi     MS_U16              value = 0;
86*53ee8cc1Swenshuai.xi     value = (reg)->data;
87*53ee8cc1Swenshuai.xi     return value;
88*53ee8cc1Swenshuai.xi }
89*53ee8cc1Swenshuai.xi 
90*53ee8cc1Swenshuai.xi static MS_BOOL _u32RegDump = 0;
91*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32 * reg, MS_U32 value );
92*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16 * reg, MS_U16 value);
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi #if 0
95*53ee8cc1Swenshuai.xi #define REG32_W(reg, value);    { (reg)->low = ((value) & 0x0000FFFF);                          \
96*53ee8cc1Swenshuai.xi                                   (reg)->high = ((value) >> 16);\
97*53ee8cc1Swenshuai.xi                                   if(_u32RegDump)\
98*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);\
99*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);}}
100*53ee8cc1Swenshuai.xi 
101*53ee8cc1Swenshuai.xi #define REG16_W(reg, value);    {(reg)->data = ((value) & 0x0000FFFF);\
102*53ee8cc1Swenshuai.xi                                   if(_u32RegDump)\
103*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);}}
104*53ee8cc1Swenshuai.xi #endif
105*53ee8cc1Swenshuai.xi #define REG32_W(reg, value)     { (reg)->low = ((value) & 0x0000FFFF);                          \
106*53ee8cc1Swenshuai.xi                                   (reg)->high = ((value) >> 16);\
107*53ee8cc1Swenshuai.xi                                 if(_u32RegDump){_REG32_DUMP(reg, value);}}
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi #define REG16_W(reg, value)     {(reg)->data = ((value) & 0x0000FFFF);\
110*53ee8cc1Swenshuai.xi                                 if(_u32RegDump){_REG16_DUMP(reg, value);}}
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi #define _AND_(flag, bit)            ((flag) &   (bit) )
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi #define _SET_(flag, bit)            ((flag) |   (bit) )
116*53ee8cc1Swenshuai.xi #define _CLR_(flag, bit)            ((flag) & (~(bit)))
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi #define REG16_SET(reg, value)    REG16_W(reg, _SET_(REG16_R(reg), value))
119*53ee8cc1Swenshuai.xi #define REG32_SET(reg, value)    REG32_W(reg, _SET_(REG32_R(reg), value))
120*53ee8cc1Swenshuai.xi #define REG16_CLR(reg, value)    REG16_W(reg, _CLR_(REG16_R(reg), value))
121*53ee8cc1Swenshuai.xi #define REG32_CLR(reg, value)    REG32_W(reg, _CLR_(REG32_R(reg), value))
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi #define REG16_MSK_W(reg, mask, value)    REG16_W((reg), _CLR_(REG16_R(reg), (mask)) | _AND_((value), (mask)))
124*53ee8cc1Swenshuai.xi #define REG32_MSK_W(reg, mask, value)    REG32_W((reg), _CLR_(REG32_R(reg), (mask)) | _AND_((value), (mask)))
125*53ee8cc1Swenshuai.xi 
126*53ee8cc1Swenshuai.xi #define MIU_BUS (4)
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
130*53ee8cc1Swenshuai.xi //  Debug Message
131*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
132*53ee8cc1Swenshuai.xi typedef enum
133*53ee8cc1Swenshuai.xi {
134*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_NONE,   // no debug message shown
135*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_ERR,    // only shows error message that can't be recover
136*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_WARN,   // error case can be recover, like retry
137*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_EVENT,  // event that is okay but better known, ex: timestamp ring, file circular, etc.
138*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_INFO,   // information for internal parameter
139*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_FUNC,   // Function trace and input parameter trace
140*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_TRACE,  // debug trace
141*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_LEVEL;
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi typedef enum
144*53ee8cc1Swenshuai.xi {
145*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_MODEL_NONE,         // @temporarily , need to refine
146*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_MODEL_ALL,
147*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_MODEL;
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi #define HAL_TSP_DBGMSG(_level,_model,_f) do {if(_u32TSPDbgLevel >= (_level)&&((_u32TSPDbgModel&_model)!=0)) (_f);} while(0)
150*53ee8cc1Swenshuai.xi static MS_U32  _u32TSPDbgLevel = E_HAL_TSP_DBG_LEVEL_ERR;
151*53ee8cc1Swenshuai.xi static MS_U32  _u32TSPDbgModel = E_HAL_TSP_DBG_MODEL_ALL;
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi 
154*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
155*53ee8cc1Swenshuai.xi //  Implementation
156*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
TSP32_IdrW(TSP32 * preg,MS_U32 value)157*53ee8cc1Swenshuai.xi void TSP32_IdrW(TSP32 *preg, MS_U32 value)
158*53ee8cc1Swenshuai.xi {
159*53ee8cc1Swenshuai.xi     MS_U32 tempDump = _u32RegDump;
160*53ee8cc1Swenshuai.xi     if(_u32RegDump)
161*53ee8cc1Swenshuai.xi     {
162*53ee8cc1Swenshuai.xi         //test_chip_top.write_ind32('h00221004, 32'hffffffff);  //indirect .... (address,data)
163*53ee8cc1Swenshuai.xi         _u32RegDump = 0;
164*53ee8cc1Swenshuai.xi         printf("test_chip_top.write_ind32(\'h%08lx, 32\'h%08lx);\n", (long unsigned int)preg, (long unsigned int)value);
165*53ee8cc1Swenshuai.xi     }
166*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Addr, (MS_VIRT)preg);
167*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Write, value);
168*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_WRITE);
169*53ee8cc1Swenshuai.xi     _u32RegDump = tempDump;
170*53ee8cc1Swenshuai.xi }
171*53ee8cc1Swenshuai.xi 
TSP32_IdrR(TSP32 * preg)172*53ee8cc1Swenshuai.xi MS_U32 TSP32_IdrR(TSP32 *preg)
173*53ee8cc1Swenshuai.xi {
174*53ee8cc1Swenshuai.xi     MS_U32 tempDump = _u32RegDump;
175*53ee8cc1Swenshuai.xi     if(_u32RegDump)
176*53ee8cc1Swenshuai.xi     {
177*53ee8cc1Swenshuai.xi         _u32RegDump = 0;
178*53ee8cc1Swenshuai.xi     }
179*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Addr,  (MS_VIRT)preg);
180*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_READ);
181*53ee8cc1Swenshuai.xi     _u32RegDump = tempDump;
182*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->Idr_Read);
183*53ee8cc1Swenshuai.xi }
184*53ee8cc1Swenshuai.xi 
HAL_TSP_SetBank(MS_VIRT u32BankAddr)185*53ee8cc1Swenshuai.xi void HAL_TSP_SetBank(MS_VIRT u32BankAddr)
186*53ee8cc1Swenshuai.xi {
187*53ee8cc1Swenshuai.xi     _u32RegBase = u32BankAddr;
188*53ee8cc1Swenshuai.xi     _RegCtrl    = (REG_Ctrl*) (u32BankAddr  + 0x2A00UL);      // TSP0  0x1015, TSP1 0x1016
189*53ee8cc1Swenshuai.xi     _RegCtrl2   = (REG_Ctrl2*)(u32BankAddr  + 0xE0400UL);     // TSP3  0x1702,
190*53ee8cc1Swenshuai.xi     _RegCtrl3   = (REG_Ctrl3*)(u32BankAddr  + 0xE0600UL);     // TSP4  0x1703
191*53ee8cc1Swenshuai.xi     _RegCtrl4   = (REG_Ctrl4*)(u32BankAddr  + 0xC2000UL);     // TSP6  0x1610
192*53ee8cc1Swenshuai.xi     _RegCtrl5   = (REG_Ctrl5*)(u32BankAddr  + 0xC2200UL);     // TSP7  0x1611
193*53ee8cc1Swenshuai.xi     _RegCtrl6   = (REG_Ctrl6*)(u32BankAddr  + 0xC4E00UL);     // TSP8  0x1627
194*53ee8cc1Swenshuai.xi     _RegCtrl7   = (REG_Ctrl7*)(u32BankAddr  + 0xE1800UL);     // TSP9  0x170C
195*53ee8cc1Swenshuai.xi     _RegCtrl8   = (REG_Ctrl8*)(u32BankAddr  + 0xE1A00UL);     // TSP10 0x170D
196*53ee8cc1Swenshuai.xi     _RegCtrl8_1 = (REG_Ctrl8_1*)(u32BankAddr  + 0xE1B00UL);   // TSP10 0x170D , offset(16-bits): 0x40
197*53ee8cc1Swenshuai.xi }
198*53ee8cc1Swenshuai.xi 
HAL_TSP_RegDump(MS_BOOL bEnable)199*53ee8cc1Swenshuai.xi void HAL_TSP_RegDump(MS_BOOL bEnable)
200*53ee8cc1Swenshuai.xi {
201*53ee8cc1Swenshuai.xi     _u32RegDump = bEnable;
202*53ee8cc1Swenshuai.xi }
203*53ee8cc1Swenshuai.xi #if 1
_REG32_DUMP(REG32 * reg,MS_U32 value)204*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32* reg, MS_U32 value )
205*53ee8cc1Swenshuai.xi {
206*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a);   //..bank 15 ,7h06 ....reg ,16h400a ......
207*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7h06 ....reg ,16h400a ......
208*53ee8cc1Swenshuai.xi     //`RIU_W((24'h103800>>1) +  7'h56 ,  2'b11, 16'h0000); //....bank 038
209*53ee8cc1Swenshuai.xi     MS_U32 bank = ((MS_VIRT)(&(reg)->low) - _u32RegBase)>>(1+8);
210*53ee8cc1Swenshuai.xi     MS_U32 addr_low = ((((MS_VIRT)(&(reg)->low) - _u32RegBase)>>1)&0xFF)>>1;
211*53ee8cc1Swenshuai.xi     MS_U32 addr_high = ((((MS_VIRT)(&(reg)->high) - _u32RegBase)>>1)&0xFF)>>1;
212*53ee8cc1Swenshuai.xi     MS_U32 val_low  = (value) & 0x0000FFFF;
213*53ee8cc1Swenshuai.xi     MS_U32 val_high  = ((value) & 0xFFFF0000 )>>16;
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi     if(bank == 0x15)
216*53ee8cc1Swenshuai.xi     {
217*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);
218*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);
219*53ee8cc1Swenshuai.xi     }
220*53ee8cc1Swenshuai.xi     else if(bank == 0x16)
221*53ee8cc1Swenshuai.xi     {
222*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);
223*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);
224*53ee8cc1Swenshuai.xi     }
225*53ee8cc1Swenshuai.xi     else if(bank == 0x38)
226*53ee8cc1Swenshuai.xi     {
227*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);
228*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);
229*53ee8cc1Swenshuai.xi     }
230*53ee8cc1Swenshuai.xi }
_REG16_DUMP(REG16 * reg,MS_U16 value)231*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16* reg, MS_U16 value )
232*53ee8cc1Swenshuai.xi {
233*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a);   //..bank 15 ,7h06 ....reg ,16h400a ......
234*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7h06 ....reg ,16h400a ......
235*53ee8cc1Swenshuai.xi     //`RIU_W((24'h103800>>1) +  7'h56 ,  2'b11, 16'h0000); //....bank 038
236*53ee8cc1Swenshuai.xi     MS_U32 bank = ((MS_VIRT)(&(reg)) - _u32RegBase)>>(1+8);
237*53ee8cc1Swenshuai.xi     MS_U32 addr = ((((MS_VIRT)(&(reg)) - _u32RegBase)>>1)&0xFF)>>1;
238*53ee8cc1Swenshuai.xi     MS_U32 val  = (value) & 0x0000FFFF;
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi     if(bank == 0x15)
241*53ee8cc1Swenshuai.xi     {
242*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);
243*53ee8cc1Swenshuai.xi     }
244*53ee8cc1Swenshuai.xi     else if(bank == 0x16)
245*53ee8cc1Swenshuai.xi     {
246*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);
247*53ee8cc1Swenshuai.xi     }
248*53ee8cc1Swenshuai.xi     else if(bank == 0x38)
249*53ee8cc1Swenshuai.xi     {
250*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);
251*53ee8cc1Swenshuai.xi     }
252*53ee8cc1Swenshuai.xi }
253*53ee8cc1Swenshuai.xi #endif
254*53ee8cc1Swenshuai.xi 
HAL_TSP_HwPatch(void)255*53ee8cc1Swenshuai.xi void HAL_TSP_HwPatch(void)
256*53ee8cc1Swenshuai.xi {
257*53ee8cc1Swenshuai.xi     //For sram
258*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_HW_STANDBY_MODE);
259*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi     // @F_TODO check these setting with Stephen
262*53ee8cc1Swenshuai.xi     // TSP_HW_CFG4_WSTAT_CH_EN <--this is bit disable HW sync section buf id with section filter id
263*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);
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi     // Bad initial value of TSP_CTRL1
266*53ee8cc1Swenshuai.xi     // Suppose Standby mode for TSP should NOT be enabled.
267*53ee8cc1Swenshuai.xi     // Enabling TSP standby mode cause TSP section registers (SRAM in AEON) malfunction.
268*53ee8cc1Swenshuai.xi     // Disable it by SW at this stage.
269*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_STANDBY);
270*53ee8cc1Swenshuai.xi 
271*53ee8cc1Swenshuai.xi     //enable PVR record to bypass header
272*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b4, TSP_PVR_PID_BYPASS|TSP_PVR_PID_BYPASS2);
273*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PID_BYPASS3_REC);
274*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PID_BYPASS4_REC);
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi     // load lpcr1 for all pvr engines, HW default value may be wrong
277*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
278*53ee8cc1Swenshuai.xi     REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
279*53ee8cc1Swenshuai.xi     REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
280*53ee8cc1Swenshuai.xi     REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
281*53ee8cc1Swenshuai.xi 
282*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
283*53ee8cc1Swenshuai.xi 
284*53ee8cc1Swenshuai.xi     //Disable TSP_RM_OVF_GLITCH to fix that section A would occur overflow when section B occured overflow at first.
285*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ2PINGPONG_EN | TSP_RM_PKT_DEMUX_PIPE /*| TSP_PVR1_ALIGN_EN*/);
286*53ee8cc1Swenshuai.xi 
287*53ee8cc1Swenshuai.xi     //Disable all live pathes block mechanism
288*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160C, TSP_DOUBLE_BUF_DESC/*| TSP_VQTX0_BLOCK_DIS|TSP_VQTX2_BLOCK_DIS|TSP_VQTX3_BLOCK_DIS*/);
289*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160E, TSP_RM_DMA_GLITCH);
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PUSI_3BYTE_MODE); //Enable audio 3 byte mode
292*53ee8cc1Swenshuai.xi 
293*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi     //record null packets for record-all case
296*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->PVRConfig, TSP_MATCH_PID_LD | TSP_REC_NULL);
297*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BLK_AD_SCMBTIS_TSP);
298*53ee8cc1Swenshuai.xi 
299*53ee8cc1Swenshuai.xi     //Disable pvr1 & pvr2 block mechanism
300*53ee8cc1Swenshuai.xi     //DisableAV FIFO block mechanism for live path
301*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
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi     // Serial mode config
304*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_SERIAL_EXT_SYNC_1T);
305*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_SYNC_RISING_DETECT);
306*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_VALID_FALLING_DETECT)
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi     // Internal Sync Patch
309*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_DATA_CHK_2T);
310*53ee8cc1Swenshuai.xi 
311*53ee8cc1Swenshuai.xi     // Chip after Kirin will lost data when byte timer enable and delay set to 0 setting this bit to fix this issue
312*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_FIX_192_TIMER_0_EN);
313*53ee8cc1Swenshuai.xi 
314*53ee8cc1Swenshuai.xi     // Fix load fw secure issue (dma_start = 1 , polling dma_done , dma_start = 0)
315*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_16, CFG3_16_FIXED_DMA_RSTART_OTP_ONEWAY_LOAD_FW);
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi     // Fix pass_pkt_timestamp will hang issue
318*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_60, TSP_INIT_TIMESTAMP_RESTART_EN);
319*53ee8cc1Swenshuai.xi 
320*53ee8cc1Swenshuai.xi     // Merge stream through FIQ ECO config
321*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2B, TSP_ECO_TS_SYNC_OUT_DELAY);
322*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2B, TSP_ECO_TS_SYNC_OUT_REVERSE_BLOCK);
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi     // Fix filter null packet
325*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2B, TSP_FIX_FILTER_NULL_PKT);
326*53ee8cc1Swenshuai.xi 
327*53ee8cc1Swenshuai.xi     // Fixed miu_req & miu_last
328*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2A, FIXED_VQ_MIU_REG_FLUSH);
329*53ee8cc1Swenshuai.xi 
330*53ee8cc1Swenshuai.xi     // Fixed PVR eng write pointer to next addr
331*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2A, PVR_WRITE_POINTER_TO_NEXT_ADDRESS_EN);
332*53ee8cc1Swenshuai.xi }
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi // ------------ initial config ------------
335*53ee8cc1Swenshuai.xi // Sync Byte: 0x47 , 0x48 .... , 0x4e
336*53ee8cc1Swenshuai.xi // Source id : 0 , 1 , ... , 7
337*53ee8cc1Swenshuai.xi // User can use "HAL_TSP_PktConverter_SetSyncByte()" to change Sync Byte configuration
338*53ee8cc1Swenshuai.xi // , and use "HAL_TSP_PktConverter_SetSrcId()" to change Source id configuration
HAL_TSP_PktConverter_Init(void)339*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_Init(void)
340*53ee8cc1Swenshuai.xi {
341*53ee8cc1Swenshuai.xi     MS_U8   u8Path, u8Idx;
342*53ee8cc1Swenshuai.xi     MS_U8   u8SyncByte, u8SrcId;
343*53ee8cc1Swenshuai.xi 
344*53ee8cc1Swenshuai.xi     for(u8Path = 0; u8Path < TSP_TSIF_NUM; ++u8Path)
345*53ee8cc1Swenshuai.xi     {
346*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_ForceSync(u8Path,TRUE); //default: FALSE
347*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SrcIdFlt(u8Path,TRUE);  //default: FALSE
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi         u8SyncByte = 0x47;
350*53ee8cc1Swenshuai.xi         u8SrcId = 0;
351*53ee8cc1Swenshuai.xi 
352*53ee8cc1Swenshuai.xi         for(u8Idx = 0; u8Idx < TSP_MERGESTREAM_NUM; ++u8Idx,++u8SyncByte,++u8SrcId)
353*53ee8cc1Swenshuai.xi         {
354*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Idx, &u8SyncByte, TRUE);
355*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetSrcId(u8Path, u8Idx, &u8SrcId, TRUE);
356*53ee8cc1Swenshuai.xi         }
357*53ee8cc1Swenshuai.xi     }
358*53ee8cc1Swenshuai.xi }
359*53ee8cc1Swenshuai.xi 
360*53ee8cc1Swenshuai.xi 
HAL_TSP_Reset(MS_BOOL bEn)361*53ee8cc1Swenshuai.xi void HAL_TSP_Reset(MS_BOOL bEn)
362*53ee8cc1Swenshuai.xi {
363*53ee8cc1Swenshuai.xi     //MS_U16              reg;
364*53ee8cc1Swenshuai.xi 
365*53ee8cc1Swenshuai.xi     if (bEn)
366*53ee8cc1Swenshuai.xi     {
367*53ee8cc1Swenshuai.xi     #if 0
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi         // WB DMA source won't be reset by SW_RST bit so we use HWPATCH to make it's source to default
370*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
371*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
372*53ee8cc1Swenshuai.xi 
373*53ee8cc1Swenshuai.xi     #endif
374*53ee8cc1Swenshuai.xi         // reset CMDQ for tsif 0~3
375*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
376*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
377*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
378*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
379*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
380*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
381*53ee8cc1Swenshuai.xi     }
382*53ee8cc1Swenshuai.xi     else
383*53ee8cc1Swenshuai.xi     {
384*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
387*53ee8cc1Swenshuai.xi         // set CMDQ for tsif 0~3
388*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
389*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
390*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
391*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
392*53ee8cc1Swenshuai.xi     }
393*53ee8cc1Swenshuai.xi }
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi 
HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)396*53ee8cc1Swenshuai.xi void HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)
397*53ee8cc1Swenshuai.xi {
398*53ee8cc1Swenshuai.xi     switch(tsIf)
399*53ee8cc1Swenshuai.xi     {
400*53ee8cc1Swenshuai.xi         case 0: if(bEn)
401*53ee8cc1Swenshuai.xi                 {
402*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
403*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
404*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
405*53ee8cc1Swenshuai.xi                 }
406*53ee8cc1Swenshuai.xi                 else
407*53ee8cc1Swenshuai.xi                 {
408*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
409*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
410*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
411*53ee8cc1Swenshuai.xi                 }
412*53ee8cc1Swenshuai.xi                 break;
413*53ee8cc1Swenshuai.xi         case 1: if(bEn)
414*53ee8cc1Swenshuai.xi                 {
415*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
416*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
417*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
418*53ee8cc1Swenshuai.xi                 }
419*53ee8cc1Swenshuai.xi                 else
420*53ee8cc1Swenshuai.xi                 {
421*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
422*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
423*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
424*53ee8cc1Swenshuai.xi                 }
425*53ee8cc1Swenshuai.xi                 break;
426*53ee8cc1Swenshuai.xi         case 2: if(bEn)
427*53ee8cc1Swenshuai.xi                 {
428*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
429*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
430*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
431*53ee8cc1Swenshuai.xi                 }
432*53ee8cc1Swenshuai.xi                 else
433*53ee8cc1Swenshuai.xi                 {
434*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
435*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
436*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
437*53ee8cc1Swenshuai.xi                 }
438*53ee8cc1Swenshuai.xi                 break;
439*53ee8cc1Swenshuai.xi         case 3: if(bEn)
440*53ee8cc1Swenshuai.xi                 {
441*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_0A,CFG_0A_RST_TS_FIN3);
442*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT3);
443*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF3 | CFG_12_REG_REST_PDBF3);
444*53ee8cc1Swenshuai.xi                 }
445*53ee8cc1Swenshuai.xi                 else
446*53ee8cc1Swenshuai.xi                 {
447*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF3 | CFG_12_REG_REST_PDBF3);
448*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT3);
449*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_0A,CFG_0A_RST_TS_FIN3);
450*53ee8cc1Swenshuai.xi                 }
451*53ee8cc1Swenshuai.xi                 break;
452*53ee8cc1Swenshuai.xi         default: break;
453*53ee8cc1Swenshuai.xi     }
454*53ee8cc1Swenshuai.xi }
455*53ee8cc1Swenshuai.xi 
HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType,MS_U8 u8Index,ST_TSP_HAL_CLK_STATUS * pstClkStatus)456*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType, MS_U8 u8Index, ST_TSP_HAL_CLK_STATUS *pstClkStatus)
457*53ee8cc1Swenshuai.xi {
458*53ee8cc1Swenshuai.xi     switch(eClkType)
459*53ee8cc1Swenshuai.xi     {
460*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSP_CLK:
461*53ee8cc1Swenshuai.xi             pstClkStatus->bEnable = !(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_DISABLE);
462*53ee8cc1Swenshuai.xi             pstClkStatus->bInvert = !!(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_INVERT);
463*53ee8cc1Swenshuai.xi             pstClkStatus->u8ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_CLK_MASK) >> REG_CLKGEN0_TSP_SRC_SHIFT;
464*53ee8cc1Swenshuai.xi             break;
465*53ee8cc1Swenshuai.xi         default:
466*53ee8cc1Swenshuai.xi             return FALSE;
467*53ee8cc1Swenshuai.xi     }
468*53ee8cc1Swenshuai.xi 
469*53ee8cc1Swenshuai.xi     return TRUE;
470*53ee8cc1Swenshuai.xi }
471*53ee8cc1Swenshuai.xi 
HAL_TSP_Power(MS_BOOL bEn)472*53ee8cc1Swenshuai.xi void HAL_TSP_Power(MS_BOOL bEn)
473*53ee8cc1Swenshuai.xi {
474*53ee8cc1Swenshuai.xi     if(bEn)
475*53ee8cc1Swenshuai.xi     {
476*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
477*53ee8cc1Swenshuai.xi 
478*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
479*53ee8cc1Swenshuai.xi 
480*53ee8cc1Swenshuai.xi         // Enable TSP Clk
481*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tsp");
482*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TSP_FAST");
483*53ee8cc1Swenshuai.xi         // Enable STC1,2 Clk
484*53ee8cc1Swenshuai.xi         // STC0
485*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc0");
486*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STC0_BUF");
487*53ee8cc1Swenshuai.xi         // STC1
488*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc1");
489*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STC0_BUF");
490*53ee8cc1Swenshuai.xi         // Stamp
491*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stamp");
492*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STAMP_NORMAL");
493*53ee8cc1Swenshuai.xi         // Parser
494*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_parser");
495*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_PARSER_NORMAL");
496*53ee8cc1Swenshuai.xi         // Enable TSIF => Disable TSIF
497*53ee8cc1Swenshuai.xi         // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
498*53ee8cc1Swenshuai.xi         //TS0
499*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
500*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
501*53ee8cc1Swenshuai.xi         //TS1
502*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
503*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
504*53ee8cc1Swenshuai.xi         //TS2
505*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
506*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
507*53ee8cc1Swenshuai.xi         //TS3
508*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
509*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
510*53ee8cc1Swenshuai.xi 
511*53ee8cc1Swenshuai.xi         //TSO0
512*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
513*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TSOIN0_PAD0");
514*53ee8cc1Swenshuai.xi 
515*53ee8cc1Swenshuai.xi #else
516*53ee8cc1Swenshuai.xi 
517*53ee8cc1Swenshuai.xi         // Enable TSP Clk
518*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & ~REG_CLKGEN0_TSP_CLK_MASK)
519*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_TSP_SRC_192MHZ << REG_CLKGEN0_TSP_SRC_SHIFT);
520*53ee8cc1Swenshuai.xi         // Enable STC1,2 Clk
521*53ee8cc1Swenshuai.xi         // STC0
522*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) & ~REG_CLKGEN0_STC0_MASK)
523*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC0_SHIFT));
524*53ee8cc1Swenshuai.xi         // STC1
525*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) & ~REG_CLKGEN0_STC1_MASK)
526*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC1_SHIFT));
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi         // Stamp
529*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) & ~REG_CLKGEN0_STAMP_MASK);
530*53ee8cc1Swenshuai.xi 
531*53ee8cc1Swenshuai.xi         // Parser
532*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) & ~REG_CLKGEN0_PARSER_MASK);
533*53ee8cc1Swenshuai.xi 
534*53ee8cc1Swenshuai.xi         // Enable TSIF => Disable TSIF
535*53ee8cc1Swenshuai.xi         // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
536*53ee8cc1Swenshuai.xi         //TS0
537*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & ~REG_CLKGEN0_TS_MASK);
538*53ee8cc1Swenshuai.xi 
539*53ee8cc1Swenshuai.xi         //TS1
540*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS1_SHIFT));
541*53ee8cc1Swenshuai.xi 
542*53ee8cc1Swenshuai.xi         //TS2
543*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS2_SHIFT));
544*53ee8cc1Swenshuai.xi 
545*53ee8cc1Swenshuai.xi         //TS3
546*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS3_SHIFT));
547*53ee8cc1Swenshuai.xi 
548*53ee8cc1Swenshuai.xi         //TSO0
549*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK);
550*53ee8cc1Swenshuai.xi 
551*53ee8cc1Swenshuai.xi #endif
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi         // TSP Boot clk sel
554*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;
555*53ee8cc1Swenshuai.xi 
556*53ee8cc1Swenshuai.xi         // TSP SRAM sel
557*53ee8cc1Swenshuai.xi         TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) = TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) | REG_MMFI_TSP_SEL_SRAM_EN;
558*53ee8cc1Swenshuai.xi 
559*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
560*53ee8cc1Swenshuai.xi 
561*53ee8cc1Swenshuai.xi         // Disable MCM
562*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
563*53ee8cc1Swenshuai.xi     }
564*53ee8cc1Swenshuai.xi     else
565*53ee8cc1Swenshuai.xi     {
566*53ee8cc1Swenshuai.xi         // Enable MCM
567*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
568*53ee8cc1Swenshuai.xi 
569*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
570*53ee8cc1Swenshuai.xi 
571*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
572*53ee8cc1Swenshuai.xi 
573*53ee8cc1Swenshuai.xi         // Disable TSP Clk
574*53ee8cc1Swenshuai.xi         // [2016.10.11] Because AESDMA share clk with TSP. We can't disable TSP clk.
575*53ee8cc1Swenshuai.xi         // s32Handle = Drv_Clkm_Get_Handle("g_clk_tsp");
576*53ee8cc1Swenshuai.xi         // Drv_Clkm_Clk_Gate_Disable(s32Handle);
577*53ee8cc1Swenshuai.xi 
578*53ee8cc1Swenshuai.xi         // Disable STC Clk
579*53ee8cc1Swenshuai.xi         //STC0
580*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc0");
581*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
582*53ee8cc1Swenshuai.xi         //STC0
583*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc1");
584*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
585*53ee8cc1Swenshuai.xi         // Stamp
586*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stamp");
587*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
588*53ee8cc1Swenshuai.xi         // Parser
589*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_parser");
590*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
591*53ee8cc1Swenshuai.xi         //TS0
592*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
593*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
594*53ee8cc1Swenshuai.xi         //TS1
595*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
596*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
597*53ee8cc1Swenshuai.xi         //TS2
598*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
599*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
600*53ee8cc1Swenshuai.xi         //TS3
601*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
602*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi         //TSO0
605*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
606*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
607*53ee8cc1Swenshuai.xi 
608*53ee8cc1Swenshuai.xi #else
609*53ee8cc1Swenshuai.xi         // Disable TSP Clk
610*53ee8cc1Swenshuai.xi         // [2016.10.11] Because AESDMA share clk with TSP. We can't disable TSP clk.
611*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));
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi         // Disable STC Clk
614*53ee8cc1Swenshuai.xi         //STC0
615*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));
616*53ee8cc1Swenshuai.xi         //STC1
617*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));
618*53ee8cc1Swenshuai.xi 
619*53ee8cc1Swenshuai.xi         // Stamp
620*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));
621*53ee8cc1Swenshuai.xi 
622*53ee8cc1Swenshuai.xi         // Parser
623*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));
624*53ee8cc1Swenshuai.xi 
625*53ee8cc1Swenshuai.xi         // Disable TSIF clk
626*53ee8cc1Swenshuai.xi         //TS0
627*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));
628*53ee8cc1Swenshuai.xi         //TS1
629*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));
630*53ee8cc1Swenshuai.xi         //TS2
631*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));
632*53ee8cc1Swenshuai.xi         //TS3
633*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));
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi         //TSO0
636*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));
637*53ee8cc1Swenshuai.xi 
638*53ee8cc1Swenshuai.xi #endif
639*53ee8cc1Swenshuai.xi 
640*53ee8cc1Swenshuai.xi     }
641*53ee8cc1Swenshuai.xi }
642*53ee8cc1Swenshuai.xi 
HAL_TSP_CPU(MS_BOOL bEn)643*53ee8cc1Swenshuai.xi void HAL_TSP_CPU(MS_BOOL bEn)
644*53ee8cc1Swenshuai.xi {
645*53ee8cc1Swenshuai.xi     if (bEn)
646*53ee8cc1Swenshuai.xi     {
647*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
648*53ee8cc1Swenshuai.xi     }
649*53ee8cc1Swenshuai.xi     else
650*53ee8cc1Swenshuai.xi     {
651*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
652*53ee8cc1Swenshuai.xi     }
653*53ee8cc1Swenshuai.xi }
HAL_TSP_ResetCPU(MS_BOOL bReset)654*53ee8cc1Swenshuai.xi void HAL_TSP_ResetCPU(MS_BOOL bReset)
655*53ee8cc1Swenshuai.xi {
656*53ee8cc1Swenshuai.xi     // @NOTE TRUE for stop cpu clock
657*53ee8cc1Swenshuai.xi     if (bReset)
658*53ee8cc1Swenshuai.xi     {
659*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
660*53ee8cc1Swenshuai.xi     }
661*53ee8cc1Swenshuai.xi     else
662*53ee8cc1Swenshuai.xi     {
663*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
664*53ee8cc1Swenshuai.xi     }
665*53ee8cc1Swenshuai.xi }
666*53ee8cc1Swenshuai.xi 
667*53ee8cc1Swenshuai.xi 
HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr,MS_U32 u32FwSize)668*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr, MS_U32 u32FwSize)
669*53ee8cc1Swenshuai.xi {
670*53ee8cc1Swenshuai.xi 
671*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_MASK            0xffffc000 //code: 0x2000, data: 0x1000, total: 0x3000
672*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_HIT        0x00000000
673*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_MISS       0xffffffff
674*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_MASK            0xffffc000
675*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_HIT        0x00000000
676*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_MISS       0xffffffff
677*53ee8cc1Swenshuai.xi #define _TSP_QMEM_SIZE              0x1000 // 16K bytes, 32bit aligment  //0x4000  this is 4 byte address
678*53ee8cc1Swenshuai.xi 
679*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Cpu_Base, 0); // 16 bytes address unit
680*53ee8cc1Swenshuai.xi 
681*53ee8cc1Swenshuai.xi     MS_U32              u32DnldCtrl  = 0;
682*53ee8cc1Swenshuai.xi     MS_U32              u32DnldCtrl1 = 0;
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi     // Check MIU select
685*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel = 0;
686*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetFWBuf = 0;
687*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFWBuf, u32FwPhyAddr);
688*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));
689*53ee8cc1Swenshuai.xi 
690*53ee8cc1Swenshuai.xi     u32DnldCtrl  =      (phyMiuOffsetFWBuf >> MIU_BUS) >> TSP_DNLD_ADDR_ALI_SHIFT;
691*53ee8cc1Swenshuai.xi     u32DnldCtrl1 =      u32DnldCtrl >> 16;
692*53ee8cc1Swenshuai.xi 
693*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Dnld_Ctrl_Addr, (MS_U16)(u32DnldCtrl & TSP_DNLD_ADDR_MASK)); // oneway register
694*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl->Dnld_AddrH, TSP_DMA_RADDR_MSB_MASK, (MS_U16)u32DnldCtrl1);
695*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Dnld_Ctrl_Size, _TSP_QMEM_SIZE);
696*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
697*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START);
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi     //@TODO temprarily comment because of Secure Protect
700*53ee8cc1Swenshuai.xi #if 1
701*53ee8cc1Swenshuai.xi     while (!(REG16_R(&_RegCtrl->TSP_Ctrl) & TSP_CTRL_DNLD_DONE))
702*53ee8cc1Swenshuai.xi     {
703*53ee8cc1Swenshuai.xi     }
704*53ee8cc1Swenshuai.xi #endif
705*53ee8cc1Swenshuai.xi 
706*53ee8cc1Swenshuai.xi 
707*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
708*53ee8cc1Swenshuai.xi 
709*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Imask, _TSP_QMEM_I_MASK);
710*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Ibase, _TSP_QMEM_I_ADDR_HIT);
711*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Dmask, _TSP_QMEM_D_MASK);
712*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Dbase, _TSP_QMEM_D_ADDR_HIT);
713*53ee8cc1Swenshuai.xi 
714*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_MASK
715*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_HIT
716*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_MISS
717*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_MASK
718*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_HIT
719*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_MISS
720*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_SIZE
721*53ee8cc1Swenshuai.xi 
722*53ee8cc1Swenshuai.xi     return TRUE;
723*53ee8cc1Swenshuai.xi }
724*53ee8cc1Swenshuai.xi 
HAL_TSP_RestoreFltState(void)725*53ee8cc1Swenshuai.xi void    HAL_TSP_RestoreFltState(void)
726*53ee8cc1Swenshuai.xi {
727*53ee8cc1Swenshuai.xi     MS_U32              u32Size;
728*53ee8cc1Swenshuai.xi     TSP32 *             pRegEnd;
729*53ee8cc1Swenshuai.xi     TSP32 *             pReg;
730*53ee8cc1Swenshuai.xi     int                 i, j;
731*53ee8cc1Swenshuai.xi 
732*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_PIDFLT_NUM; i++)
733*53ee8cc1Swenshuai.xi     {
734*53ee8cc1Swenshuai.xi         TSP32_IdrW(&(_REGPid0->Flt[i]), _u32PidFltReg[i]);
735*53ee8cc1Swenshuai.xi         TSP32_IdrW(&(_REGPid1->Flt[i]), _u32PidDstReg[i]);
736*53ee8cc1Swenshuai.xi     }
737*53ee8cc1Swenshuai.xi 
738*53ee8cc1Swenshuai.xi     u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_SECFLT_NUM; i++)
741*53ee8cc1Swenshuai.xi     {
742*53ee8cc1Swenshuai.xi        pReg = (TSP32*)&(_REGSec->Flt[i]);
743*53ee8cc1Swenshuai.xi        pRegEnd = pReg + u32Size;
744*53ee8cc1Swenshuai.xi        j = 0;
745*53ee8cc1Swenshuai.xi        for ( ; pReg < pRegEnd; pReg++)
746*53ee8cc1Swenshuai.xi        {
747*53ee8cc1Swenshuai.xi            TSP32_IdrW(pReg, _u32SecReg[i*u32Size+j]);
748*53ee8cc1Swenshuai.xi            j++;
749*53ee8cc1Swenshuai.xi        }
750*53ee8cc1Swenshuai.xi     }
751*53ee8cc1Swenshuai.xi 
752*53ee8cc1Swenshuai.xi }
753*53ee8cc1Swenshuai.xi 
HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)754*53ee8cc1Swenshuai.xi void HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
755*53ee8cc1Swenshuai.xi {
756*53ee8cc1Swenshuai.xi     if(bEn)
757*53ee8cc1Swenshuai.xi     {
758*53ee8cc1Swenshuai.xi         switch(pktDmxId)
759*53ee8cc1Swenshuai.xi         {
760*53ee8cc1Swenshuai.xi             case 0:
761*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
762*53ee8cc1Swenshuai.xi                 break;
763*53ee8cc1Swenshuai.xi             case 1:
764*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
765*53ee8cc1Swenshuai.xi                 break;
766*53ee8cc1Swenshuai.xi             case 2:
767*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
768*53ee8cc1Swenshuai.xi                 break;
769*53ee8cc1Swenshuai.xi             case 3:
770*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF3);
771*53ee8cc1Swenshuai.xi                 break;
772*53ee8cc1Swenshuai.xi             default:
773*53ee8cc1Swenshuai.xi                 break;
774*53ee8cc1Swenshuai.xi         }
775*53ee8cc1Swenshuai.xi     }
776*53ee8cc1Swenshuai.xi     else
777*53ee8cc1Swenshuai.xi     {
778*53ee8cc1Swenshuai.xi         switch(pktDmxId)
779*53ee8cc1Swenshuai.xi         {
780*53ee8cc1Swenshuai.xi             case 0:
781*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
782*53ee8cc1Swenshuai.xi                 break;
783*53ee8cc1Swenshuai.xi             case 1:
784*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
785*53ee8cc1Swenshuai.xi                 break;
786*53ee8cc1Swenshuai.xi             case 2:
787*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
788*53ee8cc1Swenshuai.xi                 break;
789*53ee8cc1Swenshuai.xi             case 3:
790*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF3);
791*53ee8cc1Swenshuai.xi                 break;
792*53ee8cc1Swenshuai.xi             default:
793*53ee8cc1Swenshuai.xi                 break;
794*53ee8cc1Swenshuai.xi         }
795*53ee8cc1Swenshuai.xi     }
796*53ee8cc1Swenshuai.xi }
797*53ee8cc1Swenshuai.xi 
HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)798*53ee8cc1Swenshuai.xi void HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
799*53ee8cc1Swenshuai.xi {
800*53ee8cc1Swenshuai.xi     if(bEn)
801*53ee8cc1Swenshuai.xi     {
802*53ee8cc1Swenshuai.xi         switch(pktDmxId)
803*53ee8cc1Swenshuai.xi         {
804*53ee8cc1Swenshuai.xi             case 0:
805*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
806*53ee8cc1Swenshuai.xi                 break;
807*53ee8cc1Swenshuai.xi             case 1:
808*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
809*53ee8cc1Swenshuai.xi                 break;
810*53ee8cc1Swenshuai.xi             case 2:
811*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
812*53ee8cc1Swenshuai.xi                 break;
813*53ee8cc1Swenshuai.xi             case 3:
814*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF3);
815*53ee8cc1Swenshuai.xi                 break;
816*53ee8cc1Swenshuai.xi             default:
817*53ee8cc1Swenshuai.xi                 break;
818*53ee8cc1Swenshuai.xi         }
819*53ee8cc1Swenshuai.xi     }
820*53ee8cc1Swenshuai.xi     else
821*53ee8cc1Swenshuai.xi     {
822*53ee8cc1Swenshuai.xi         switch(pktDmxId)
823*53ee8cc1Swenshuai.xi         {
824*53ee8cc1Swenshuai.xi             case 0:
825*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
826*53ee8cc1Swenshuai.xi                 break;
827*53ee8cc1Swenshuai.xi             case 1:
828*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
829*53ee8cc1Swenshuai.xi                 break;
830*53ee8cc1Swenshuai.xi             case 2:
831*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
832*53ee8cc1Swenshuai.xi                 break;
833*53ee8cc1Swenshuai.xi             case 3:
834*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF3);
835*53ee8cc1Swenshuai.xi                 break;
836*53ee8cc1Swenshuai.xi             default:
837*53ee8cc1Swenshuai.xi                 break;
838*53ee8cc1Swenshuai.xi         }
839*53ee8cc1Swenshuai.xi     }
840*53ee8cc1Swenshuai.xi }
841*53ee8cc1Swenshuai.xi 
HAL_TSP_SetTSIF(MS_U16 u16TSIF,TSP_TSIF_CFG u16Cfg,MS_BOOL bFileIn)842*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetTSIF(MS_U16 u16TSIF, TSP_TSIF_CFG u16Cfg, MS_BOOL bFileIn)
843*53ee8cc1Swenshuai.xi {
844*53ee8cc1Swenshuai.xi     if(bFileIn)
845*53ee8cc1Swenshuai.xi     {
846*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, TRUE); // this returns true only we don't check the return value
847*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_LiveEn(u16TSIF, FALSE);             // this returns true only we don't check the return value
848*53ee8cc1Swenshuai.xi     }
849*53ee8cc1Swenshuai.xi     else
850*53ee8cc1Swenshuai.xi     {
851*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, FALSE);
852*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_LiveEn(u16TSIF, TRUE);
853*53ee8cc1Swenshuai.xi     }
854*53ee8cc1Swenshuai.xi 
855*53ee8cc1Swenshuai.xi     if(bFileIn != TRUE)
856*53ee8cc1Swenshuai.xi     {
857*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_BitSwap(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_BITSWAP)?TRUE:FALSE));
858*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_ExtSync(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_EXTSYNC)?TRUE:FALSE));
859*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_Parl   (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_PARA   )?TRUE:FALSE));
860*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_3Wire  (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_3WIRE  )?TRUE:FALSE));
861*53ee8cc1Swenshuai.xi     }
862*53ee8cc1Swenshuai.xi 
863*53ee8cc1Swenshuai.xi     return TRUE;
864*53ee8cc1Swenshuai.xi }
865*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_LiveEn(MS_U32 tsIf,MS_BOOL bEnable)866*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_LiveEn(MS_U32 tsIf, MS_BOOL bEnable)
867*53ee8cc1Swenshuai.xi {
868*53ee8cc1Swenshuai.xi     if(bEnable)
869*53ee8cc1Swenshuai.xi     {
870*53ee8cc1Swenshuai.xi         switch(tsIf)
871*53ee8cc1Swenshuai.xi         {
872*53ee8cc1Swenshuai.xi             case 0:
873*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
874*53ee8cc1Swenshuai.xi                 break;
875*53ee8cc1Swenshuai.xi             case 1:
876*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
877*53ee8cc1Swenshuai.xi                 break;
878*53ee8cc1Swenshuai.xi             case 2:
879*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
880*53ee8cc1Swenshuai.xi                 break;
881*53ee8cc1Swenshuai.xi             case 3:
882*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_IF3_EN);
883*53ee8cc1Swenshuai.xi                 break;
884*53ee8cc1Swenshuai.xi             default:
885*53ee8cc1Swenshuai.xi                 return FALSE;
886*53ee8cc1Swenshuai.xi         }
887*53ee8cc1Swenshuai.xi     }
888*53ee8cc1Swenshuai.xi     else
889*53ee8cc1Swenshuai.xi     {
890*53ee8cc1Swenshuai.xi         switch(tsIf)
891*53ee8cc1Swenshuai.xi         {
892*53ee8cc1Swenshuai.xi             case 0:
893*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
894*53ee8cc1Swenshuai.xi                 break;
895*53ee8cc1Swenshuai.xi             case 1:
896*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
897*53ee8cc1Swenshuai.xi                 break;
898*53ee8cc1Swenshuai.xi             case 2:
899*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
900*53ee8cc1Swenshuai.xi                 break;
901*53ee8cc1Swenshuai.xi             case 3:
902*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_IF3_EN);
903*53ee8cc1Swenshuai.xi                 break;
904*53ee8cc1Swenshuai.xi             default:
905*53ee8cc1Swenshuai.xi                 return FALSE;
906*53ee8cc1Swenshuai.xi         }
907*53ee8cc1Swenshuai.xi     }
908*53ee8cc1Swenshuai.xi 
909*53ee8cc1Swenshuai.xi     return TRUE;
910*53ee8cc1Swenshuai.xi }
911*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad(MS_U32 tsIf,TSP_TS_PAD eTSPad)912*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad(MS_U32 tsIf, TSP_TS_PAD eTSPad) // @FIXME modify this parameter to enum plz
913*53ee8cc1Swenshuai.xi {
914*53ee8cc1Swenshuai.xi     MS_U32 clk_src = REG_CLKGEN0_TS_SRC_EXT0;
915*53ee8cc1Swenshuai.xi     MS_U32 pad_src = REG_TOP_TS_SRC_EXT0;
916*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
917*53ee8cc1Swenshuai.xi     MS_S32 handle;
918*53ee8cc1Swenshuai.xi     MS_U8  u8NameIdx = 0;
919*53ee8cc1Swenshuai.xi     char* u8ClkSrcNames[] =
920*53ee8cc1Swenshuai.xi     {
921*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD0",
922*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD1",
923*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD2",
924*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD3",
925*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD4",
926*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD5",
927*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD6",
928*53ee8cc1Swenshuai.xi         "CLK_TS0_PADTSO",
929*53ee8cc1Swenshuai.xi         "CLK_TS0_PADTSIO",
930*53ee8cc1Swenshuai.xi         "CLK_TS0_PADINTER0",
931*53ee8cc1Swenshuai.xi         "CLK_TS0_PADINTER1"
932*53ee8cc1Swenshuai.xi     };
933*53ee8cc1Swenshuai.xi #endif
934*53ee8cc1Swenshuai.xi 
935*53ee8cc1Swenshuai.xi     //@NOTE
936*53ee8cc1Swenshuai.xi     //EX3~6 are serial mode and ts2_padmax_mode must be 2 or 3.
937*53ee8cc1Swenshuai.xi 
938*53ee8cc1Swenshuai.xi 
939*53ee8cc1Swenshuai.xi     switch (eTSPad)
940*53ee8cc1Swenshuai.xi     {
941*53ee8cc1Swenshuai.xi         default:
942*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT0:
943*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT0;
944*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT0;
945*53ee8cc1Swenshuai.xi             break;
946*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1:
947*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT1;
948*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT1;
949*53ee8cc1Swenshuai.xi             break;
950*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT2:
951*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT2;
952*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT2;
953*53ee8cc1Swenshuai.xi             break;
954*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT3:
955*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT3;
956*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT3;
957*53ee8cc1Swenshuai.xi             break;
958*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT4:
959*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT4;
960*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT4;
961*53ee8cc1Swenshuai.xi             break;
962*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT5:
963*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT5;
964*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT5;
965*53ee8cc1Swenshuai.xi             break;
966*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT6:
967*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT6;
968*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT6;
969*53ee8cc1Swenshuai.xi             break;
970*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSOUT0:
971*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_TSO0;
972*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_TSO0;
973*53ee8cc1Swenshuai.xi             break;
974*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSIOOUT0:
975*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_TSIO0;
976*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_TSIO0;
977*53ee8cc1Swenshuai.xi             break;
978*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER0:
979*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_DMD0;
980*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_DMD0;
981*53ee8cc1Swenshuai.xi             break;
982*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER1:
983*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_DMD1;
984*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_DMD1;
985*53ee8cc1Swenshuai.xi             break;
986*53ee8cc1Swenshuai.xi     }
987*53ee8cc1Swenshuai.xi 
988*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
989*53ee8cc1Swenshuai.xi     switch(clk_src)
990*53ee8cc1Swenshuai.xi     {
991*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT0:
992*53ee8cc1Swenshuai.xi             u8NameIdx = 0;
993*53ee8cc1Swenshuai.xi             break;
994*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT1:
995*53ee8cc1Swenshuai.xi             u8NameIdx = 1;
996*53ee8cc1Swenshuai.xi             break;
997*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT2:
998*53ee8cc1Swenshuai.xi             u8NameIdx = 2;
999*53ee8cc1Swenshuai.xi             break;
1000*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT3:
1001*53ee8cc1Swenshuai.xi             u8NameIdx = 3;
1002*53ee8cc1Swenshuai.xi             break;
1003*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT4:
1004*53ee8cc1Swenshuai.xi             u8NameIdx = 4;
1005*53ee8cc1Swenshuai.xi             break;
1006*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT5:
1007*53ee8cc1Swenshuai.xi             u8NameIdx = 5;
1008*53ee8cc1Swenshuai.xi             break;
1009*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT6:
1010*53ee8cc1Swenshuai.xi             u8NameIdx = 6;
1011*53ee8cc1Swenshuai.xi             break;
1012*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSO0:
1013*53ee8cc1Swenshuai.xi             u8NameIdx = 7;
1014*53ee8cc1Swenshuai.xi             break;
1015*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSIO0:
1016*53ee8cc1Swenshuai.xi             u8NameIdx = 8;
1017*53ee8cc1Swenshuai.xi             break;
1018*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSIO0:
1019*53ee8cc1Swenshuai.xi             u8NameIdx = 9;
1020*53ee8cc1Swenshuai.xi             break;
1021*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSIO0:
1022*53ee8cc1Swenshuai.xi             u8NameIdx = 10;
1023*53ee8cc1Swenshuai.xi             break;
1024*53ee8cc1Swenshuai.xi         default:
1025*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__));
1026*53ee8cc1Swenshuai.xi             u8NameIdx = 0;
1027*53ee8cc1Swenshuai.xi             break;
1028*53ee8cc1Swenshuai.xi     }
1029*53ee8cc1Swenshuai.xi #endif
1030*53ee8cc1Swenshuai.xi 
1031*53ee8cc1Swenshuai.xi     //@FIXME use enum instead of constant
1032*53ee8cc1Swenshuai.xi     switch (tsIf)
1033*53ee8cc1Swenshuai.xi     {
1034*53ee8cc1Swenshuai.xi         case 0:
1035*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);
1036*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1037*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts");
1038*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1039*53ee8cc1Swenshuai.xi         #else
1040*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));
1041*53ee8cc1Swenshuai.xi         #endif
1042*53ee8cc1Swenshuai.xi             break;
1043*53ee8cc1Swenshuai.xi 
1044*53ee8cc1Swenshuai.xi         case 1:
1045*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)) | (pad_src<<REG_TOP_TS1_SHIFT);
1046*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1047*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1048*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1049*53ee8cc1Swenshuai.xi         #else
1050*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS1_SHIFT)) | (clk_src<<(REG_CLKGEN0_TS1_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1051*53ee8cc1Swenshuai.xi         #endif
1052*53ee8cc1Swenshuai.xi             break;
1053*53ee8cc1Swenshuai.xi         case 2:
1054*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)) | (pad_src<<REG_TOP_TS2_SHIFT);
1055*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1056*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1057*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1058*53ee8cc1Swenshuai.xi         #else
1059*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS2_SHIFT)) | (clk_src<<(REG_CLKGEN0_TS2_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1060*53ee8cc1Swenshuai.xi         #endif
1061*53ee8cc1Swenshuai.xi             break;
1062*53ee8cc1Swenshuai.xi         case 3:
1063*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)) | (pad_src<<REG_TOP_TS3_SHIFT);
1064*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1065*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1066*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1067*53ee8cc1Swenshuai.xi         #else
1068*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS3_SHIFT)) | (clk_src<<(REG_CLKGEN0_TS3_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1069*53ee8cc1Swenshuai.xi         #endif
1070*53ee8cc1Swenshuai.xi             break;
1071*53ee8cc1Swenshuai.xi 
1072*53ee8cc1Swenshuai.xi         default:
1073*53ee8cc1Swenshuai.xi             return FALSE;
1074*53ee8cc1Swenshuai.xi     }
1075*53ee8cc1Swenshuai.xi     return TRUE;
1076*53ee8cc1Swenshuai.xi }
1077*53ee8cc1Swenshuai.xi 
_HAL_TSO_SetPad1OutMux(MS_BOOL bSet)1078*53ee8cc1Swenshuai.xi static void _HAL_TSO_SetPad1OutMux(MS_BOOL bSet)
1079*53ee8cc1Swenshuai.xi {
1080*53ee8cc1Swenshuai.xi     if(bSet)
1081*53ee8cc1Swenshuai.xi     {
1082*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);
1083*53ee8cc1Swenshuai.xi     }
1084*53ee8cc1Swenshuai.xi     else
1085*53ee8cc1Swenshuai.xi     {
1086*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)) | (REG_TOP_TS1MODE_INPUT << REG_TOP_TS1MODE_SHIFT));
1087*53ee8cc1Swenshuai.xi     }
1088*53ee8cc1Swenshuai.xi }
1089*53ee8cc1Swenshuai.xi 
HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)1090*53ee8cc1Swenshuai.xi void HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)
1091*53ee8cc1Swenshuai.xi {
1092*53ee8cc1Swenshuai.xi     _HAL_TSO_SetPad1OutMux(bSet);
1093*53ee8cc1Swenshuai.xi }
1094*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)1095*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)
1096*53ee8cc1Swenshuai.xi {
1097*53ee8cc1Swenshuai.xi     MS_U16  u16Temp = 0;
1098*53ee8cc1Swenshuai.xi 
1099*53ee8cc1Swenshuai.xi     switch(eOutPad) // output pad
1100*53ee8cc1Swenshuai.xi     {
1101*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1: // TS_pad #1
1102*53ee8cc1Swenshuai.xi             if(eInPad == E_TSP_TS_PAD_EXT1)  // output pad == input pad ?
1103*53ee8cc1Swenshuai.xi             {
1104*53ee8cc1Swenshuai.xi                 return FALSE;
1105*53ee8cc1Swenshuai.xi             }
1106*53ee8cc1Swenshuai.xi 
1107*53ee8cc1Swenshuai.xi             _HAL_TSO_SetPad1OutMux(bEnable); // set pad mode (input or output)
1108*53ee8cc1Swenshuai.xi 
1109*53ee8cc1Swenshuai.xi             switch(eOutPadMode) // set pad output mode
1110*53ee8cc1Swenshuai.xi             {
1111*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_TSO:
1112*53ee8cc1Swenshuai.xi                     // input from TSO
1113*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)) | (REG_TOP_TS_OUT_MODE_TSO << REG_TOP_TS_OUT_MODE_SHIFT);
1114*53ee8cc1Swenshuai.xi                     break;
1115*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_S2P:
1116*53ee8cc1Swenshuai.xi                     // input from S2P
1117*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)) | (REG_TOP_TS_OUT_MODE_S2P << REG_TOP_TS_OUT_MODE_SHIFT);
1118*53ee8cc1Swenshuai.xi 
1119*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
1120*53ee8cc1Swenshuai.xi                     if(eInPadMode == E_TSP_TS_PAD_MUX_PARALLEL)
1121*53ee8cc1Swenshuai.xi                     {
1122*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_BYPASS_S2P;                                                  // bypass S2P: if input is parallel , set it
1123*53ee8cc1Swenshuai.xi                     }
1124*53ee8cc1Swenshuai.xi                     else if(eInPadMode == E_TSP_TS_PAD_MUX_3WIRED_SERIAL)
1125*53ee8cc1Swenshuai.xi                     {
1126*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_S2P_3WIRE;                                                   // input pad is 3-wire serial
1127*53ee8cc1Swenshuai.xi                     }
1128*53ee8cc1Swenshuai.xi 
1129*53ee8cc1Swenshuai.xi                     // S2P config
1130*53ee8cc1Swenshuai.xi                     TSP_TSO_REG(REG_TSO_TSP_CONFIG0) = (TSP_TSO_REG(REG_TSO_TSP_CONFIG0) & ~REG_TSO_TSP_S2P_MASK) | u16Temp;
1131*53ee8cc1Swenshuai.xi                     // select S2P input pad
1132*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TSO4_5_MUX) = (TSP_TOP_REG(REG_TOP_TSO4_5_MUX) & ~REG_TOP_TSO4_MASK)
1133*53ee8cc1Swenshuai.xi                                                     | (eInPad << REG_TOP_TSO4_SHIFT);
1134*53ee8cc1Swenshuai.xi                     // select S2P input clk source
1135*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1136*53ee8cc1Swenshuai.xi                     {
1137*53ee8cc1Swenshuai.xi                         MS_S32 handle;
1138*53ee8cc1Swenshuai.xi                         MS_U8  u8NameIdx = 0;
1139*53ee8cc1Swenshuai.xi                         char* u8ClkSrcNames[] =
1140*53ee8cc1Swenshuai.xi                         {
1141*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD0",
1142*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD1",
1143*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD2",
1144*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD3",
1145*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD4",
1146*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD5",
1147*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD6"
1148*53ee8cc1Swenshuai.xi                         };
1149*53ee8cc1Swenshuai.xi 
1150*53ee8cc1Swenshuai.xi                         switch(eInPad)
1151*53ee8cc1Swenshuai.xi                         {
1152*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT0:
1153*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1154*53ee8cc1Swenshuai.xi                                 break;
1155*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT1:
1156*53ee8cc1Swenshuai.xi                                 u8NameIdx = 1;
1157*53ee8cc1Swenshuai.xi                                 break;
1158*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT2:
1159*53ee8cc1Swenshuai.xi                                 u8NameIdx = 2;
1160*53ee8cc1Swenshuai.xi                                 break;
1161*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT3:
1162*53ee8cc1Swenshuai.xi                                 u8NameIdx = 3;
1163*53ee8cc1Swenshuai.xi                                 break;
1164*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT4:
1165*53ee8cc1Swenshuai.xi                                 u8NameIdx = 4;
1166*53ee8cc1Swenshuai.xi                                 break;
1167*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT5:
1168*53ee8cc1Swenshuai.xi                                 u8NameIdx = 5;
1169*53ee8cc1Swenshuai.xi                                 break;
1170*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT6:
1171*53ee8cc1Swenshuai.xi                                 u8NameIdx = 6;
1172*53ee8cc1Swenshuai.xi                                 break;
1173*53ee8cc1Swenshuai.xi                             default:
1174*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__));
1175*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1176*53ee8cc1Swenshuai.xi                                 break;
1177*53ee8cc1Swenshuai.xi                         }
1178*53ee8cc1Swenshuai.xi 
1179*53ee8cc1Swenshuai.xi                         handle = Drv_Clkm_Get_Handle("g_clk_s2p_in");
1180*53ee8cc1Swenshuai.xi                         Drv_Clkm_Set_Clk_Source(handle, u8ClkSrcNames[u8NameIdx]);
1181*53ee8cc1Swenshuai.xi                     }
1182*53ee8cc1Swenshuai.xi #else
1183*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))
1184*53ee8cc1Swenshuai.xi                                                                 | ((eInPad & REG_CLKGEN0_S2P_IN_CLK_SRC_MASK) << (REG_CLKGEN0_S2P_IN_CLK_SHIFT + REG_CLKGEN0_S2P_IN_CLK_SRC_SHIFT));
1185*53ee8cc1Swenshuai.xi #endif
1186*53ee8cc1Swenshuai.xi                     break;
1187*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_S2P1:
1188*53ee8cc1Swenshuai.xi                     // input from S2P1
1189*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))
1190*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_S2P1 << REG_TOP_TS_OUT_MODE_SHIFT);
1191*53ee8cc1Swenshuai.xi 
1192*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
1193*53ee8cc1Swenshuai.xi                     if(eInPadMode == E_TSP_TS_PAD_MUX_PARALLEL)
1194*53ee8cc1Swenshuai.xi                     {
1195*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_BYPASS_S2P1;                                                 // bypass S2P1: if input is parallel , set it
1196*53ee8cc1Swenshuai.xi                     }
1197*53ee8cc1Swenshuai.xi                     else if(eInPadMode == E_TSP_TS_PAD_MUX_3WIRED_SERIAL)
1198*53ee8cc1Swenshuai.xi                     {
1199*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_S2P1_3WIRE;                                                  // input pad is 3-wire serial
1200*53ee8cc1Swenshuai.xi                     }
1201*53ee8cc1Swenshuai.xi                     // S2P1 config
1202*53ee8cc1Swenshuai.xi                     TSP_TSO_REG(REG_TSO_TSP_CONFIG0) = (TSP_TSO_REG(REG_TSO_TSP_CONFIG0) & ~REG_TSO_TSP_S2P1_MASK) | u16Temp;
1203*53ee8cc1Swenshuai.xi                     // select S2P1 input pad
1204*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TSO4_5_MUX) = (TSP_TOP_REG(REG_TOP_TSO4_5_MUX) & ~REG_TOP_TSO5_MASK)
1205*53ee8cc1Swenshuai.xi                                                     | (eInPad << REG_TOP_TSO5_SHIFT);
1206*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1207*53ee8cc1Swenshuai.xi                     {
1208*53ee8cc1Swenshuai.xi                         MS_S32 handle;
1209*53ee8cc1Swenshuai.xi                         MS_U8  u8NameIdx = 0;
1210*53ee8cc1Swenshuai.xi                         char* u8ClkSrcNames[] =
1211*53ee8cc1Swenshuai.xi                         {
1212*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD0",
1213*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD1",
1214*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD2",
1215*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD3",
1216*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD4",
1217*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD5",
1218*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD6"
1219*53ee8cc1Swenshuai.xi                         };
1220*53ee8cc1Swenshuai.xi 
1221*53ee8cc1Swenshuai.xi                         switch(eInPad)
1222*53ee8cc1Swenshuai.xi                         {
1223*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT0:
1224*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1225*53ee8cc1Swenshuai.xi                                 break;
1226*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT1:
1227*53ee8cc1Swenshuai.xi                                 u8NameIdx = 1;
1228*53ee8cc1Swenshuai.xi                                 break;
1229*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT2:
1230*53ee8cc1Swenshuai.xi                                 u8NameIdx = 2;
1231*53ee8cc1Swenshuai.xi                                 break;
1232*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT3:
1233*53ee8cc1Swenshuai.xi                                 u8NameIdx = 3;
1234*53ee8cc1Swenshuai.xi                                 break;
1235*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT4:
1236*53ee8cc1Swenshuai.xi                                 u8NameIdx = 4;
1237*53ee8cc1Swenshuai.xi                                 break;
1238*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT5:
1239*53ee8cc1Swenshuai.xi                                 u8NameIdx = 5;
1240*53ee8cc1Swenshuai.xi                                 break;
1241*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT6:
1242*53ee8cc1Swenshuai.xi                                 u8NameIdx = 6;
1243*53ee8cc1Swenshuai.xi                                 break;
1244*53ee8cc1Swenshuai.xi                             default:
1245*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__));
1246*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1247*53ee8cc1Swenshuai.xi                                 break;
1248*53ee8cc1Swenshuai.xi                         }
1249*53ee8cc1Swenshuai.xi 
1250*53ee8cc1Swenshuai.xi                         handle = Drv_Clkm_Get_Handle("g_clk_s2p1_in");
1251*53ee8cc1Swenshuai.xi                         Drv_Clkm_Set_Clk_Source(handle, u8ClkSrcNames[u8NameIdx]);
1252*53ee8cc1Swenshuai.xi                     }
1253*53ee8cc1Swenshuai.xi #else
1254*53ee8cc1Swenshuai.xi                     // select S2P1 input clk source
1255*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))
1256*53ee8cc1Swenshuai.xi                                                                 | ((eInPad & REG_CLKGEN0_S2P_IN_CLK_SRC_MASK) << (REG_CLKGEN0_S2P1_IN_CLK_SHIFT + REG_CLKGEN0_S2P_IN_CLK_SRC_SHIFT));
1257*53ee8cc1Swenshuai.xi #endif
1258*53ee8cc1Swenshuai.xi 
1259*53ee8cc1Swenshuai.xi                     break;
1260*53ee8cc1Swenshuai.xi                 default:
1261*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));
1262*53ee8cc1Swenshuai.xi                     return FALSE;
1263*53ee8cc1Swenshuai.xi             }
1264*53ee8cc1Swenshuai.xi             break;
1265*53ee8cc1Swenshuai.xi         default:
1266*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__));
1267*53ee8cc1Swenshuai.xi             return FALSE;
1268*53ee8cc1Swenshuai.xi     }
1269*53ee8cc1Swenshuai.xi 
1270*53ee8cc1Swenshuai.xi     return TRUE;
1271*53ee8cc1Swenshuai.xi }
1272*53ee8cc1Swenshuai.xi 
_TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad,MS_U32 * pu32PADSrc,MS_U32 * pu32CLKSrc)1273*53ee8cc1Swenshuai.xi static MS_BOOL _TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad, MS_U32* pu32PADSrc, MS_U32* pu32CLKSrc)
1274*53ee8cc1Swenshuai.xi {
1275*53ee8cc1Swenshuai.xi     switch (eTSPad)
1276*53ee8cc1Swenshuai.xi     {
1277*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT0:
1278*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
1279*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_EXT0;
1280*53ee8cc1Swenshuai.xi             break;
1281*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1:
1282*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT1;
1283*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_EXT1;
1284*53ee8cc1Swenshuai.xi             break;
1285*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER0:
1286*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_DMD0;
1287*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_DMD0;
1288*53ee8cc1Swenshuai.xi             break;
1289*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSOUT0:
1290*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_TSO0;
1291*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_TSO0;
1292*53ee8cc1Swenshuai.xi             break;
1293*53ee8cc1Swenshuai.xi 
1294*53ee8cc1Swenshuai.xi         default:
1295*53ee8cc1Swenshuai.xi             return FALSE;
1296*53ee8cc1Swenshuai.xi     }
1297*53ee8cc1Swenshuai.xi 
1298*53ee8cc1Swenshuai.xi     return TRUE;
1299*53ee8cc1Swenshuai.xi }
1300*53ee8cc1Swenshuai.xi 
HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng,TSP_TS_PAD eTSPad)1301*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng, TSP_TS_PAD eTSPad)
1302*53ee8cc1Swenshuai.xi {
1303*53ee8cc1Swenshuai.xi     MS_U32 u32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
1304*53ee8cc1Swenshuai.xi     MS_U32 u32PADSrc = REG_TOP_TS_SRC_EXT0;
1305*53ee8cc1Swenshuai.xi     _TSP_Hal_TSPAD2RelatedReg_Mapping(eTSPad, &u32PADSrc, &u32CLKSrc);
1306*53ee8cc1Swenshuai.xi 
1307*53ee8cc1Swenshuai.xi     switch(u32TSOEng)
1308*53ee8cc1Swenshuai.xi     {
1309*53ee8cc1Swenshuai.xi         case 0:
1310*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TSO0_MUX) = (TSP_TOP_REG(REG_TOP_TSO0_MUX) & ~REG_TOP_TS_SRC_MASK) | u32PADSrc;
1311*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1312*53ee8cc1Swenshuai.xi             {
1313*53ee8cc1Swenshuai.xi                 MS_S32 handle;
1314*53ee8cc1Swenshuai.xi                 MS_U8  u8NameIdx = 0;
1315*53ee8cc1Swenshuai.xi                 char* u8ClkSrcNames[] =
1316*53ee8cc1Swenshuai.xi                 {
1317*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD0",
1318*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD1",
1319*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD2",
1320*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD3",
1321*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD4",
1322*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD5",
1323*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD6"
1324*53ee8cc1Swenshuai.xi                 };
1325*53ee8cc1Swenshuai.xi 
1326*53ee8cc1Swenshuai.xi                 switch(u32CLKSrc)
1327*53ee8cc1Swenshuai.xi                 {
1328*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT0:
1329*53ee8cc1Swenshuai.xi                         u8NameIdx = 0;
1330*53ee8cc1Swenshuai.xi                         break;
1331*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT1:
1332*53ee8cc1Swenshuai.xi                         u8NameIdx = 1;
1333*53ee8cc1Swenshuai.xi                         break;
1334*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT2:
1335*53ee8cc1Swenshuai.xi                         u8NameIdx = 2;
1336*53ee8cc1Swenshuai.xi                         break;
1337*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT3:
1338*53ee8cc1Swenshuai.xi                         u8NameIdx = 3;
1339*53ee8cc1Swenshuai.xi                         break;
1340*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT4:
1341*53ee8cc1Swenshuai.xi                         u8NameIdx = 4;
1342*53ee8cc1Swenshuai.xi                         break;
1343*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT5:
1344*53ee8cc1Swenshuai.xi                         u8NameIdx = 5;
1345*53ee8cc1Swenshuai.xi                         break;
1346*53ee8cc1Swenshuai.xi                     default:
1347*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__));
1348*53ee8cc1Swenshuai.xi                         u8NameIdx = 0;
1349*53ee8cc1Swenshuai.xi                         break;
1350*53ee8cc1Swenshuai.xi                 }
1351*53ee8cc1Swenshuai.xi 
1352*53ee8cc1Swenshuai.xi                 handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
1353*53ee8cc1Swenshuai.xi                 Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1354*53ee8cc1Swenshuai.xi             }
1355*53ee8cc1Swenshuai.xi #else
1356*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK)
1357*53ee8cc1Swenshuai.xi                 | (u32CLKSrc << (REG_CLKGEN0_TSO0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1358*53ee8cc1Swenshuai.xi #endif
1359*53ee8cc1Swenshuai.xi             return TRUE;
1360*53ee8cc1Swenshuai.xi 
1361*53ee8cc1Swenshuai.xi         default:
1362*53ee8cc1Swenshuai.xi             return FALSE;
1363*53ee8cc1Swenshuai.xi     }
1364*53ee8cc1Swenshuai.xi }
1365*53ee8cc1Swenshuai.xi 
1366*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf,MS_BOOL bClkInv)1367*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf , MS_BOOL bClkInv)
1368*53ee8cc1Swenshuai.xi {
1369*53ee8cc1Swenshuai.xi     if (bClkInv)
1370*53ee8cc1Swenshuai.xi     {
1371*53ee8cc1Swenshuai.xi         switch (tsIf)
1372*53ee8cc1Swenshuai.xi         {
1373*53ee8cc1Swenshuai.xi             case 0:
1374*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
1375*53ee8cc1Swenshuai.xi                 break;
1376*53ee8cc1Swenshuai.xi             case 1:
1377*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
1378*53ee8cc1Swenshuai.xi                 break;
1379*53ee8cc1Swenshuai.xi             case 2:
1380*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
1381*53ee8cc1Swenshuai.xi                 break;
1382*53ee8cc1Swenshuai.xi             case 3:
1383*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS3_SHIFT));
1384*53ee8cc1Swenshuai.xi                 break;
1385*53ee8cc1Swenshuai.xi             default:
1386*53ee8cc1Swenshuai.xi                 return FALSE;
1387*53ee8cc1Swenshuai.xi         }
1388*53ee8cc1Swenshuai.xi     }
1389*53ee8cc1Swenshuai.xi     else
1390*53ee8cc1Swenshuai.xi     {
1391*53ee8cc1Swenshuai.xi         switch (tsIf)
1392*53ee8cc1Swenshuai.xi         {
1393*53ee8cc1Swenshuai.xi             case 0:
1394*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
1395*53ee8cc1Swenshuai.xi                 break;
1396*53ee8cc1Swenshuai.xi             case 1:
1397*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
1398*53ee8cc1Swenshuai.xi                 break;
1399*53ee8cc1Swenshuai.xi             case 2:
1400*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
1401*53ee8cc1Swenshuai.xi                 break;
1402*53ee8cc1Swenshuai.xi             case 3:
1403*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS3_SHIFT));
1404*53ee8cc1Swenshuai.xi                 break;
1405*53ee8cc1Swenshuai.xi             default:
1406*53ee8cc1Swenshuai.xi                 return FALSE;
1407*53ee8cc1Swenshuai.xi         }
1408*53ee8cc1Swenshuai.xi     }
1409*53ee8cc1Swenshuai.xi     return TRUE;
1410*53ee8cc1Swenshuai.xi }
1411*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf,MS_BOOL bClkDis)1412*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf , MS_BOOL bClkDis)
1413*53ee8cc1Swenshuai.xi {
1414*53ee8cc1Swenshuai.xi     if (bClkDis)
1415*53ee8cc1Swenshuai.xi     {
1416*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1417*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
1418*53ee8cc1Swenshuai.xi 
1419*53ee8cc1Swenshuai.xi         switch (tsIf)
1420*53ee8cc1Swenshuai.xi         {
1421*53ee8cc1Swenshuai.xi             case 0:
1422*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
1423*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1424*53ee8cc1Swenshuai.xi                 break;
1425*53ee8cc1Swenshuai.xi             case 1:
1426*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1427*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1428*53ee8cc1Swenshuai.xi                 break;
1429*53ee8cc1Swenshuai.xi             case 2:
1430*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1431*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1432*53ee8cc1Swenshuai.xi                 break;
1433*53ee8cc1Swenshuai.xi             case 3:
1434*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1435*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1436*53ee8cc1Swenshuai.xi                 break;
1437*53ee8cc1Swenshuai.xi             default:
1438*53ee8cc1Swenshuai.xi                 return FALSE;
1439*53ee8cc1Swenshuai.xi         }
1440*53ee8cc1Swenshuai.xi #else
1441*53ee8cc1Swenshuai.xi         switch (tsIf)
1442*53ee8cc1Swenshuai.xi         {
1443*53ee8cc1Swenshuai.xi             case 0:
1444*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
1445*53ee8cc1Swenshuai.xi                 break;
1446*53ee8cc1Swenshuai.xi             case 1:
1447*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
1448*53ee8cc1Swenshuai.xi                 break;
1449*53ee8cc1Swenshuai.xi             case 2:
1450*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
1451*53ee8cc1Swenshuai.xi                 break;
1452*53ee8cc1Swenshuai.xi             case 3:
1453*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS3_SHIFT));
1454*53ee8cc1Swenshuai.xi                 break;
1455*53ee8cc1Swenshuai.xi             default:
1456*53ee8cc1Swenshuai.xi                 return FALSE;
1457*53ee8cc1Swenshuai.xi         }
1458*53ee8cc1Swenshuai.xi #endif
1459*53ee8cc1Swenshuai.xi     }
1460*53ee8cc1Swenshuai.xi     else
1461*53ee8cc1Swenshuai.xi     {
1462*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1463*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
1464*53ee8cc1Swenshuai.xi         MS_U16 u16ClkSrc;
1465*53ee8cc1Swenshuai.xi         MS_U8  u8NameIdx = 0;
1466*53ee8cc1Swenshuai.xi         char* u8ClkSrcNames[] =
1467*53ee8cc1Swenshuai.xi         {
1468*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD0",
1469*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD1",
1470*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD2",
1471*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD3",
1472*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD4",
1473*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD5",
1474*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD6",
1475*53ee8cc1Swenshuai.xi             "CLK_TS0_PADTSO"
1476*53ee8cc1Swenshuai.xi         };
1477*53ee8cc1Swenshuai.xi 
1478*53ee8cc1Swenshuai.xi         switch (tsIf)
1479*53ee8cc1Swenshuai.xi         {
1480*53ee8cc1Swenshuai.xi             case 0:
1481*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
1482*53ee8cc1Swenshuai.xi                 u16ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & REG_CLKGEN0_TS_MASK) >> (REG_CLKGEN0_TS0_SHIFT + REG_CLKGEN0_TS_SRC_SHIFT);
1483*53ee8cc1Swenshuai.xi                 break;
1484*53ee8cc1Swenshuai.xi             case 1:
1485*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1486*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);
1487*53ee8cc1Swenshuai.xi                 break;
1488*53ee8cc1Swenshuai.xi             case 2:
1489*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1490*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);
1491*53ee8cc1Swenshuai.xi                 break;
1492*53ee8cc1Swenshuai.xi             case 3:
1493*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1494*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);
1495*53ee8cc1Swenshuai.xi                 break;
1496*53ee8cc1Swenshuai.xi             default:
1497*53ee8cc1Swenshuai.xi                 return FALSE;
1498*53ee8cc1Swenshuai.xi         }
1499*53ee8cc1Swenshuai.xi 
1500*53ee8cc1Swenshuai.xi         switch(u16ClkSrc)
1501*53ee8cc1Swenshuai.xi         {
1502*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT0:
1503*53ee8cc1Swenshuai.xi                 u8NameIdx = 0;
1504*53ee8cc1Swenshuai.xi                 break;
1505*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT1:
1506*53ee8cc1Swenshuai.xi                 u8NameIdx = 1;
1507*53ee8cc1Swenshuai.xi                 break;
1508*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT2:
1509*53ee8cc1Swenshuai.xi                 u8NameIdx = 2;
1510*53ee8cc1Swenshuai.xi                 break;
1511*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT3:
1512*53ee8cc1Swenshuai.xi                 u8NameIdx = 3;
1513*53ee8cc1Swenshuai.xi                 break;
1514*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT4:
1515*53ee8cc1Swenshuai.xi                 u8NameIdx = 4;
1516*53ee8cc1Swenshuai.xi                 break;
1517*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT5:
1518*53ee8cc1Swenshuai.xi                 u8NameIdx = 5;
1519*53ee8cc1Swenshuai.xi                 break;
1520*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT6:
1521*53ee8cc1Swenshuai.xi                 u8NameIdx = 6;
1522*53ee8cc1Swenshuai.xi                 break;
1523*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_TSO0:
1524*53ee8cc1Swenshuai.xi                 u8NameIdx = 7;
1525*53ee8cc1Swenshuai.xi                 break;
1526*53ee8cc1Swenshuai.xi             default:
1527*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__));
1528*53ee8cc1Swenshuai.xi                 u8NameIdx = 0;
1529*53ee8cc1Swenshuai.xi                 break;
1530*53ee8cc1Swenshuai.xi         }
1531*53ee8cc1Swenshuai.xi 
1532*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle, u8ClkSrcNames[u8NameIdx]);
1533*53ee8cc1Swenshuai.xi #else
1534*53ee8cc1Swenshuai.xi         switch (tsIf)
1535*53ee8cc1Swenshuai.xi         {
1536*53ee8cc1Swenshuai.xi             case 0:
1537*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
1538*53ee8cc1Swenshuai.xi                 break;
1539*53ee8cc1Swenshuai.xi             case 1:
1540*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
1541*53ee8cc1Swenshuai.xi                 break;
1542*53ee8cc1Swenshuai.xi             case 2:
1543*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
1544*53ee8cc1Swenshuai.xi                 break;
1545*53ee8cc1Swenshuai.xi             case 3:
1546*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS3_SHIFT));
1547*53ee8cc1Swenshuai.xi                 break;
1548*53ee8cc1Swenshuai.xi             default:
1549*53ee8cc1Swenshuai.xi                 return FALSE;
1550*53ee8cc1Swenshuai.xi         }
1551*53ee8cc1Swenshuai.xi #endif
1552*53ee8cc1Swenshuai.xi     }
1553*53ee8cc1Swenshuai.xi     return TRUE;
1554*53ee8cc1Swenshuai.xi }
1555*53ee8cc1Swenshuai.xi 
1556*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)1557*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_FileEn(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
1558*53ee8cc1Swenshuai.xi {
1559*53ee8cc1Swenshuai.xi     if(bEnable)
1560*53ee8cc1Swenshuai.xi     {
1561*53ee8cc1Swenshuai.xi         switch(eFileEng)
1562*53ee8cc1Swenshuai.xi         {
1563*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1564*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);    // for wishbone DMA (load firmware or playback)
1565*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);        //Tsif0 output is live TS
1566*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);                 //filein enable
1567*53ee8cc1Swenshuai.xi                 break;
1568*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1569*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
1570*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
1571*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
1572*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);         //filein enable
1573*53ee8cc1Swenshuai.xi                 break;
1574*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1575*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
1576*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
1577*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
1578*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
1579*53ee8cc1Swenshuai.xi                 break;
1580*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1581*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TSP_FILE_SEGMENT3);
1582*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_SEGMENT_TSIF3);
1583*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA_PORT_SEL3);
1584*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_IN_TSIF3);
1585*53ee8cc1Swenshuai.xi                 break;
1586*53ee8cc1Swenshuai.xi             default:
1587*53ee8cc1Swenshuai.xi                 return FALSE;
1588*53ee8cc1Swenshuai.xi         }
1589*53ee8cc1Swenshuai.xi     }
1590*53ee8cc1Swenshuai.xi     else
1591*53ee8cc1Swenshuai.xi     {
1592*53ee8cc1Swenshuai.xi         switch(eFileEng)
1593*53ee8cc1Swenshuai.xi         {
1594*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1595*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
1596*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);
1597*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);
1598*53ee8cc1Swenshuai.xi                 break;
1599*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1600*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TSP_FILE_SEGMENT1);
1601*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
1602*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
1603*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);
1604*53ee8cc1Swenshuai.xi                 break;
1605*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1606*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
1607*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
1608*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
1609*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
1610*53ee8cc1Swenshuai.xi                 break;
1611*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1612*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TSP_FILE_SEGMENT3);
1613*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_SEGMENT_TSIF3);
1614*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA_PORT_SEL3);
1615*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_IN_TSIF3);
1616*53ee8cc1Swenshuai.xi                 break;
1617*53ee8cc1Swenshuai.xi             default:
1618*53ee8cc1Swenshuai.xi                 return FALSE;
1619*53ee8cc1Swenshuai.xi         }
1620*53ee8cc1Swenshuai.xi     }
1621*53ee8cc1Swenshuai.xi 
1622*53ee8cc1Swenshuai.xi     return TRUE;
1623*53ee8cc1Swenshuai.xi }
1624*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_BitSwap(MS_U32 tsIf,MS_BOOL bEnable)1625*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_BitSwap(MS_U32 tsIf, MS_BOOL bEnable)
1626*53ee8cc1Swenshuai.xi {
1627*53ee8cc1Swenshuai.xi     if(bEnable)
1628*53ee8cc1Swenshuai.xi     {
1629*53ee8cc1Swenshuai.xi         switch(tsIf)
1630*53ee8cc1Swenshuai.xi         {
1631*53ee8cc1Swenshuai.xi             case 0:
1632*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1633*53ee8cc1Swenshuai.xi                 break;
1634*53ee8cc1Swenshuai.xi             case 1:
1635*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1636*53ee8cc1Swenshuai.xi                 break;
1637*53ee8cc1Swenshuai.xi             case 2:
1638*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1639*53ee8cc1Swenshuai.xi                 break;
1640*53ee8cc1Swenshuai.xi             case 3:
1641*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA3_SWAP);
1642*53ee8cc1Swenshuai.xi                 break;
1643*53ee8cc1Swenshuai.xi             default:
1644*53ee8cc1Swenshuai.xi                 return;
1645*53ee8cc1Swenshuai.xi         }
1646*53ee8cc1Swenshuai.xi     }
1647*53ee8cc1Swenshuai.xi     else
1648*53ee8cc1Swenshuai.xi     {
1649*53ee8cc1Swenshuai.xi         switch(tsIf)
1650*53ee8cc1Swenshuai.xi         {
1651*53ee8cc1Swenshuai.xi             case 0:
1652*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1653*53ee8cc1Swenshuai.xi                 break;
1654*53ee8cc1Swenshuai.xi             case 1:
1655*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1656*53ee8cc1Swenshuai.xi                 break;
1657*53ee8cc1Swenshuai.xi             case 2:
1658*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1659*53ee8cc1Swenshuai.xi                 break;
1660*53ee8cc1Swenshuai.xi             case 3:
1661*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA3_SWAP);
1662*53ee8cc1Swenshuai.xi                 break;
1663*53ee8cc1Swenshuai.xi             default:
1664*53ee8cc1Swenshuai.xi                 return;
1665*53ee8cc1Swenshuai.xi         }
1666*53ee8cc1Swenshuai.xi     }
1667*53ee8cc1Swenshuai.xi }
1668*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_ExtSync(MS_U32 tsIf,MS_BOOL bEnable)1669*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_ExtSync(MS_U32 tsIf, MS_BOOL bEnable)
1670*53ee8cc1Swenshuai.xi {
1671*53ee8cc1Swenshuai.xi     if(bEnable)
1672*53ee8cc1Swenshuai.xi     {
1673*53ee8cc1Swenshuai.xi         //printf("External Sync\n");
1674*53ee8cc1Swenshuai.xi 
1675*53ee8cc1Swenshuai.xi         switch(tsIf)
1676*53ee8cc1Swenshuai.xi         {
1677*53ee8cc1Swenshuai.xi             case 0:
1678*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1679*53ee8cc1Swenshuai.xi                 break;
1680*53ee8cc1Swenshuai.xi             case 1:
1681*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1682*53ee8cc1Swenshuai.xi                 break;
1683*53ee8cc1Swenshuai.xi             case 2:
1684*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1685*53ee8cc1Swenshuai.xi                 break;
1686*53ee8cc1Swenshuai.xi             case 3:
1687*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_EXT_SYNC_SEL3);
1688*53ee8cc1Swenshuai.xi                 break;
1689*53ee8cc1Swenshuai.xi             default:
1690*53ee8cc1Swenshuai.xi                 return;
1691*53ee8cc1Swenshuai.xi         }
1692*53ee8cc1Swenshuai.xi     }
1693*53ee8cc1Swenshuai.xi     else
1694*53ee8cc1Swenshuai.xi     {
1695*53ee8cc1Swenshuai.xi         //printf("Internal Sync\n");
1696*53ee8cc1Swenshuai.xi 
1697*53ee8cc1Swenshuai.xi         switch(tsIf)
1698*53ee8cc1Swenshuai.xi         {
1699*53ee8cc1Swenshuai.xi             case 0:
1700*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1701*53ee8cc1Swenshuai.xi                 break;
1702*53ee8cc1Swenshuai.xi             case 1:
1703*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1704*53ee8cc1Swenshuai.xi                 break;
1705*53ee8cc1Swenshuai.xi             case 2:
1706*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1707*53ee8cc1Swenshuai.xi                 break;
1708*53ee8cc1Swenshuai.xi             case 3:
1709*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_EXT_SYNC_SEL3);
1710*53ee8cc1Swenshuai.xi                 break;
1711*53ee8cc1Swenshuai.xi             default:
1712*53ee8cc1Swenshuai.xi                 return;
1713*53ee8cc1Swenshuai.xi         }
1714*53ee8cc1Swenshuai.xi     }
1715*53ee8cc1Swenshuai.xi }
1716*53ee8cc1Swenshuai.xi 
1717*53ee8cc1Swenshuai.xi #if 0
1718*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_Full_Block(MS_U32 tsIf, MS_BOOL bEnable)
1719*53ee8cc1Swenshuai.xi {
1720*53ee8cc1Swenshuai.xi     if(bEnable)
1721*53ee8cc1Swenshuai.xi     {
1722*53ee8cc1Swenshuai.xi         switch(tsIf)
1723*53ee8cc1Swenshuai.xi         {
1724*53ee8cc1Swenshuai.xi             case 0:
1725*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP);
1726*53ee8cc1Swenshuai.xi                 break;
1727*53ee8cc1Swenshuai.xi             case 1:
1728*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP1);
1729*53ee8cc1Swenshuai.xi                 break;
1730*53ee8cc1Swenshuai.xi             case 2:
1731*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP2);
1732*53ee8cc1Swenshuai.xi                 break;
1733*53ee8cc1Swenshuai.xi             case 3:
1734*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP3);
1735*53ee8cc1Swenshuai.xi                 break;
1736*53ee8cc1Swenshuai.xi             default:
1737*53ee8cc1Swenshuai.xi                 return;
1738*53ee8cc1Swenshuai.xi         }
1739*53ee8cc1Swenshuai.xi     }
1740*53ee8cc1Swenshuai.xi     else
1741*53ee8cc1Swenshuai.xi     {
1742*53ee8cc1Swenshuai.xi         switch(tsIf)
1743*53ee8cc1Swenshuai.xi         {
1744*53ee8cc1Swenshuai.xi             case 0:
1745*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP);
1746*53ee8cc1Swenshuai.xi                 break;
1747*53ee8cc1Swenshuai.xi             case 1:
1748*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP1);
1749*53ee8cc1Swenshuai.xi                 break;
1750*53ee8cc1Swenshuai.xi             case 2:
1751*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP2);
1752*53ee8cc1Swenshuai.xi                 break;
1753*53ee8cc1Swenshuai.xi             case 3:
1754*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP3);
1755*53ee8cc1Swenshuai.xi                 break;
1756*53ee8cc1Swenshuai.xi             default:
1757*53ee8cc1Swenshuai.xi                 return;
1758*53ee8cc1Swenshuai.xi         }
1759*53ee8cc1Swenshuai.xi 
1760*53ee8cc1Swenshuai.xi     }
1761*53ee8cc1Swenshuai.xi }
1762*53ee8cc1Swenshuai.xi #endif
1763*53ee8cc1Swenshuai.xi 
1764*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng,MS_BOOL bBypass)1765*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng, MS_BOOL bBypass)
1766*53ee8cc1Swenshuai.xi {
1767*53ee8cc1Swenshuai.xi     if(bBypass)
1768*53ee8cc1Swenshuai.xi     {
1769*53ee8cc1Swenshuai.xi         switch (eFileEng)
1770*53ee8cc1Swenshuai.xi         {
1771*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1772*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP);
1773*53ee8cc1Swenshuai.xi                 break;
1774*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1775*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP1);
1776*53ee8cc1Swenshuai.xi                 break;
1777*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1778*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP2);
1779*53ee8cc1Swenshuai.xi                 break;
1780*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1781*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP3);
1782*53ee8cc1Swenshuai.xi                 break;
1783*53ee8cc1Swenshuai.xi             default:
1784*53ee8cc1Swenshuai.xi                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupported File Eng : %d !\n",__FILE__,__FUNCTION__,__LINE__,eFileEng));
1785*53ee8cc1Swenshuai.xi                 break;
1786*53ee8cc1Swenshuai.xi         }
1787*53ee8cc1Swenshuai.xi         //REG16_MSK_W(&_RegCtrl3->CFG3_10,CFG3_10_PS_MODE_SRC_MASK,(eFileEng << CFG3_10_PS_MODE_SRC_SHIFT));
1788*53ee8cc1Swenshuai.xi     }
1789*53ee8cc1Swenshuai.xi     else
1790*53ee8cc1Swenshuai.xi     {
1791*53ee8cc1Swenshuai.xi         switch (eFileEng)
1792*53ee8cc1Swenshuai.xi         {
1793*53ee8cc1Swenshuai.xi            case E_FILEENG_TSIF0:
1794*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP);
1795*53ee8cc1Swenshuai.xi                 break;
1796*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1797*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP1);
1798*53ee8cc1Swenshuai.xi                 break;
1799*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1800*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP2);
1801*53ee8cc1Swenshuai.xi                 break;
1802*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1803*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP3);
1804*53ee8cc1Swenshuai.xi                 break;
1805*53ee8cc1Swenshuai.xi             default:
1806*53ee8cc1Swenshuai.xi                 HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupported File Eng : %d !\n",__FILE__,__FUNCTION__,__LINE__,eFileEng));
1807*53ee8cc1Swenshuai.xi                 break;
1808*53ee8cc1Swenshuai.xi         }
1809*53ee8cc1Swenshuai.xi     }
1810*53ee8cc1Swenshuai.xi }
1811*53ee8cc1Swenshuai.xi 
1812*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_Parl(MS_U32 tsIf,MS_BOOL bEnable)1813*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_Parl(MS_U32 tsIf, MS_BOOL bEnable)
1814*53ee8cc1Swenshuai.xi {
1815*53ee8cc1Swenshuai.xi     if(bEnable)
1816*53ee8cc1Swenshuai.xi     {
1817*53ee8cc1Swenshuai.xi         switch(tsIf)
1818*53ee8cc1Swenshuai.xi         {
1819*53ee8cc1Swenshuai.xi             case 0:
1820*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1821*53ee8cc1Swenshuai.xi                 break;
1822*53ee8cc1Swenshuai.xi             case 1:
1823*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1824*53ee8cc1Swenshuai.xi                 break;
1825*53ee8cc1Swenshuai.xi             case 2:
1826*53ee8cc1Swenshuai.xi                 REG32_SET(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1827*53ee8cc1Swenshuai.xi                 break;
1828*53ee8cc1Swenshuai.xi             case 3:
1829*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_0B), CFG_0B_P_SEL3);
1830*53ee8cc1Swenshuai.xi                 break;
1831*53ee8cc1Swenshuai.xi             default:
1832*53ee8cc1Swenshuai.xi                 return;
1833*53ee8cc1Swenshuai.xi         }
1834*53ee8cc1Swenshuai.xi     }
1835*53ee8cc1Swenshuai.xi     else
1836*53ee8cc1Swenshuai.xi     {
1837*53ee8cc1Swenshuai.xi         switch(tsIf)
1838*53ee8cc1Swenshuai.xi         {
1839*53ee8cc1Swenshuai.xi             case 0:
1840*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1841*53ee8cc1Swenshuai.xi                 break;
1842*53ee8cc1Swenshuai.xi             case 1:
1843*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1844*53ee8cc1Swenshuai.xi                 break;
1845*53ee8cc1Swenshuai.xi             case 2:
1846*53ee8cc1Swenshuai.xi                 REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1847*53ee8cc1Swenshuai.xi                 break;
1848*53ee8cc1Swenshuai.xi             case 3:
1849*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_0B), CFG_0B_P_SEL3);
1850*53ee8cc1Swenshuai.xi                 break;
1851*53ee8cc1Swenshuai.xi             default:
1852*53ee8cc1Swenshuai.xi                 return;
1853*53ee8cc1Swenshuai.xi         }
1854*53ee8cc1Swenshuai.xi     }
1855*53ee8cc1Swenshuai.xi }
1856*53ee8cc1Swenshuai.xi 
HAL_TSP_PAD_3Wire(MS_U32 u32Pad,MS_BOOL bEnable)1857*53ee8cc1Swenshuai.xi void HAL_TSP_PAD_3Wire(MS_U32 u32Pad, MS_BOOL bEnable)
1858*53ee8cc1Swenshuai.xi {
1859*53ee8cc1Swenshuai.xi #if 0 //@NOTE: Kano do NOT need to set
1860*53ee8cc1Swenshuai.xi     if(bEnable)
1861*53ee8cc1Swenshuai.xi     {
1862*53ee8cc1Swenshuai.xi         switch(u32Pad)
1863*53ee8cc1Swenshuai.xi         {
1864*53ee8cc1Swenshuai.xi             case 0:
1865*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS0_3WIRE_EN;
1866*53ee8cc1Swenshuai.xi                 break;
1867*53ee8cc1Swenshuai.xi             case 1:
1868*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS1_3WIRE_EN;
1869*53ee8cc1Swenshuai.xi                 break;
1870*53ee8cc1Swenshuai.xi             case 2:
1871*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1)| REG_TOP_TSP_TS2_3WIRE_EN;
1872*53ee8cc1Swenshuai.xi                 break;
1873*53ee8cc1Swenshuai.xi             case 3:
1874*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) | REG_TOP_TSP_TS3_3WIRE_EN;
1875*53ee8cc1Swenshuai.xi                 break;
1876*53ee8cc1Swenshuai.xi 
1877*53ee8cc1Swenshuai.xi             default:
1878*53ee8cc1Swenshuai.xi                 return;
1879*53ee8cc1Swenshuai.xi         }
1880*53ee8cc1Swenshuai.xi     }
1881*53ee8cc1Swenshuai.xi     else
1882*53ee8cc1Swenshuai.xi     {
1883*53ee8cc1Swenshuai.xi         switch(u32Pad)
1884*53ee8cc1Swenshuai.xi         {
1885*53ee8cc1Swenshuai.xi             case 0:
1886*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS0_3WIRE_EN;
1887*53ee8cc1Swenshuai.xi                 break;
1888*53ee8cc1Swenshuai.xi             case 1:
1889*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS1_3WIRE_EN;
1890*53ee8cc1Swenshuai.xi                 break;
1891*53ee8cc1Swenshuai.xi             case 2:
1892*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) & ~REG_TOP_TSP_TS2_3WIRE_EN;
1893*53ee8cc1Swenshuai.xi                 break;
1894*53ee8cc1Swenshuai.xi             case 3:
1895*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) & ~REG_TOP_TSP_TS3_3WIRE_EN;
1896*53ee8cc1Swenshuai.xi                 break;
1897*53ee8cc1Swenshuai.xi             default:
1898*53ee8cc1Swenshuai.xi                 return;
1899*53ee8cc1Swenshuai.xi         }
1900*53ee8cc1Swenshuai.xi     }
1901*53ee8cc1Swenshuai.xi #endif
1902*53ee8cc1Swenshuai.xi }
1903*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_3Wire(MS_U32 tsIf,MS_BOOL bEnable)1904*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_3Wire(MS_U32 tsIf, MS_BOOL bEnable)
1905*53ee8cc1Swenshuai.xi {
1906*53ee8cc1Swenshuai.xi     if(bEnable)
1907*53ee8cc1Swenshuai.xi     {
1908*53ee8cc1Swenshuai.xi         switch(tsIf)
1909*53ee8cc1Swenshuai.xi         {
1910*53ee8cc1Swenshuai.xi             case 0:
1911*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1912*53ee8cc1Swenshuai.xi                 break;
1913*53ee8cc1Swenshuai.xi             case 1:
1914*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1915*53ee8cc1Swenshuai.xi                 break;
1916*53ee8cc1Swenshuai.xi             case 2:
1917*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1918*53ee8cc1Swenshuai.xi                 break;
1919*53ee8cc1Swenshuai.xi             case 3:
1920*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS3);
1921*53ee8cc1Swenshuai.xi                 break;
1922*53ee8cc1Swenshuai.xi             default:
1923*53ee8cc1Swenshuai.xi                 return;
1924*53ee8cc1Swenshuai.xi         }
1925*53ee8cc1Swenshuai.xi     }
1926*53ee8cc1Swenshuai.xi     else
1927*53ee8cc1Swenshuai.xi     {
1928*53ee8cc1Swenshuai.xi         switch(tsIf)
1929*53ee8cc1Swenshuai.xi         {
1930*53ee8cc1Swenshuai.xi             case 0:
1931*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1932*53ee8cc1Swenshuai.xi                 break;
1933*53ee8cc1Swenshuai.xi             case 1:
1934*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1935*53ee8cc1Swenshuai.xi                 break;
1936*53ee8cc1Swenshuai.xi             case 2:
1937*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1938*53ee8cc1Swenshuai.xi                 break;
1939*53ee8cc1Swenshuai.xi             case 3:
1940*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS3);
1941*53ee8cc1Swenshuai.xi                 break;
1942*53ee8cc1Swenshuai.xi             default:
1943*53ee8cc1Swenshuai.xi                 return;
1944*53ee8cc1Swenshuai.xi         }
1945*53ee8cc1Swenshuai.xi     }
1946*53ee8cc1Swenshuai.xi 
1947*53ee8cc1Swenshuai.xi }
1948*53ee8cc1Swenshuai.xi 
HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId,MS_BOOL bEn)1949*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId, MS_BOOL bEn)
1950*53ee8cc1Swenshuai.xi {
1951*53ee8cc1Swenshuai.xi     if(bEn)
1952*53ee8cc1Swenshuai.xi     {
1953*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
1954*53ee8cc1Swenshuai.xi     }
1955*53ee8cc1Swenshuai.xi     else
1956*53ee8cc1Swenshuai.xi     {
1957*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
1958*53ee8cc1Swenshuai.xi     }
1959*53ee8cc1Swenshuai.xi }
1960*53ee8cc1Swenshuai.xi 
HAL_TSP_ReDirect_File(MS_U32 reDir,MS_U32 tsIf,MS_BOOL bEn)1961*53ee8cc1Swenshuai.xi void HAL_TSP_ReDirect_File(MS_U32 reDir, MS_U32 tsIf, MS_BOOL bEn)
1962*53ee8cc1Swenshuai.xi {
1963*53ee8cc1Swenshuai.xi    //@NOTE  Not support in KANO(K7)
1964*53ee8cc1Swenshuai.xi    #if 0
1965*53ee8cc1Swenshuai.xi     MS_U16 u16Src = 0;
1966*53ee8cc1Swenshuai.xi 
1967*53ee8cc1Swenshuai.xi     if((reDir > 0) || (tsIf > 1))
1968*53ee8cc1Swenshuai.xi         return;
1969*53ee8cc1Swenshuai.xi 
1970*53ee8cc1Swenshuai.xi     if(bEn)
1971*53ee8cc1Swenshuai.xi     {
1972*53ee8cc1Swenshuai.xi         u16Src = (MS_U16)(tsIf + 1) << CFG_01_PDFLT2_FILE_SRC_SHIFT;
1973*53ee8cc1Swenshuai.xi     }
1974*53ee8cc1Swenshuai.xi 
1975*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PDFLT2_FILE_SRC, u16Src);
1976*53ee8cc1Swenshuai.xi    #endif
1977*53ee8cc1Swenshuai.xi }
1978*53ee8cc1Swenshuai.xi 
1979*53ee8cc1Swenshuai.xi // [ToDo]
HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)1980*53ee8cc1Swenshuai.xi void HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)
1981*53ee8cc1Swenshuai.xi {
1982*53ee8cc1Swenshuai.xi     if(bEn)
1983*53ee8cc1Swenshuai.xi     {
1984*53ee8cc1Swenshuai.xi         switch(u32Tsif)
1985*53ee8cc1Swenshuai.xi         {
1986*53ee8cc1Swenshuai.xi             case 0:
1987*53ee8cc1Swenshuai.xi                 switch (eFltType)
1988*53ee8cc1Swenshuai.xi                 {
1989*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
1990*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
1991*53ee8cc1Swenshuai.xi                         break;
1992*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
1993*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
1994*53ee8cc1Swenshuai.xi                         break;
1995*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
1996*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
1997*53ee8cc1Swenshuai.xi                         break;
1998*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
1999*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
2000*53ee8cc1Swenshuai.xi                         break;
2001*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2002*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AC_EN);
2003*53ee8cc1Swenshuai.xi                         break;
2004*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2005*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX0_TRACE_MARK_AD_EN);
2006*53ee8cc1Swenshuai.xi                         break;
2007*53ee8cc1Swenshuai.xi                     default:
2008*53ee8cc1Swenshuai.xi                         break;
2009*53ee8cc1Swenshuai.xi                 }
2010*53ee8cc1Swenshuai.xi                 break;
2011*53ee8cc1Swenshuai.xi             case 1:
2012*53ee8cc1Swenshuai.xi                 switch (eFltType)
2013*53ee8cc1Swenshuai.xi                 {
2014*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2015*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
2016*53ee8cc1Swenshuai.xi                         break;
2017*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2018*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
2019*53ee8cc1Swenshuai.xi                         break;
2020*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2021*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
2022*53ee8cc1Swenshuai.xi                         break;
2023*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2024*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
2025*53ee8cc1Swenshuai.xi                         break;
2026*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2027*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AC_EN);
2028*53ee8cc1Swenshuai.xi                         break;
2029*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2030*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX1_TRACE_MARK_AD_EN);
2031*53ee8cc1Swenshuai.xi                         break;
2032*53ee8cc1Swenshuai.xi                     default:
2033*53ee8cc1Swenshuai.xi                         break;
2034*53ee8cc1Swenshuai.xi                 }
2035*53ee8cc1Swenshuai.xi                 break;
2036*53ee8cc1Swenshuai.xi             case 2:
2037*53ee8cc1Swenshuai.xi                 switch (eFltType)
2038*53ee8cc1Swenshuai.xi                 {
2039*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2040*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
2041*53ee8cc1Swenshuai.xi                         break;
2042*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2043*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
2044*53ee8cc1Swenshuai.xi                         break;
2045*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2046*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
2047*53ee8cc1Swenshuai.xi                         break;
2048*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2049*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
2050*53ee8cc1Swenshuai.xi                         break;
2051*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2052*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AC_EN);
2053*53ee8cc1Swenshuai.xi                         break;
2054*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2055*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX2_TRACE_MARK_AD_EN);
2056*53ee8cc1Swenshuai.xi                         break;
2057*53ee8cc1Swenshuai.xi                     default:
2058*53ee8cc1Swenshuai.xi                         break;
2059*53ee8cc1Swenshuai.xi                 }
2060*53ee8cc1Swenshuai.xi                 break;
2061*53ee8cc1Swenshuai.xi             case 3:
2062*53ee8cc1Swenshuai.xi                 switch (eFltType)
2063*53ee8cc1Swenshuai.xi                 {
2064*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2065*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V_EN);
2066*53ee8cc1Swenshuai.xi                         break;
2067*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2068*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V3D_EN);
2069*53ee8cc1Swenshuai.xi                         break;
2070*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2071*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_A_EN);
2072*53ee8cc1Swenshuai.xi                         break;
2073*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2074*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AB_EN);
2075*53ee8cc1Swenshuai.xi                         break;
2076*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2077*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AC_EN);
2078*53ee8cc1Swenshuai.xi                         break;
2079*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2080*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX3_TRACE_MARK_AD_EN);
2081*53ee8cc1Swenshuai.xi                         break;
2082*53ee8cc1Swenshuai.xi                     default:
2083*53ee8cc1Swenshuai.xi                         break;
2084*53ee8cc1Swenshuai.xi                 }
2085*53ee8cc1Swenshuai.xi                 break;
2086*53ee8cc1Swenshuai.xi             default:
2087*53ee8cc1Swenshuai.xi                 break;
2088*53ee8cc1Swenshuai.xi         }
2089*53ee8cc1Swenshuai.xi     }
2090*53ee8cc1Swenshuai.xi     else
2091*53ee8cc1Swenshuai.xi     {
2092*53ee8cc1Swenshuai.xi         switch(u32Tsif)
2093*53ee8cc1Swenshuai.xi         {
2094*53ee8cc1Swenshuai.xi             case 0:
2095*53ee8cc1Swenshuai.xi                 switch (eFltType)
2096*53ee8cc1Swenshuai.xi                 {
2097*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2098*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
2099*53ee8cc1Swenshuai.xi                         break;
2100*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2101*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
2102*53ee8cc1Swenshuai.xi                         break;
2103*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2104*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
2105*53ee8cc1Swenshuai.xi                         break;
2106*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2107*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
2108*53ee8cc1Swenshuai.xi                         break;
2109*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2110*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AC_EN);
2111*53ee8cc1Swenshuai.xi                         break;
2112*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2113*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX0_TRACE_MARK_AD_EN);
2114*53ee8cc1Swenshuai.xi                         break;
2115*53ee8cc1Swenshuai.xi                     default:
2116*53ee8cc1Swenshuai.xi                         break;
2117*53ee8cc1Swenshuai.xi                 }
2118*53ee8cc1Swenshuai.xi                 break;
2119*53ee8cc1Swenshuai.xi             case 1:
2120*53ee8cc1Swenshuai.xi                 switch (eFltType)
2121*53ee8cc1Swenshuai.xi                 {
2122*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2123*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
2124*53ee8cc1Swenshuai.xi                         break;
2125*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2126*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
2127*53ee8cc1Swenshuai.xi                         break;
2128*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2129*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
2130*53ee8cc1Swenshuai.xi                         break;
2131*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2132*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
2133*53ee8cc1Swenshuai.xi                         break;
2134*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2135*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AC_EN);
2136*53ee8cc1Swenshuai.xi                         break;
2137*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2138*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX1_TRACE_MARK_AD_EN);
2139*53ee8cc1Swenshuai.xi                         break;
2140*53ee8cc1Swenshuai.xi                     default:
2141*53ee8cc1Swenshuai.xi                         break;
2142*53ee8cc1Swenshuai.xi                 }
2143*53ee8cc1Swenshuai.xi                 break;
2144*53ee8cc1Swenshuai.xi             case 2:
2145*53ee8cc1Swenshuai.xi                 switch (eFltType)
2146*53ee8cc1Swenshuai.xi                 {
2147*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2148*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
2149*53ee8cc1Swenshuai.xi                         break;
2150*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2151*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
2152*53ee8cc1Swenshuai.xi                         break;
2153*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2154*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
2155*53ee8cc1Swenshuai.xi                         break;
2156*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2157*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
2158*53ee8cc1Swenshuai.xi                         break;
2159*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2160*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AC_EN);
2161*53ee8cc1Swenshuai.xi                         break;
2162*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2163*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX2_TRACE_MARK_AD_EN);
2164*53ee8cc1Swenshuai.xi                         break;
2165*53ee8cc1Swenshuai.xi                     default:
2166*53ee8cc1Swenshuai.xi                         break;
2167*53ee8cc1Swenshuai.xi                 }
2168*53ee8cc1Swenshuai.xi                 break;
2169*53ee8cc1Swenshuai.xi             case 3:
2170*53ee8cc1Swenshuai.xi                 switch (eFltType)
2171*53ee8cc1Swenshuai.xi                 {
2172*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2173*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V_EN);
2174*53ee8cc1Swenshuai.xi                         break;
2175*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2176*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V3D_EN);
2177*53ee8cc1Swenshuai.xi                         break;
2178*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2179*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_A_EN);
2180*53ee8cc1Swenshuai.xi                         break;
2181*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2182*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AB_EN);
2183*53ee8cc1Swenshuai.xi                         break;
2184*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2185*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AC_EN);
2186*53ee8cc1Swenshuai.xi                         break;
2187*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2188*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX3_TRACE_MARK_AD_EN);
2189*53ee8cc1Swenshuai.xi                         break;
2190*53ee8cc1Swenshuai.xi                     default:
2191*53ee8cc1Swenshuai.xi                         break;
2192*53ee8cc1Swenshuai.xi                 }
2193*53ee8cc1Swenshuai.xi                 break;
2194*53ee8cc1Swenshuai.xi             default:
2195*53ee8cc1Swenshuai.xi                 break;
2196*53ee8cc1Swenshuai.xi         }
2197*53ee8cc1Swenshuai.xi     }
2198*53ee8cc1Swenshuai.xi }
2199*53ee8cc1Swenshuai.xi 
HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)2200*53ee8cc1Swenshuai.xi void HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)
2201*53ee8cc1Swenshuai.xi {
2202*53ee8cc1Swenshuai.xi 
2203*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
2204*53ee8cc1Swenshuai.xi     {
2205*53ee8cc1Swenshuai.xi         switch(u32BD)
2206*53ee8cc1Swenshuai.xi         {
2207*53ee8cc1Swenshuai.xi             case 0:
2208*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
2209*53ee8cc1Swenshuai.xi                 break;
2210*53ee8cc1Swenshuai.xi             case 1:
2211*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
2212*53ee8cc1Swenshuai.xi                 break;
2213*53ee8cc1Swenshuai.xi             default:
2214*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2215*53ee8cc1Swenshuai.xi                 break;
2216*53ee8cc1Swenshuai.xi         }
2217*53ee8cc1Swenshuai.xi     }
2218*53ee8cc1Swenshuai.xi     else
2219*53ee8cc1Swenshuai.xi     {
2220*53ee8cc1Swenshuai.xi         switch(u32BD)
2221*53ee8cc1Swenshuai.xi         {
2222*53ee8cc1Swenshuai.xi             case 0:
2223*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
2224*53ee8cc1Swenshuai.xi                 break;
2225*53ee8cc1Swenshuai.xi             case 1:
2226*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
2227*53ee8cc1Swenshuai.xi                 break;
2228*53ee8cc1Swenshuai.xi             default:
2229*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2230*53ee8cc1Swenshuai.xi                 break;
2231*53ee8cc1Swenshuai.xi 
2232*53ee8cc1Swenshuai.xi         }
2233*53ee8cc1Swenshuai.xi     }
2234*53ee8cc1Swenshuai.xi 
2235*53ee8cc1Swenshuai.xi }
2236*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng,MS_U32 u32PktSize)2237*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng, MS_U32 u32PktSize)
2238*53ee8cc1Swenshuai.xi {
2239*53ee8cc1Swenshuai.xi     MS_U32 u32PktLen = u32PktSize;
2240*53ee8cc1Swenshuai.xi     MS_U16 u16value  = 0;
2241*53ee8cc1Swenshuai.xi 
2242*53ee8cc1Swenshuai.xi     if(u32PktSize == 130)
2243*53ee8cc1Swenshuai.xi     {
2244*53ee8cc1Swenshuai.xi         u32PktLen = 188;
2245*53ee8cc1Swenshuai.xi     }
2246*53ee8cc1Swenshuai.xi     else if(u32PktSize == 134)
2247*53ee8cc1Swenshuai.xi     {
2248*53ee8cc1Swenshuai.xi         u32PktLen = 192;
2249*53ee8cc1Swenshuai.xi     }
2250*53ee8cc1Swenshuai.xi 
2251*53ee8cc1Swenshuai.xi     if(u32PktSize == 130 || u32PktSize == 134) //RVU
2252*53ee8cc1Swenshuai.xi     {
2253*53ee8cc1Swenshuai.xi         if(u32PktSize == 134)
2254*53ee8cc1Swenshuai.xi         {
2255*53ee8cc1Swenshuai.xi             switch(eFileEng)
2256*53ee8cc1Swenshuai.xi             {
2257*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF0:
2258*53ee8cc1Swenshuai.xi                     u16value = HW4_CFG36_RVU_TIMESTAMP_EN0;
2259*53ee8cc1Swenshuai.xi                     break;
2260*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF1:
2261*53ee8cc1Swenshuai.xi                     u16value = HW4_CFG36_RVU_TIMESTAMP_EN1;
2262*53ee8cc1Swenshuai.xi                     break;
2263*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF2:
2264*53ee8cc1Swenshuai.xi                     u16value = CFG4_54_RVU_TIMESTAMP_EN2;
2265*53ee8cc1Swenshuai.xi                     break;
2266*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF3:
2267*53ee8cc1Swenshuai.xi                     u16value = CFG4_54_RVU_TIMESTAMP_EN3;
2268*53ee8cc1Swenshuai.xi                     break;
2269*53ee8cc1Swenshuai.xi                 default:
2270*53ee8cc1Swenshuai.xi                     printf("Not support !!\n");
2271*53ee8cc1Swenshuai.xi                     break;
2272*53ee8cc1Swenshuai.xi             }
2273*53ee8cc1Swenshuai.xi         }
2274*53ee8cc1Swenshuai.xi 
2275*53ee8cc1Swenshuai.xi         switch(eFileEng)
2276*53ee8cc1Swenshuai.xi         {
2277*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2278*53ee8cc1Swenshuai.xi                 u16value |= (HW4_CFG36_RVU_PSI_EN0 | HW4_CFG36_RVU_EN0);
2279*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_36, u16value);
2280*53ee8cc1Swenshuai.xi                 break;
2281*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2282*53ee8cc1Swenshuai.xi                 u16value |= (HW4_CFG36_RVU_PSI_EN1 | HW4_CFG36_RVU_EN1);
2283*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_36, u16value);
2284*53ee8cc1Swenshuai.xi                 break;
2285*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2286*53ee8cc1Swenshuai.xi                 u16value |= (CFG4_54_RVU_PSI_EN2 | CFG4_54_RVU_EN2);
2287*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl4->CFG4_54, u16value);
2288*53ee8cc1Swenshuai.xi                 break;
2289*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2290*53ee8cc1Swenshuai.xi                 u16value |= (CFG4_54_RVU_PSI_EN3 | CFG4_54_RVU_EN3);
2291*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl4->CFG4_54, u16value);
2292*53ee8cc1Swenshuai.xi                 break;
2293*53ee8cc1Swenshuai.xi             default:
2294*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2295*53ee8cc1Swenshuai.xi                 return;
2296*53ee8cc1Swenshuai.xi         }
2297*53ee8cc1Swenshuai.xi 
2298*53ee8cc1Swenshuai.xi     }
2299*53ee8cc1Swenshuai.xi     else
2300*53ee8cc1Swenshuai.xi     {
2301*53ee8cc1Swenshuai.xi         switch(eFileEng)
2302*53ee8cc1Swenshuai.xi         {
2303*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2304*53ee8cc1Swenshuai.xi                 u16value = HW4_CFG36_RVU_PSI_EN0 | HW4_CFG36_RVU_EN0 | HW4_CFG36_RVU_TIMESTAMP_EN0;
2305*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_36, u16value);
2306*53ee8cc1Swenshuai.xi                 break;
2307*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2308*53ee8cc1Swenshuai.xi                 u16value = HW4_CFG36_RVU_PSI_EN1 | HW4_CFG36_RVU_EN1 | HW4_CFG36_RVU_TIMESTAMP_EN1;
2309*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_36, u16value);
2310*53ee8cc1Swenshuai.xi                 break;
2311*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2312*53ee8cc1Swenshuai.xi                 u16value = CFG4_54_RVU_PSI_EN2 | CFG4_54_RVU_EN2 | CFG4_54_RVU_TIMESTAMP_EN2;
2313*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl4->CFG4_54, u16value);
2314*53ee8cc1Swenshuai.xi                 break;
2315*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2316*53ee8cc1Swenshuai.xi                 u16value = CFG4_54_RVU_PSI_EN3 | CFG4_54_RVU_EN3 | CFG4_54_RVU_TIMESTAMP_EN3;
2317*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl4->CFG4_54, u16value);
2318*53ee8cc1Swenshuai.xi                 break;
2319*53ee8cc1Swenshuai.xi             default:
2320*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2321*53ee8cc1Swenshuai.xi                 return;
2322*53ee8cc1Swenshuai.xi         }
2323*53ee8cc1Swenshuai.xi     }
2324*53ee8cc1Swenshuai.xi 
2325*53ee8cc1Swenshuai.xi     switch(eFileEng)
2326*53ee8cc1Swenshuai.xi     {
2327*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2328*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_ALT_TS_SIZE);
2329*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->PktChkSizeFilein, (REG16_R(&_RegCtrl->PktChkSizeFilein) & ~TSP_PKT_SIZE_MASK) | (TSP_PKT_SIZE_MASK & (u32PktLen-1)));
2330*53ee8cc1Swenshuai.xi             break;
2331*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2332*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)));
2333*53ee8cc1Swenshuai.xi             break;
2334*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2335*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_07, (REG16_R(&_RegCtrl2->CFG_07) & ~CFG_07_PKT_CHK_SIZE_FIN2) | (CFG_07_PKT_CHK_SIZE_FIN2 & (u32PktLen-1)));
2336*53ee8cc1Swenshuai.xi             break;
2337*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2338*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_0C, (REG16_R(&_RegCtrl2->CFG_0C) & ~CFG_0C_PKT_CHK_SIZE_FIN3) | (CFG_0C_PKT_CHK_SIZE_FIN3 & (u32PktLen-1)));
2339*53ee8cc1Swenshuai.xi             break;
2340*53ee8cc1Swenshuai.xi         default:
2341*53ee8cc1Swenshuai.xi             break;
2342*53ee8cc1Swenshuai.xi     }
2343*53ee8cc1Swenshuai.xi }
2344*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng,MS_U32 addr)2345*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng, MS_U32 addr)
2346*53ee8cc1Swenshuai.xi {
2347*53ee8cc1Swenshuai.xi     // Check MIU select
2348*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
2349*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetFileinAddr;
2350*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFileinAddr, addr);
2351*53ee8cc1Swenshuai.xi 
2352*53ee8cc1Swenshuai.xi     switch(eFileEng)
2353*53ee8cc1Swenshuai.xi     {
2354*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2355*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));
2356*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsDma_Addr, phyMiuOffsetFileinAddr);
2357*53ee8cc1Swenshuai.xi             break;
2358*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2359*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_FILEIN1_MASK)) | ((u8MiuSel << REG_MIU_SEL_FILEIN1_SHIFT) & REG_MIU_SEL_FILEIN1_MASK));
2360*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_30_31, phyMiuOffsetFileinAddr);
2361*53ee8cc1Swenshuai.xi             break;
2362*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2363*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_FILEIN2_MASK)) | ((u8MiuSel << REG_MIU_SEL_FILEIN2_SHIFT) & REG_MIU_SEL_FILEIN2_MASK));
2364*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_35_36, phyMiuOffsetFileinAddr);
2365*53ee8cc1Swenshuai.xi             break;
2366*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2367*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_FILEIN3_MASK)) | ((u8MiuSel << REG_MIU_SEL_FILEIN3_SHIFT) & REG_MIU_SEL_FILEIN3_MASK));
2368*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_3A_3B, phyMiuOffsetFileinAddr);
2369*53ee8cc1Swenshuai.xi             break;
2370*53ee8cc1Swenshuai.xi         default:
2371*53ee8cc1Swenshuai.xi             break;
2372*53ee8cc1Swenshuai.xi     }
2373*53ee8cc1Swenshuai.xi }
2374*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng,MS_U32 size)2375*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng, MS_U32 size)
2376*53ee8cc1Swenshuai.xi {
2377*53ee8cc1Swenshuai.xi     switch(eFileEng)
2378*53ee8cc1Swenshuai.xi     {
2379*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2380*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsDma_Size, size);
2381*53ee8cc1Swenshuai.xi             break;
2382*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2383*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_32_33, size);
2384*53ee8cc1Swenshuai.xi             break;
2385*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2386*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_37_38, size);
2387*53ee8cc1Swenshuai.xi             break;
2388*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2389*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_3C_3D, size);
2390*53ee8cc1Swenshuai.xi             break;
2391*53ee8cc1Swenshuai.xi         default:
2392*53ee8cc1Swenshuai.xi             break;
2393*53ee8cc1Swenshuai.xi     }
2394*53ee8cc1Swenshuai.xi }
2395*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)2396*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_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_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_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_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_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_File_Pause(FILEENG_SEQ eFileEng)2417*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)
2418*53ee8cc1Swenshuai.xi {
2419*53ee8cc1Swenshuai.xi     switch (eFileEng)
2420*53ee8cc1Swenshuai.xi     {
2421*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2422*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
2423*53ee8cc1Swenshuai.xi             return TRUE;
2424*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2425*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
2426*53ee8cc1Swenshuai.xi             return TRUE;
2427*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2428*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
2429*53ee8cc1Swenshuai.xi             return TRUE;
2430*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2431*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF3_FILE_PAUSE);
2432*53ee8cc1Swenshuai.xi             return TRUE;
2433*53ee8cc1Swenshuai.xi         default:
2434*53ee8cc1Swenshuai.xi             return FALSE;
2435*53ee8cc1Swenshuai.xi     }
2436*53ee8cc1Swenshuai.xi }
2437*53ee8cc1Swenshuai.xi 
HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)2438*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)
2439*53ee8cc1Swenshuai.xi {
2440*53ee8cc1Swenshuai.xi     switch (eFileEng)
2441*53ee8cc1Swenshuai.xi     {
2442*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2443*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
2444*53ee8cc1Swenshuai.xi             return TRUE;
2445*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2446*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
2447*53ee8cc1Swenshuai.xi             return TRUE;
2448*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2449*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
2450*53ee8cc1Swenshuai.xi             return TRUE;
2451*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2452*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF3_FILE_PAUSE);
2453*53ee8cc1Swenshuai.xi             return TRUE;
2454*53ee8cc1Swenshuai.xi         default:
2455*53ee8cc1Swenshuai.xi             return FALSE;
2456*53ee8cc1Swenshuai.xi     }
2457*53ee8cc1Swenshuai.xi }
2458*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)2459*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)
2460*53ee8cc1Swenshuai.xi {
2461*53ee8cc1Swenshuai.xi     switch(eFileEng)
2462*53ee8cc1Swenshuai.xi     {
2463*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2464*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TsDma_Ctrl, (TSP_TSDMA_INIT_TRUST | TSP_TSDMA_CTRL_START));
2465*53ee8cc1Swenshuai.xi             break;
2466*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2467*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_34, (CFG_34_REG_TSP_FILEIN_INIT_TRUST_TSIF1 | CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START));
2468*53ee8cc1Swenshuai.xi             break;
2469*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2470*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_39, (CFG_39_FILEIN_INIT_TRUST_TSIF2 | CFG_39_FILEIN_CTRL_TSIF2_START));
2471*53ee8cc1Swenshuai.xi             break;
2472*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2473*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_3E, (CFG_3E_FILEIN_INIT_TRUST_TSIF3 | CFG_3E_FILEIN_CTRL_TSIF3_START));
2474*53ee8cc1Swenshuai.xi             break;
2475*53ee8cc1Swenshuai.xi         default:
2476*53ee8cc1Swenshuai.xi             break;
2477*53ee8cc1Swenshuai.xi     }
2478*53ee8cc1Swenshuai.xi }
2479*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng,MS_BOOL bEn)2480*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng, MS_BOOL bEn)
2481*53ee8cc1Swenshuai.xi {
2482*53ee8cc1Swenshuai.xi     if(bEn)
2483*53ee8cc1Swenshuai.xi     {
2484*53ee8cc1Swenshuai.xi         switch(eFileEng)
2485*53ee8cc1Swenshuai.xi         {
2486*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2487*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
2488*53ee8cc1Swenshuai.xi                 break;
2489*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2490*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
2491*53ee8cc1Swenshuai.xi                 break;
2492*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2493*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
2494*53ee8cc1Swenshuai.xi                 break;
2495*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2496*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF3);
2497*53ee8cc1Swenshuai.xi                 break;
2498*53ee8cc1Swenshuai.xi             default:
2499*53ee8cc1Swenshuai.xi                 break;
2500*53ee8cc1Swenshuai.xi         }
2501*53ee8cc1Swenshuai.xi     }
2502*53ee8cc1Swenshuai.xi     else
2503*53ee8cc1Swenshuai.xi     {
2504*53ee8cc1Swenshuai.xi         switch(eFileEng)
2505*53ee8cc1Swenshuai.xi         {
2506*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2507*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
2508*53ee8cc1Swenshuai.xi                 break;
2509*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2510*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
2511*53ee8cc1Swenshuai.xi                 break;
2512*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2513*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
2514*53ee8cc1Swenshuai.xi                 break;
2515*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2516*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF3);
2517*53ee8cc1Swenshuai.xi                 break;
2518*53ee8cc1Swenshuai.xi             default:
2519*53ee8cc1Swenshuai.xi                 break;
2520*53ee8cc1Swenshuai.xi         }
2521*53ee8cc1Swenshuai.xi     }
2522*53ee8cc1Swenshuai.xi }
2523*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)2524*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
2525*53ee8cc1Swenshuai.xi {
2526*53ee8cc1Swenshuai.xi     if(bEnable)
2527*53ee8cc1Swenshuai.xi     {
2528*53ee8cc1Swenshuai.xi         switch(eFileEng)
2529*53ee8cc1Swenshuai.xi         {
2530*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2531*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
2532*53ee8cc1Swenshuai.xi                 break;
2533*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2534*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
2535*53ee8cc1Swenshuai.xi                 break;
2536*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2537*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
2538*53ee8cc1Swenshuai.xi                 break;
2539*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2540*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
2541*53ee8cc1Swenshuai.xi                 break;
2542*53ee8cc1Swenshuai.xi             default:
2543*53ee8cc1Swenshuai.xi                 break;
2544*53ee8cc1Swenshuai.xi         }
2545*53ee8cc1Swenshuai.xi     }
2546*53ee8cc1Swenshuai.xi     else
2547*53ee8cc1Swenshuai.xi     {
2548*53ee8cc1Swenshuai.xi         switch(eFileEng)
2549*53ee8cc1Swenshuai.xi         {
2550*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2551*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
2552*53ee8cc1Swenshuai.xi                 break;
2553*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2554*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
2555*53ee8cc1Swenshuai.xi                 break;
2556*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2557*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
2558*53ee8cc1Swenshuai.xi                 break;
2559*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2560*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
2561*53ee8cc1Swenshuai.xi                 break;
2562*53ee8cc1Swenshuai.xi             default:
2563*53ee8cc1Swenshuai.xi                 break;
2564*53ee8cc1Swenshuai.xi         }
2565*53ee8cc1Swenshuai.xi     }
2566*53ee8cc1Swenshuai.xi }
2567*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)2568*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)
2569*53ee8cc1Swenshuai.xi {
2570*53ee8cc1Swenshuai.xi     switch(eFileEng)
2571*53ee8cc1Swenshuai.xi     {
2572*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2573*53ee8cc1Swenshuai.xi             return (TSP_CMDQ_SIZE - ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT));
2574*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2575*53ee8cc1Swenshuai.xi             return (CFG_3F_REG_TSIF1_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT));
2576*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2577*53ee8cc1Swenshuai.xi             return (CFG_40_REG_TSIF2_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT));
2578*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2579*53ee8cc1Swenshuai.xi             return (CFG_41_REG_TSIF3_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_CNT));
2580*53ee8cc1Swenshuai.xi 
2581*53ee8cc1Swenshuai.xi         default:
2582*53ee8cc1Swenshuai.xi             return 0;
2583*53ee8cc1Swenshuai.xi     }
2584*53ee8cc1Swenshuai.xi }
2585*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)2586*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)
2587*53ee8cc1Swenshuai.xi {
2588*53ee8cc1Swenshuai.xi     switch(eFileEng)
2589*53ee8cc1Swenshuai.xi     {
2590*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2591*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT);
2592*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2593*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT);
2594*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2595*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT);
2596*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2597*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_CNT);
2598*53ee8cc1Swenshuai.xi         default:
2599*53ee8cc1Swenshuai.xi             return 0;
2600*53ee8cc1Swenshuai.xi     }
2601*53ee8cc1Swenshuai.xi }
2602*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)2603*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)
2604*53ee8cc1Swenshuai.xi {
2605*53ee8cc1Swenshuai.xi     switch(eFileEng)
2606*53ee8cc1Swenshuai.xi     {
2607*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2608*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_CMDQ_WR_LEVEL_MASK) >> TSP_CMDQ_WR_LEVEL_SHFT);
2609*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2610*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2611*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2612*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2613*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2614*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2615*53ee8cc1Swenshuai.xi         default:
2616*53ee8cc1Swenshuai.xi             return 0;
2617*53ee8cc1Swenshuai.xi     }
2618*53ee8cc1Swenshuai.xi }
2619*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng,MS_U32 delay,MS_BOOL bEnable)2620*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng, MS_U32 delay, MS_BOOL bEnable)
2621*53ee8cc1Swenshuai.xi {
2622*53ee8cc1Swenshuai.xi     if(bEnable)
2623*53ee8cc1Swenshuai.xi     {
2624*53ee8cc1Swenshuai.xi         switch(eFileEng)
2625*53ee8cc1Swenshuai.xi         {
2626*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2627*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->TsFileIn_Timer, delay & TSP_FILE_TIMER_MASK);
2628*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
2629*53ee8cc1Swenshuai.xi                 break;
2630*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2631*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_03, delay & CFG_03_TSP_FILE_TIMER1);
2632*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
2633*53ee8cc1Swenshuai.xi                 break;
2634*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2635*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_08, delay & CFG_08_TSP_FILE_TIMER2);
2636*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
2637*53ee8cc1Swenshuai.xi                 break;
2638*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2639*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_0D, delay & CFG_0D_TSP_FILE_TIMER3);
2640*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TIMER_EN3);
2641*53ee8cc1Swenshuai.xi                 break;
2642*53ee8cc1Swenshuai.xi             default:
2643*53ee8cc1Swenshuai.xi                 break;
2644*53ee8cc1Swenshuai.xi         }
2645*53ee8cc1Swenshuai.xi     }
2646*53ee8cc1Swenshuai.xi     else
2647*53ee8cc1Swenshuai.xi     {
2648*53ee8cc1Swenshuai.xi         switch(eFileEng)
2649*53ee8cc1Swenshuai.xi         {
2650*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2651*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
2652*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->TsFileIn_Timer, 0x0000);
2653*53ee8cc1Swenshuai.xi                 break;
2654*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2655*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
2656*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_03, 0x0000);
2657*53ee8cc1Swenshuai.xi                 break;
2658*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2659*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
2660*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_08, 0x0000);
2661*53ee8cc1Swenshuai.xi                 break;
2662*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2663*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TIMER_EN3);
2664*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_0D, 0x0000);
2665*53ee8cc1Swenshuai.xi                 break;
2666*53ee8cc1Swenshuai.xi             default:
2667*53ee8cc1Swenshuai.xi                 break;
2668*53ee8cc1Swenshuai.xi         }
2669*53ee8cc1Swenshuai.xi     }
2670*53ee8cc1Swenshuai.xi }
2671*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)2672*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)
2673*53ee8cc1Swenshuai.xi {
2674*53ee8cc1Swenshuai.xi     switch(eFileEng)
2675*53ee8cc1Swenshuai.xi     {
2676*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2677*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_TSDMA_FILEIN_DONE);
2678*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2679*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_34) & CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_DONE);
2680*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2681*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_39) & CFG_39_FILEIN_CTRL_TSIF2_DONE);
2682*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2683*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_3E) & CFG_3E_FILEIN_CTRL_TSIF3_DONE);
2684*53ee8cc1Swenshuai.xi         default:
2685*53ee8cc1Swenshuai.xi             return 0;
2686*53ee8cc1Swenshuai.xi     }
2687*53ee8cc1Swenshuai.xi }
2688*53ee8cc1Swenshuai.xi 
2689*53ee8cc1Swenshuai.xi // Only used by [HW test code]
2690*53ee8cc1Swenshuai.xi /*
2691*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_Filein_Done_Status(FILEENG_SEQ eFileEng)
2692*53ee8cc1Swenshuai.xi {
2693*53ee8cc1Swenshuai.xi     return !HAL_TSP_Filein_Status(eFileEng);
2694*53ee8cc1Swenshuai.xi }
2695*53ee8cc1Swenshuai.xi */
2696*53ee8cc1Swenshuai.xi 
2697*53ee8cc1Swenshuai.xi //To do : only tsif0 has pause functionality in Kaiser
HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)2698*53ee8cc1Swenshuai.xi TSP_HAL_FileState HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)
2699*53ee8cc1Swenshuai.xi {
2700*53ee8cc1Swenshuai.xi     TSP_HAL_FileState state     = E_TSP_HAL_FILE_STATE_INVALID;
2701*53ee8cc1Swenshuai.xi     MS_U32            u32Status = HAL_TSP_Filein_Status(eFileEng);
2702*53ee8cc1Swenshuai.xi 
2703*53ee8cc1Swenshuai.xi     // @FIXME in kaiser u01 only tsif0 file eng has pause function
2704*53ee8cc1Swenshuai.xi     switch (eFileEng)
2705*53ee8cc1Swenshuai.xi     {
2706*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2707*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl->TSP_Ctrl1) & TSP_CTRL1_FILEIN_PAUSE )
2708*53ee8cc1Swenshuai.xi             {
2709*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2710*53ee8cc1Swenshuai.xi             }
2711*53ee8cc1Swenshuai.xi             else if (u32Status)
2712*53ee8cc1Swenshuai.xi             {
2713*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2714*53ee8cc1Swenshuai.xi             }
2715*53ee8cc1Swenshuai.xi             else
2716*53ee8cc1Swenshuai.xi             {
2717*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2718*53ee8cc1Swenshuai.xi             }
2719*53ee8cc1Swenshuai.xi             break;
2720*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2721*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF1_FILE_PAUSE)
2722*53ee8cc1Swenshuai.xi             {
2723*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2724*53ee8cc1Swenshuai.xi             }
2725*53ee8cc1Swenshuai.xi             else if (u32Status)
2726*53ee8cc1Swenshuai.xi             {
2727*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2728*53ee8cc1Swenshuai.xi             }
2729*53ee8cc1Swenshuai.xi             else
2730*53ee8cc1Swenshuai.xi             {
2731*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2732*53ee8cc1Swenshuai.xi             }
2733*53ee8cc1Swenshuai.xi             break;
2734*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2735*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF2_FILE_PAUSE)
2736*53ee8cc1Swenshuai.xi             {
2737*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2738*53ee8cc1Swenshuai.xi             }
2739*53ee8cc1Swenshuai.xi             else if (u32Status)
2740*53ee8cc1Swenshuai.xi             {
2741*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2742*53ee8cc1Swenshuai.xi             }
2743*53ee8cc1Swenshuai.xi             else
2744*53ee8cc1Swenshuai.xi             {
2745*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2746*53ee8cc1Swenshuai.xi             }
2747*53ee8cc1Swenshuai.xi             break;
2748*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2749*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF3_FILE_PAUSE)
2750*53ee8cc1Swenshuai.xi             {
2751*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2752*53ee8cc1Swenshuai.xi             }
2753*53ee8cc1Swenshuai.xi             else if (u32Status)
2754*53ee8cc1Swenshuai.xi             {
2755*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2756*53ee8cc1Swenshuai.xi             }
2757*53ee8cc1Swenshuai.xi             else
2758*53ee8cc1Swenshuai.xi             {
2759*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2760*53ee8cc1Swenshuai.xi             }
2761*53ee8cc1Swenshuai.xi             break;
2762*53ee8cc1Swenshuai.xi         default:
2763*53ee8cc1Swenshuai.xi             state = E_TSP_HAL_FILE_STATE_INVALID;
2764*53ee8cc1Swenshuai.xi             break;
2765*53ee8cc1Swenshuai.xi     }
2766*53ee8cc1Swenshuai.xi     return state;
2767*53ee8cc1Swenshuai.xi }
2768*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)2769*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)
2770*53ee8cc1Swenshuai.xi {
2771*53ee8cc1Swenshuai.xi     if(bSet)
2772*53ee8cc1Swenshuai.xi     {
2773*53ee8cc1Swenshuai.xi         switch(eFileEng)
2774*53ee8cc1Swenshuai.xi         {
2775*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2776*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
2777*53ee8cc1Swenshuai.xi                 break;
2778*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2779*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
2780*53ee8cc1Swenshuai.xi                 break;
2781*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2782*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
2783*53ee8cc1Swenshuai.xi                 break;
2784*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2785*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_EN3);
2786*53ee8cc1Swenshuai.xi                 break;
2787*53ee8cc1Swenshuai.xi             default:
2788*53ee8cc1Swenshuai.xi                 break;
2789*53ee8cc1Swenshuai.xi         }
2790*53ee8cc1Swenshuai.xi     }
2791*53ee8cc1Swenshuai.xi     else
2792*53ee8cc1Swenshuai.xi     {
2793*53ee8cc1Swenshuai.xi         switch(eFileEng)
2794*53ee8cc1Swenshuai.xi         {
2795*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2796*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
2797*53ee8cc1Swenshuai.xi                 break;
2798*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2799*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
2800*53ee8cc1Swenshuai.xi                 break;
2801*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2802*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
2803*53ee8cc1Swenshuai.xi                 break;
2804*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2805*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_EN3);
2806*53ee8cc1Swenshuai.xi                 break;
2807*53ee8cc1Swenshuai.xi             default:
2808*53ee8cc1Swenshuai.xi                 break;
2809*53ee8cc1Swenshuai.xi         }
2810*53ee8cc1Swenshuai.xi     }
2811*53ee8cc1Swenshuai.xi 
2812*53ee8cc1Swenshuai.xi }
2813*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng,MS_BOOL bEn)2814*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng, MS_BOOL bEn)
2815*53ee8cc1Swenshuai.xi {
2816*53ee8cc1Swenshuai.xi     if(bEn)
2817*53ee8cc1Swenshuai.xi     {
2818*53ee8cc1Swenshuai.xi         switch(eFileEng)
2819*53ee8cc1Swenshuai.xi         {
2820*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2821*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
2822*53ee8cc1Swenshuai.xi                 break;
2823*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2824*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
2825*53ee8cc1Swenshuai.xi                 break;
2826*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2827*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
2828*53ee8cc1Swenshuai.xi                 break;
2829*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2830*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_BLK_DISABLE3);
2831*53ee8cc1Swenshuai.xi             default:
2832*53ee8cc1Swenshuai.xi                 break;
2833*53ee8cc1Swenshuai.xi         }
2834*53ee8cc1Swenshuai.xi     }
2835*53ee8cc1Swenshuai.xi     else
2836*53ee8cc1Swenshuai.xi     {
2837*53ee8cc1Swenshuai.xi         switch(eFileEng)
2838*53ee8cc1Swenshuai.xi         {
2839*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2840*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
2841*53ee8cc1Swenshuai.xi                 break;
2842*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2843*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
2844*53ee8cc1Swenshuai.xi                 break;
2845*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2846*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
2847*53ee8cc1Swenshuai.xi                 break;
2848*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2849*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_BLK_DISABLE3);
2850*53ee8cc1Swenshuai.xi                 break;
2851*53ee8cc1Swenshuai.xi             default:
2852*53ee8cc1Swenshuai.xi                 break;
2853*53ee8cc1Swenshuai.xi         }
2854*53ee8cc1Swenshuai.xi     }
2855*53ee8cc1Swenshuai.xi }
2856*53ee8cc1Swenshuai.xi 
2857*53ee8cc1Swenshuai.xi #if 0
2858*53ee8cc1Swenshuai.xi static void _HAL_TSP_FILEIN_ResetPktTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32InitTimeStamp)
2859*53ee8cc1Swenshuai.xi {
2860*53ee8cc1Swenshuai.xi     switch(eFileEng)
2861*53ee8cc1Swenshuai.xi     {
2862*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2863*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
2864*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_50_51, u32InitTimeStamp);
2865*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
2866*53ee8cc1Swenshuai.xi             break;
2867*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2868*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
2869*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_52_53, u32InitTimeStamp);
2870*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
2871*53ee8cc1Swenshuai.xi             break;
2872*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2873*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
2874*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_54_55, u32InitTimeStamp);
2875*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
2876*53ee8cc1Swenshuai.xi             break;
2877*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2878*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_3);
2879*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_56_57, u32InitTimeStamp);
2880*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_3);
2881*53ee8cc1Swenshuai.xi             break;
2882*53ee8cc1Swenshuai.xi         default:
2883*53ee8cc1Swenshuai.xi             break;
2884*53ee8cc1Swenshuai.xi     }
2885*53ee8cc1Swenshuai.xi }
2886*53ee8cc1Swenshuai.xi #endif
2887*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng,MS_U32 u32Stamp)2888*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32Stamp)
2889*53ee8cc1Swenshuai.xi {
2890*53ee8cc1Swenshuai.xi     switch(eFileEng)
2891*53ee8cc1Swenshuai.xi     {
2892*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2893*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
2894*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->LPcr2, u32Stamp);
2895*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
2896*53ee8cc1Swenshuai.xi             break;
2897*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2898*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
2899*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_50_51, u32Stamp);
2900*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
2901*53ee8cc1Swenshuai.xi             break;
2902*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2903*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
2904*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_52_53, u32Stamp);
2905*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
2906*53ee8cc1Swenshuai.xi             break;
2907*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2908*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_LPCR2_WLD3);
2909*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_54_55, u32Stamp);
2910*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_LPCR2_WLD3);
2911*53ee8cc1Swenshuai.xi             break;
2912*53ee8cc1Swenshuai.xi         default:
2913*53ee8cc1Swenshuai.xi             break;
2914*53ee8cc1Swenshuai.xi     }
2915*53ee8cc1Swenshuai.xi 
2916*53ee8cc1Swenshuai.xi    // Fix pass_pkt_timestamp will hang issue by TSP8,0x60[3] : reg_init_timestamp_restart_en
2917*53ee8cc1Swenshuai.xi    // _HAL_TSP_FILEIN_ResetPktTimeStamp(eFileEng, 0);
2918*53ee8cc1Swenshuai.xi }
2919*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng,TSP_HAL_TimeStamp_Clk eTimeStampClk)2920*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng, TSP_HAL_TimeStamp_Clk eTimeStampClk)
2921*53ee8cc1Swenshuai.xi {
2922*53ee8cc1Swenshuai.xi     switch(eFileEng)
2923*53ee8cc1Swenshuai.xi     {
2924*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2925*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2926*53ee8cc1Swenshuai.xi             {
2927*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
2928*53ee8cc1Swenshuai.xi             }
2929*53ee8cc1Swenshuai.xi             else
2930*53ee8cc1Swenshuai.xi             {
2931*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
2932*53ee8cc1Swenshuai.xi             }
2933*53ee8cc1Swenshuai.xi             break;
2934*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2935*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2936*53ee8cc1Swenshuai.xi             {
2937*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
2938*53ee8cc1Swenshuai.xi             }
2939*53ee8cc1Swenshuai.xi             else
2940*53ee8cc1Swenshuai.xi             {
2941*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
2942*53ee8cc1Swenshuai.xi             }
2943*53ee8cc1Swenshuai.xi             break;
2944*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2945*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2946*53ee8cc1Swenshuai.xi             {
2947*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
2948*53ee8cc1Swenshuai.xi             }
2949*53ee8cc1Swenshuai.xi             else
2950*53ee8cc1Swenshuai.xi             {
2951*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
2952*53ee8cc1Swenshuai.xi             }
2953*53ee8cc1Swenshuai.xi             break;
2954*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2955*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2956*53ee8cc1Swenshuai.xi             {
2957*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF3_C27M);
2958*53ee8cc1Swenshuai.xi             }
2959*53ee8cc1Swenshuai.xi             else
2960*53ee8cc1Swenshuai.xi             {
2961*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF3_C27M);
2962*53ee8cc1Swenshuai.xi             }
2963*53ee8cc1Swenshuai.xi             break;
2964*53ee8cc1Swenshuai.xi         default:
2965*53ee8cc1Swenshuai.xi             break;
2966*53ee8cc1Swenshuai.xi     }
2967*53ee8cc1Swenshuai.xi }
2968*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)2969*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)
2970*53ee8cc1Swenshuai.xi {
2971*53ee8cc1Swenshuai.xi     MS_U32 u32Stamp = 0;
2972*53ee8cc1Swenshuai.xi     switch(eFileEng)
2973*53ee8cc1Swenshuai.xi     {
2974*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2975*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
2976*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl->LPcr2);
2977*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
2978*53ee8cc1Swenshuai.xi             break;
2979*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2980*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
2981*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_50_51);
2982*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
2983*53ee8cc1Swenshuai.xi             break;
2984*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2985*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
2986*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_52_53);
2987*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
2988*53ee8cc1Swenshuai.xi             break;
2989*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2990*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_LPCR2_LOAD_TSIF3);
2991*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_54_55);
2992*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_LPCR2_LOAD_TSIF3);
2993*53ee8cc1Swenshuai.xi             break;
2994*53ee8cc1Swenshuai.xi         default:
2995*53ee8cc1Swenshuai.xi             u32Stamp = 0;
2996*53ee8cc1Swenshuai.xi             break;
2997*53ee8cc1Swenshuai.xi     }
2998*53ee8cc1Swenshuai.xi     return u32Stamp;
2999*53ee8cc1Swenshuai.xi }
3000*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)3001*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)
3002*53ee8cc1Swenshuai.xi {
3003*53ee8cc1Swenshuai.xi     switch(eFileEng)
3004*53ee8cc1Swenshuai.xi     {
3005*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3006*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl->TimeStamp_FileIn);
3007*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3008*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_42_43);
3009*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3010*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_44_45);
3011*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3012*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_46_47);
3013*53ee8cc1Swenshuai.xi         default:
3014*53ee8cc1Swenshuai.xi             break;
3015*53ee8cc1Swenshuai.xi     }
3016*53ee8cc1Swenshuai.xi     return 0;
3017*53ee8cc1Swenshuai.xi }
3018*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng,MS_PHY * pu32Addr)3019*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng, MS_PHY *pu32Addr)
3020*53ee8cc1Swenshuai.xi {
3021*53ee8cc1Swenshuai.xi     switch(eFileEng)
3022*53ee8cc1Swenshuai.xi     {
3023*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3024*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl->TsFileIn_RPtr) & TSP_FILE_RPTR_MASK);
3025*53ee8cc1Swenshuai.xi             break;
3026*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3027*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6A_6B) & CFG_6A_6B_TSP2MI_RADDR_S_TSIF1);
3028*53ee8cc1Swenshuai.xi             break;
3029*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3030*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6C_6D) & CFG_6C_6D_TSP2MI_RADDR_S_TSIF2);
3031*53ee8cc1Swenshuai.xi             break;
3032*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3033*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6E_6F) & CFG_6E_6F_TSP2MI_RADDR_S_TSIF3);
3034*53ee8cc1Swenshuai.xi             break;
3035*53ee8cc1Swenshuai.xi         default:
3036*53ee8cc1Swenshuai.xi             break;
3037*53ee8cc1Swenshuai.xi     }
3038*53ee8cc1Swenshuai.xi 
3039*53ee8cc1Swenshuai.xi }
3040*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)3041*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
3042*53ee8cc1Swenshuai.xi {
3043*53ee8cc1Swenshuai.xi     if(bEnable)
3044*53ee8cc1Swenshuai.xi     {
3045*53ee8cc1Swenshuai.xi         switch(eFileEng)
3046*53ee8cc1Swenshuai.xi         {
3047*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3048*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_RESET);
3049*53ee8cc1Swenshuai.xi                 break;
3050*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3051*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
3052*53ee8cc1Swenshuai.xi                 break;
3053*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3054*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
3055*53ee8cc1Swenshuai.xi                 break;
3056*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3057*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF3);
3058*53ee8cc1Swenshuai.xi                 break;
3059*53ee8cc1Swenshuai.xi             default:
3060*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));
3061*53ee8cc1Swenshuai.xi                 break;
3062*53ee8cc1Swenshuai.xi         }
3063*53ee8cc1Swenshuai.xi     }
3064*53ee8cc1Swenshuai.xi     else
3065*53ee8cc1Swenshuai.xi     {
3066*53ee8cc1Swenshuai.xi         switch(eFileEng)
3067*53ee8cc1Swenshuai.xi         {
3068*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3069*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_RESET);
3070*53ee8cc1Swenshuai.xi                 break;
3071*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3072*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
3073*53ee8cc1Swenshuai.xi                 break;
3074*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3075*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
3076*53ee8cc1Swenshuai.xi                 break;
3077*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3078*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF3);
3079*53ee8cc1Swenshuai.xi                 break;
3080*53ee8cc1Swenshuai.xi             default:
3081*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));
3082*53ee8cc1Swenshuai.xi                 break;
3083*53ee8cc1Swenshuai.xi         }
3084*53ee8cc1Swenshuai.xi     }
3085*53ee8cc1Swenshuai.xi }
3086*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng,MS_BOOL bEnable,MS_U32 u32Key)3087*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng, MS_BOOL bEnable, MS_U32 u32Key)
3088*53ee8cc1Swenshuai.xi {
3089*53ee8cc1Swenshuai.xi     if(bEnable)
3090*53ee8cc1Swenshuai.xi     {
3091*53ee8cc1Swenshuai.xi         switch(eFileEng)
3092*53ee8cc1Swenshuai.xi         {
3093*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3094*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl->Mobf_Filein_Idx, (u32Key & TSP_MOBF_FILEIN_MASK));
3095*53ee8cc1Swenshuai.xi                 break;
3096*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3097*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_75, (u32Key & CFG_75_FI_MOBF_INDEC_TSIF1_MASK));
3098*53ee8cc1Swenshuai.xi                 break;
3099*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3100*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_76, (u32Key & CFG_76_FI_MOBF_INDEC_TSIF2_MASK));
3101*53ee8cc1Swenshuai.xi                 break;
3102*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3103*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_77, (u32Key & CFG_77_FI_MOBF_INDEC_TSIF3_MASK));
3104*53ee8cc1Swenshuai.xi                 break;
3105*53ee8cc1Swenshuai.xi             default:
3106*53ee8cc1Swenshuai.xi                 break;
3107*53ee8cc1Swenshuai.xi         }
3108*53ee8cc1Swenshuai.xi     }
3109*53ee8cc1Swenshuai.xi     else
3110*53ee8cc1Swenshuai.xi     {
3111*53ee8cc1Swenshuai.xi         switch(eFileEng)
3112*53ee8cc1Swenshuai.xi         {
3113*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3114*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl->Mobf_Filein_Idx, 0);
3115*53ee8cc1Swenshuai.xi                 break;
3116*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3117*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_75, 0);
3118*53ee8cc1Swenshuai.xi                 break;
3119*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3120*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_76, 0);
3121*53ee8cc1Swenshuai.xi                 break;
3122*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3123*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_77, 0);
3124*53ee8cc1Swenshuai.xi                 break;
3125*53ee8cc1Swenshuai.xi             default:
3126*53ee8cc1Swenshuai.xi                 break;
3127*53ee8cc1Swenshuai.xi         }
3128*53ee8cc1Swenshuai.xi     }
3129*53ee8cc1Swenshuai.xi }
3130*53ee8cc1Swenshuai.xi 
HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)3131*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
3132*53ee8cc1Swenshuai.xi {
3133*53ee8cc1Swenshuai.xi     switch (ePidFltSrc)
3134*53ee8cc1Swenshuai.xi     {
3135*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE0:
3136*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF0;
3137*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE1:
3138*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF2;
3139*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE2:
3140*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF3;
3141*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE3:
3142*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF1;
3143*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE0:
3144*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF1;
3145*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE1:
3146*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF3;
3147*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE2:
3148*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF0;
3149*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE3:
3150*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF2;
3151*53ee8cc1Swenshuai.xi         default:
3152*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong filter source!!!\n",__FUNCTION__, __LINE__);
3153*53ee8cc1Swenshuai.xi             break;
3154*53ee8cc1Swenshuai.xi     }
3155*53ee8cc1Swenshuai.xi 
3156*53ee8cc1Swenshuai.xi     return 0;
3157*53ee8cc1Swenshuai.xi }
3158*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId,MS_U32 u32FltIn)3159*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId, MS_U32 u32FltIn)
3160*53ee8cc1Swenshuai.xi {
3161*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
3162*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_IN_MASK) | ((u32FltIn << TSP_PIDFLT_TSIF_SHFT) & TSP_PIDFLT_IN_MASK));
3163*53ee8cc1Swenshuai.xi }
3164*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId,MS_U32 u32FltOut)3165*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId, MS_U32 u32FltOut)
3166*53ee8cc1Swenshuai.xi {
3167*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3168*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_OUT_MASK)) | (u32FltOut & TSP_PIDFLT_OUT_MASK)));
3169*53ee8cc1Swenshuai.xi }
3170*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId,MS_U32 u32SrcID)3171*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId, MS_U32 u32SrcID)
3172*53ee8cc1Swenshuai.xi {
3173*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3174*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcID << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
3175*53ee8cc1Swenshuai.xi }
3176*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId,MS_U32 u32SecFltId)3177*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId, MS_U32 u32SecFltId)
3178*53ee8cc1Swenshuai.xi {
3179*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3180*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_SECFLT_MASK) | ((u32SecFltId << TSP_PIDFLT_SECFLT_SHFT) & TSP_PIDFLT_SECFLT_MASK));
3181*53ee8cc1Swenshuai.xi }
3182*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId,MS_U32 u32PVREng,MS_BOOL bEn)3183*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId, MS_U32 u32PVREng, MS_BOOL bEn)
3184*53ee8cc1Swenshuai.xi {
3185*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3186*53ee8cc1Swenshuai.xi     if(bEn)
3187*53ee8cc1Swenshuai.xi     {
3188*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK) | (((1 << u32PVREng) << TSP_PIDFLT_PVRFLT_SHFT) & TSP_PIDFLT_PVRFLT_MASK));
3189*53ee8cc1Swenshuai.xi     }
3190*53ee8cc1Swenshuai.xi     else
3191*53ee8cc1Swenshuai.xi     {
3192*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK));
3193*53ee8cc1Swenshuai.xi     }
3194*53ee8cc1Swenshuai.xi }
3195*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId,MS_U8 u8Enable)3196*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId, MS_U8 u8Enable)
3197*53ee8cc1Swenshuai.xi {
3198*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3199*53ee8cc1Swenshuai.xi     if(u8Enable)
3200*53ee8cc1Swenshuai.xi         TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) | (TSP_PID_FLT_PKTPUSH_PASS));
3201*53ee8cc1Swenshuai.xi     else
3202*53ee8cc1Swenshuai.xi         TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) & ~(TSP_PID_FLT_PKTPUSH_PASS));
3203*53ee8cc1Swenshuai.xi }
3204*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetPid(MS_U32 fltId,MS_U32 u32Pid)3205*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPid(MS_U32 fltId, MS_U32 u32Pid)
3206*53ee8cc1Swenshuai.xi {
3207*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
3208*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PID_MASK) | ((u32Pid << TSP_PIDFLT_PID_SHFT) & TSP_PIDFLT_PID_MASK));
3209*53ee8cc1Swenshuai.xi }
3210*53ee8cc1Swenshuai.xi 
3211*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3212*53ee8cc1Swenshuai.xi // For section filter part
3213*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3214*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)3215*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)
3216*53ee8cc1Swenshuai.xi {
3217*53ee8cc1Swenshuai.xi      REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SEC_DMA_BURST_EN);
3218*53ee8cc1Swenshuai.xi      REG16_MSK_W(&_RegCtrl->Hw_Config4, TSP_HW_DMA_MODE_MASK, (burstMode << TSP_HW_DMA_MODE_SHIFT));
3219*53ee8cc1Swenshuai.xi }
3220*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetType(REG_SecFlt * pSecFlt,MS_U32 u32FltType)3221*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetType(REG_SecFlt *pSecFlt, MS_U32 u32FltType)
3222*53ee8cc1Swenshuai.xi {
3223*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_USER_MASK) | (u32FltType << TSP_SECFLT_USER_SHFT));
3224*53ee8cc1Swenshuai.xi }
3225*53ee8cc1Swenshuai.xi 
3226*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetMode(REG_SecFlt * pSecFlt,MS_U32 u32SecFltMode)3227*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMode(REG_SecFlt *pSecFlt, MS_U32 u32SecFltMode)
3228*53ee8cc1Swenshuai.xi {
3229*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_MASK) | ((u32SecFltMode << TSP_SECFLT_MODE_SHFT) & TSP_SECFLT_MODE_MASK));
3230*53ee8cc1Swenshuai.xi }
3231*53ee8cc1Swenshuai.xi 
3232*53ee8cc1Swenshuai.xi 
3233*53ee8cc1Swenshuai.xi // match mask --> 0 will compare
HAL_TSP_SecFlt_SetMask(REG_SecFlt * pSecFlt,MS_U8 * pu8Mask)3234*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMask(REG_SecFlt *pSecFlt, MS_U8 *pu8Mask)
3235*53ee8cc1Swenshuai.xi {
3236*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3237*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3238*53ee8cc1Swenshuai.xi 
3239*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3240*53ee8cc1Swenshuai.xi     {
3241*53ee8cc1Swenshuai.xi         j = (i << 2);
3242*53ee8cc1Swenshuai.xi         u32Temp = (pu8Mask[j]) | (pu8Mask[j+ 1] << 8  ) | (pu8Mask[j+ 2] << 16  )| (pu8Mask[j+ 3] << 24);
3243*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->Mask[i], u32Temp);
3244*53ee8cc1Swenshuai.xi     }
3245*53ee8cc1Swenshuai.xi }
3246*53ee8cc1Swenshuai.xi 
3247*53ee8cc1Swenshuai.xi 
3248*53ee8cc1Swenshuai.xi // not match mask --> 1 will compare
HAL_TSP_SecFlt_SetNMask(REG_SecFlt * pSecFlt,MS_U8 * pu8NMask)3249*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetNMask(REG_SecFlt *pSecFlt, MS_U8 *pu8NMask)
3250*53ee8cc1Swenshuai.xi {
3251*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3252*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3253*53ee8cc1Swenshuai.xi 
3254*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3255*53ee8cc1Swenshuai.xi     {
3256*53ee8cc1Swenshuai.xi         j = (i<< 2);
3257*53ee8cc1Swenshuai.xi         u32Temp = (pu8NMask[j]) | (pu8NMask[j+ 1] << 8  ) | (pu8NMask[j+ 2] << 16  )| (pu8NMask[j+ 3] << 24);
3258*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->NMask[i], u32Temp);
3259*53ee8cc1Swenshuai.xi     }
3260*53ee8cc1Swenshuai.xi }
3261*53ee8cc1Swenshuai.xi 
3262*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetMatch(REG_SecFlt * pSecFlt,MS_U8 * pu8Match)3263*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMatch(REG_SecFlt *pSecFlt, MS_U8 *pu8Match)
3264*53ee8cc1Swenshuai.xi {
3265*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3266*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3267*53ee8cc1Swenshuai.xi 
3268*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3269*53ee8cc1Swenshuai.xi     {
3270*53ee8cc1Swenshuai.xi         j = (i<< 2);
3271*53ee8cc1Swenshuai.xi         u32Temp =  (pu8Match[j]) | (pu8Match[j+ 1] << 8  ) | (pu8Match[j+ 2] << 16  )| (pu8Match[j+ 3] << 24);
3272*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->Match[i], u32Temp);
3273*53ee8cc1Swenshuai.xi     }
3274*53ee8cc1Swenshuai.xi }
3275*53ee8cc1Swenshuai.xi 
3276*53ee8cc1Swenshuai.xi 
3277*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)3278*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SelSecBuf(REG_SecFlt *pSecFlt, MS_U16 u16BufId)
3279*53ee8cc1Swenshuai.xi {
3280*53ee8cc1Swenshuai.xi     TSP32_IdrW( &pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_SECBUF_MASK)
3281*53ee8cc1Swenshuai.xi             | ((u16BufId << TSP_SECFLT_SECBUF_SHFT) & TSP_SECFLT_SECBUF_MASK) );
3282*53ee8cc1Swenshuai.xi }
3283*53ee8cc1Swenshuai.xi 
3284*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt * pSecFlt)3285*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt *pSecFlt)
3286*53ee8cc1Swenshuai.xi {
3287*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_SECBUF_MASK) >> TSP_SECFLT_SECBUF_SHFT);
3288*53ee8cc1Swenshuai.xi }
3289*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt * pPidFlt)3290*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt *pPidFlt)
3291*53ee8cc1Swenshuai.xi {
3292*53ee8cc1Swenshuai.xi     return (TSP32_IdrR(pPidFlt) & TSP_PIDFLT_OUT_MASK);
3293*53ee8cc1Swenshuai.xi }
3294*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)3295*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)
3296*53ee8cc1Swenshuai.xi {
3297*53ee8cc1Swenshuai.xi // don't have to implement no reference
3298*53ee8cc1Swenshuai.xi }
3299*53ee8cc1Swenshuai.xi 
3300*53ee8cc1Swenshuai.xi 
3301*53ee8cc1Swenshuai.xi // @FIXME: Is it secflt or secbuf?
HAL_TSP_SecFlt_ResetState(REG_SecFlt * pSecFlt)3302*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetState(REG_SecFlt* pSecFlt)
3303*53ee8cc1Swenshuai.xi {
3304*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~(TSP_SECFLT_STATE_MASK));
3305*53ee8cc1Swenshuai.xi }
3306*53ee8cc1Swenshuai.xi 
3307*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt * pSecFlt)3308*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt *pSecFlt)
3309*53ee8cc1Swenshuai.xi {
3310*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, 0);
3311*53ee8cc1Swenshuai.xi }
3312*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetState(REG_SecFlt * pSecFlt)3313*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetState(REG_SecFlt *pSecFlt)
3314*53ee8cc1Swenshuai.xi {
3315*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_STATE_MASK) >> TSP_SECFLT_STATE_SHFT);
3316*53ee8cc1Swenshuai.xi }
3317*53ee8cc1Swenshuai.xi 
3318*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetMode(REG_SecFlt * pSecFlt)3319*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetMode(REG_SecFlt *pSecFlt)
3320*53ee8cc1Swenshuai.xi {
3321*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_MODE_MASK) >> TSP_SECFLT_MODE_SHFT);
3322*53ee8cc1Swenshuai.xi }
3323*53ee8cc1Swenshuai.xi 
3324*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_PcrReset(REG_SecFlt * pSecFlt)3325*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_PcrReset(REG_SecFlt *pSecFlt)
3326*53ee8cc1Swenshuai.xi {
3327*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_PCRRST);
3328*53ee8cc1Swenshuai.xi }
3329*53ee8cc1Swenshuai.xi 
3330*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_TryAlloc(REG_SecFlt * pSecFlt,MS_U16 u16TSPId)3331*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecFlt_TryAlloc(REG_SecFlt* pSecFlt, MS_U16 u16TSPId)
3332*53ee8cc1Swenshuai.xi {
3333*53ee8cc1Swenshuai.xi     MS_U32              reg;
3334*53ee8cc1Swenshuai.xi 
3335*53ee8cc1Swenshuai.xi     //_TSP_HW_Lock();
3336*53ee8cc1Swenshuai.xi 
3337*53ee8cc1Swenshuai.xi     // rmn counter doesn't need 32bit (check 13818) so we use some of it to store owner and alloc info
3338*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecFlt->RmnCnt) & (TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
3339*53ee8cc1Swenshuai.xi     if (reg & TSP_SECFLT_ALLOC_MASK)
3340*53ee8cc1Swenshuai.xi     {
3341*53ee8cc1Swenshuai.xi         //_TSP_HW_Unlock();
3342*53ee8cc1Swenshuai.xi         return FALSE;
3343*53ee8cc1Swenshuai.xi     }
3344*53ee8cc1Swenshuai.xi     reg |= TSP_SECFLT_ALLOC_MASK | ((u16TSPId<<TSP_SECFLT_OWNER_SHFT) & TSP_SECFLT_OWNER_MASK);
3345*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, reg);
3346*53ee8cc1Swenshuai.xi 
3347*53ee8cc1Swenshuai.xi     //_TSP_HW_Unlock();
3348*53ee8cc1Swenshuai.xi     return TRUE;
3349*53ee8cc1Swenshuai.xi }
3350*53ee8cc1Swenshuai.xi 
3351*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt * pSecFlt,MS_BOOL bSet)3352*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt *pSecFlt, MS_BOOL bSet)
3353*53ee8cc1Swenshuai.xi {
3354*53ee8cc1Swenshuai.xi     if(bSet)
3355*53ee8cc1Swenshuai.xi     {
3356*53ee8cc1Swenshuai.xi         TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_MODE_AUTO_CRCCHK);
3357*53ee8cc1Swenshuai.xi     }
3358*53ee8cc1Swenshuai.xi     else
3359*53ee8cc1Swenshuai.xi     {
3360*53ee8cc1Swenshuai.xi         TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_AUTO_CRCCHK);
3361*53ee8cc1Swenshuai.xi     }
3362*53ee8cc1Swenshuai.xi }
3363*53ee8cc1Swenshuai.xi 
3364*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_Free(REG_SecFlt * pSecFlt)3365*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_Free(REG_SecFlt* pSecFlt)
3366*53ee8cc1Swenshuai.xi {
3367*53ee8cc1Swenshuai.xi     MS_U32              reg;
3368*53ee8cc1Swenshuai.xi 
3369*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
3370*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, reg);
3371*53ee8cc1Swenshuai.xi }
3372*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt * pSecFlt)3373*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt* pSecFlt)
3374*53ee8cc1Swenshuai.xi {
3375*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECBUF_RMNCNT_MASK));
3376*53ee8cc1Swenshuai.xi }
3377*53ee8cc1Swenshuai.xi 
3378*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3379*53ee8cc1Swenshuai.xi //  For section buffer part
3380*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_TSP_SecBuf_SetBuf(REG_SecBuf * pSecBuf,MS_U32 u32StartAddr,MS_U32 u32BufSize)3381*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetBuf(REG_SecBuf *pSecBuf, MS_U32 u32StartAddr, MS_U32 u32BufSize)
3382*53ee8cc1Swenshuai.xi {
3383*53ee8cc1Swenshuai.xi     // Check MIU select
3384*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
3385*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetSecBuf;
3386*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetSecBuf, u32StartAddr);
3387*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));
3388*53ee8cc1Swenshuai.xi 
3389*53ee8cc1Swenshuai.xi     MS_U32              owner;
3390*53ee8cc1Swenshuai.xi     // To avoid SW read hidden HW byte enable information.
3391*53ee8cc1Swenshuai.xi     owner = TSP32_IdrR(&pSecBuf->Start); // @FIXME local variable but not used?
3392*53ee8cc1Swenshuai.xi 
3393*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Start, phyMiuOffsetSecBuf);
3394*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->End, phyMiuOffsetSecBuf + u32BufSize);
3395*53ee8cc1Swenshuai.xi }
3396*53ee8cc1Swenshuai.xi 
3397*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_SetRead(REG_SecBuf * pSecBuf,MS_U32 u32ReadAddr)3398*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetRead(REG_SecBuf *pSecBuf, MS_U32 u32ReadAddr)
3399*53ee8cc1Swenshuai.xi {
3400*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Read, u32ReadAddr);
3401*53ee8cc1Swenshuai.xi }
3402*53ee8cc1Swenshuai.xi 
3403*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetStart(REG_SecBuf * pSecBuf)3404*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetStart(REG_SecBuf *pSecBuf)
3405*53ee8cc1Swenshuai.xi {
3406*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->Start);
3407*53ee8cc1Swenshuai.xi }
3408*53ee8cc1Swenshuai.xi 
3409*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetEnd(REG_SecBuf * pSecBuf)3410*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetEnd(REG_SecBuf *pSecBuf)
3411*53ee8cc1Swenshuai.xi {
3412*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->End);
3413*53ee8cc1Swenshuai.xi }
3414*53ee8cc1Swenshuai.xi 
3415*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetBufCur(REG_SecBuf * pSecBuf)3416*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetBufCur(REG_SecBuf *pSecBuf)
3417*53ee8cc1Swenshuai.xi {
3418*53ee8cc1Swenshuai.xi     //BufCur is control by firmware
3419*53ee8cc1Swenshuai.xi     //we use Cur pointer to receive the newest data
3420*53ee8cc1Swenshuai.xi     //and use write pointer to guarantee that the data between
3421*53ee8cc1Swenshuai.xi     //read and write pointer is correct, so that user won't get
3422*53ee8cc1Swenshuai.xi     //unverified data.
3423*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->Cur);
3424*53ee8cc1Swenshuai.xi }
3425*53ee8cc1Swenshuai.xi 
3426*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_Reset(REG_SecBuf * pSecBuf)3427*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Reset(REG_SecBuf *pSecBuf)
3428*53ee8cc1Swenshuai.xi {
3429*53ee8cc1Swenshuai.xi     MS_U32              start;
3430*53ee8cc1Swenshuai.xi 
3431*53ee8cc1Swenshuai.xi     start = TSP32_IdrR(&pSecBuf->Start);
3432*53ee8cc1Swenshuai.xi 
3433*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Cur,    start);
3434*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Read,   start);
3435*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Write,  start);
3436*53ee8cc1Swenshuai.xi 
3437*53ee8cc1Swenshuai.xi     start = ( (MS_VIRT)pSecBuf - (MS_VIRT)REG_SECBUF_BASE ) / sizeof(REG_SecBuf)  ;
3438*53ee8cc1Swenshuai.xi     HAL_TSP_HCMD_BufRst(start); // @FIXME seems we don't need to do this
3439*53ee8cc1Swenshuai.xi }
3440*53ee8cc1Swenshuai.xi 
3441*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetRead(REG_SecBuf * pSecBuf)3442*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_SecBuf_GetRead(REG_SecBuf *pSecBuf)
3443*53ee8cc1Swenshuai.xi {
3444*53ee8cc1Swenshuai.xi     return TSP32_IdrR((TSP32*)&pSecBuf->Read);
3445*53ee8cc1Swenshuai.xi }
3446*53ee8cc1Swenshuai.xi 
3447*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetWrite(REG_SecBuf * pSecBuf)3448*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_SecBuf_GetWrite(REG_SecBuf *pSecBuf)
3449*53ee8cc1Swenshuai.xi {
3450*53ee8cc1Swenshuai.xi     return TSP32_IdrR((TSP32*)&pSecBuf->Write);
3451*53ee8cc1Swenshuai.xi }
3452*53ee8cc1Swenshuai.xi 
3453*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_TryAlloc(REG_SecBuf * pSecBuf,MS_U16 u16TSPId)3454*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecBuf_TryAlloc(REG_SecBuf *pSecBuf, MS_U16 u16TSPId)
3455*53ee8cc1Swenshuai.xi {
3456*53ee8cc1Swenshuai.xi     // @TODO make sure the owner and alloc info is necessary or not.
3457*53ee8cc1Swenshuai.xi     MS_U32              reg;
3458*53ee8cc1Swenshuai.xi 
3459*53ee8cc1Swenshuai.xi     //_TSP_HW_Lock();
3460*53ee8cc1Swenshuai.xi 
3461*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecBuf->Start) & (TSP_SECBUF_OWNER_MASK | TSP_SECBUF_ALLOC_MASK);
3462*53ee8cc1Swenshuai.xi     //if (reg & TSP_SECBUF_ALLOC_MASK)
3463*53ee8cc1Swenshuai.xi     //{
3464*53ee8cc1Swenshuai.xi     //    //_TSP_HW_Unlock();
3465*53ee8cc1Swenshuai.xi     //    return FALSE;
3466*53ee8cc1Swenshuai.xi     //}
3467*53ee8cc1Swenshuai.xi     reg |= TSP_SECBUF_ALLOC_MASK | ((u16TSPId<<TSP_SECBUF_OWNER_SHFT) & TSP_SECBUF_OWNER_MASK);
3468*53ee8cc1Swenshuai.xi     //TSP32_IdrW(&pSecBuf->Start, reg);
3469*53ee8cc1Swenshuai.xi 
3470*53ee8cc1Swenshuai.xi     //_TSP_HW_Unlock();
3471*53ee8cc1Swenshuai.xi     return TRUE;
3472*53ee8cc1Swenshuai.xi }
3473*53ee8cc1Swenshuai.xi 
3474*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_Free(REG_SecBuf * pSecBuf)3475*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Free(REG_SecBuf *pSecBuf)
3476*53ee8cc1Swenshuai.xi {
3477*53ee8cc1Swenshuai.xi     // @TODO ref to HAL_TSP_SecBuf_TryAlloc
3478*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Start, 0x0);
3479*53ee8cc1Swenshuai.xi }
3480*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_GetPid(REG_PidFlt * pPidFlt)3481*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetPid(REG_PidFlt* pPidFlt)
3482*53ee8cc1Swenshuai.xi {
3483*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(pPidFlt) & TSP_PIDFLT_PID_MASK) >> TSP_PIDFLT_PID_SHFT);
3484*53ee8cc1Swenshuai.xi }
3485*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId,MS_BOOL bEnable)3486*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId, MS_BOOL bEnable)
3487*53ee8cc1Swenshuai.xi {
3488*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3489*53ee8cc1Swenshuai.xi     {
3490*53ee8cc1Swenshuai.xi         case 0:
3491*53ee8cc1Swenshuai.xi             if(bEnable)
3492*53ee8cc1Swenshuai.xi             {
3493*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
3494*53ee8cc1Swenshuai.xi             }
3495*53ee8cc1Swenshuai.xi             else
3496*53ee8cc1Swenshuai.xi             {
3497*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
3498*53ee8cc1Swenshuai.xi             }
3499*53ee8cc1Swenshuai.xi             break;
3500*53ee8cc1Swenshuai.xi         case 1:
3501*53ee8cc1Swenshuai.xi             if(bEnable)
3502*53ee8cc1Swenshuai.xi             {
3503*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
3504*53ee8cc1Swenshuai.xi             }
3505*53ee8cc1Swenshuai.xi             else
3506*53ee8cc1Swenshuai.xi             {
3507*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
3508*53ee8cc1Swenshuai.xi             }
3509*53ee8cc1Swenshuai.xi             break;
3510*53ee8cc1Swenshuai.xi         case 2:
3511*53ee8cc1Swenshuai.xi             if(bEnable)
3512*53ee8cc1Swenshuai.xi             {
3513*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_44, CFG8_44_PIDFLT_PCR2_EN);
3514*53ee8cc1Swenshuai.xi             }
3515*53ee8cc1Swenshuai.xi             else
3516*53ee8cc1Swenshuai.xi             {
3517*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_44, CFG8_44_PIDFLT_PCR2_EN);
3518*53ee8cc1Swenshuai.xi             }
3519*53ee8cc1Swenshuai.xi             break;
3520*53ee8cc1Swenshuai.xi         case 3:
3521*53ee8cc1Swenshuai.xi             if(bEnable)
3522*53ee8cc1Swenshuai.xi             {
3523*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_45, CFG8_45_PIDFLT_PCR3_EN);
3524*53ee8cc1Swenshuai.xi             }
3525*53ee8cc1Swenshuai.xi             else
3526*53ee8cc1Swenshuai.xi             {
3527*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_45, CFG8_45_PIDFLT_PCR3_EN);
3528*53ee8cc1Swenshuai.xi             }
3529*53ee8cc1Swenshuai.xi             break;
3530*53ee8cc1Swenshuai.xi         default:
3531*53ee8cc1Swenshuai.xi             break;
3532*53ee8cc1Swenshuai.xi     }
3533*53ee8cc1Swenshuai.xi }
3534*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId,MS_U32 u32Pid)3535*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId, MS_U32 u32Pid)
3536*53ee8cc1Swenshuai.xi {
3537*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3538*53ee8cc1Swenshuai.xi     {
3539*53ee8cc1Swenshuai.xi         case 0:
3540*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_PID_MASK, u32Pid);
3541*53ee8cc1Swenshuai.xi             break;
3542*53ee8cc1Swenshuai.xi         case 1:
3543*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_PID_MASK, u32Pid);
3544*53ee8cc1Swenshuai.xi             break;
3545*53ee8cc1Swenshuai.xi         case 2:
3546*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_44, CFG8_44_PIDFLT_PCR2_PID_MASK, u32Pid);
3547*53ee8cc1Swenshuai.xi             break;
3548*53ee8cc1Swenshuai.xi         case 3:
3549*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_45, CFG8_45_PIDFLT_PCR3_PID_MASK, u32Pid);
3550*53ee8cc1Swenshuai.xi             break;
3551*53ee8cc1Swenshuai.xi         default:
3552*53ee8cc1Swenshuai.xi             break;
3553*53ee8cc1Swenshuai.xi     }
3554*53ee8cc1Swenshuai.xi 
3555*53ee8cc1Swenshuai.xi }
3556*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)3557*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)
3558*53ee8cc1Swenshuai.xi {
3559*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3560*53ee8cc1Swenshuai.xi     {
3561*53ee8cc1Swenshuai.xi         case 0:
3562*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->PIDFLT_PCR0) & TSP_PIDFLT_PCR0_PID_MASK);
3563*53ee8cc1Swenshuai.xi         case 1:
3564*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->PIDFLT_PCR1) & TSP_PIDFLT_PCR1_PID_MASK);
3565*53ee8cc1Swenshuai.xi         case 2:
3566*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl8_1->CFG8_44) & CFG8_44_PIDFLT_PCR2_PID_MASK);
3567*53ee8cc1Swenshuai.xi         case 3:
3568*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl8_1->CFG8_45) & CFG8_45_PIDFLT_PCR3_PID_MASK);
3569*53ee8cc1Swenshuai.xi         default:
3570*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__));
3571*53ee8cc1Swenshuai.xi             return PVR_PIDFLT_DEF;
3572*53ee8cc1Swenshuai.xi     }
3573*53ee8cc1Swenshuai.xi }
3574*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId,TSP_PCR_SRC src)3575*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId, TSP_PCR_SRC src)
3576*53ee8cc1Swenshuai.xi {
3577*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3578*53ee8cc1Swenshuai.xi     {
3579*53ee8cc1Swenshuai.xi         case 0:
3580*53ee8cc1Swenshuai.xi             //src 0
3581*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR0_SRC_MASK, src << CFG_01_PCR0_SRC_SHIFT);
3582*53ee8cc1Swenshuai.xi             break;
3583*53ee8cc1Swenshuai.xi         case 1:
3584*53ee8cc1Swenshuai.xi             //src 1
3585*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR1_SRC_MASK, src << CFG_01_PCR1_SRC_SHIFT);
3586*53ee8cc1Swenshuai.xi             break;
3587*53ee8cc1Swenshuai.xi         case 2:
3588*53ee8cc1Swenshuai.xi             //src 2
3589*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_42, CFG8_42_PCR2_SRC_MASK, src << CFG8_42_PCR2_SRC_SHIFT);
3590*53ee8cc1Swenshuai.xi             break;
3591*53ee8cc1Swenshuai.xi         case 3:
3592*53ee8cc1Swenshuai.xi             //src 3
3593*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_43, CFG8_43_PCR3_SRC_MASK, src << CFG8_43_PCR3_SRC_SHIFT);
3594*53ee8cc1Swenshuai.xi             break;
3595*53ee8cc1Swenshuai.xi         default:
3596*53ee8cc1Swenshuai.xi             break;
3597*53ee8cc1Swenshuai.xi     }
3598*53ee8cc1Swenshuai.xi }
3599*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId,MS_U32 u32SrcId)3600*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId, MS_U32 u32SrcId)
3601*53ee8cc1Swenshuai.xi {
3602*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3603*53ee8cc1Swenshuai.xi     {
3604*53ee8cc1Swenshuai.xi         case 0:
3605*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_72, CFG3_72_PIDFLT_PCR0_SRC_ID_MASK, u32SrcId<<CFG3_72_PIDFLT_PCR0_SRC_ID_SHIFT);
3606*53ee8cc1Swenshuai.xi             break;
3607*53ee8cc1Swenshuai.xi         case 1:
3608*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_72, CFG3_72_PIDFLT_PCR1_SRC_ID_MASK, u32SrcId<<CFG3_72_PIDFLT_PCR1_SRC_ID_SHIFT);
3609*53ee8cc1Swenshuai.xi             break;
3610*53ee8cc1Swenshuai.xi         case 2:
3611*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_46, CFG8_46_REG_PIDFLT_PCR2_SRC_ID_MASK, u32SrcId<<CFG8_46_REG_PIDFLT_PCR2_SRC_ID_SHIFT);
3612*53ee8cc1Swenshuai.xi             break;
3613*53ee8cc1Swenshuai.xi         case 3:
3614*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_46, CFG8_46_REG_PIDFLT_PCR3_SRC_ID_MASK, u32SrcId<<CFG8_46_REG_PIDFLT_PCR3_SRC_ID_SHIFT);
3615*53ee8cc1Swenshuai.xi             break;
3616*53ee8cc1Swenshuai.xi         default:
3617*53ee8cc1Swenshuai.xi             HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[TSP_ERR][%s][%d] Wrong PCR Engine : 0x%x !!\n",__FUNCTION__,__LINE__,pcrFltId));
3618*53ee8cc1Swenshuai.xi             break;
3619*53ee8cc1Swenshuai.xi     }
3620*53ee8cc1Swenshuai.xi }
3621*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId,TSP_PCR_SRC * pPcrSrc)3622*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId, TSP_PCR_SRC *pPcrSrc)
3623*53ee8cc1Swenshuai.xi {
3624*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3625*53ee8cc1Swenshuai.xi     {
3626*53ee8cc1Swenshuai.xi         case 0:
3627*53ee8cc1Swenshuai.xi             //src 0
3628*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR0_SRC_MASK) >> CFG_01_PCR0_SRC_SHIFT;
3629*53ee8cc1Swenshuai.xi             break;
3630*53ee8cc1Swenshuai.xi         case 1:
3631*53ee8cc1Swenshuai.xi             //src 1
3632*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR1_SRC_MASK) >> CFG_01_PCR1_SRC_SHIFT;
3633*53ee8cc1Swenshuai.xi             break;
3634*53ee8cc1Swenshuai.xi         case 2:
3635*53ee8cc1Swenshuai.xi             //src 2
3636*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl8_1->CFG8_42) & CFG8_42_PCR2_SRC_MASK) >> CFG8_42_PCR2_SRC_SHIFT;
3637*53ee8cc1Swenshuai.xi             break;
3638*53ee8cc1Swenshuai.xi         case 3:
3639*53ee8cc1Swenshuai.xi             //src 3
3640*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl8_1->CFG8_43) & CFG8_43_PCR3_SRC_MASK) >> CFG8_43_PCR3_SRC_SHIFT;
3641*53ee8cc1Swenshuai.xi             break;
3642*53ee8cc1Swenshuai.xi         default:
3643*53ee8cc1Swenshuai.xi             break;
3644*53ee8cc1Swenshuai.xi     }
3645*53ee8cc1Swenshuai.xi }
3646*53ee8cc1Swenshuai.xi 
HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)3647*53ee8cc1Swenshuai.xi TSP_PCR_SRC HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
3648*53ee8cc1Swenshuai.xi {
3649*53ee8cc1Swenshuai.xi     TSP_PCR_SRC ePcrSrc = E_TSP_PCR_SRC_INVALID;
3650*53ee8cc1Swenshuai.xi     switch(ePidFltSrc)
3651*53ee8cc1Swenshuai.xi     {
3652*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE0:
3653*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF0;
3654*53ee8cc1Swenshuai.xi             break;
3655*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE1:
3656*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF2;
3657*53ee8cc1Swenshuai.xi             break;
3658*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE2:
3659*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF3;
3660*53ee8cc1Swenshuai.xi             break;
3661*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE3:
3662*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF1;
3663*53ee8cc1Swenshuai.xi             break;
3664*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE0:
3665*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF1;
3666*53ee8cc1Swenshuai.xi             break;
3667*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE1:
3668*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF3;
3669*53ee8cc1Swenshuai.xi             break;
3670*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE2:
3671*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF0;
3672*53ee8cc1Swenshuai.xi             break;
3673*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE3:
3674*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF2;
3675*53ee8cc1Swenshuai.xi             break;
3676*53ee8cc1Swenshuai.xi         default:
3677*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong Flt Src type!!!\n",__FUNCTION__,__LINE__);
3678*53ee8cc1Swenshuai.xi             break;
3679*53ee8cc1Swenshuai.xi     }
3680*53ee8cc1Swenshuai.xi     return ePcrSrc;
3681*53ee8cc1Swenshuai.xi 
3682*53ee8cc1Swenshuai.xi }
3683*53ee8cc1Swenshuai.xi 
3684*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId,MS_U32 * pu32Pcr_H,MS_U32 * pu32Pcr)3685*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId, MS_U32 *pu32Pcr_H, MS_U32 *pu32Pcr)
3686*53ee8cc1Swenshuai.xi {
3687*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3688*53ee8cc1Swenshuai.xi     {
3689*53ee8cc1Swenshuai.xi         case 0:
3690*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
3691*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl->HWPCR0_L);
3692*53ee8cc1Swenshuai.xi             *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR0_H) & 0x1;
3693*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
3694*53ee8cc1Swenshuai.xi             break;
3695*53ee8cc1Swenshuai.xi         case 1:
3696*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
3697*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl->HWPCR1_L);
3698*53ee8cc1Swenshuai.xi             *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR1_H) & 0x1;
3699*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
3700*53ee8cc1Swenshuai.xi             break;
3701*53ee8cc1Swenshuai.xi         case 2:
3702*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_READ);
3703*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl8_1->CFG8_60_61);
3704*53ee8cc1Swenshuai.xi             *pu32Pcr_H = (MS_U32)(REG16_R(&_RegCtrl8_1->CFG8_62) & 0x1);
3705*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_READ);
3706*53ee8cc1Swenshuai.xi             break;
3707*53ee8cc1Swenshuai.xi         case 3:
3708*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_READ);
3709*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl8_1->CFG8_63_64);
3710*53ee8cc1Swenshuai.xi             *pu32Pcr_H = (MS_U32)(REG16_R(&_RegCtrl8_1->CFG8_65) & 0x1);
3711*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_READ);
3712*53ee8cc1Swenshuai.xi             break;
3713*53ee8cc1Swenshuai.xi 
3714*53ee8cc1Swenshuai.xi         default:
3715*53ee8cc1Swenshuai.xi             break;
3716*53ee8cc1Swenshuai.xi     }
3717*53ee8cc1Swenshuai.xi }
3718*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)3719*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)
3720*53ee8cc1Swenshuai.xi {
3721*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3722*53ee8cc1Swenshuai.xi     {
3723*53ee8cc1Swenshuai.xi         case 0:
3724*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
3725*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
3726*53ee8cc1Swenshuai.xi             break;
3727*53ee8cc1Swenshuai.xi         case 1:
3728*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
3729*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
3730*53ee8cc1Swenshuai.xi             break;
3731*53ee8cc1Swenshuai.xi         case 2:
3732*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_RESET);
3733*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_RESET);
3734*53ee8cc1Swenshuai.xi             break;
3735*53ee8cc1Swenshuai.xi         case 3:
3736*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_RESET);
3737*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_RESET);
3738*53ee8cc1Swenshuai.xi             break;
3739*53ee8cc1Swenshuai.xi         default:
3740*53ee8cc1Swenshuai.xi             break;
3741*53ee8cc1Swenshuai.xi     }
3742*53ee8cc1Swenshuai.xi }
3743*53ee8cc1Swenshuai.xi 
3744*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)3745*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)
3746*53ee8cc1Swenshuai.xi {
3747*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3748*53ee8cc1Swenshuai.xi     {
3749*53ee8cc1Swenshuai.xi         case 0:
3750*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt2_Stat,TSP_HWINT2_PCR0_UPDATE_END);
3751*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt2_Stat,
3752*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt2_Stat) & (~TSP_HWINT2_STATUS_MASK)) |
3753*53ee8cc1Swenshuai.xi             (~TSP_HWINT2_PCR0_UPDATE_END & TSP_HWINT2_STATUS_MASK));
3754*53ee8cc1Swenshuai.xi             break;
3755*53ee8cc1Swenshuai.xi         case 1:
3756*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt2_Stat,TSP_HWINT2_PCR1_UPDATE_END);
3757*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt2_Stat,
3758*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt2_Stat) & (~TSP_HWINT2_STATUS_MASK)) |
3759*53ee8cc1Swenshuai.xi             (~TSP_HWINT2_PCR1_UPDATE_END & TSP_HWINT2_STATUS_MASK));
3760*53ee8cc1Swenshuai.xi             break;
3761*53ee8cc1Swenshuai.xi         case 2:
3762*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt3_Stat,TSP_HWINT2_PCR2_UPDATE_END);
3763*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt3_Stat,
3764*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt3_Stat) & (~TSP_HWINT3_STATUS_MASK)) |
3765*53ee8cc1Swenshuai.xi             (~TSP_HWINT3_PCR2_UPDATE_END & TSP_HWINT3_STATUS_MASK));
3766*53ee8cc1Swenshuai.xi             break;
3767*53ee8cc1Swenshuai.xi         case 3:
3768*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt3_Stat,TSP_HWINT2_PCR3_UPDATE_END);
3769*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt3_Stat,
3770*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt3_Stat) & (~TSP_HWINT3_STATUS_MASK)) |
3771*53ee8cc1Swenshuai.xi             (~TSP_HWINT3_PCR3_UPDATE_END & TSP_HWINT3_STATUS_MASK));
3772*53ee8cc1Swenshuai.xi             break;
3773*53ee8cc1Swenshuai.xi         default:
3774*53ee8cc1Swenshuai.xi             break;
3775*53ee8cc1Swenshuai.xi     }
3776*53ee8cc1Swenshuai.xi }
3777*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)3778*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)
3779*53ee8cc1Swenshuai.xi {
3780*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3781*53ee8cc1Swenshuai.xi     {
3782*53ee8cc1Swenshuai.xi         case 0:
3783*53ee8cc1Swenshuai.xi             return (TSP_HWINT2_PCR0_UPDATE_END_EN << 8);
3784*53ee8cc1Swenshuai.xi         case 1:
3785*53ee8cc1Swenshuai.xi             return (TSP_HWINT2_PCR1_UPDATE_END_EN << 8);
3786*53ee8cc1Swenshuai.xi         case 2:
3787*53ee8cc1Swenshuai.xi             return (TSP_HWINT3_PCR2_UPDATE_END_EN << 16);
3788*53ee8cc1Swenshuai.xi         case 3:
3789*53ee8cc1Swenshuai.xi             return (TSP_HWINT3_PCR3_UPDATE_END_EN << 16);
3790*53ee8cc1Swenshuai.xi         default:
3791*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__));
3792*53ee8cc1Swenshuai.xi             return 0;
3793*53ee8cc1Swenshuai.xi     }
3794*53ee8cc1Swenshuai.xi }
3795*53ee8cc1Swenshuai.xi 
HAL_TSP_STC_Init(void)3796*53ee8cc1Swenshuai.xi void HAL_TSP_STC_Init(void)
3797*53ee8cc1Swenshuai.xi {
3798*53ee8cc1Swenshuai.xi     /////////////Set STC control by HK////////////////
3799*53ee8cc1Swenshuai.xi     // select synth from chip top : bit 1 -> 0 -> controlled by HK
3800*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
3801*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
3802*53ee8cc1Swenshuai.xi 
3803*53ee8cc1Swenshuai.xi     // set HK STC synth CW
3804*53ee8cc1Swenshuai.xi      //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
3805*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L)  = 0x0000;
3806*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H)  = 0x2800;
3807*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = 0x0000;
3808*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = 0x2800;
3809*53ee8cc1Swenshuai.xi 
3810*53ee8cc1Swenshuai.xi     // set STC synth
3811*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3812*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_EN;
3813*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3814*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3815*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_EN;
3816*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3817*53ee8cc1Swenshuai.xi 
3818*53ee8cc1Swenshuai.xi #if 0  // we don't use TSP CPU to control STC anymmore, so we don't have to do the following
3819*53ee8cc1Swenshuai.xi     /////////////Set STC control by TSP////////////////
3820*53ee8cc1Swenshuai.xi     // select synth from TSP      : bit 1 -> 1 -> controlled by TSP
3821*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_SEL;
3822*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_SEL;
3823*53ee8cc1Swenshuai.xi 
3824*53ee8cc1Swenshuai.xi     // set TSP STC synth CW
3825*53ee8cc1Swenshuai.xi     //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
3826*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021024c<<1), 0x28000000);
3827*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x00210280<<1), 0x28000000); //STC1
3828*53ee8cc1Swenshuai.xi 
3829*53ee8cc1Swenshuai.xi     // t2 , t3 had no 0x0021025c, it was add after t4, eanble synthesizer
3830*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x01);
3831*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x01);
3832*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x02); //STC1
3833*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x02);
3834*53ee8cc1Swenshuai.xi #endif
3835*53ee8cc1Swenshuai.xi }
3836*53ee8cc1Swenshuai.xi 
HAL_TSP_GetSTCSynth(MS_U32 Eng,MS_U32 * u32Sync)3837*53ee8cc1Swenshuai.xi void HAL_TSP_GetSTCSynth(MS_U32 Eng, MS_U32* u32Sync)
3838*53ee8cc1Swenshuai.xi {
3839*53ee8cc1Swenshuai.xi     switch (Eng)
3840*53ee8cc1Swenshuai.xi     {
3841*53ee8cc1Swenshuai.xi         case 0:
3842*53ee8cc1Swenshuai.xi             // get HK STC synth CW
3843*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L);
3844*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) << 16 ;
3845*53ee8cc1Swenshuai.xi             break;
3846*53ee8cc1Swenshuai.xi         case 1:
3847*53ee8cc1Swenshuai.xi             // get HK STC synth CW
3848*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L);
3849*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) << 16 ;
3850*53ee8cc1Swenshuai.xi             break;
3851*53ee8cc1Swenshuai.xi     }
3852*53ee8cc1Swenshuai.xi }
3853*53ee8cc1Swenshuai.xi 
HAL_TSP_SetSTCSynth(MS_U32 Eng,MS_U32 u32Sync)3854*53ee8cc1Swenshuai.xi void HAL_TSP_SetSTCSynth(MS_U32 Eng, MS_U32 u32Sync)
3855*53ee8cc1Swenshuai.xi {
3856*53ee8cc1Swenshuai.xi     switch (Eng)
3857*53ee8cc1Swenshuai.xi     {
3858*53ee8cc1Swenshuai.xi         case 0:
3859*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
3860*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
3861*53ee8cc1Swenshuai.xi 
3862*53ee8cc1Swenshuai.xi             // set HK STC synth CW
3863*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L) = u32Sync & 0xFFFF;
3864*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) = u32Sync >> 16;
3865*53ee8cc1Swenshuai.xi 
3866*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
3867*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3868*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |=   REG_CLKGEN0_STC_CW_EN;
3869*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3870*53ee8cc1Swenshuai.xi             break;
3871*53ee8cc1Swenshuai.xi         case 1:
3872*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
3873*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
3874*53ee8cc1Swenshuai.xi 
3875*53ee8cc1Swenshuai.xi             // set HK STC synth CW
3876*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = u32Sync & 0xFFFF;
3877*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = u32Sync >> 16;
3878*53ee8cc1Swenshuai.xi 
3879*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
3880*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3881*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |=   REG_CLKGEN0_STC1_CW_EN;
3882*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3883*53ee8cc1Swenshuai.xi             break;
3884*53ee8cc1Swenshuai.xi     }
3885*53ee8cc1Swenshuai.xi }
3886*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)3887*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)
3888*53ee8cc1Swenshuai.xi {
3889*53ee8cc1Swenshuai.xi     if (bEnable)
3890*53ee8cc1Swenshuai.xi     {
3891*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
3892*53ee8cc1Swenshuai.xi     }
3893*53ee8cc1Swenshuai.xi     else
3894*53ee8cc1Swenshuai.xi     {
3895*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
3896*53ee8cc1Swenshuai.xi     }
3897*53ee8cc1Swenshuai.xi }
3898*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Set(MS_U32 Eng,MS_U32 stcH,MS_U32 stcL)3899*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Set(MS_U32 Eng, MS_U32 stcH, MS_U32 stcL)
3900*53ee8cc1Swenshuai.xi {
3901*53ee8cc1Swenshuai.xi     switch (Eng)
3902*53ee8cc1Swenshuai.xi     {
3903*53ee8cc1Swenshuai.xi         case 0:
3904*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Pcr_L, stcL);
3905*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Pcr_H, stcH);
3906*53ee8cc1Swenshuai.xi             break;
3907*53ee8cc1Swenshuai.xi         case 1:
3908*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PCR64_2_L, stcL);
3909*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PCR64_2_H, stcH);
3910*53ee8cc1Swenshuai.xi             break;
3911*53ee8cc1Swenshuai.xi     }
3912*53ee8cc1Swenshuai.xi }
3913*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Get(MS_U32 Eng,MS_U32 * pStcH,MS_U32 * pStcL)3914*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Get(MS_U32 Eng, MS_U32* pStcH, MS_U32* pStcL)
3915*53ee8cc1Swenshuai.xi {
3916*53ee8cc1Swenshuai.xi     switch (Eng)
3917*53ee8cc1Swenshuai.xi     {
3918*53ee8cc1Swenshuai.xi         case 0:
3919*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3920*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl->Pcr_H);
3921*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl->Pcr_L);
3922*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3923*53ee8cc1Swenshuai.xi             break;
3924*53ee8cc1Swenshuai.xi         case 1:
3925*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
3926*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl->PCR64_2_H);
3927*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl->PCR64_2_L);
3928*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
3929*53ee8cc1Swenshuai.xi             break;
3930*53ee8cc1Swenshuai.xi     }
3931*53ee8cc1Swenshuai.xi }
3932*53ee8cc1Swenshuai.xi 
HAL_TSP_STC33_CmdQSet(MS_U32 stcH,MS_U32 stcL)3933*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQSet(MS_U32 stcH, MS_U32 stcL)
3934*53ee8cc1Swenshuai.xi {
3935*53ee8cc1Swenshuai.xi     // @TODO ask designer for the difference between 64bit STC and 33 Bit STC
3936*53ee8cc1Swenshuai.xi     // and it's hw limit (like: cmdQ delay)
3937*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Pcr_H_CmdQ, stcH & TSP_REG_PCR_CMDQ_H);
3938*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Pcr_L_CmdQ, stcL);
3939*53ee8cc1Swenshuai.xi }
3940*53ee8cc1Swenshuai.xi 
HAL_TSP_STC33_CmdQGet(MS_U32 * pStcH,MS_U32 * pStcL)3941*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQGet(MS_U32* pStcH, MS_U32* pStcL)
3942*53ee8cc1Swenshuai.xi {
3943*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3944*53ee8cc1Swenshuai.xi     *pStcH = REG16_R(&_RegCtrl->Pcr_H_CmdQ) & TSP_REG_PCR_CMDQ_H;
3945*53ee8cc1Swenshuai.xi     *pStcL = REG32_R(&_RegCtrl->Pcr_L_CmdQ);
3946*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
3947*53ee8cc1Swenshuai.xi }
3948*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType,MS_U32 pktDmxId)3949*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType, MS_U32 pktDmxId)
3950*53ee8cc1Swenshuai.xi {
3951*53ee8cc1Swenshuai.xi     switch (eFltType)
3952*53ee8cc1Swenshuai.xi     {
3953*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
3954*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID_SRC_SHIFT);
3955*53ee8cc1Swenshuai.xi             break;
3956*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
3957*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID3D_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID3D_SRC_SHIFT);
3958*53ee8cc1Swenshuai.xi             break;
3959*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
3960*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUD_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUD_SRC_SHIFT);
3961*53ee8cc1Swenshuai.xi             break;
3962*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
3963*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUDB_SRC_MASK, ((MS_U16)pktDmxId)  << TSP_AUDB_SRC_SHIFT);
3964*53ee8cc1Swenshuai.xi             break;
3965*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
3966*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PCR_Cfg, TSP_AUDC_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUDC_SRC_SHIFT);
3967*53ee8cc1Swenshuai.xi             break;
3968*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
3969*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PCR_Cfg, TSP_AUDD_SRC_MASK, ((MS_U16)pktDmxId)  << TSP_AUDD_SRC_SHIFT);
3970*53ee8cc1Swenshuai.xi             break;
3971*53ee8cc1Swenshuai.xi         default:
3972*53ee8cc1Swenshuai.xi             break;
3973*53ee8cc1Swenshuai.xi     }
3974*53ee8cc1Swenshuai.xi }
3975*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType,TSP_SRC_SEQ * pktDmxId)3976*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType, TSP_SRC_SEQ *pktDmxId)
3977*53ee8cc1Swenshuai.xi {
3978*53ee8cc1Swenshuai.xi     switch (eFltType)
3979*53ee8cc1Swenshuai.xi     {
3980*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
3981*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID_SRC_MASK) >> TSP_VID_SRC_SHIFT;
3982*53ee8cc1Swenshuai.xi             break;
3983*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
3984*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID3D_SRC_MASK) >> TSP_VID3D_SRC_SHIFT;
3985*53ee8cc1Swenshuai.xi             break;
3986*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
3987*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUD_SRC_MASK) >> TSP_AUD_SRC_SHIFT;
3988*53ee8cc1Swenshuai.xi             break;
3989*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
3990*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUDB_SRC_MASK) >> TSP_AUDB_SRC_SHIFT;
3991*53ee8cc1Swenshuai.xi             break;
3992*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
3993*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->PCR_Cfg)) & TSP_AUDC_SRC_MASK) >> TSP_AUDC_SRC_SHIFT;
3994*53ee8cc1Swenshuai.xi             break;
3995*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
3996*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->PCR_Cfg)) & TSP_AUDD_SRC_MASK) >> TSP_AUDD_SRC_SHIFT;
3997*53ee8cc1Swenshuai.xi             break;
3998*53ee8cc1Swenshuai.xi         default:
3999*53ee8cc1Swenshuai.xi             break;
4000*53ee8cc1Swenshuai.xi     }
4001*53ee8cc1Swenshuai.xi }
4002*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ClearAll()4003*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ClearAll()
4004*53ee8cc1Swenshuai.xi {
4005*53ee8cc1Swenshuai.xi     // clear ALL FIFO !!!
4006*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4007*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4008*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4009*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4010*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4011*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4012*53ee8cc1Swenshuai.xi 
4013*53ee8cc1Swenshuai.xi }
4014*53ee8cc1Swenshuai.xi 
4015*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadEn(MS_BOOL bEn)4016*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ReadEn(MS_BOOL bEn)
4017*53ee8cc1Swenshuai.xi {
4018*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
4019*53ee8cc1Swenshuai.xi     {
4020*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
4021*53ee8cc1Swenshuai.xi     }
4022*53ee8cc1Swenshuai.xi     else
4023*53ee8cc1Swenshuai.xi     {
4024*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
4025*53ee8cc1Swenshuai.xi     }
4026*53ee8cc1Swenshuai.xi 
4027*53ee8cc1Swenshuai.xi }
4028*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadPkt(void)4029*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_FIFO_ReadPkt(void)
4030*53ee8cc1Swenshuai.xi {
4031*53ee8cc1Swenshuai.xi     return (REG16_R(&_RegCtrl->PKT_CNT) & TSP_PKT_CNT_MASK);
4032*53ee8cc1Swenshuai.xi }
4033*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)4034*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)
4035*53ee8cc1Swenshuai.xi {
4036*53ee8cc1Swenshuai.xi     switch (eFltType)
4037*53ee8cc1Swenshuai.xi     {
4038*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
4039*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);
4040*53ee8cc1Swenshuai.xi             break;
4041*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4042*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);
4043*53ee8cc1Swenshuai.xi             break;
4044*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
4045*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);
4046*53ee8cc1Swenshuai.xi             break;
4047*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
4048*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);
4049*53ee8cc1Swenshuai.xi             break;
4050*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
4051*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);
4052*53ee8cc1Swenshuai.xi             break;
4053*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
4054*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);
4055*53ee8cc1Swenshuai.xi             break;
4056*53ee8cc1Swenshuai.xi         default:
4057*53ee8cc1Swenshuai.xi             break;
4058*53ee8cc1Swenshuai.xi     }
4059*53ee8cc1Swenshuai.xi }
4060*53ee8cc1Swenshuai.xi 
4061*53ee8cc1Swenshuai.xi 
4062*53ee8cc1Swenshuai.xi 
4063*53ee8cc1Swenshuai.xi 
4064*53ee8cc1Swenshuai.xi //@NOTE for TS mode
4065*53ee8cc1Swenshuai.xi //@TODO need to rename (TS enable or PKTDMX_BYPASS)
HAL_TSP_Flt_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)4066*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
4067*53ee8cc1Swenshuai.xi {
4068*53ee8cc1Swenshuai.xi     if(bEn)
4069*53ee8cc1Swenshuai.xi     {
4070*53ee8cc1Swenshuai.xi         switch (eFltType)
4071*53ee8cc1Swenshuai.xi         {
4072*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4073*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
4074*53ee8cc1Swenshuai.xi                 break;
4075*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4076*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
4077*53ee8cc1Swenshuai.xi                 break;
4078*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4079*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
4080*53ee8cc1Swenshuai.xi                 break;
4081*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4082*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
4083*53ee8cc1Swenshuai.xi                 break;
4084*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4085*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_C_BYPASS);
4086*53ee8cc1Swenshuai.xi                 break;
4087*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4088*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_D_BYPASS);
4089*53ee8cc1Swenshuai.xi                 break;
4090*53ee8cc1Swenshuai.xi             default:
4091*53ee8cc1Swenshuai.xi                 break;
4092*53ee8cc1Swenshuai.xi         }
4093*53ee8cc1Swenshuai.xi     }
4094*53ee8cc1Swenshuai.xi     else
4095*53ee8cc1Swenshuai.xi     {
4096*53ee8cc1Swenshuai.xi         switch (eFltType)
4097*53ee8cc1Swenshuai.xi         {
4098*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4099*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
4100*53ee8cc1Swenshuai.xi                 break;
4101*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4102*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
4103*53ee8cc1Swenshuai.xi                 break;
4104*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4105*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
4106*53ee8cc1Swenshuai.xi                 break;
4107*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4108*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
4109*53ee8cc1Swenshuai.xi                 break;
4110*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4111*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_C_BYPASS);
4112*53ee8cc1Swenshuai.xi                 break;
4113*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4114*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_D_BYPASS);
4115*53ee8cc1Swenshuai.xi                 break;
4116*53ee8cc1Swenshuai.xi             default:
4117*53ee8cc1Swenshuai.xi                 break;
4118*53ee8cc1Swenshuai.xi 
4119*53ee8cc1Swenshuai.xi         }
4120*53ee8cc1Swenshuai.xi     }
4121*53ee8cc1Swenshuai.xi }
4122*53ee8cc1Swenshuai.xi 
HAL_TSP_PS_SRC(MS_U32 tsIf)4123*53ee8cc1Swenshuai.xi void HAL_TSP_PS_SRC(MS_U32 tsIf)
4124*53ee8cc1Swenshuai.xi {
4125*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl3->CFG3_10, CFG3_10_PS_MODE_SRC_MASK,(((MS_U16)tsIf)<< CFG3_10_PS_MODE_SRC_SHIFT));
4126*53ee8cc1Swenshuai.xi }
4127*53ee8cc1Swenshuai.xi 
4128*53ee8cc1Swenshuai.xi 
4129*53ee8cc1Swenshuai.xi 
4130*53ee8cc1Swenshuai.xi //PS MODE
4131*53ee8cc1Swenshuai.xi //NEED TO rename
HAL_TSP_FIFO_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)4132*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
4133*53ee8cc1Swenshuai.xi {
4134*53ee8cc1Swenshuai.xi     if(bEn)
4135*53ee8cc1Swenshuai.xi     {
4136*53ee8cc1Swenshuai.xi         switch (eFltType)
4137*53ee8cc1Swenshuai.xi         {
4138*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4139*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4140*53ee8cc1Swenshuai.xi                 break;
4141*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4142*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4143*53ee8cc1Swenshuai.xi                 break;
4144*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4145*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4146*53ee8cc1Swenshuai.xi                 break;
4147*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4148*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4149*53ee8cc1Swenshuai.xi                 break;
4150*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4151*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4152*53ee8cc1Swenshuai.xi                 break;
4153*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4154*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4155*53ee8cc1Swenshuai.xi                 break;
4156*53ee8cc1Swenshuai.xi             default:
4157*53ee8cc1Swenshuai.xi                 break;
4158*53ee8cc1Swenshuai.xi         }
4159*53ee8cc1Swenshuai.xi     }
4160*53ee8cc1Swenshuai.xi     else
4161*53ee8cc1Swenshuai.xi     {
4162*53ee8cc1Swenshuai.xi         switch (eFltType)
4163*53ee8cc1Swenshuai.xi         {
4164*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4165*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4166*53ee8cc1Swenshuai.xi                 break;
4167*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4168*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4169*53ee8cc1Swenshuai.xi                 break;
4170*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4171*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4172*53ee8cc1Swenshuai.xi                 break;
4173*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4174*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4175*53ee8cc1Swenshuai.xi                 break;
4176*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4177*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4178*53ee8cc1Swenshuai.xi                 break;
4179*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4180*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4181*53ee8cc1Swenshuai.xi                 break;
4182*53ee8cc1Swenshuai.xi             default:
4183*53ee8cc1Swenshuai.xi                 break;
4184*53ee8cc1Swenshuai.xi         }
4185*53ee8cc1Swenshuai.xi     }
4186*53ee8cc1Swenshuai.xi }
4187*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng,TSP_DST_SEQ eFltType)4188*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng, TSP_DST_SEQ eFltType)
4189*53ee8cc1Swenshuai.xi {
4190*53ee8cc1Swenshuai.xi     // (K6 HW CL)
4191*53ee8cc1Swenshuai.xi     // PS mode source sel need to be independent
4192*53ee8cc1Swenshuai.xi 
4193*53ee8cc1Swenshuai.xi     switch (eFltType)
4194*53ee8cc1Swenshuai.xi     {
4195*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
4196*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_48,CFG8_48_REG_PS_MODE_SRC_V_MASK,  (eFileEng << CFG8_48_REG_PS_MODE_SRC_V_SHIFT));
4197*53ee8cc1Swenshuai.xi             break;
4198*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4199*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_48,CFG8_48_REG_PS_MODE_SRC_V3D_MASK,(eFileEng << CFG8_48_REG_PS_MODE_SRC_V3D_SHIFT));
4200*53ee8cc1Swenshuai.xi             break;
4201*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
4202*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_47,CFG8_47_REG_PS_MODE_SRC_A_MASK,  (eFileEng << CFG8_47_REG_PS_MODE_SRC_A_SHIFT));
4203*53ee8cc1Swenshuai.xi             break;
4204*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
4205*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_47,CFG8_47_REG_PS_MODE_SRC_AD_MASK, (eFileEng << CFG8_47_REG_PS_MODE_SRC_AD_SHIFT));
4206*53ee8cc1Swenshuai.xi             break;
4207*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
4208*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_47,CFG8_47_REG_PS_MODE_SRC_AC_MASK, (eFileEng << CFG8_47_REG_PS_MODE_SRC_AC_SHIFT));
4209*53ee8cc1Swenshuai.xi             break;
4210*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
4211*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_47,CFG8_47_REG_PS_MODE_SRC_ADD_MASK,(eFileEng << CFG8_47_REG_PS_MODE_SRC_ADD_SHIFT));
4212*53ee8cc1Swenshuai.xi             break;
4213*53ee8cc1Swenshuai.xi         default:
4214*53ee8cc1Swenshuai.xi             break;
4215*53ee8cc1Swenshuai.xi     }
4216*53ee8cc1Swenshuai.xi }
4217*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)4218*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)
4219*53ee8cc1Swenshuai.xi {
4220*53ee8cc1Swenshuai.xi     switch (eFltType)
4221*53ee8cc1Swenshuai.xi     {
4222*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO :
4223*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl->Vd_Pid_Hit) & TSP_VPID_MASK;
4224*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3D :
4225*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_70) & CFG_70_MATCHECED_VPID_3D_MASK;
4226*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO :
4227*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl->Aud_Pid_Hit) & TSP_APID_MASK;
4228*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO2 :
4229*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_71) & CFG_71_MATCHECED_APID_B_MASK;
4230*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO3 :
4231*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_74) & CFG_74_MATCHECED_APID_C_MASK;
4232*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO4 :
4233*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_7C) & CFG_7C_MATCHECED_APID_D_MASK;
4234*53ee8cc1Swenshuai.xi     default:
4235*53ee8cc1Swenshuai.xi         return PVR_PIDFLT_DEF;
4236*53ee8cc1Swenshuai.xi     }
4237*53ee8cc1Swenshuai.xi }
4238*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType,MS_BOOL bReset)4239*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType, MS_BOOL bReset)
4240*53ee8cc1Swenshuai.xi {
4241*53ee8cc1Swenshuai.xi     if (bReset)
4242*53ee8cc1Swenshuai.xi     {
4243*53ee8cc1Swenshuai.xi         switch (eFltType)
4244*53ee8cc1Swenshuai.xi         {
4245*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4246*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
4247*53ee8cc1Swenshuai.xi                 break;
4248*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4249*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
4250*53ee8cc1Swenshuai.xi                 break;
4251*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4252*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
4253*53ee8cc1Swenshuai.xi                 break;
4254*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4255*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
4256*53ee8cc1Swenshuai.xi                 break;
4257*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4258*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO3);
4259*53ee8cc1Swenshuai.xi                 break;
4260*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4261*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_RESET_AFIFO4);
4262*53ee8cc1Swenshuai.xi                 break;
4263*53ee8cc1Swenshuai.xi             default :
4264*53ee8cc1Swenshuai.xi                 break;
4265*53ee8cc1Swenshuai.xi         }
4266*53ee8cc1Swenshuai.xi     }
4267*53ee8cc1Swenshuai.xi     else
4268*53ee8cc1Swenshuai.xi     {
4269*53ee8cc1Swenshuai.xi         switch (eFltType)
4270*53ee8cc1Swenshuai.xi         {
4271*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4272*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
4273*53ee8cc1Swenshuai.xi                 break;
4274*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4275*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
4276*53ee8cc1Swenshuai.xi                 break;
4277*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4278*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
4279*53ee8cc1Swenshuai.xi                 break;
4280*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4281*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
4282*53ee8cc1Swenshuai.xi                 break;
4283*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4284*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO3);
4285*53ee8cc1Swenshuai.xi                 break;
4286*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4287*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_RESET_AFIFO4);
4288*53ee8cc1Swenshuai.xi                 break;
4289*53ee8cc1Swenshuai.xi             default :
4290*53ee8cc1Swenshuai.xi                 break;
4291*53ee8cc1Swenshuai.xi         }
4292*53ee8cc1Swenshuai.xi     }
4293*53ee8cc1Swenshuai.xi 
4294*53ee8cc1Swenshuai.xi     _delay(1);
4295*53ee8cc1Swenshuai.xi }
4296*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)4297*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)
4298*53ee8cc1Swenshuai.xi {
4299*53ee8cc1Swenshuai.xi     if(bSkip)
4300*53ee8cc1Swenshuai.xi     {
4301*53ee8cc1Swenshuai.xi         switch(eFltType)
4302*53ee8cc1Swenshuai.xi         {
4303*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4304*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
4305*53ee8cc1Swenshuai.xi                 break;
4306*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4307*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
4308*53ee8cc1Swenshuai.xi                 break;
4309*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4310*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
4311*53ee8cc1Swenshuai.xi                 break;
4312*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4313*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
4314*53ee8cc1Swenshuai.xi                 break;
4315*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4316*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AC_EN);
4317*53ee8cc1Swenshuai.xi                 break;
4318*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4319*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AD_EN);
4320*53ee8cc1Swenshuai.xi                 break;
4321*53ee8cc1Swenshuai.xi             default:
4322*53ee8cc1Swenshuai.xi                 break;
4323*53ee8cc1Swenshuai.xi         }
4324*53ee8cc1Swenshuai.xi     }
4325*53ee8cc1Swenshuai.xi     else
4326*53ee8cc1Swenshuai.xi     {
4327*53ee8cc1Swenshuai.xi         switch(eFltType)
4328*53ee8cc1Swenshuai.xi         {
4329*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4330*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
4331*53ee8cc1Swenshuai.xi                 break;
4332*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4333*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
4334*53ee8cc1Swenshuai.xi                 break;
4335*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4336*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
4337*53ee8cc1Swenshuai.xi                 break;
4338*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4339*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
4340*53ee8cc1Swenshuai.xi                 break;
4341*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4342*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AC_EN);
4343*53ee8cc1Swenshuai.xi                 break;
4344*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4345*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AD_EN);
4346*53ee8cc1Swenshuai.xi                 break;
4347*53ee8cc1Swenshuai.xi             default:
4348*53ee8cc1Swenshuai.xi                 break;
4349*53ee8cc1Swenshuai.xi         }
4350*53ee8cc1Swenshuai.xi 
4351*53ee8cc1Swenshuai.xi     }
4352*53ee8cc1Swenshuai.xi }
4353*53ee8cc1Swenshuai.xi 
4354*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType,MS_BOOL bDisable)4355*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType, MS_BOOL bDisable)
4356*53ee8cc1Swenshuai.xi {
4357*53ee8cc1Swenshuai.xi     if(bDisable)
4358*53ee8cc1Swenshuai.xi     {
4359*53ee8cc1Swenshuai.xi         switch(eFltType)
4360*53ee8cc1Swenshuai.xi         {
4361*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4362*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
4363*53ee8cc1Swenshuai.xi                 break;
4364*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4365*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
4366*53ee8cc1Swenshuai.xi                 break;
4367*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4368*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
4369*53ee8cc1Swenshuai.xi                 break;
4370*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4371*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
4372*53ee8cc1Swenshuai.xi                 break;
4373*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4374*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_AC_BLOCK_DIS);
4375*53ee8cc1Swenshuai.xi                 break;
4376*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4377*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_ADD_BLOCK_DIS);
4378*53ee8cc1Swenshuai.xi                 break;
4379*53ee8cc1Swenshuai.xi             default:
4380*53ee8cc1Swenshuai.xi                 break;
4381*53ee8cc1Swenshuai.xi         }
4382*53ee8cc1Swenshuai.xi     }
4383*53ee8cc1Swenshuai.xi     else
4384*53ee8cc1Swenshuai.xi     {
4385*53ee8cc1Swenshuai.xi         switch(eFltType)
4386*53ee8cc1Swenshuai.xi         {
4387*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4388*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
4389*53ee8cc1Swenshuai.xi                 break;
4390*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4391*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
4392*53ee8cc1Swenshuai.xi                 break;
4393*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4394*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
4395*53ee8cc1Swenshuai.xi                 break;
4396*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4397*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
4398*53ee8cc1Swenshuai.xi                 break;
4399*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4400*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AC_BLOCK_DIS);
4401*53ee8cc1Swenshuai.xi                 break;
4402*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4403*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_ADD_BLOCK_DIS);
4404*53ee8cc1Swenshuai.xi                 break;
4405*53ee8cc1Swenshuai.xi             default:
4406*53ee8cc1Swenshuai.xi                 break;
4407*53ee8cc1Swenshuai.xi         }
4408*53ee8cc1Swenshuai.xi     }
4409*53ee8cc1Swenshuai.xi }
4410*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)4411*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)
4412*53ee8cc1Swenshuai.xi {
4413*53ee8cc1Swenshuai.xi     MS_U32 u32Matched = 0;
4414*53ee8cc1Swenshuai.xi     switch (eFltType)
4415*53ee8cc1Swenshuai.xi     {
4416*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4417*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO;
4418*53ee8cc1Swenshuai.xi             break;
4419*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4420*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO3D;
4421*53ee8cc1Swenshuai.xi             break;
4422*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4423*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO;
4424*53ee8cc1Swenshuai.xi             break;
4425*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4426*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO2;
4427*53ee8cc1Swenshuai.xi             break;
4428*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4429*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO3;
4430*53ee8cc1Swenshuai.xi             break;
4431*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4432*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->PktChkSizeFilein) & TSP_RESET_AFIFO4;
4433*53ee8cc1Swenshuai.xi             break;
4434*53ee8cc1Swenshuai.xi         default :
4435*53ee8cc1Swenshuai.xi             return FALSE;
4436*53ee8cc1Swenshuai.xi     }
4437*53ee8cc1Swenshuai.xi     return (u32Matched) ? TRUE: FALSE;
4438*53ee8cc1Swenshuai.xi }
4439*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)4440*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)
4441*53ee8cc1Swenshuai.xi {
4442*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_ISRESET    0x80000000
4443*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_EMPTY      0x00000001
4444*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_OVERFLOW   0x00000002
4445*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_LEVEL      0x0000000C
4446*53ee8cc1Swenshuai.xi     #define TSP_FIFO_STATUS_LEVEL_SHFT            2   //shift the value get from HAL_TSP_FIFO_Level to the u32Status level position
4447*53ee8cc1Swenshuai.xi     // @NOTE please follow K2 like series to return this value
4448*53ee8cc1Swenshuai.xi     // since API layer didn't define for each column
4449*53ee8cc1Swenshuai.xi     // we only defined that 0x80000000 stands for this fifo reset is High
4450*53ee8cc1Swenshuai.xi     //                               0x00000001 stands for this fifo is empty
4451*53ee8cc1Swenshuai.xi     //                               0x00000002 stands for this fifo is overflow
4452*53ee8cc1Swenshuai.xi     //                               0x0000000C is a mask for this fifo level
4453*53ee8cc1Swenshuai.xi     // this is exclusive usage
4454*53ee8cc1Swenshuai.xi     MS_U32 u32Status = 0;
4455*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_IsReset(eFltType))
4456*53ee8cc1Swenshuai.xi     {
4457*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_ISRESET;
4458*53ee8cc1Swenshuai.xi     }
4459*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_Empty(eFltType))
4460*53ee8cc1Swenshuai.xi     {
4461*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_EMPTY;
4462*53ee8cc1Swenshuai.xi     }
4463*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_Overflow(eFltType))
4464*53ee8cc1Swenshuai.xi     {
4465*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_OVERFLOW;
4466*53ee8cc1Swenshuai.xi     }
4467*53ee8cc1Swenshuai.xi 
4468*53ee8cc1Swenshuai.xi     u32Status |= ((HAL_TSP_FIFO_Level(eFltType)<<TSP_FIFO_STATUS_LEVEL_SHFT)&E_TSP_FIFO_STATUS_LEVEL);
4469*53ee8cc1Swenshuai.xi 
4470*53ee8cc1Swenshuai.xi     return u32Status;
4471*53ee8cc1Swenshuai.xi }
4472*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)4473*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)
4474*53ee8cc1Swenshuai.xi {
4475*53ee8cc1Swenshuai.xi     switch (eFltType)
4476*53ee8cc1Swenshuai.xi     {
4477*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO :
4478*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_LEVEL)  >> TSP_VFIFO_LEVEL_SHFT;
4479*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3D :
4480*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_LEVEL)  >> TSP_VFIFO3D_LEVEL_SHFT;
4481*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO :
4482*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_LEVEL)  >> TSP_AFIFO_LEVEL_SHFT;
4483*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO2 :
4484*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_LEVEL)  >> TSP_AFIFOB_LEVEL_SHFT;
4485*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO3 :
4486*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_LEVEL)  >> TSP_AFIFOC_LEVEL_SHFT;
4487*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO4:
4488*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_LEVEL)  >> TSP_AFIFOD_LEVEL_SHFT;
4489*53ee8cc1Swenshuai.xi     default :
4490*53ee8cc1Swenshuai.xi         return 0;
4491*53ee8cc1Swenshuai.xi     }
4492*53ee8cc1Swenshuai.xi }
4493*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)4494*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)
4495*53ee8cc1Swenshuai.xi {
4496*53ee8cc1Swenshuai.xi     switch (eFltType)
4497*53ee8cc1Swenshuai.xi     {
4498*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4499*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_FULL)  >> TSP_VFIFO_FULL_SHFT;
4500*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
4501*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_FULL)  >> TSP_VFIFO3D_FULL_SHFT;
4502*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4503*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_FULL)  >> TSP_AFIFO_FULL_SHFT;
4504*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4505*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_FULL)  >> TSP_AFIFOB_FULL_SHFT;
4506*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4507*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_FULL)  >> TSP_AFIFOC_FULL_SHFT;
4508*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4509*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_FULL)  >> TSP_AFIFOD_FULL_SHFT;
4510*53ee8cc1Swenshuai.xi         default :
4511*53ee8cc1Swenshuai.xi             return FALSE;
4512*53ee8cc1Swenshuai.xi     }
4513*53ee8cc1Swenshuai.xi }
4514*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)4515*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)
4516*53ee8cc1Swenshuai.xi {
4517*53ee8cc1Swenshuai.xi     switch (eFltType)
4518*53ee8cc1Swenshuai.xi     {
4519*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4520*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_EMPTY)  >> TSP_VFIFO_EMPTY_SHFT;
4521*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4522*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_EMPTY)  >> TSP_VFIFO3D_EMPTY_SHFT;
4523*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4524*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_EMPTY)  >> TSP_AFIFO_EMPTY_SHFT;
4525*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4526*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_EMPTY)  >> TSP_AFIFOB_EMPTY_SHFT;
4527*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4528*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_EMPTY)  >> TSP_AFIFOC_EMPTY_SHFT;
4529*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4530*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_EMPTY)  >> TSP_AFIFOD_EMPTY_SHFT;
4531*53ee8cc1Swenshuai.xi         default :
4532*53ee8cc1Swenshuai.xi             return FALSE;
4533*53ee8cc1Swenshuai.xi     }
4534*53ee8cc1Swenshuai.xi }
4535*53ee8cc1Swenshuai.xi 
_HAL_TSP_VQ_TxConfig(MS_U32 vqId)4536*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_TSP_VQ_TxConfig(MS_U32 vqId)
4537*53ee8cc1Swenshuai.xi {
4538*53ee8cc1Swenshuai.xi     // reg_vq_wr_threshold = 0x8
4539*53ee8cc1Swenshuai.xi     // reg_vq_forcefire_cnt_1k= 0xC
4540*53ee8cc1Swenshuai.xi 
4541*53ee8cc1Swenshuai.xi     switch(vqId)
4542*53ee8cc1Swenshuai.xi     {
4543*53ee8cc1Swenshuai.xi         case 0:
4544*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));
4545*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));
4546*53ee8cc1Swenshuai.xi             break;
4547*53ee8cc1Swenshuai.xi         case 1:
4548*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));
4549*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));
4550*53ee8cc1Swenshuai.xi             break;
4551*53ee8cc1Swenshuai.xi         case 2:
4552*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));
4553*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));
4554*53ee8cc1Swenshuai.xi             break;
4555*53ee8cc1Swenshuai.xi         case 3:
4556*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));
4557*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));
4558*53ee8cc1Swenshuai.xi             break;
4559*53ee8cc1Swenshuai.xi         default:
4560*53ee8cc1Swenshuai.xi             return FALSE;
4561*53ee8cc1Swenshuai.xi     }
4562*53ee8cc1Swenshuai.xi     return TRUE;
4563*53ee8cc1Swenshuai.xi }
4564*53ee8cc1Swenshuai.xi 
HAL_TSP_SetVQ(MS_PHYADDR u32BaseAddr,MS_U32 u32BufLen)4565*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetVQ( MS_PHYADDR u32BaseAddr, MS_U32 u32BufLen)
4566*53ee8cc1Swenshuai.xi {
4567*53ee8cc1Swenshuai.xi     MS_U32 vqId = 0;
4568*53ee8cc1Swenshuai.xi     MS_U32 u32VQ_PktNum = 0;
4569*53ee8cc1Swenshuai.xi     MS_U32 u32Addr = 0;
4570*53ee8cc1Swenshuai.xi     MS_U32 u32OneBufSize = 0;
4571*53ee8cc1Swenshuai.xi 
4572*53ee8cc1Swenshuai.xi     // Check MIU select
4573*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel = 0;
4574*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, u32Addr, u32BaseAddr);
4575*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));
4576*53ee8cc1Swenshuai.xi 
4577*53ee8cc1Swenshuai.xi     u32OneBufSize = ((u32BufLen >> MIU_BUS) / VQ_NUM) << MIU_BUS; //miu alignment
4578*53ee8cc1Swenshuai.xi     u32VQ_PktNum = u32OneBufSize / VQ_PACKET_UNIT_LEN;
4579*53ee8cc1Swenshuai.xi 
4580*53ee8cc1Swenshuai.xi     for(vqId = 0; vqId < VQ_NUM; vqId ++)
4581*53ee8cc1Swenshuai.xi     {
4582*53ee8cc1Swenshuai.xi         if(TRUE != _HAL_TSP_VQ_TxConfig(vqId))
4583*53ee8cc1Swenshuai.xi         {
4584*53ee8cc1Swenshuai.xi             return FALSE;
4585*53ee8cc1Swenshuai.xi         }
4586*53ee8cc1Swenshuai.xi 
4587*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
4588*53ee8cc1Swenshuai.xi         if (TRUE != HAL_TSP_VQ_Buffer(vqId, u32Addr, u32VQ_PktNum))
4589*53ee8cc1Swenshuai.xi         {
4590*53ee8cc1Swenshuai.xi             return FALSE;
4591*53ee8cc1Swenshuai.xi         }
4592*53ee8cc1Swenshuai.xi         u32Addr += u32OneBufSize;
4593*53ee8cc1Swenshuai.xi     }
4594*53ee8cc1Swenshuai.xi 
4595*53ee8cc1Swenshuai.xi     HAL_TSP_VQ_Enable(TRUE);
4596*53ee8cc1Swenshuai.xi     return TRUE;
4597*53ee8cc1Swenshuai.xi 
4598*53ee8cc1Swenshuai.xi }
4599*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Buffer(MS_U32 vqId,MS_PHYADDR u32BaseAddr,MS_U32 u32VQ_PktNum)4600*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Buffer(MS_U32 vqId, MS_PHYADDR u32BaseAddr, MS_U32 u32VQ_PktNum)
4601*53ee8cc1Swenshuai.xi {
4602*53ee8cc1Swenshuai.xi     switch(vqId)
4603*53ee8cc1Swenshuai.xi     {
4604*53ee8cc1Swenshuai.xi         case 0:
4605*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ0_BASE, (u32BaseAddr >> MIU_BUS));
4606*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ0_SIZE, u32VQ_PktNum);
4607*53ee8cc1Swenshuai.xi             break;
4608*53ee8cc1Swenshuai.xi         case 1:
4609*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ1_Base, (u32BaseAddr >> MIU_BUS));
4610*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ1_Size,  u32VQ_PktNum);
4611*53ee8cc1Swenshuai.xi             break;
4612*53ee8cc1Swenshuai.xi         case 2:
4613*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ2_Base, (u32BaseAddr >> MIU_BUS));
4614*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ2_Size, u32VQ_PktNum);
4615*53ee8cc1Swenshuai.xi             break;
4616*53ee8cc1Swenshuai.xi         case 3:
4617*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ3_Base, (u32BaseAddr >> MIU_BUS));
4618*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ3_Size, u32VQ_PktNum);
4619*53ee8cc1Swenshuai.xi             break;
4620*53ee8cc1Swenshuai.xi         default:
4621*53ee8cc1Swenshuai.xi             return FALSE;
4622*53ee8cc1Swenshuai.xi     }
4623*53ee8cc1Swenshuai.xi     return TRUE;
4624*53ee8cc1Swenshuai.xi }
4625*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)4626*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)
4627*53ee8cc1Swenshuai.xi {
4628*53ee8cc1Swenshuai.xi     if(bDis == TRUE)
4629*53ee8cc1Swenshuai.xi     {
4630*53ee8cc1Swenshuai.xi         switch(vqId)
4631*53ee8cc1Swenshuai.xi         {
4632*53ee8cc1Swenshuai.xi             case 0:
4633*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
4634*53ee8cc1Swenshuai.xi                 break;
4635*53ee8cc1Swenshuai.xi             case 1:
4636*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
4637*53ee8cc1Swenshuai.xi                 break;
4638*53ee8cc1Swenshuai.xi             case 2:
4639*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
4640*53ee8cc1Swenshuai.xi                 break;
4641*53ee8cc1Swenshuai.xi             case 3:
4642*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX3_BLOCK_DIS);
4643*53ee8cc1Swenshuai.xi                 break;
4644*53ee8cc1Swenshuai.xi             default:
4645*53ee8cc1Swenshuai.xi                 return FALSE;
4646*53ee8cc1Swenshuai.xi         }
4647*53ee8cc1Swenshuai.xi     }
4648*53ee8cc1Swenshuai.xi     else
4649*53ee8cc1Swenshuai.xi     {
4650*53ee8cc1Swenshuai.xi         switch(vqId)
4651*53ee8cc1Swenshuai.xi         {
4652*53ee8cc1Swenshuai.xi             case 0:
4653*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
4654*53ee8cc1Swenshuai.xi                 break;
4655*53ee8cc1Swenshuai.xi             case 1:
4656*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
4657*53ee8cc1Swenshuai.xi                 break;
4658*53ee8cc1Swenshuai.xi             case 2:
4659*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
4660*53ee8cc1Swenshuai.xi                 break;
4661*53ee8cc1Swenshuai.xi             case 3:
4662*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX3_BLOCK_DIS);
4663*53ee8cc1Swenshuai.xi                 break;
4664*53ee8cc1Swenshuai.xi             default:
4665*53ee8cc1Swenshuai.xi                 return FALSE;
4666*53ee8cc1Swenshuai.xi         }
4667*53ee8cc1Swenshuai.xi     }
4668*53ee8cc1Swenshuai.xi 
4669*53ee8cc1Swenshuai.xi     return TRUE;
4670*53ee8cc1Swenshuai.xi }
4671*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Enable(MS_BOOL bEn)4672*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Enable(MS_BOOL bEn)
4673*53ee8cc1Swenshuai.xi {
4674*53ee8cc1Swenshuai.xi     if (bEn)
4675*53ee8cc1Swenshuai.xi     {
4676*53ee8cc1Swenshuai.xi           REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
4677*53ee8cc1Swenshuai.xi     }
4678*53ee8cc1Swenshuai.xi     else
4679*53ee8cc1Swenshuai.xi     {
4680*53ee8cc1Swenshuai.xi           REG16_CLR(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
4681*53ee8cc1Swenshuai.xi     }
4682*53ee8cc1Swenshuai.xi }
HAL_TSP_VQ_Reset(MS_U32 vqId,MS_BOOL bEn)4683*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Reset(MS_U32 vqId, MS_BOOL bEn)
4684*53ee8cc1Swenshuai.xi {
4685*53ee8cc1Swenshuai.xi     if(bEn)
4686*53ee8cc1Swenshuai.xi     {
4687*53ee8cc1Swenshuai.xi         switch(vqId)
4688*53ee8cc1Swenshuai.xi         {
4689*53ee8cc1Swenshuai.xi             case 0:
4690*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
4691*53ee8cc1Swenshuai.xi                 break;
4692*53ee8cc1Swenshuai.xi             case 1:
4693*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
4694*53ee8cc1Swenshuai.xi                 break;
4695*53ee8cc1Swenshuai.xi             case 2:
4696*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
4697*53ee8cc1Swenshuai.xi                 break;
4698*53ee8cc1Swenshuai.xi           case 3:
4699*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_RESET);
4700*53ee8cc1Swenshuai.xi                 break;
4701*53ee8cc1Swenshuai.xi             default:
4702*53ee8cc1Swenshuai.xi                 break;
4703*53ee8cc1Swenshuai.xi         }
4704*53ee8cc1Swenshuai.xi     }
4705*53ee8cc1Swenshuai.xi     else
4706*53ee8cc1Swenshuai.xi     {
4707*53ee8cc1Swenshuai.xi         switch(vqId)
4708*53ee8cc1Swenshuai.xi         {
4709*53ee8cc1Swenshuai.xi             case 0:
4710*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
4711*53ee8cc1Swenshuai.xi                 break;
4712*53ee8cc1Swenshuai.xi             case 1:
4713*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
4714*53ee8cc1Swenshuai.xi                 break;
4715*53ee8cc1Swenshuai.xi             case 2:
4716*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
4717*53ee8cc1Swenshuai.xi                 break;
4718*53ee8cc1Swenshuai.xi             case 3:
4719*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_RESET);
4720*53ee8cc1Swenshuai.xi                 break;
4721*53ee8cc1Swenshuai.xi             default:
4722*53ee8cc1Swenshuai.xi                 break;
4723*53ee8cc1Swenshuai.xi         }
4724*53ee8cc1Swenshuai.xi     }
4725*53ee8cc1Swenshuai.xi }
4726*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId,MS_BOOL bEn)4727*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId, MS_BOOL bEn)
4728*53ee8cc1Swenshuai.xi {
4729*53ee8cc1Swenshuai.xi     if(bEn)
4730*53ee8cc1Swenshuai.xi     {
4731*53ee8cc1Swenshuai.xi         switch(vqId)
4732*53ee8cc1Swenshuai.xi         {
4733*53ee8cc1Swenshuai.xi             case 0:
4734*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
4735*53ee8cc1Swenshuai.xi                 break;
4736*53ee8cc1Swenshuai.xi             case 1:
4737*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
4738*53ee8cc1Swenshuai.xi                 break;
4739*53ee8cc1Swenshuai.xi             case 2:
4740*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
4741*53ee8cc1Swenshuai.xi                 break;
4742*53ee8cc1Swenshuai.xi             case 3:
4743*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_OVF_INT_EN);
4744*53ee8cc1Swenshuai.xi                 break;
4745*53ee8cc1Swenshuai.xi             default:
4746*53ee8cc1Swenshuai.xi                 break;
4747*53ee8cc1Swenshuai.xi         }
4748*53ee8cc1Swenshuai.xi     }
4749*53ee8cc1Swenshuai.xi     else
4750*53ee8cc1Swenshuai.xi     {
4751*53ee8cc1Swenshuai.xi         switch(vqId)
4752*53ee8cc1Swenshuai.xi         {
4753*53ee8cc1Swenshuai.xi             case 0:
4754*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
4755*53ee8cc1Swenshuai.xi                 break;
4756*53ee8cc1Swenshuai.xi             case 1:
4757*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
4758*53ee8cc1Swenshuai.xi                 break;
4759*53ee8cc1Swenshuai.xi             case 2:
4760*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
4761*53ee8cc1Swenshuai.xi                 break;
4762*53ee8cc1Swenshuai.xi             case 3:
4763*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_OVF_INT_EN);
4764*53ee8cc1Swenshuai.xi                 break;
4765*53ee8cc1Swenshuai.xi             default:
4766*53ee8cc1Swenshuai.xi                 break;
4767*53ee8cc1Swenshuai.xi         }
4768*53ee8cc1Swenshuai.xi     }
4769*53ee8cc1Swenshuai.xi }
4770*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId,MS_BOOL bEn)4771*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId, MS_BOOL bEn)
4772*53ee8cc1Swenshuai.xi {
4773*53ee8cc1Swenshuai.xi     if(bEn)
4774*53ee8cc1Swenshuai.xi     {
4775*53ee8cc1Swenshuai.xi         switch(vqId)
4776*53ee8cc1Swenshuai.xi         {
4777*53ee8cc1Swenshuai.xi             case 0:
4778*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
4779*53ee8cc1Swenshuai.xi                 break;
4780*53ee8cc1Swenshuai.xi             case 1:
4781*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
4782*53ee8cc1Swenshuai.xi                 break;
4783*53ee8cc1Swenshuai.xi             case 2:
4784*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
4785*53ee8cc1Swenshuai.xi                 break;
4786*53ee8cc1Swenshuai.xi             case 3:
4787*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_CLR_OVF_INT);
4788*53ee8cc1Swenshuai.xi                 break;
4789*53ee8cc1Swenshuai.xi             default:
4790*53ee8cc1Swenshuai.xi                 break;
4791*53ee8cc1Swenshuai.xi         }
4792*53ee8cc1Swenshuai.xi     }
4793*53ee8cc1Swenshuai.xi     else
4794*53ee8cc1Swenshuai.xi     {
4795*53ee8cc1Swenshuai.xi         switch(vqId)
4796*53ee8cc1Swenshuai.xi         {
4797*53ee8cc1Swenshuai.xi             case 0:
4798*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
4799*53ee8cc1Swenshuai.xi                 break;
4800*53ee8cc1Swenshuai.xi             case 1:
4801*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
4802*53ee8cc1Swenshuai.xi                 break;
4803*53ee8cc1Swenshuai.xi             case 2:
4804*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
4805*53ee8cc1Swenshuai.xi                 break;
4806*53ee8cc1Swenshuai.xi             case 3:
4807*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_CLR_OVF_INT);
4808*53ee8cc1Swenshuai.xi                 break;
4809*53ee8cc1Swenshuai.xi             default:
4810*53ee8cc1Swenshuai.xi                 break;
4811*53ee8cc1Swenshuai.xi         }
4812*53ee8cc1Swenshuai.xi     }
4813*53ee8cc1Swenshuai.xi }
4814*53ee8cc1Swenshuai.xi 
HAL_PVR_Init(MS_U32 u32PVREng,MS_U32 pktDmxId)4815*53ee8cc1Swenshuai.xi void HAL_PVR_Init(MS_U32 u32PVREng, MS_U32 pktDmxId)
4816*53ee8cc1Swenshuai.xi {
4817*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4818*53ee8cc1Swenshuai.xi     {
4819*53ee8cc1Swenshuai.xi         case 0:
4820*53ee8cc1Swenshuai.xi             // PVR 1
4821*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
4822*53ee8cc1Swenshuai.xi             REG16_W(&(_RegCtrl->FIFO_Src), (REG16_R(&(_RegCtrl->FIFO_Src)) & ~TSP_PVR1_SRC_MASK) | (((MS_U16)pktDmxId) << TSP_PVR1_SRC_SHIFT));
4823*53ee8cc1Swenshuai.xi             break;
4824*53ee8cc1Swenshuai.xi         case 1:
4825*53ee8cc1Swenshuai.xi             // PVR 2
4826*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
4827*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));
4828*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));
4829*53ee8cc1Swenshuai.xi             break;
4830*53ee8cc1Swenshuai.xi         case 2:
4831*53ee8cc1Swenshuai.xi             // PVR 3
4832*53ee8cc1Swenshuai.xi             REG16_MSK_W(&(_RegCtrl2->CFG_15), CFG_15_PVR3_SRC, pktDmxId << CFG_15_PVR3_SRC_SHIFT);
4833*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_REG_PINGPONG_EN);
4834*53ee8cc1Swenshuai.xi             break;
4835*53ee8cc1Swenshuai.xi         case 3:
4836*53ee8cc1Swenshuai.xi             // PVR 3
4837*53ee8cc1Swenshuai.xi             REG16_MSK_W(&(_RegCtrl2->CFG_15), CFG_15_PVR4_SRC, pktDmxId << CFG_15_PVR4_SRC_SHIFT);
4838*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_REG_PINGPONG_EN);
4839*53ee8cc1Swenshuai.xi             break;
4840*53ee8cc1Swenshuai.xi         default:
4841*53ee8cc1Swenshuai.xi             break;
4842*53ee8cc1Swenshuai.xi     }
4843*53ee8cc1Swenshuai.xi }
4844*53ee8cc1Swenshuai.xi 
HAL_PVR_Exit(MS_U32 u32PVREng)4845*53ee8cc1Swenshuai.xi void HAL_PVR_Exit(MS_U32 u32PVREng)
4846*53ee8cc1Swenshuai.xi {
4847*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4848*53ee8cc1Swenshuai.xi     {
4849*53ee8cc1Swenshuai.xi         case 0:
4850*53ee8cc1Swenshuai.xi             //reset pvr control registers
4851*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
4852*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR1_SRC_MASK);
4853*53ee8cc1Swenshuai.xi 
4854*53ee8cc1Swenshuai.xi             //reset write address
4855*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4856*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4857*53ee8cc1Swenshuai.xi             break;
4858*53ee8cc1Swenshuai.xi         case 1:
4859*53ee8cc1Swenshuai.xi             //reset pvr control registers
4860*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
4861*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR2_SRC_MASK_L);
4862*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->PCR_Cfg), TSP_PVR2_SRC_MASK_H);
4863*53ee8cc1Swenshuai.xi 
4864*53ee8cc1Swenshuai.xi             //reset write address
4865*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4866*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4867*53ee8cc1Swenshuai.xi             break;
4868*53ee8cc1Swenshuai.xi         case 2:
4869*53ee8cc1Swenshuai.xi             //reset pvr control registers
4870*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_15), CFG_15_PVR3_SRC);
4871*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_REG_PINGPONG_EN);
4872*53ee8cc1Swenshuai.xi 
4873*53ee8cc1Swenshuai.xi             //reset write address
4874*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4875*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4876*53ee8cc1Swenshuai.xi             break;
4877*53ee8cc1Swenshuai.xi         case 3:
4878*53ee8cc1Swenshuai.xi             //reset pvr control registers
4879*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_15), CFG_15_PVR4_SRC);
4880*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_REG_PINGPONG_EN);
4881*53ee8cc1Swenshuai.xi 
4882*53ee8cc1Swenshuai.xi             //reset write address
4883*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4884*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4885*53ee8cc1Swenshuai.xi             break;
4886*53ee8cc1Swenshuai.xi         default:
4887*53ee8cc1Swenshuai.xi             break;
4888*53ee8cc1Swenshuai.xi     }
4889*53ee8cc1Swenshuai.xi 
4890*53ee8cc1Swenshuai.xi     //reset time-stamp
4891*53ee8cc1Swenshuai.xi     HAL_PVR_SetPVRTimeStamp(u32PVREng,0);
4892*53ee8cc1Swenshuai.xi 
4893*53ee8cc1Swenshuai.xi }
4894*53ee8cc1Swenshuai.xi 
HAL_PVR_Start(MS_U32 u32PVREng)4895*53ee8cc1Swenshuai.xi void HAL_PVR_Start(MS_U32 u32PVREng)
4896*53ee8cc1Swenshuai.xi {
4897*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4898*53ee8cc1Swenshuai.xi     {
4899*53ee8cc1Swenshuai.xi         case 0:
4900*53ee8cc1Swenshuai.xi             //reset write address
4901*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4902*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
4903*53ee8cc1Swenshuai.xi 
4904*53ee8cc1Swenshuai.xi             //enable string to miu
4905*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
4906*53ee8cc1Swenshuai.xi             break;
4907*53ee8cc1Swenshuai.xi         case 1:
4908*53ee8cc1Swenshuai.xi             //reset write address
4909*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4910*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
4911*53ee8cc1Swenshuai.xi 
4912*53ee8cc1Swenshuai.xi             //enable string to miu
4913*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
4914*53ee8cc1Swenshuai.xi             break;
4915*53ee8cc1Swenshuai.xi         case 2:
4916*53ee8cc1Swenshuai.xi             //reset write address
4917*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4918*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
4919*53ee8cc1Swenshuai.xi 
4920*53ee8cc1Swenshuai.xi             //enable string to miu
4921*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_EN);
4922*53ee8cc1Swenshuai.xi             break;
4923*53ee8cc1Swenshuai.xi         case 3:
4924*53ee8cc1Swenshuai.xi             //reset write address
4925*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4926*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
4927*53ee8cc1Swenshuai.xi 
4928*53ee8cc1Swenshuai.xi             //enable string to miu
4929*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_EN);
4930*53ee8cc1Swenshuai.xi             break;
4931*53ee8cc1Swenshuai.xi         default:
4932*53ee8cc1Swenshuai.xi             break;
4933*53ee8cc1Swenshuai.xi     }
4934*53ee8cc1Swenshuai.xi }
4935*53ee8cc1Swenshuai.xi 
HAL_PVR_Stop(MS_U32 u32PVREng)4936*53ee8cc1Swenshuai.xi void HAL_PVR_Stop(MS_U32 u32PVREng)
4937*53ee8cc1Swenshuai.xi {
4938*53ee8cc1Swenshuai.xi     switch(u32PVREng)
4939*53ee8cc1Swenshuai.xi     {
4940*53ee8cc1Swenshuai.xi         case 0:
4941*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
4942*53ee8cc1Swenshuai.xi             break;
4943*53ee8cc1Swenshuai.xi         case 1:
4944*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
4945*53ee8cc1Swenshuai.xi             break;
4946*53ee8cc1Swenshuai.xi         case 2:
4947*53ee8cc1Swenshuai.xi             //clear string to miu
4948*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_EN);
4949*53ee8cc1Swenshuai.xi             break;
4950*53ee8cc1Swenshuai.xi         case 3:
4951*53ee8cc1Swenshuai.xi             //clear string to miu
4952*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_EN);
4953*53ee8cc1Swenshuai.xi             break;
4954*53ee8cc1Swenshuai.xi         default:
4955*53ee8cc1Swenshuai.xi             break;
4956*53ee8cc1Swenshuai.xi     }
4957*53ee8cc1Swenshuai.xi }
4958*53ee8cc1Swenshuai.xi 
HAL_PVR_Pause(MS_U32 u32PVREng,MS_BOOL bPause)4959*53ee8cc1Swenshuai.xi void HAL_PVR_Pause(MS_U32 u32PVREng , MS_BOOL bPause)
4960*53ee8cc1Swenshuai.xi {
4961*53ee8cc1Swenshuai.xi     if(bPause)
4962*53ee8cc1Swenshuai.xi     {
4963*53ee8cc1Swenshuai.xi         switch(u32PVREng)
4964*53ee8cc1Swenshuai.xi         {
4965*53ee8cc1Swenshuai.xi             case 0:
4966*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
4967*53ee8cc1Swenshuai.xi                 break;
4968*53ee8cc1Swenshuai.xi             case 1:
4969*53ee8cc1Swenshuai.xi                 REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
4970*53ee8cc1Swenshuai.xi                 break;
4971*53ee8cc1Swenshuai.xi             case 2:
4972*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_PAUSE);
4973*53ee8cc1Swenshuai.xi                 break;
4974*53ee8cc1Swenshuai.xi             case 3:
4975*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_PAUSE);
4976*53ee8cc1Swenshuai.xi                 break;
4977*53ee8cc1Swenshuai.xi             default:
4978*53ee8cc1Swenshuai.xi                 break;
4979*53ee8cc1Swenshuai.xi         }
4980*53ee8cc1Swenshuai.xi     }
4981*53ee8cc1Swenshuai.xi     else
4982*53ee8cc1Swenshuai.xi     {
4983*53ee8cc1Swenshuai.xi         switch(u32PVREng)
4984*53ee8cc1Swenshuai.xi         {
4985*53ee8cc1Swenshuai.xi             case 0:
4986*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
4987*53ee8cc1Swenshuai.xi                 break;
4988*53ee8cc1Swenshuai.xi             case 1:
4989*53ee8cc1Swenshuai.xi                 REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
4990*53ee8cc1Swenshuai.xi                 break;
4991*53ee8cc1Swenshuai.xi             case 2:
4992*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_PAUSE);
4993*53ee8cc1Swenshuai.xi                 break;
4994*53ee8cc1Swenshuai.xi             case 3:
4995*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_PAUSE);
4996*53ee8cc1Swenshuai.xi                 break;
4997*53ee8cc1Swenshuai.xi             default:
4998*53ee8cc1Swenshuai.xi                 break;
4999*53ee8cc1Swenshuai.xi         }
5000*53ee8cc1Swenshuai.xi     }
5001*53ee8cc1Swenshuai.xi }
5002*53ee8cc1Swenshuai.xi 
HAL_PVR_RecPid(MS_U32 u32PVREng,MS_BOOL bSet)5003*53ee8cc1Swenshuai.xi void HAL_PVR_RecPid(MS_U32 u32PVREng , MS_BOOL bSet)
5004*53ee8cc1Swenshuai.xi {
5005*53ee8cc1Swenshuai.xi     if(bSet)
5006*53ee8cc1Swenshuai.xi     {
5007*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5008*53ee8cc1Swenshuai.xi         {
5009*53ee8cc1Swenshuai.xi             case 0:
5010*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
5011*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
5012*53ee8cc1Swenshuai.xi                 break;
5013*53ee8cc1Swenshuai.xi             case 1:
5014*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
5015*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
5016*53ee8cc1Swenshuai.xi                 break;
5017*53ee8cc1Swenshuai.xi             case 2:
5018*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PID_BYPASS3_REC);
5019*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_REC_ALL3);
5020*53ee8cc1Swenshuai.xi                 break;
5021*53ee8cc1Swenshuai.xi             case 3:
5022*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PID_BYPASS4_REC);
5023*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_REC_ALL4);
5024*53ee8cc1Swenshuai.xi                 break;
5025*53ee8cc1Swenshuai.xi             default:
5026*53ee8cc1Swenshuai.xi                 break;
5027*53ee8cc1Swenshuai.xi         }
5028*53ee8cc1Swenshuai.xi     }
5029*53ee8cc1Swenshuai.xi     else
5030*53ee8cc1Swenshuai.xi     {
5031*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5032*53ee8cc1Swenshuai.xi         {
5033*53ee8cc1Swenshuai.xi             case 0:
5034*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
5035*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
5036*53ee8cc1Swenshuai.xi                 break;
5037*53ee8cc1Swenshuai.xi             case 1:
5038*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
5039*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
5040*53ee8cc1Swenshuai.xi                 break;
5041*53ee8cc1Swenshuai.xi             case 2:
5042*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PID_BYPASS3_REC);
5043*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_REC_ALL3);
5044*53ee8cc1Swenshuai.xi                 break;
5045*53ee8cc1Swenshuai.xi             case 3:
5046*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PID_BYPASS4_REC);
5047*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_REC_ALL4);
5048*53ee8cc1Swenshuai.xi                 break;
5049*53ee8cc1Swenshuai.xi             default:
5050*53ee8cc1Swenshuai.xi                 break;
5051*53ee8cc1Swenshuai.xi         }
5052*53ee8cc1Swenshuai.xi     }
5053*53ee8cc1Swenshuai.xi }
5054*53ee8cc1Swenshuai.xi 
HAL_PVR_RecNull(MS_BOOL bSet)5055*53ee8cc1Swenshuai.xi void HAL_PVR_RecNull(MS_BOOL bSet)
5056*53ee8cc1Swenshuai.xi {
5057*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
5058*53ee8cc1Swenshuai.xi     {
5059*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
5060*53ee8cc1Swenshuai.xi     }
5061*53ee8cc1Swenshuai.xi     else
5062*53ee8cc1Swenshuai.xi     {
5063*53ee8cc1Swenshuai.xi         REG16_CLR(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
5064*53ee8cc1Swenshuai.xi     }
5065*53ee8cc1Swenshuai.xi }
5066*53ee8cc1Swenshuai.xi 
HAL_PVR_SetBuf(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32BufSize0,MS_U32 u32StartAddr1,MS_U32 u32BufSize1)5067*53ee8cc1Swenshuai.xi void HAL_PVR_SetBuf(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32BufSize0, MS_U32 u32StartAddr1, MS_U32 u32BufSize1)
5068*53ee8cc1Swenshuai.xi {
5069*53ee8cc1Swenshuai.xi     // Check MIU select
5070*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
5071*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetPvrBuf0, phyMiuOffsetPvrBuf1;
5072*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetPvrBuf0, u32StartAddr0);
5073*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetPvrBuf1, u32StartAddr1);
5074*53ee8cc1Swenshuai.xi 
5075*53ee8cc1Swenshuai.xi     MS_U32 u32EndAddr0 = phyMiuOffsetPvrBuf0 + u32BufSize0;
5076*53ee8cc1Swenshuai.xi     MS_U32 u32EndAddr1 = phyMiuOffsetPvrBuf1 + u32BufSize1;
5077*53ee8cc1Swenshuai.xi     //MS_U32  u32Temp;
5078*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5079*53ee8cc1Swenshuai.xi     {
5080*53ee8cc1Swenshuai.xi         case 0:
5081*53ee8cc1Swenshuai.xi             // Select MIU
5082*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));
5083*53ee8cc1Swenshuai.xi 
5084*53ee8cc1Swenshuai.xi             //head1
5085*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsRec_Head, (phyMiuOffsetPvrBuf0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5086*53ee8cc1Swenshuai.xi             //end1
5087*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5088*53ee8cc1Swenshuai.xi             //mid1
5089*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (phyMiuOffsetPvrBuf0 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5090*53ee8cc1Swenshuai.xi 
5091*53ee8cc1Swenshuai.xi             //head2
5092*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2pvr1, (phyMiuOffsetPvrBuf1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
5093*53ee8cc1Swenshuai.xi             //end2
5094*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
5095*53ee8cc1Swenshuai.xi             //mid2
5096*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (phyMiuOffsetPvrBuf1>>MIU_BUS) & TSP_HW_PVR1_BUF_MID2_MASK);
5097*53ee8cc1Swenshuai.xi             break;
5098*53ee8cc1Swenshuai.xi         case 1:
5099*53ee8cc1Swenshuai.xi             // Select MIU
5100*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));
5101*53ee8cc1Swenshuai.xi 
5102*53ee8cc1Swenshuai.xi             //head1
5103*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (phyMiuOffsetPvrBuf0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5104*53ee8cc1Swenshuai.xi             //end1
5105*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5106*53ee8cc1Swenshuai.xi             //mid1
5107*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (phyMiuOffsetPvrBuf0 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5108*53ee8cc1Swenshuai.xi 
5109*53ee8cc1Swenshuai.xi             //head2
5110*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (phyMiuOffsetPvrBuf1 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5111*53ee8cc1Swenshuai.xi             //end2
5112*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5113*53ee8cc1Swenshuai.xi             //mid2
5114*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (phyMiuOffsetPvrBuf1 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5115*53ee8cc1Swenshuai.xi             break;
5116*53ee8cc1Swenshuai.xi         case 2:
5117*53ee8cc1Swenshuai.xi             // Select MIU
5118*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));
5119*53ee8cc1Swenshuai.xi 
5120*53ee8cc1Swenshuai.xi             //head1
5121*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_17_18), (phyMiuOffsetPvrBuf0 >> MIU_BUS) & CFG_17_18_PVR3_STR2MI_HEAD);
5122*53ee8cc1Swenshuai.xi             //end1
5123*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1B_1C), (u32EndAddr0 >> MIU_BUS) & CFG_1B_1C_PVR3_STR2MI_TAIL);
5124*53ee8cc1Swenshuai.xi             //mid1
5125*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_19_1A), (phyMiuOffsetPvrBuf0 >> MIU_BUS) & CFG_19_1A_PVR3_STR2MI_MID);
5126*53ee8cc1Swenshuai.xi 
5127*53ee8cc1Swenshuai.xi             //head2
5128*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1D_1E), (phyMiuOffsetPvrBuf1 >> MIU_BUS) & CFG_1D_1E_PVR3_STR2MI_HEAD2);
5129*53ee8cc1Swenshuai.xi             //end2
5130*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_21_22), (u32EndAddr1 >> MIU_BUS) & CFG_21_22_PVR3_STR2MI_TAIL2);
5131*53ee8cc1Swenshuai.xi             //mid2
5132*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1F_20), (phyMiuOffsetPvrBuf1 >> MIU_BUS) & CFG_1F_20_PVR3_STR2MI_MID2);
5133*53ee8cc1Swenshuai.xi             break;
5134*53ee8cc1Swenshuai.xi         case 3:
5135*53ee8cc1Swenshuai.xi             // Select MIU
5136*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));
5137*53ee8cc1Swenshuai.xi 
5138*53ee8cc1Swenshuai.xi             //head1
5139*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_24_25), (phyMiuOffsetPvrBuf0>>MIU_BUS) & CFG_24_25_PVR4_STR2MI_HEAD);
5140*53ee8cc1Swenshuai.xi             //end1
5141*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_28_29), (u32EndAddr0>>MIU_BUS) & CFG_28_29_PVR4_STR2MI_TAIL);
5142*53ee8cc1Swenshuai.xi             //mid1
5143*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_26_27), (phyMiuOffsetPvrBuf0>>MIU_BUS) & CFG_26_27_PVR4_STR2MI_MID);
5144*53ee8cc1Swenshuai.xi 
5145*53ee8cc1Swenshuai.xi             //head2
5146*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2A_2B), (phyMiuOffsetPvrBuf1>>MIU_BUS) & CFG_2A_2B_PVR4_STR2MI_HEAD2);
5147*53ee8cc1Swenshuai.xi             //end2
5148*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2E_2F), (u32EndAddr1>>MIU_BUS) & CFG_2E_2F_PVR4_STR2MI_TAIL2);
5149*53ee8cc1Swenshuai.xi             //mid2
5150*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2C_2D), (phyMiuOffsetPvrBuf1>>MIU_BUS) & CFG_2C_2D_PVR4_STR2MI_MID2);
5151*53ee8cc1Swenshuai.xi             break;
5152*53ee8cc1Swenshuai.xi 
5153*53ee8cc1Swenshuai.xi         default:
5154*53ee8cc1Swenshuai.xi             break;
5155*53ee8cc1Swenshuai.xi     }
5156*53ee8cc1Swenshuai.xi }
5157*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32StartAddr1)5158*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32StartAddr1)
5159*53ee8cc1Swenshuai.xi {
5160*53ee8cc1Swenshuai.xi     //MS_U32  u32Temp;
5161*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5162*53ee8cc1Swenshuai.xi     {
5163*53ee8cc1Swenshuai.xi         case 0:
5164*53ee8cc1Swenshuai.xi             //head1
5165*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsRec_Head, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5166*53ee8cc1Swenshuai.xi 
5167*53ee8cc1Swenshuai.xi             //head2
5168*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2pvr1, (u32StartAddr1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
5169*53ee8cc1Swenshuai.xi             break;
5170*53ee8cc1Swenshuai.xi         case 1:
5171*53ee8cc1Swenshuai.xi             //head1
5172*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5173*53ee8cc1Swenshuai.xi 
5174*53ee8cc1Swenshuai.xi             //head2
5175*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (u32StartAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5176*53ee8cc1Swenshuai.xi 
5177*53ee8cc1Swenshuai.xi             break;
5178*53ee8cc1Swenshuai.xi         case 2:
5179*53ee8cc1Swenshuai.xi             //head1
5180*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_17_18), (u32StartAddr0>>MIU_BUS) & CFG_17_18_PVR3_STR2MI_HEAD);
5181*53ee8cc1Swenshuai.xi 
5182*53ee8cc1Swenshuai.xi             //head2
5183*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1D_1E), (u32StartAddr1>>MIU_BUS) & CFG_1D_1E_PVR3_STR2MI_HEAD2);
5184*53ee8cc1Swenshuai.xi             break;
5185*53ee8cc1Swenshuai.xi         case 3:
5186*53ee8cc1Swenshuai.xi             //head1
5187*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_24_25), (u32StartAddr0>>MIU_BUS) & CFG_24_25_PVR4_STR2MI_HEAD);
5188*53ee8cc1Swenshuai.xi 
5189*53ee8cc1Swenshuai.xi             //head2
5190*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2A_2B), (u32StartAddr1>>MIU_BUS) & CFG_2A_2B_PVR4_STR2MI_HEAD2);
5191*53ee8cc1Swenshuai.xi             break;
5192*53ee8cc1Swenshuai.xi         default:
5193*53ee8cc1Swenshuai.xi             break;
5194*53ee8cc1Swenshuai.xi     }
5195*53ee8cc1Swenshuai.xi }
5196*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng,MS_U32 u32MidAddr0,MS_U32 u32MidAddr1)5197*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng , MS_U32 u32MidAddr0, MS_U32 u32MidAddr1)
5198*53ee8cc1Swenshuai.xi {
5199*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5200*53ee8cc1Swenshuai.xi     {
5201*53ee8cc1Swenshuai.xi         case 0:
5202*53ee8cc1Swenshuai.xi             //mid1
5203*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
5204*53ee8cc1Swenshuai.xi 
5205*53ee8cc1Swenshuai.xi             //mid2
5206*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (u32MidAddr1>>4) & TSP_HW_PVR1_BUF_MID2_MASK);
5207*53ee8cc1Swenshuai.xi             break;
5208*53ee8cc1Swenshuai.xi         case 1:
5209*53ee8cc1Swenshuai.xi             //mid1
5210*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
5211*53ee8cc1Swenshuai.xi 
5212*53ee8cc1Swenshuai.xi             //mid2
5213*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (u32MidAddr1>>4) & TSP_STR2MI2_ADDR_MASK);
5214*53ee8cc1Swenshuai.xi             break;
5215*53ee8cc1Swenshuai.xi         case 2:
5216*53ee8cc1Swenshuai.xi             //mid1
5217*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_19_1A), (u32MidAddr0>>4) & CFG_19_1A_PVR3_STR2MI_MID);
5218*53ee8cc1Swenshuai.xi 
5219*53ee8cc1Swenshuai.xi             //mid2
5220*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1F_20), (u32MidAddr1>>4) & CFG_1F_20_PVR3_STR2MI_MID2);
5221*53ee8cc1Swenshuai.xi             break;
5222*53ee8cc1Swenshuai.xi         case 3:
5223*53ee8cc1Swenshuai.xi             //mid1
5224*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_26_27), (u32MidAddr0>>4) & CFG_26_27_PVR4_STR2MI_MID);
5225*53ee8cc1Swenshuai.xi 
5226*53ee8cc1Swenshuai.xi             //mid2
5227*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2C_2D), (u32MidAddr1>>4) & CFG_2C_2D_PVR4_STR2MI_MID2);
5228*53ee8cc1Swenshuai.xi             break;
5229*53ee8cc1Swenshuai.xi         default:
5230*53ee8cc1Swenshuai.xi             break;
5231*53ee8cc1Swenshuai.xi     }
5232*53ee8cc1Swenshuai.xi }
5233*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng,MS_U32 u32EndAddr0,MS_U32 u32EndAddr1)5234*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng , MS_U32 u32EndAddr0, MS_U32 u32EndAddr1)
5235*53ee8cc1Swenshuai.xi {
5236*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5237*53ee8cc1Swenshuai.xi     {
5238*53ee8cc1Swenshuai.xi         case 0:
5239*53ee8cc1Swenshuai.xi             //end1
5240*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5241*53ee8cc1Swenshuai.xi 
5242*53ee8cc1Swenshuai.xi             //end2
5243*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
5244*53ee8cc1Swenshuai.xi             break;
5245*53ee8cc1Swenshuai.xi         case 1:
5246*53ee8cc1Swenshuai.xi             //end1
5247*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5248*53ee8cc1Swenshuai.xi 
5249*53ee8cc1Swenshuai.xi             //end2
5250*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5251*53ee8cc1Swenshuai.xi             break;
5252*53ee8cc1Swenshuai.xi         case 2:
5253*53ee8cc1Swenshuai.xi             //end1
5254*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1B_1C), (u32EndAddr0>>MIU_BUS) & CFG_1B_1C_PVR3_STR2MI_TAIL);
5255*53ee8cc1Swenshuai.xi 
5256*53ee8cc1Swenshuai.xi             //end2
5257*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_21_22), (u32EndAddr1>>MIU_BUS) & CFG_21_22_PVR3_STR2MI_TAIL2);
5258*53ee8cc1Swenshuai.xi             break;
5259*53ee8cc1Swenshuai.xi         case 3:
5260*53ee8cc1Swenshuai.xi             //end1
5261*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_28_29), (u32EndAddr0>>MIU_BUS) & CFG_28_29_PVR4_STR2MI_TAIL);
5262*53ee8cc1Swenshuai.xi 
5263*53ee8cc1Swenshuai.xi             //end2
5264*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2E_2F), (u32EndAddr1>>MIU_BUS) & CFG_2E_2F_PVR4_STR2MI_TAIL2);
5265*53ee8cc1Swenshuai.xi             break;
5266*53ee8cc1Swenshuai.xi         default:
5267*53ee8cc1Swenshuai.xi             break;
5268*53ee8cc1Swenshuai.xi     }
5269*53ee8cc1Swenshuai.xi }
5270*53ee8cc1Swenshuai.xi 
HAL_PVR_GetWritePtr(MS_U32 u32PVREng)5271*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetWritePtr(MS_U32 u32PVREng)
5272*53ee8cc1Swenshuai.xi {
5273*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5274*53ee8cc1Swenshuai.xi     {
5275*53ee8cc1Swenshuai.xi         case 0:
5276*53ee8cc1Swenshuai.xi             return (REG32_R(&_RegCtrl->TsRec_Mid_PVR1_WPTR) << MIU_BUS);
5277*53ee8cc1Swenshuai.xi             break;
5278*53ee8cc1Swenshuai.xi         case 1:
5279*53ee8cc1Swenshuai.xi             return (REG32_R(&_RegCtrl->Str2mi_mid1_wptr_pvr2) << MIU_BUS);
5280*53ee8cc1Swenshuai.xi             break;
5281*53ee8cc1Swenshuai.xi         case 2:
5282*53ee8cc1Swenshuai.xi             return (REG32_R(&(_RegCtrl2->CFG_66_67)) << MIU_BUS);
5283*53ee8cc1Swenshuai.xi             break;
5284*53ee8cc1Swenshuai.xi         case 3:
5285*53ee8cc1Swenshuai.xi             return (REG32_R(&(_RegCtrl2->CFG_68_69)) << MIU_BUS);
5286*53ee8cc1Swenshuai.xi             break;
5287*53ee8cc1Swenshuai.xi         default:
5288*53ee8cc1Swenshuai.xi             break;
5289*53ee8cc1Swenshuai.xi     }
5290*53ee8cc1Swenshuai.xi     return 0;
5291*53ee8cc1Swenshuai.xi }
5292*53ee8cc1Swenshuai.xi 
5293*53ee8cc1Swenshuai.xi 
HAL_PVR_GetEngSrc(MS_U32 u32EngDst,TSP_SRC_SEQ * eSrc)5294*53ee8cc1Swenshuai.xi void HAL_PVR_GetEngSrc(MS_U32 u32EngDst, TSP_SRC_SEQ *eSrc)
5295*53ee8cc1Swenshuai.xi {
5296*53ee8cc1Swenshuai.xi     MS_U16 u16Value = 0;
5297*53ee8cc1Swenshuai.xi 
5298*53ee8cc1Swenshuai.xi     switch(u32EngDst)
5299*53ee8cc1Swenshuai.xi     {
5300*53ee8cc1Swenshuai.xi         case 0:
5301*53ee8cc1Swenshuai.xi             // PVR 1
5302*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR1_SRC_MASK) >> TSP_PVR1_SRC_SHIFT);
5303*53ee8cc1Swenshuai.xi             break;
5304*53ee8cc1Swenshuai.xi         case 1:
5305*53ee8cc1Swenshuai.xi             // PVR 2
5306*53ee8cc1Swenshuai.xi             u16Value = (REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR2_SRC_MASK_L) >> TSP_PVR2_SRC_SHIFT_L;
5307*53ee8cc1Swenshuai.xi             u16Value |= ((REG16_R(&(_RegCtrl->PCR_Cfg)) & TSP_PVR2_SRC_MASK_H) << 1);
5308*53ee8cc1Swenshuai.xi             *eSrc = (TSP_SRC_SEQ)u16Value;
5309*53ee8cc1Swenshuai.xi             break;
5310*53ee8cc1Swenshuai.xi         case 2:
5311*53ee8cc1Swenshuai.xi             // PVR 3
5312*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl2->CFG_15 )) & CFG_15_PVR3_SRC)   >> CFG_15_PVR3_SRC_SHIFT);
5313*53ee8cc1Swenshuai.xi             break;
5314*53ee8cc1Swenshuai.xi         case 3:
5315*53ee8cc1Swenshuai.xi             // PVR 4
5316*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl2->CFG_15 )) & CFG_15_PVR4_SRC)   >> CFG_15_PVR4_SRC_SHIFT);
5317*53ee8cc1Swenshuai.xi             break;
5318*53ee8cc1Swenshuai.xi         default:
5319*53ee8cc1Swenshuai.xi             break;
5320*53ee8cc1Swenshuai.xi     }
5321*53ee8cc1Swenshuai.xi }
5322*53ee8cc1Swenshuai.xi 
5323*53ee8cc1Swenshuai.xi 
5324*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)5325*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)
5326*53ee8cc1Swenshuai.xi {
5327*53ee8cc1Swenshuai.xi     switch (u32FileEng)
5328*53ee8cc1Swenshuai.xi     {
5329*53ee8cc1Swenshuai.xi         case 0: //File in Eng 0
5330*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF1;
5331*53ee8cc1Swenshuai.xi         case 1: //File in Eng 1
5332*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF3;
5333*53ee8cc1Swenshuai.xi         case 2: //File in Eng 2
5334*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF0;
5335*53ee8cc1Swenshuai.xi         case 3: //File in Eng 3
5336*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF2;
5337*53ee8cc1Swenshuai.xi         default:
5338*53ee8cc1Swenshuai.xi             return E_FILEENG_INVALID;
5339*53ee8cc1Swenshuai.xi     }
5340*53ee8cc1Swenshuai.xi }
5341*53ee8cc1Swenshuai.xi 
5342*53ee8cc1Swenshuai.xi // @NOTE for backward competible when calling flowset pvr
5343*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)5344*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)
5345*53ee8cc1Swenshuai.xi {
5346*53ee8cc1Swenshuai.xi     switch(u32Eng)
5347*53ee8cc1Swenshuai.xi     {
5348*53ee8cc1Swenshuai.xi         case 0:
5349*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
5350*53ee8cc1Swenshuai.xi         case 1:
5351*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
5352*53ee8cc1Swenshuai.xi         case 2:
5353*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
5354*53ee8cc1Swenshuai.xi         case 3:
5355*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
5356*53ee8cc1Swenshuai.xi         default:
5357*53ee8cc1Swenshuai.xi             return E_TSP_SRC_INVALID;
5358*53ee8cc1Swenshuai.xi     }
5359*53ee8cc1Swenshuai.xi }
5360*53ee8cc1Swenshuai.xi 
5361*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF,MS_BOOL bFileIn)5362*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF, MS_BOOL bFileIn)
5363*53ee8cc1Swenshuai.xi {
5364*53ee8cc1Swenshuai.xi     MS_U32  u32PhyTSIF = 0;
5365*53ee8cc1Swenshuai.xi     switch (eTSIF)
5366*53ee8cc1Swenshuai.xi     {
5367*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_0:
5368*53ee8cc1Swenshuai.xi             if(bFileIn)
5369*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF1; // @NOTE tsif1 is used for playback0 file-in
5370*53ee8cc1Swenshuai.xi             else
5371*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF0;
5372*53ee8cc1Swenshuai.xi             break;
5373*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_1:
5374*53ee8cc1Swenshuai.xi             if(bFileIn)
5375*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF3; // @NOTE tsif3 is used for playback0 file-in
5376*53ee8cc1Swenshuai.xi             else
5377*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF2;
5378*53ee8cc1Swenshuai.xi             break;
5379*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_2:
5380*53ee8cc1Swenshuai.xi             if(bFileIn)
5381*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF0;
5382*53ee8cc1Swenshuai.xi             else
5383*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF3;
5384*53ee8cc1Swenshuai.xi             break;
5385*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_3:
5386*53ee8cc1Swenshuai.xi             if(bFileIn)
5387*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF2;
5388*53ee8cc1Swenshuai.xi             else
5389*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF1;
5390*53ee8cc1Swenshuai.xi             break;
5391*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR0:
5392*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF2;
5393*53ee8cc1Swenshuai.xi             break;
5394*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR1:
5395*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF3;
5396*53ee8cc1Swenshuai.xi             break;
5397*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR2:
5398*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF2;
5399*53ee8cc1Swenshuai.xi             break;
5400*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR3:
5401*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF3;
5402*53ee8cc1Swenshuai.xi             break;
5403*53ee8cc1Swenshuai.xi        default:
5404*53ee8cc1Swenshuai.xi             printf("[PVR ERROR][%s][%d] mapping TSIF error\n",__FUNCTION__,__LINE__);
5405*53ee8cc1Swenshuai.xi             break;
5406*53ee8cc1Swenshuai.xi     }
5407*53ee8cc1Swenshuai.xi 
5408*53ee8cc1Swenshuai.xi     return u32PhyTSIF;
5409*53ee8cc1Swenshuai.xi }
5410*53ee8cc1Swenshuai.xi 
5411*53ee8cc1Swenshuai.xi 
5412*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)5413*53ee8cc1Swenshuai.xi TSP_PIDFLT_SRC HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)
5414*53ee8cc1Swenshuai.xi {
5415*53ee8cc1Swenshuai.xi     // @NOTE we map hw pkt dmx setting to api layer flow at this function
5416*53ee8cc1Swenshuai.xi 
5417*53ee8cc1Swenshuai.xi     TSP_PIDFLT_SRC ePidFltSrc = E_TSP_PIDFLT_INVALID;
5418*53ee8cc1Swenshuai.xi 
5419*53ee8cc1Swenshuai.xi     switch (eSrc)
5420*53ee8cc1Swenshuai.xi     {
5421*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
5422*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_LIVE0;
5423*53ee8cc1Swenshuai.xi             break;
5424*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
5425*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_FILE0;
5426*53ee8cc1Swenshuai.xi             break;
5427*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
5428*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_LIVE1;
5429*53ee8cc1Swenshuai.xi             break;
5430*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
5431*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_FILE1;
5432*53ee8cc1Swenshuai.xi             break;
5433*53ee8cc1Swenshuai.xi         default:
5434*53ee8cc1Swenshuai.xi             // @TODO add assert
5435*53ee8cc1Swenshuai.xi             printf ("[TSP_ERR][%s][%d] Wrong Engine Source!!\n", __FUNCTION__,__LINE__);
5436*53ee8cc1Swenshuai.xi             break;
5437*53ee8cc1Swenshuai.xi     }
5438*53ee8cc1Swenshuai.xi 
5439*53ee8cc1Swenshuai.xi     return ePidFltSrc;
5440*53ee8cc1Swenshuai.xi }
5441*53ee8cc1Swenshuai.xi 
HAL_TSP_GetDefaultFileinEng(void)5442*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_GetDefaultFileinEng(void)
5443*53ee8cc1Swenshuai.xi {
5444*53ee8cc1Swenshuai.xi     return E_FILEENG_TSIF1;
5445*53ee8cc1Swenshuai.xi }
5446*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType,MS_U32 u32Eng)5447*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType, MS_U32 u32Eng)
5448*53ee8cc1Swenshuai.xi {
5449*53ee8cc1Swenshuai.xi     if(eDstType == E_TSP_PIDFLT_DST_VIDEO)
5450*53ee8cc1Swenshuai.xi     {
5451*53ee8cc1Swenshuai.xi         switch(u32Eng)
5452*53ee8cc1Swenshuai.xi         {
5453*53ee8cc1Swenshuai.xi             case 0:
5454*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO;
5455*53ee8cc1Swenshuai.xi             case 1:
5456*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO3D;
5457*53ee8cc1Swenshuai.xi             default:
5458*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping Vfifo eng error\n", __FUNCTION__, __LINE__);
5459*53ee8cc1Swenshuai.xi                 return 0;
5460*53ee8cc1Swenshuai.xi         }
5461*53ee8cc1Swenshuai.xi     }
5462*53ee8cc1Swenshuai.xi     else if(eDstType == E_TSP_PIDFLT_DST_AUDIO)
5463*53ee8cc1Swenshuai.xi     {
5464*53ee8cc1Swenshuai.xi         switch(u32Eng)
5465*53ee8cc1Swenshuai.xi         {
5466*53ee8cc1Swenshuai.xi             case 0:
5467*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO;
5468*53ee8cc1Swenshuai.xi             case 1:
5469*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO2;
5470*53ee8cc1Swenshuai.xi             case 2:
5471*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO3;
5472*53ee8cc1Swenshuai.xi             case 3:
5473*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO4;
5474*53ee8cc1Swenshuai.xi             default:
5475*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping Afifo eng error\n", __FUNCTION__, __LINE__);
5476*53ee8cc1Swenshuai.xi                 return 0;
5477*53ee8cc1Swenshuai.xi         }
5478*53ee8cc1Swenshuai.xi     }
5479*53ee8cc1Swenshuai.xi     else if(eDstType == E_TSP_PIDFLT_DST_PVR)
5480*53ee8cc1Swenshuai.xi     {
5481*53ee8cc1Swenshuai.xi         switch(u32Eng)
5482*53ee8cc1Swenshuai.xi         {
5483*53ee8cc1Swenshuai.xi             case 0:
5484*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR1;
5485*53ee8cc1Swenshuai.xi             case 1:
5486*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR2;
5487*53ee8cc1Swenshuai.xi             case 2:
5488*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR3;
5489*53ee8cc1Swenshuai.xi             case 3:
5490*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR4;
5491*53ee8cc1Swenshuai.xi             default:
5492*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping PVR eng error\n",__FUNCTION__,__LINE__);
5493*53ee8cc1Swenshuai.xi                 return 0;
5494*53ee8cc1Swenshuai.xi         }
5495*53ee8cc1Swenshuai.xi     }
5496*53ee8cc1Swenshuai.xi     else
5497*53ee8cc1Swenshuai.xi     {
5498*53ee8cc1Swenshuai.xi         printf("[TSP ERROR][%s][%d] pid filter destination type error\n", __FUNCTION__, __LINE__);
5499*53ee8cc1Swenshuai.xi         return 0;
5500*53ee8cc1Swenshuai.xi     }
5501*53ee8cc1Swenshuai.xi }
5502*53ee8cc1Swenshuai.xi 
HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)5503*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)
5504*53ee8cc1Swenshuai.xi {
5505*53ee8cc1Swenshuai.xi     MS_U32  u32Fq = 0;
5506*53ee8cc1Swenshuai.xi 
5507*53ee8cc1Swenshuai.xi     switch (u32Tsif)
5508*53ee8cc1Swenshuai.xi     {
5509*53ee8cc1Swenshuai.xi         case 0:
5510*53ee8cc1Swenshuai.xi             u32Fq = 0;
5511*53ee8cc1Swenshuai.xi             break;
5512*53ee8cc1Swenshuai.xi         case 1:
5513*53ee8cc1Swenshuai.xi             u32Fq = 2;
5514*53ee8cc1Swenshuai.xi             break;
5515*53ee8cc1Swenshuai.xi         case 2:
5516*53ee8cc1Swenshuai.xi             u32Fq = 3;
5517*53ee8cc1Swenshuai.xi             break;
5518*53ee8cc1Swenshuai.xi         case 3:
5519*53ee8cc1Swenshuai.xi             u32Fq = 1;
5520*53ee8cc1Swenshuai.xi             break;
5521*53ee8cc1Swenshuai.xi        default:
5522*53ee8cc1Swenshuai.xi             printf("[PVR ERROR][%s][%d] mapping TSIF:%u error\n",__FUNCTION__,__LINE__,(unsigned int)u32Tsif);
5523*53ee8cc1Swenshuai.xi             break;
5524*53ee8cc1Swenshuai.xi     }
5525*53ee8cc1Swenshuai.xi 
5526*53ee8cc1Swenshuai.xi     return u32Fq;
5527*53ee8cc1Swenshuai.xi }
5528*53ee8cc1Swenshuai.xi 
HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)5529*53ee8cc1Swenshuai.xi TSP_TS_PAD HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)
5530*53ee8cc1Swenshuai.xi {
5531*53ee8cc1Swenshuai.xi     switch(u8Pad3WireId)
5532*53ee8cc1Swenshuai.xi     {
5533*53ee8cc1Swenshuai.xi         case 3:
5534*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT3;
5535*53ee8cc1Swenshuai.xi         case 4:
5536*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT4;
5537*53ee8cc1Swenshuai.xi         case 5:
5538*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT5;
5539*53ee8cc1Swenshuai.xi         case 6:
5540*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT6;
5541*53ee8cc1Swenshuai.xi         default:
5542*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));
5543*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_INVALID;
5544*53ee8cc1Swenshuai.xi     }
5545*53ee8cc1Swenshuai.xi }
5546*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng,MS_BOOL bSet)5547*53ee8cc1Swenshuai.xi void HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng , MS_BOOL bSet)
5548*53ee8cc1Swenshuai.xi {
5549*53ee8cc1Swenshuai.xi     if(bSet)
5550*53ee8cc1Swenshuai.xi     {
5551*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5552*53ee8cc1Swenshuai.xi         {
5553*53ee8cc1Swenshuai.xi             case 0:
5554*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160C, TSP_RECORD192_EN);
5555*53ee8cc1Swenshuai.xi                 break;
5556*53ee8cc1Swenshuai.xi             case 1:
5557*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
5558*53ee8cc1Swenshuai.xi                 break;
5559*53ee8cc1Swenshuai.xi             case 2:
5560*53ee8cc1Swenshuai.xi                 REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_PKT192_EN);
5561*53ee8cc1Swenshuai.xi                 break;
5562*53ee8cc1Swenshuai.xi             case 3:
5563*53ee8cc1Swenshuai.xi                 REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_PKT192_EN);
5564*53ee8cc1Swenshuai.xi                 break;
5565*53ee8cc1Swenshuai.xi             default:
5566*53ee8cc1Swenshuai.xi                 break;
5567*53ee8cc1Swenshuai.xi         }
5568*53ee8cc1Swenshuai.xi     }
5569*53ee8cc1Swenshuai.xi     else
5570*53ee8cc1Swenshuai.xi     {
5571*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5572*53ee8cc1Swenshuai.xi         {
5573*53ee8cc1Swenshuai.xi             case 0:
5574*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160C, TSP_RECORD192_EN);
5575*53ee8cc1Swenshuai.xi                 break;
5576*53ee8cc1Swenshuai.xi             case 1:
5577*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
5578*53ee8cc1Swenshuai.xi                 break;
5579*53ee8cc1Swenshuai.xi             case 2:
5580*53ee8cc1Swenshuai.xi                 REG16_CLR((&_RegCtrl2->CFG_16), CFG_16_PVR3_PKT192_EN);
5581*53ee8cc1Swenshuai.xi                 break;
5582*53ee8cc1Swenshuai.xi             case 3:
5583*53ee8cc1Swenshuai.xi                 REG16_CLR((&_RegCtrl2->CFG_23), CFG_23_PVR4_PKT192_EN);
5584*53ee8cc1Swenshuai.xi                 break;
5585*53ee8cc1Swenshuai.xi             default:
5586*53ee8cc1Swenshuai.xi                 break;
5587*53ee8cc1Swenshuai.xi         }
5588*53ee8cc1Swenshuai.xi     }
5589*53ee8cc1Swenshuai.xi }
5590*53ee8cc1Swenshuai.xi 
HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)5591*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)
5592*53ee8cc1Swenshuai.xi {
5593*53ee8cc1Swenshuai.xi     MS_U32 u32lpcr = 0;
5594*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5595*53ee8cc1Swenshuai.xi     {
5596*53ee8cc1Swenshuai.xi         case 0:
5597*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
5598*53ee8cc1Swenshuai.xi 
5599*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R(&_RegCtrl->PVR1_LPcr1);
5600*53ee8cc1Swenshuai.xi 
5601*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
5602*53ee8cc1Swenshuai.xi 
5603*53ee8cc1Swenshuai.xi             return u32lpcr;
5604*53ee8cc1Swenshuai.xi         case 1:
5605*53ee8cc1Swenshuai.xi             REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
5606*53ee8cc1Swenshuai.xi 
5607*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R(&_RegCtrl->PVR2_LPCR1);
5608*53ee8cc1Swenshuai.xi 
5609*53ee8cc1Swenshuai.xi             REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
5610*53ee8cc1Swenshuai.xi             return u32lpcr;
5611*53ee8cc1Swenshuai.xi         case 2:
5612*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
5613*53ee8cc1Swenshuai.xi 
5614*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R((&_RegCtrl2->CFG_62_63));
5615*53ee8cc1Swenshuai.xi 
5616*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
5617*53ee8cc1Swenshuai.xi             return u32lpcr;
5618*53ee8cc1Swenshuai.xi         case 3:
5619*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
5620*53ee8cc1Swenshuai.xi 
5621*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R((&_RegCtrl2->CFG_64_65));
5622*53ee8cc1Swenshuai.xi 
5623*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
5624*53ee8cc1Swenshuai.xi             return u32lpcr;
5625*53ee8cc1Swenshuai.xi         default:
5626*53ee8cc1Swenshuai.xi             break;
5627*53ee8cc1Swenshuai.xi     }
5628*53ee8cc1Swenshuai.xi     return 0;
5629*53ee8cc1Swenshuai.xi }
5630*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng,MS_U32 u32Stamp)5631*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng , MS_U32 u32Stamp)
5632*53ee8cc1Swenshuai.xi {
5633*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5634*53ee8cc1Swenshuai.xi     {
5635*53ee8cc1Swenshuai.xi         case 0:
5636*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
5637*53ee8cc1Swenshuai.xi 
5638*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PVR1_LPcr1, u32Stamp);
5639*53ee8cc1Swenshuai.xi 
5640*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
5641*53ee8cc1Swenshuai.xi             break;
5642*53ee8cc1Swenshuai.xi         case 1:
5643*53ee8cc1Swenshuai.xi             REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
5644*53ee8cc1Swenshuai.xi 
5645*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PVR2_LPCR1, u32Stamp);
5646*53ee8cc1Swenshuai.xi 
5647*53ee8cc1Swenshuai.xi             REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
5648*53ee8cc1Swenshuai.xi             break;
5649*53ee8cc1Swenshuai.xi         case 2:
5650*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_LPCR1_WLD);
5651*53ee8cc1Swenshuai.xi 
5652*53ee8cc1Swenshuai.xi             REG32_W((&_RegCtrl2->CFG_62_63), u32Stamp);
5653*53ee8cc1Swenshuai.xi 
5654*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_LPCR1_WLD);
5655*53ee8cc1Swenshuai.xi             break;
5656*53ee8cc1Swenshuai.xi         case 3:
5657*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_LPCR1_WLD);
5658*53ee8cc1Swenshuai.xi 
5659*53ee8cc1Swenshuai.xi             REG32_W((&_RegCtrl2->CFG_64_65), u32Stamp);
5660*53ee8cc1Swenshuai.xi 
5661*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_LPCR1_WLD);
5662*53ee8cc1Swenshuai.xi             break;
5663*53ee8cc1Swenshuai.xi         default:
5664*53ee8cc1Swenshuai.xi             break;
5665*53ee8cc1Swenshuai.xi     }
5666*53ee8cc1Swenshuai.xi }
5667*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng,MS_U32 u32Stamp)5668*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng , MS_U32 u32Stamp)
5669*53ee8cc1Swenshuai.xi {
5670*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5671*53ee8cc1Swenshuai.xi     {
5672*53ee8cc1Swenshuai.xi         case 0:
5673*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
5674*53ee8cc1Swenshuai.xi 
5675*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_56_57, u32Stamp);
5676*53ee8cc1Swenshuai.xi 
5677*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
5678*53ee8cc1Swenshuai.xi             break;
5679*53ee8cc1Swenshuai.xi         case 1:
5680*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
5681*53ee8cc1Swenshuai.xi 
5682*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_58_59, u32Stamp);
5683*53ee8cc1Swenshuai.xi 
5684*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
5685*53ee8cc1Swenshuai.xi             break;
5686*53ee8cc1Swenshuai.xi         case 2:
5687*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD2);
5688*53ee8cc1Swenshuai.xi 
5689*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_5A_5B, u32Stamp);
5690*53ee8cc1Swenshuai.xi 
5691*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD2);
5692*53ee8cc1Swenshuai.xi             break;
5693*53ee8cc1Swenshuai.xi         case 3:
5694*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD3);
5695*53ee8cc1Swenshuai.xi 
5696*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_5C_5D, u32Stamp);
5697*53ee8cc1Swenshuai.xi 
5698*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD3);
5699*53ee8cc1Swenshuai.xi             break;
5700*53ee8cc1Swenshuai.xi         default:
5701*53ee8cc1Swenshuai.xi             break;
5702*53ee8cc1Swenshuai.xi     }
5703*53ee8cc1Swenshuai.xi }
5704*53ee8cc1Swenshuai.xi 
HAL_PVR_Alignment_Enable(MS_U32 u32PVREng,MS_BOOL bEnable)5705*53ee8cc1Swenshuai.xi void HAL_PVR_Alignment_Enable(MS_U32 u32PVREng, MS_BOOL bEnable)
5706*53ee8cc1Swenshuai.xi {
5707*53ee8cc1Swenshuai.xi     if(bEnable)
5708*53ee8cc1Swenshuai.xi     {
5709*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5710*53ee8cc1Swenshuai.xi         {
5711*53ee8cc1Swenshuai.xi             case 0:
5712*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
5713*53ee8cc1Swenshuai.xi                 break;
5714*53ee8cc1Swenshuai.xi             case 1:
5715*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
5716*53ee8cc1Swenshuai.xi                 break;
5717*53ee8cc1Swenshuai.xi             case 2:
5718*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_PVR_ALIGN_EN);
5719*53ee8cc1Swenshuai.xi                 break;
5720*53ee8cc1Swenshuai.xi             case 3:
5721*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_PVR_ALIGN_EN);
5722*53ee8cc1Swenshuai.xi                 break;
5723*53ee8cc1Swenshuai.xi             default:
5724*53ee8cc1Swenshuai.xi                 break;
5725*53ee8cc1Swenshuai.xi         }
5726*53ee8cc1Swenshuai.xi     }
5727*53ee8cc1Swenshuai.xi     else
5728*53ee8cc1Swenshuai.xi     {
5729*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5730*53ee8cc1Swenshuai.xi         {
5731*53ee8cc1Swenshuai.xi             case 0:
5732*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
5733*53ee8cc1Swenshuai.xi                 break;
5734*53ee8cc1Swenshuai.xi             case 1:
5735*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
5736*53ee8cc1Swenshuai.xi                 break;
5737*53ee8cc1Swenshuai.xi             case 2:
5738*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_PVR_ALIGN_EN);
5739*53ee8cc1Swenshuai.xi                 break;
5740*53ee8cc1Swenshuai.xi             case 3:
5741*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_PVR_ALIGN_EN);
5742*53ee8cc1Swenshuai.xi                 break;
5743*53ee8cc1Swenshuai.xi             default:
5744*53ee8cc1Swenshuai.xi                 break;
5745*53ee8cc1Swenshuai.xi         }
5746*53ee8cc1Swenshuai.xi     }
5747*53ee8cc1Swenshuai.xi }
5748*53ee8cc1Swenshuai.xi 
HAL_PVR_FlushData(MS_U32 u32PVREng)5749*53ee8cc1Swenshuai.xi void HAL_PVR_FlushData(MS_U32 u32PVREng)
5750*53ee8cc1Swenshuai.xi {
5751*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5752*53ee8cc1Swenshuai.xi     {
5753*53ee8cc1Swenshuai.xi         case 0:
5754*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
5755*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
5756*53ee8cc1Swenshuai.xi             break;
5757*53ee8cc1Swenshuai.xi         case 1:
5758*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
5759*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
5760*53ee8cc1Swenshuai.xi             break;
5761*53ee8cc1Swenshuai.xi         case 2:
5762*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR2_DATA);
5763*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR2_DATA);
5764*53ee8cc1Swenshuai.xi             break;
5765*53ee8cc1Swenshuai.xi         case 3:
5766*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR3_DATA);
5767*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR3_DATA);
5768*53ee8cc1Swenshuai.xi             break;
5769*53ee8cc1Swenshuai.xi         default:
5770*53ee8cc1Swenshuai.xi             break;
5771*53ee8cc1Swenshuai.xi     }
5772*53ee8cc1Swenshuai.xi }
5773*53ee8cc1Swenshuai.xi 
HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)5774*53ee8cc1Swenshuai.xi void HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)
5775*53ee8cc1Swenshuai.xi {
5776*53ee8cc1Swenshuai.xi     if(bSkip)
5777*53ee8cc1Swenshuai.xi     {
5778*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5779*53ee8cc1Swenshuai.xi         {
5780*53ee8cc1Swenshuai.xi             case 0:
5781*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
5782*53ee8cc1Swenshuai.xi                 break;
5783*53ee8cc1Swenshuai.xi             case 1:
5784*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
5785*53ee8cc1Swenshuai.xi                 break;
5786*53ee8cc1Swenshuai.xi             case 2:
5787*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR3_EN);
5788*53ee8cc1Swenshuai.xi                 break;
5789*53ee8cc1Swenshuai.xi             case 3:
5790*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR4_EN);
5791*53ee8cc1Swenshuai.xi                 break;
5792*53ee8cc1Swenshuai.xi             default:
5793*53ee8cc1Swenshuai.xi                 break;
5794*53ee8cc1Swenshuai.xi         }
5795*53ee8cc1Swenshuai.xi     }
5796*53ee8cc1Swenshuai.xi     else
5797*53ee8cc1Swenshuai.xi     {
5798*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5799*53ee8cc1Swenshuai.xi         {
5800*53ee8cc1Swenshuai.xi             case 0:
5801*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
5802*53ee8cc1Swenshuai.xi                 break;
5803*53ee8cc1Swenshuai.xi             case 1:
5804*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
5805*53ee8cc1Swenshuai.xi                 break;
5806*53ee8cc1Swenshuai.xi             case 2:
5807*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR3_EN);
5808*53ee8cc1Swenshuai.xi                 break;
5809*53ee8cc1Swenshuai.xi             case 3:
5810*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR4_EN);
5811*53ee8cc1Swenshuai.xi                 break;
5812*53ee8cc1Swenshuai.xi             default:
5813*53ee8cc1Swenshuai.xi                 break;
5814*53ee8cc1Swenshuai.xi         }
5815*53ee8cc1Swenshuai.xi     }
5816*53ee8cc1Swenshuai.xi }
5817*53ee8cc1Swenshuai.xi 
5818*53ee8cc1Swenshuai.xi 
HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)5819*53ee8cc1Swenshuai.xi void HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)
5820*53ee8cc1Swenshuai.xi {
5821*53ee8cc1Swenshuai.xi     if(bDisable)
5822*53ee8cc1Swenshuai.xi     {
5823*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5824*53ee8cc1Swenshuai.xi         {
5825*53ee8cc1Swenshuai.xi             case 0:
5826*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
5827*53ee8cc1Swenshuai.xi                 break;
5828*53ee8cc1Swenshuai.xi             case 1:
5829*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
5830*53ee8cc1Swenshuai.xi                 break;
5831*53ee8cc1Swenshuai.xi             case 2:
5832*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_BLOCK_DIS);
5833*53ee8cc1Swenshuai.xi                 break;
5834*53ee8cc1Swenshuai.xi             case 3:
5835*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_BLOCK_DIS);
5836*53ee8cc1Swenshuai.xi                 break;
5837*53ee8cc1Swenshuai.xi             default:
5838*53ee8cc1Swenshuai.xi                 break;
5839*53ee8cc1Swenshuai.xi         }
5840*53ee8cc1Swenshuai.xi     }
5841*53ee8cc1Swenshuai.xi     else
5842*53ee8cc1Swenshuai.xi     {
5843*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5844*53ee8cc1Swenshuai.xi         {
5845*53ee8cc1Swenshuai.xi             case 0:
5846*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
5847*53ee8cc1Swenshuai.xi                 break;
5848*53ee8cc1Swenshuai.xi             case 1:
5849*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
5850*53ee8cc1Swenshuai.xi                 break;
5851*53ee8cc1Swenshuai.xi             case 2:
5852*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_BLOCK_DIS);
5853*53ee8cc1Swenshuai.xi                 break;
5854*53ee8cc1Swenshuai.xi             case 3:
5855*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_BLOCK_DIS);
5856*53ee8cc1Swenshuai.xi                 break;
5857*53ee8cc1Swenshuai.xi             default:
5858*53ee8cc1Swenshuai.xi                 break;
5859*53ee8cc1Swenshuai.xi         }
5860*53ee8cc1Swenshuai.xi 
5861*53ee8cc1Swenshuai.xi     }
5862*53ee8cc1Swenshuai.xi }
5863*53ee8cc1Swenshuai.xi 
HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)5864*53ee8cc1Swenshuai.xi void HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)
5865*53ee8cc1Swenshuai.xi {
5866*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5867*53ee8cc1Swenshuai.xi     {
5868*53ee8cc1Swenshuai.xi         case 0:
5869*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->reg15b8, TSP_BURST_LEN_MASK, (u16BurstMode << TSP_BURST_LEN_SHIFT));
5870*53ee8cc1Swenshuai.xi             break;
5871*53ee8cc1Swenshuai.xi         case 1:
5872*53ee8cc1Swenshuai.xi             REG32_MSK_W(&_RegCtrl->PVR2_Config, TSP_PVR2_BURST_LEN_MASK, (u16BurstMode << TSP_PVR2_BURST_LEN_SHIFT));
5873*53ee8cc1Swenshuai.xi             break;
5874*53ee8cc1Swenshuai.xi         case 2:
5875*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_16, CFG_16_PVR3_BURST_LEN_MASK, (u16BurstMode << CFG_16_PVR3_BURST_LEN_SHIFT));
5876*53ee8cc1Swenshuai.xi             break;
5877*53ee8cc1Swenshuai.xi         case 3:
5878*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_23, CFG_23_PVR4_BURST_LEN_MASK, (u16BurstMode << CFG_23_PVR4_BURST_LEN_SHIFT));
5879*53ee8cc1Swenshuai.xi             break;
5880*53ee8cc1Swenshuai.xi         default:
5881*53ee8cc1Swenshuai.xi             break;
5882*53ee8cc1Swenshuai.xi     }
5883*53ee8cc1Swenshuai.xi }
5884*53ee8cc1Swenshuai.xi 
HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng,MS_BOOL bLocal_Stream)5885*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng, MS_BOOL bLocal_Stream)
5886*53ee8cc1Swenshuai.xi {
5887*53ee8cc1Swenshuai.xi     if (u32PVREng>=TSP_PVRENG_NUM)
5888*53ee8cc1Swenshuai.xi     {
5889*53ee8cc1Swenshuai.xi         return;
5890*53ee8cc1Swenshuai.xi     }
5891*53ee8cc1Swenshuai.xi 
5892*53ee8cc1Swenshuai.xi     if (bLocal_Stream) //Stream
5893*53ee8cc1Swenshuai.xi     {
5894*53ee8cc1Swenshuai.xi         REG16_SET((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
5895*53ee8cc1Swenshuai.xi     }
5896*53ee8cc1Swenshuai.xi     else //local
5897*53ee8cc1Swenshuai.xi     {
5898*53ee8cc1Swenshuai.xi         REG16_CLR((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
5899*53ee8cc1Swenshuai.xi     }
5900*53ee8cc1Swenshuai.xi }
5901*53ee8cc1Swenshuai.xi 
HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)5902*53ee8cc1Swenshuai.xi void HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)
5903*53ee8cc1Swenshuai.xi {
5904*53ee8cc1Swenshuai.xi     if(bEnable)
5905*53ee8cc1Swenshuai.xi     {
5906*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5907*53ee8cc1Swenshuai.xi         {
5908*53ee8cc1Swenshuai.xi             case 0:
5909*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
5910*53ee8cc1Swenshuai.xi                 break;
5911*53ee8cc1Swenshuai.xi             case 1:
5912*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
5913*53ee8cc1Swenshuai.xi                 break;
5914*53ee8cc1Swenshuai.xi             case 2:
5915*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL3);
5916*53ee8cc1Swenshuai.xi                 break;
5917*53ee8cc1Swenshuai.xi             case 3:
5918*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL4);
5919*53ee8cc1Swenshuai.xi                 break;
5920*53ee8cc1Swenshuai.xi             default:
5921*53ee8cc1Swenshuai.xi                 break;
5922*53ee8cc1Swenshuai.xi         }
5923*53ee8cc1Swenshuai.xi     }
5924*53ee8cc1Swenshuai.xi     else
5925*53ee8cc1Swenshuai.xi     {
5926*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5927*53ee8cc1Swenshuai.xi         {
5928*53ee8cc1Swenshuai.xi             case 0:
5929*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
5930*53ee8cc1Swenshuai.xi                 break;
5931*53ee8cc1Swenshuai.xi             case 1:
5932*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
5933*53ee8cc1Swenshuai.xi                 break;
5934*53ee8cc1Swenshuai.xi             case 2:
5935*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL3);
5936*53ee8cc1Swenshuai.xi                 break;
5937*53ee8cc1Swenshuai.xi             case 3:
5938*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL4);
5939*53ee8cc1Swenshuai.xi                 break;
5940*53ee8cc1Swenshuai.xi             default:
5941*53ee8cc1Swenshuai.xi                 break;
5942*53ee8cc1Swenshuai.xi         }
5943*53ee8cc1Swenshuai.xi     }
5944*53ee8cc1Swenshuai.xi }
5945*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)5946*53ee8cc1Swenshuai.xi void HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)
5947*53ee8cc1Swenshuai.xi {
5948*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5949*53ee8cc1Swenshuai.xi     {
5950*53ee8cc1Swenshuai.xi         case 0:
5951*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_44_45, u32PauseTime);
5952*53ee8cc1Swenshuai.xi             break;
5953*53ee8cc1Swenshuai.xi         case 1:
5954*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_46_47, u32PauseTime);
5955*53ee8cc1Swenshuai.xi             break;
5956*53ee8cc1Swenshuai.xi         case 2:
5957*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_48_49, u32PauseTime);
5958*53ee8cc1Swenshuai.xi             break;
5959*53ee8cc1Swenshuai.xi         case 3:
5960*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_4A_4B, u32PauseTime);
5961*53ee8cc1Swenshuai.xi             break;
5962*53ee8cc1Swenshuai.xi         default:
5963*53ee8cc1Swenshuai.xi             break;
5964*53ee8cc1Swenshuai.xi     }
5965*53ee8cc1Swenshuai.xi }
5966*53ee8cc1Swenshuai.xi 
HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId,MS_BOOL bEnable)5967*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId, MS_BOOL bEnable)
5968*53ee8cc1Swenshuai.xi {
5969*53ee8cc1Swenshuai.xi     if (bEnable)
5970*53ee8cc1Swenshuai.xi     {
5971*53ee8cc1Swenshuai.xi         REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
5972*53ee8cc1Swenshuai.xi     }
5973*53ee8cc1Swenshuai.xi     else
5974*53ee8cc1Swenshuai.xi     {
5975*53ee8cc1Swenshuai.xi         REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
5976*53ee8cc1Swenshuai.xi     }
5977*53ee8cc1Swenshuai.xi }
5978*53ee8cc1Swenshuai.xi 
HAL_PVR_MOBF_Enable(MS_U32 u32PVREng,MS_BOOL bEnable,MS_U32 u32Key)5979*53ee8cc1Swenshuai.xi void HAL_PVR_MOBF_Enable(MS_U32 u32PVREng, MS_BOOL bEnable, MS_U32 u32Key)
5980*53ee8cc1Swenshuai.xi {
5981*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5982*53ee8cc1Swenshuai.xi     {
5983*53ee8cc1Swenshuai.xi         case 0:
5984*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->MOBF_PVR1_Index[0], (u32Key & TSP_MOBF_PVR1_INDEX_MASK));
5985*53ee8cc1Swenshuai.xi             break;
5986*53ee8cc1Swenshuai.xi         case 1:
5987*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->MOBF_PVR2_Index[0], (u32Key & TSP_MOBF_PVR2_INDEX_MASK));
5988*53ee8cc1Swenshuai.xi             break;
5989*53ee8cc1Swenshuai.xi         case 2:
5990*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_78_7B[0], (u32Key & CFG_78_PVR3_INDEX));
5991*53ee8cc1Swenshuai.xi             break;
5992*53ee8cc1Swenshuai.xi         case 3:
5993*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_78_7B[2], (u32Key & CFG_78_PVR3_INDEX));
5994*53ee8cc1Swenshuai.xi             break;
5995*53ee8cc1Swenshuai.xi         default:
5996*53ee8cc1Swenshuai.xi             break;
5997*53ee8cc1Swenshuai.xi     }
5998*53ee8cc1Swenshuai.xi }
5999*53ee8cc1Swenshuai.xi 
6000*53ee8cc1Swenshuai.xi /*
6001*53ee8cc1Swenshuai.xi void HAL_PVR_SetTSIF(MS_U32 u32PVREng , MS_BOOL bPara, MS_BOOL bExtSync, MS_BOOL bDataSWP)
6002*53ee8cc1Swenshuai.xi {
6003*53ee8cc1Swenshuai.xi     if (bPara)
6004*53ee8cc1Swenshuai.xi     {
6005*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
6006*53ee8cc1Swenshuai.xi     }
6007*53ee8cc1Swenshuai.xi     else
6008*53ee8cc1Swenshuai.xi     {
6009*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
6010*53ee8cc1Swenshuai.xi     }
6011*53ee8cc1Swenshuai.xi 
6012*53ee8cc1Swenshuai.xi     if (bExtSync)
6013*53ee8cc1Swenshuai.xi     {
6014*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
6015*53ee8cc1Swenshuai.xi     }
6016*53ee8cc1Swenshuai.xi     else
6017*53ee8cc1Swenshuai.xi     {
6018*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
6019*53ee8cc1Swenshuai.xi     }
6020*53ee8cc1Swenshuai.xi 
6021*53ee8cc1Swenshuai.xi     if (bDataSWP)
6022*53ee8cc1Swenshuai.xi     {
6023*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6024*53ee8cc1Swenshuai.xi     }
6025*53ee8cc1Swenshuai.xi     else
6026*53ee8cc1Swenshuai.xi     {
6027*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6028*53ee8cc1Swenshuai.xi     }
6029*53ee8cc1Swenshuai.xi }
6030*53ee8cc1Swenshuai.xi 
6031*53ee8cc1Swenshuai.xi void HAL_PVR_RecAtSync_Dis(MS_U32 u32PVREng, MS_BOOL bDis)
6032*53ee8cc1Swenshuai.xi {
6033*53ee8cc1Swenshuai.xi     if(bDis)
6034*53ee8cc1Swenshuai.xi     {
6035*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
6036*53ee8cc1Swenshuai.xi     }
6037*53ee8cc1Swenshuai.xi     else
6038*53ee8cc1Swenshuai.xi     {
6039*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
6040*53ee8cc1Swenshuai.xi     }
6041*53ee8cc1Swenshuai.xi }
6042*53ee8cc1Swenshuai.xi 
6043*53ee8cc1Swenshuai.xi void HAL_PVR_SetDataSwap(MS_U32 u32PVREng, MS_BOOL bEn)
6044*53ee8cc1Swenshuai.xi {
6045*53ee8cc1Swenshuai.xi     if(bEn)
6046*53ee8cc1Swenshuai.xi     {
6047*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6048*53ee8cc1Swenshuai.xi     }
6049*53ee8cc1Swenshuai.xi     else
6050*53ee8cc1Swenshuai.xi     {
6051*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6052*53ee8cc1Swenshuai.xi     }
6053*53ee8cc1Swenshuai.xi }
6054*53ee8cc1Swenshuai.xi */
6055*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)6056*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)
6057*53ee8cc1Swenshuai.xi {
6058*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6059*53ee8cc1Swenshuai.xi 
6060*53ee8cc1Swenshuai.xi //reserved
6061*53ee8cc1Swenshuai.xi     switch (u32Type)
6062*53ee8cc1Swenshuai.xi     {
6063*53ee8cc1Swenshuai.xi 
6064*53ee8cc1Swenshuai.xi     case INFO_FW_VERSION:
6065*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
6066*53ee8cc1Swenshuai.xi     break;
6067*53ee8cc1Swenshuai.xi     case INFO_FW_DATE:
6068*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_DATE);
6069*53ee8cc1Swenshuai.xi         break;
6070*53ee8cc1Swenshuai.xi     default:
6071*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
6072*53ee8cc1Swenshuai.xi         break;
6073*53ee8cc1Swenshuai.xi 
6074*53ee8cc1Swenshuai.xi     }
6075*53ee8cc1Swenshuai.xi 
6076*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_INFO);
6077*53ee8cc1Swenshuai.xi 
6078*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6079*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6080*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6081*53ee8cc1Swenshuai.xi 
6082*53ee8cc1Swenshuai.xi     return u32Data;
6083*53ee8cc1Swenshuai.xi }
6084*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_BufRst(MS_U32 u32Value)6085*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value)
6086*53ee8cc1Swenshuai.xi {
6087*53ee8cc1Swenshuai.xi  //   MS_U32              u32Data;
6088*53ee8cc1Swenshuai.xi 
6089*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0 , u32Value);
6090*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd   , TSP_MCU_CMD_BUFRST);
6091*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6092*53ee8cc1Swenshuai.xi 
6093*53ee8cc1Swenshuai.xi     return TRUE;
6094*53ee8cc1Swenshuai.xi }
6095*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Read(MS_U32 u32Addr)6096*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Read(MS_U32 u32Addr)
6097*53ee8cc1Swenshuai.xi {
6098*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6099*53ee8cc1Swenshuai.xi 
6100*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
6101*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_READ);
6102*53ee8cc1Swenshuai.xi 
6103*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6104*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6105*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6106*53ee8cc1Swenshuai.xi 
6107*53ee8cc1Swenshuai.xi     return u32Data;
6108*53ee8cc1Swenshuai.xi }
6109*53ee8cc1Swenshuai.xi 
6110*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Write(MS_U32 u32Addr,MS_U32 u32Value)6111*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Write(MS_U32 u32Addr, MS_U32 u32Value)
6112*53ee8cc1Swenshuai.xi {
6113*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6114*53ee8cc1Swenshuai.xi 
6115*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
6116*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, u32Value);
6117*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_WRITE);
6118*53ee8cc1Swenshuai.xi 
6119*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6120*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6121*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6122*53ee8cc1Swenshuai.xi 
6123*53ee8cc1Swenshuai.xi     return TRUE;
6124*53ee8cc1Swenshuai.xi }
6125*53ee8cc1Swenshuai.xi 
6126*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Alive(void)6127*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Alive(void)
6128*53ee8cc1Swenshuai.xi {
6129*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6130*53ee8cc1Swenshuai.xi 
6131*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, 0);
6132*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_ALIVE);  //@TODO check FW HCMD
6133*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6134*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6135*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6136*53ee8cc1Swenshuai.xi 
6137*53ee8cc1Swenshuai.xi     return (u32Data == TSP_MCU_DATA_ALIVE)? TRUE : FALSE;
6138*53ee8cc1Swenshuai.xi }
6139*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_SET(MS_U32 mcu_cmd,MS_U32 mcu_data0,MS_U32 mcu_data1)6140*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SET(MS_U32 mcu_cmd, MS_U32 mcu_data0, MS_U32 mcu_data1)
6141*53ee8cc1Swenshuai.xi {
6142*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, mcu_data0);
6143*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, mcu_data1);
6144*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd,   mcu_cmd);
6145*53ee8cc1Swenshuai.xi }
6146*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_GET(MS_U32 * pmcu_cmd,MS_U32 * pmcu_data0,MS_U32 * pmcu_data1)6147*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_GET(MS_U32* pmcu_cmd, MS_U32* pmcu_data0, MS_U32* pmcu_data1)
6148*53ee8cc1Swenshuai.xi {
6149*53ee8cc1Swenshuai.xi     *pmcu_cmd   = REG32_R(&_RegCtrl->MCU_Cmd);
6150*53ee8cc1Swenshuai.xi     *pmcu_data0 = REG32_R(&_RegCtrl->MCU_Data0);
6151*53ee8cc1Swenshuai.xi     *pmcu_data1 = REG32_R(&_RegCtrl->MCU_Data1);
6152*53ee8cc1Swenshuai.xi }
6153*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId,MS_BOOL bDis)6154*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId ,MS_BOOL bDis)
6155*53ee8cc1Swenshuai.xi {
6156*53ee8cc1Swenshuai.xi     MS_U32              u32Data = bDis ;
6157*53ee8cc1Swenshuai.xi 
6158*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, FltId);
6159*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1,u32Data);
6160*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SECRDYINT_DISABLE); // @TODO add HCMD list here
6161*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6162*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6163*53ee8cc1Swenshuai.xi 
6164*53ee8cc1Swenshuai.xi     return ;
6165*53ee8cc1Swenshuai.xi }
6166*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)6167*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)
6168*53ee8cc1Swenshuai.xi {
6169*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6170*53ee8cc1Swenshuai.xi 
6171*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Enable);
6172*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_DBG);
6173*53ee8cc1Swenshuai.xi 
6174*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6175*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6176*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6177*53ee8cc1Swenshuai.xi 
6178*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->MCU_Data1);
6179*53ee8cc1Swenshuai.xi }
6180*53ee8cc1Swenshuai.xi 
HAL_TSP_GetDBGStatus(MS_U16 u16Sel)6181*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_GetDBGStatus(MS_U16 u16Sel)
6182*53ee8cc1Swenshuai.xi {
6183*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->DBG_SEL, TSP_DBG_SEL_MASK);
6184*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->DBG_SEL, ((u16Sel << TSP_DBG_SEL_SHIFT) & TSP_DBG_SEL_MASK));
6185*53ee8cc1Swenshuai.xi 
6186*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->TSP_Debug);
6187*53ee8cc1Swenshuai.xi }
6188*53ee8cc1Swenshuai.xi 
6189*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_Enable(MS_U32 u32Mask)6190*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Enable(MS_U32 u32Mask)
6191*53ee8cc1Swenshuai.xi {
6192*53ee8cc1Swenshuai.xi     // u32Mask [0:7] for bank 0x15 7e bit[0:7]
6193*53ee8cc1Swenshuai.xi         /*
6194*53ee8cc1Swenshuai.xi             7: audio/video packet error
6195*53ee8cc1Swenshuai.xi             6: DMA read done
6196*53ee8cc1Swenshuai.xi             5: HK_INT_FORCE.            // it's trigure bit is at bank 15 44 bit[15]
6197*53ee8cc1Swenshuai.xi             4: TSP_FILE_RP meets TSP_FILE_TAIL.
6198*53ee8cc1Swenshuai.xi             3: TSP_FILE_RP meets TSP_FILE_MID.
6199*53ee8cc1Swenshuai.xi             2: HK_INT_FORCE.            // it's trigure bit is at bank 15 39 bit[15]
6200*53ee8cc1Swenshuai.xi             1: STR2MI_WADR meets STR2MI_MID.
6201*53ee8cc1Swenshuai.xi             0: STR2MI_WADR meets STR2MI_TAIL."
6202*53ee8cc1Swenshuai.xi         */
6203*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt_Stat, (TSP_HWINT_EN_MASK & u32Mask) | TSP_HWINT_STATUS_MASK);
6204*53ee8cc1Swenshuai.xi 
6205*53ee8cc1Swenshuai.xi     // u32Mask [8:15] for bank 0x16 6c bit[0:7]
6206*53ee8cc1Swenshuai.xi         /*
6207*53ee8cc1Swenshuai.xi             [7] : PVR2 meet_tail  or PVR2_meet_mid
6208*53ee8cc1Swenshuai.xi             [6] : vq0, vq1, vq2, vq3 overflow interrupt
6209*53ee8cc1Swenshuai.xi             [5] : all DMA write address not in the protect zone interrupt
6210*53ee8cc1Swenshuai.xi             [4] : PVR_cb meet the mid or PVR_cb meet the tail
6211*53ee8cc1Swenshuai.xi             [3] : pcr filter 0 update finish
6212*53ee8cc1Swenshuai.xi             [2] : pcr filter 1 update finish
6213*53ee8cc1Swenshuai.xi             [1] : OTV HW interrupt
6214*53ee8cc1Swenshuai.xi             [0] : reserved
6215*53ee8cc1Swenshuai.xi         */
6216*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt2_Stat, (TSP_HWINT2_EN_MASK & (u32Mask >> 8)) | TSP_HWINT2_STATUS_MASK);
6217*53ee8cc1Swenshuai.xi 
6218*53ee8cc1Swenshuai.xi      // u32Mask [16:23] for bank 0x16 6f bit[0:7]
6219*53ee8cc1Swenshuai.xi         /*
6220*53ee8cc1Swenshuai.xi             [7:2] : reserved
6221*53ee8cc1Swenshuai.xi             [1] : pcr filter 3 update finish
6222*53ee8cc1Swenshuai.xi             [0] : pcr filter 2 update finish
6223*53ee8cc1Swenshuai.xi         */
6224*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt3_Stat, (TSP_HWINT3_EN_MASK & (u32Mask >> 16)) | TSP_HWINT3_STATUS_MASK);
6225*53ee8cc1Swenshuai.xi }
6226*53ee8cc1Swenshuai.xi 
6227*53ee8cc1Swenshuai.xi 
6228*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_Disable(MS_U32 u32Mask)6229*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Disable(MS_U32 u32Mask)
6230*53ee8cc1Swenshuai.xi {
6231*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt_Stat, TSP_HWINT_EN_MASK & u32Mask);
6232*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt2_Stat, TSP_HWINT2_EN_MASK & (u32Mask >> 8));
6233*53ee8cc1Swenshuai.xi 
6234*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt_Stat,
6235*53ee8cc1Swenshuai.xi         (REG16_R(&_RegCtrl->HwInt_Stat) & ~(TSP_HWINT_EN_MASK & (u32Mask))) | TSP_HWINT_STATUS_MASK);
6236*53ee8cc1Swenshuai.xi 
6237*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt2_Stat,
6238*53ee8cc1Swenshuai.xi         (REG16_R(&_RegCtrl->HwInt2_Stat) & ~(TSP_HWINT2_EN_MASK & (u32Mask >> 8))) | TSP_HWINT2_STATUS_MASK);
6239*53ee8cc1Swenshuai.xi 
6240*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt3_Stat,
6241*53ee8cc1Swenshuai.xi         (REG16_R(&_RegCtrl->HwInt3_Stat) & ~(TSP_HWINT3_EN_MASK & (u32Mask >> 16))) | TSP_HWINT3_STATUS_MASK);
6242*53ee8cc1Swenshuai.xi }
6243*53ee8cc1Swenshuai.xi 
6244*53ee8cc1Swenshuai.xi 
6245*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_ClrHW(MS_U32 u32Mask)6246*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrHW(MS_U32 u32Mask)
6247*53ee8cc1Swenshuai.xi {
6248*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt_Stat, (u32Mask & 0x00FF) << 8);
6249*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt2_Stat, u32Mask & 0xFF00);
6250*53ee8cc1Swenshuai.xi 
6251*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt_Stat,
6252*53ee8cc1Swenshuai.xi         (REG16_R(&_RegCtrl->HwInt_Stat) & (~TSP_HWINT_STATUS_MASK)) |
6253*53ee8cc1Swenshuai.xi         (((~u32Mask) << TSP_HWINT_STATUS_SHIFT) & TSP_HWINT_STATUS_MASK) );
6254*53ee8cc1Swenshuai.xi 
6255*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt2_Stat,
6256*53ee8cc1Swenshuai.xi         (REG16_R(&_RegCtrl->HwInt2_Stat) & (~TSP_HWINT2_STATUS_MASK)) |
6257*53ee8cc1Swenshuai.xi         (((~(u32Mask >> 8))<< TSP_HWINT2_STATUS_SHIFT) & TSP_HWINT2_STATUS_MASK) );
6258*53ee8cc1Swenshuai.xi 
6259*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt3_Stat,
6260*53ee8cc1Swenshuai.xi         (REG16_R(&_RegCtrl->HwInt3_Stat) & (~TSP_HWINT3_STATUS_MASK)) |
6261*53ee8cc1Swenshuai.xi         (((~(u32Mask >> 16))<< TSP_HWINT3_STATUS_SHIFT) & TSP_HWINT3_STATUS_MASK) );
6262*53ee8cc1Swenshuai.xi }
6263*53ee8cc1Swenshuai.xi 
6264*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_GetHW(void)6265*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetHW(void)
6266*53ee8cc1Swenshuai.xi {
6267*53ee8cc1Swenshuai.xi     MS_U32 status;
6268*53ee8cc1Swenshuai.xi 
6269*53ee8cc1Swenshuai.xi     status = (MS_U32)(((REG16_R(&_RegCtrl->HwInt3_Stat) & TSP_HWINT3_STATUS_MASK) >> TSP_HWINT3_STATUS_SHIFT) << 16);
6270*53ee8cc1Swenshuai.xi 
6271*53ee8cc1Swenshuai.xi 
6272*53ee8cc1Swenshuai.xi     status |= ((MS_U32)(((REG16_R(&_RegCtrl->HwInt2_Stat) & TSP_HWINT2_STATUS_MASK) >> TSP_HWINT2_STATUS_SHIFT) << 8));
6273*53ee8cc1Swenshuai.xi 
6274*53ee8cc1Swenshuai.xi 
6275*53ee8cc1Swenshuai.xi     status |= ((MS_U32)((REG16_R(&_RegCtrl->HwInt_Stat) & TSP_HWINT_STATUS_MASK) >> TSP_HWINT_STATUS_SHIFT));
6276*53ee8cc1Swenshuai.xi 
6277*53ee8cc1Swenshuai.xi     return (status & 0x00FFFFFF);
6278*53ee8cc1Swenshuai.xi }
6279*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_ClrSW(void)6280*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrSW(void)
6281*53ee8cc1Swenshuai.xi {
6282*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->SwInt_Stat, 0);
6283*53ee8cc1Swenshuai.xi }
6284*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_GetSW(void)6285*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetSW(void)
6286*53ee8cc1Swenshuai.xi {
6287*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->SwInt_Stat);
6288*53ee8cc1Swenshuai.xi }
6289*53ee8cc1Swenshuai.xi 
HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx,MS_U32 inputSrc)6290*53ee8cc1Swenshuai.xi void HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx, MS_U32 inputSrc)
6291*53ee8cc1Swenshuai.xi {
6292*53ee8cc1Swenshuai.xi     switch (bufIdx)
6293*53ee8cc1Swenshuai.xi     {
6294*53ee8cc1Swenshuai.xi         case 0:
6295*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF0_SRC, inputSrc<<(bufIdx * 2));
6296*53ee8cc1Swenshuai.xi              break;
6297*53ee8cc1Swenshuai.xi         case 1:
6298*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF1_SRC, inputSrc<<(bufIdx * 2));
6299*53ee8cc1Swenshuai.xi             break;
6300*53ee8cc1Swenshuai.xi         case 2:
6301*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF2_SRC, inputSrc<<(bufIdx * 2));
6302*53ee8cc1Swenshuai.xi             break;
6303*53ee8cc1Swenshuai.xi         case 3:
6304*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF3_SRC, inputSrc<<(bufIdx * 2));
6305*53ee8cc1Swenshuai.xi             break;
6306*53ee8cc1Swenshuai.xi         default:
6307*53ee8cc1Swenshuai.xi             break;
6308*53ee8cc1Swenshuai.xi     }
6309*53ee8cc1Swenshuai.xi }
6310*53ee8cc1Swenshuai.xi 
HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)6311*53ee8cc1Swenshuai.xi void HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)
6312*53ee8cc1Swenshuai.xi {
6313*53ee8cc1Swenshuai.xi     if (bByPassEn)
6314*53ee8cc1Swenshuai.xi     {
6315*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);
6316*53ee8cc1Swenshuai.xi     }
6317*53ee8cc1Swenshuai.xi     else
6318*53ee8cc1Swenshuai.xi     {
6319*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);
6320*53ee8cc1Swenshuai.xi     }
6321*53ee8cc1Swenshuai.xi }
6322*53ee8cc1Swenshuai.xi 
6323*53ee8cc1Swenshuai.xi //@TODO
6324*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_FileIn_SPDConfig(MS_U32 tsif,MS_BOOL CTR_mode)6325*53ee8cc1Swenshuai.xi void HAL_TSP_FileIn_SPDConfig(MS_U32 tsif, MS_BOOL CTR_mode)
6326*53ee8cc1Swenshuai.xi {
6327*53ee8cc1Swenshuai.xi     if(CTR_mode == TRUE)
6328*53ee8cc1Swenshuai.xi     {
6329*53ee8cc1Swenshuai.xi         printf("SPD CTR mode = %p\n",&(_RegCtrl7[tsif].CFG7_05));
6330*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_CTR_MODE_SPD_FILEIN); //set CTR mode enable
6331*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[0]), 0x0000);                  //set counter IV
6332*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[1]), 0x0000);
6333*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[2]), 0x0000);
6334*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[3]), 0x0000);
6335*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_04), CFG7_04_CTR_IV_SPD_MAX_1K);     //set counter IV max vld
6336*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_LOAD_INIT_CNT_SPD);   //load counter IV
6337*53ee8cc1Swenshuai.xi     }
6338*53ee8cc1Swenshuai.xi 
6339*53ee8cc1Swenshuai.xi     switch(tsif)
6340*53ee8cc1Swenshuai.xi     {
6341*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);
6342*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6343*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6344*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6345*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6346*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6347*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6348*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6349*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6350*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY0);
6351*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF0_BYPASS);//bypass SPD
6352*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET); //TSIF SPD reset
6353*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET);
6354*53ee8cc1Swenshuai.xi                 break;
6355*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);
6356*53ee8cc1Swenshuai.xi                 /*
6357*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x2222);             //file-in SPD key
6358*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x2222);
6359*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x2222);
6360*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x2222);
6361*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x3333);
6362*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x3333);
6363*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x3333);
6364*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x3333);
6365*53ee8cc1Swenshuai.xi                 */
6366*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6367*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6368*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6369*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6370*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6371*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6372*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6373*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6374*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY1);
6375*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF1_BYPASS);//bypass SPD
6376*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET); //TSIF SPD reset
6377*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET);
6378*53ee8cc1Swenshuai.xi                 break;
6379*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);
6380*53ee8cc1Swenshuai.xi                 /*
6381*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x4444);             //file-in SPD key
6382*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x4444);
6383*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x4444);
6384*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x4444);
6385*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x5555);
6386*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x5555);
6387*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x5555);
6388*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x5555);
6389*53ee8cc1Swenshuai.xi                 */
6390*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6391*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6392*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6393*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6394*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6395*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6396*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6397*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6398*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY2);
6399*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF2_BYPASS);//bypass SPD
6400*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET); //TSIF SPD reset
6401*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET);
6402*53ee8cc1Swenshuai.xi                 break;
6403*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);
6404*53ee8cc1Swenshuai.xi                 /*
6405*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x6666);             //file-in SPD key
6406*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x6666);
6407*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x6666);
6408*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x6666);
6409*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x7777);
6410*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x7777);
6411*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x7777);
6412*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x7777);
6413*53ee8cc1Swenshuai.xi                 */
6414*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6415*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6416*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6417*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6418*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6419*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6420*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6421*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6422*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY3);
6423*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF3_BYPASS);//bypass SPD
6424*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF3_SPD_RESET); //TSIF SPD reset
6425*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF3_SPD_RESET);
6426*53ee8cc1Swenshuai.xi                 break;
6427*53ee8cc1Swenshuai.xi         default:printf("Not Support !!\n");
6428*53ee8cc1Swenshuai.xi                 break;
6429*53ee8cc1Swenshuai.xi     }
6430*53ee8cc1Swenshuai.xi }
6431*53ee8cc1Swenshuai.xi #endif
6432*53ee8cc1Swenshuai.xi 
6433*53ee8cc1Swenshuai.xi // for TSO
HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId,MS_U32 u32TSOEng,MS_BOOL bEn)6434*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId, MS_U32 u32TSOEng, MS_BOOL bEn)
6435*53ee8cc1Swenshuai.xi {
6436*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
6437*53ee8cc1Swenshuai.xi     if(bEn)
6438*53ee8cc1Swenshuai.xi     {
6439*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_TSOFLT_MASK) | (((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK));
6440*53ee8cc1Swenshuai.xi     }
6441*53ee8cc1Swenshuai.xi     else
6442*53ee8cc1Swenshuai.xi     {
6443*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~(((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK)));
6444*53ee8cc1Swenshuai.xi     }
6445*53ee8cc1Swenshuai.xi }
6446*53ee8cc1Swenshuai.xi 
HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap,MS_U32 * pu32CapInfo)6447*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap, MS_U32 *pu32CapInfo)
6448*53ee8cc1Swenshuai.xi {
6449*53ee8cc1Swenshuai.xi     switch (eCap)
6450*53ee8cc1Swenshuai.xi     {
6451*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PIDFLT_NUM :
6452*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PIDFLT_NUM;
6453*53ee8cc1Swenshuai.xi             break;
6454*53ee8cc1Swenshuai.xi 
6455*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECFLT_NUM :
6456*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECFLT_NUM;
6457*53ee8cc1Swenshuai.xi             break;
6458*53ee8cc1Swenshuai.xi 
6459*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECBUF_NUM :
6460*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_NUM;
6461*53ee8cc1Swenshuai.xi             break;
6462*53ee8cc1Swenshuai.xi 
6463*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECENG_NUM :
6464*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECENG_NUM;
6465*53ee8cc1Swenshuai.xi             break;
6466*53ee8cc1Swenshuai.xi 
6467*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECFLT_NUM :
6468*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_NUM;
6469*53ee8cc1Swenshuai.xi             break;
6470*53ee8cc1Swenshuai.xi 
6471*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_TSIF_NUM :
6472*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSIF_NUM;
6473*53ee8cc1Swenshuai.xi             break;
6474*53ee8cc1Swenshuai.xi 
6475*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_DEMOD_NUM :
6476*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_DEMOD_NUM;
6477*53ee8cc1Swenshuai.xi             break;
6478*53ee8cc1Swenshuai.xi 
6479*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_TSPAD_NUM :
6480*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSPAD_NUM;
6481*53ee8cc1Swenshuai.xi             break;
6482*53ee8cc1Swenshuai.xi 
6483*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_NUM :
6484*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_NUM;
6485*53ee8cc1Swenshuai.xi             break;
6486*53ee8cc1Swenshuai.xi 
6487*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_CAFLT_NUM :
6488*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAFLT_NUM;
6489*53ee8cc1Swenshuai.xi             break;
6490*53ee8cc1Swenshuai.xi 
6491*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_CAKEY_NUM :
6492*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAKEY_NUM;
6493*53ee8cc1Swenshuai.xi             break;
6494*53ee8cc1Swenshuai.xi 
6495*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECBUF_ALIGN :
6496*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_ALIGN;
6497*53ee8cc1Swenshuai.xi             break;
6498*53ee8cc1Swenshuai.xi 
6499*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PVR_ALIGN:
6500*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PVR_ALIGN;
6501*53ee8cc1Swenshuai.xi             break;
6502*53ee8cc1Swenshuai.xi 
6503*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_FW_ALIGN :
6504*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_ALIGN;
6505*53ee8cc1Swenshuai.xi             break;
6506*53ee8cc1Swenshuai.xi 
6507*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_ALIGN :
6508*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_ALIGN;
6509*53ee8cc1Swenshuai.xi             break;
6510*53ee8cc1Swenshuai.xi 
6511*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_PITCH :
6512*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_PITCH;
6513*53ee8cc1Swenshuai.xi             break;
6514*53ee8cc1Swenshuai.xi 
6515*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_MMFI_AUDIO_FILTER_NUM:
6516*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_AUDIO_FILTER_NUM;
6517*53ee8cc1Swenshuai.xi             break;
6518*53ee8cc1Swenshuai.xi 
6519*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_MMFI_V3D_FILTER_NUM:
6520*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_V3D_FILTER_NUM;
6521*53ee8cc1Swenshuai.xi             break;
6522*53ee8cc1Swenshuai.xi 
6523*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_HW_TYPE:
6524*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HW_TYPE;
6525*53ee8cc1Swenshuai.xi             break;
6526*53ee8cc1Swenshuai.xi 
6527*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECFLT_IDX :
6528*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_IDX;
6529*53ee8cc1Swenshuai.xi             break;
6530*53ee8cc1Swenshuai.xi 
6531*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PCRFLT_START_IDX :
6532*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PCRFLT_START_IDX;
6533*53ee8cc1Swenshuai.xi             break;
6534*53ee8cc1Swenshuai.xi 
6535*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VFIFO_NUM:
6536*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VFIFO_NUM;
6537*53ee8cc1Swenshuai.xi             break;
6538*53ee8cc1Swenshuai.xi 
6539*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_AFIFO_NUM:
6540*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_AFIFO_NUM;
6541*53ee8cc1Swenshuai.xi             break;
6542*53ee8cc1Swenshuai.xi 
6543*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_HWPCR_SUPPORT:
6544*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HWPCR_SUPPORT;
6545*53ee8cc1Swenshuai.xi             break;
6546*53ee8cc1Swenshuai.xi 
6547*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FIQ_NUM:
6548*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FIQ_NUM;
6549*53ee8cc1Swenshuai.xi             break;
6550*53ee8cc1Swenshuai.xi 
6551*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FW_BUF_SIZE:
6552*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_BUF_SIZE;
6553*53ee8cc1Swenshuai.xi             break;
6554*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FW_BUF_RANGE:
6555*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_FW_BUF_LOW_BUD;
6556*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_FW_BUF_UP_BUD;
6557*53ee8cc1Swenshuai.xi             break;
6558*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_VQ_BUF_RANGE:
6559*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_VQ_BUF_LOW_BUD;
6560*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_VQ_BUF_UP_BUD;
6561*53ee8cc1Swenshuai.xi             break;
6562*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_SEC_BUF_RANGE:
6563*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_SEC_BUF_LOW_BUD;
6564*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_SEC_BUF_UP_BUD;
6565*53ee8cc1Swenshuai.xi             break;
6566*53ee8cc1Swenshuai.xi         default:
6567*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_NULL;
6568*53ee8cc1Swenshuai.xi             return FALSE;
6569*53ee8cc1Swenshuai.xi     }
6570*53ee8cc1Swenshuai.xi 
6571*53ee8cc1Swenshuai.xi     return TRUE;
6572*53ee8cc1Swenshuai.xi }
6573*53ee8cc1Swenshuai.xi 
HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)6574*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)
6575*53ee8cc1Swenshuai.xi {
6576*53ee8cc1Swenshuai.xi     if(bEnable)
6577*53ee8cc1Swenshuai.xi     {
6578*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
6579*53ee8cc1Swenshuai.xi     }
6580*53ee8cc1Swenshuai.xi     else
6581*53ee8cc1Swenshuai.xi     {
6582*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
6583*53ee8cc1Swenshuai.xi     }
6584*53ee8cc1Swenshuai.xi }
6585*53ee8cc1Swenshuai.xi 
HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType,MS_BOOL bEnable)6586*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType, MS_BOOL bEnable)
6587*53ee8cc1Swenshuai.xi {
6588*53ee8cc1Swenshuai.xi     if(bEnable)
6589*53ee8cc1Swenshuai.xi     {
6590*53ee8cc1Swenshuai.xi         switch (eHalPktType)
6591*53ee8cc1Swenshuai.xi        {
6592*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
6593*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
6594*53ee8cc1Swenshuai.xi               break;
6595*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
6596*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
6597*53ee8cc1Swenshuai.xi               break;
6598*53ee8cc1Swenshuai.xi           default:
6599*53ee8cc1Swenshuai.xi               break;
6600*53ee8cc1Swenshuai.xi         }
6601*53ee8cc1Swenshuai.xi     }
6602*53ee8cc1Swenshuai.xi     else
6603*53ee8cc1Swenshuai.xi     {
6604*53ee8cc1Swenshuai.xi        switch (eHalPktType)
6605*53ee8cc1Swenshuai.xi        {
6606*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
6607*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
6608*53ee8cc1Swenshuai.xi               break;
6609*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
6610*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
6611*53ee8cc1Swenshuai.xi               break;
6612*53ee8cc1Swenshuai.xi           default:
6613*53ee8cc1Swenshuai.xi               break;
6614*53ee8cc1Swenshuai.xi         }
6615*53ee8cc1Swenshuai.xi     }
6616*53ee8cc1Swenshuai.xi }
6617*53ee8cc1Swenshuai.xi 
HAL_TSP_TEI_SKIP(MS_U32 tsIf,MS_BOOL bEnable)6618*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_SKIP(MS_U32 tsIf, MS_BOOL bEnable)
6619*53ee8cc1Swenshuai.xi {
6620*53ee8cc1Swenshuai.xi     if(bEnable)
6621*53ee8cc1Swenshuai.xi     {
6622*53ee8cc1Swenshuai.xi         switch (tsIf)
6623*53ee8cc1Swenshuai.xi        {
6624*53ee8cc1Swenshuai.xi           case 0:
6625*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
6626*53ee8cc1Swenshuai.xi               break;
6627*53ee8cc1Swenshuai.xi           case 1:
6628*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
6629*53ee8cc1Swenshuai.xi               break;
6630*53ee8cc1Swenshuai.xi           case 2:
6631*53ee8cc1Swenshuai.xi               REG32_SET(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
6632*53ee8cc1Swenshuai.xi               break;
6633*53ee8cc1Swenshuai.xi           case 3:
6634*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID3);
6635*53ee8cc1Swenshuai.xi               break;
6636*53ee8cc1Swenshuai.xi           default:
6637*53ee8cc1Swenshuai.xi               break;
6638*53ee8cc1Swenshuai.xi         }
6639*53ee8cc1Swenshuai.xi     }
6640*53ee8cc1Swenshuai.xi     else
6641*53ee8cc1Swenshuai.xi     {
6642*53ee8cc1Swenshuai.xi        switch (tsIf)
6643*53ee8cc1Swenshuai.xi        {
6644*53ee8cc1Swenshuai.xi           case 0:
6645*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
6646*53ee8cc1Swenshuai.xi               break;
6647*53ee8cc1Swenshuai.xi           case 1:
6648*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
6649*53ee8cc1Swenshuai.xi               break;
6650*53ee8cc1Swenshuai.xi           case 2:
6651*53ee8cc1Swenshuai.xi               REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
6652*53ee8cc1Swenshuai.xi               break;
6653*53ee8cc1Swenshuai.xi           case 3:
6654*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID3);
6655*53ee8cc1Swenshuai.xi               break;
6656*53ee8cc1Swenshuai.xi           default:
6657*53ee8cc1Swenshuai.xi               break;
6658*53ee8cc1Swenshuai.xi         }
6659*53ee8cc1Swenshuai.xi     }
6660*53ee8cc1Swenshuai.xi 
6661*53ee8cc1Swenshuai.xi }
6662*53ee8cc1Swenshuai.xi 
HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)6663*53ee8cc1Swenshuai.xi void HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)
6664*53ee8cc1Swenshuai.xi {
6665*53ee8cc1Swenshuai.xi     switch (eFltType)
6666*53ee8cc1Swenshuai.xi     {
6667*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
6668*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
6669*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
6670*53ee8cc1Swenshuai.xi             break;
6671*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
6672*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
6673*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
6674*53ee8cc1Swenshuai.xi             break;
6675*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
6676*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
6677*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
6678*53ee8cc1Swenshuai.xi             break;
6679*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
6680*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
6681*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
6682*53ee8cc1Swenshuai.xi             break;
6683*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
6684*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
6685*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
6686*53ee8cc1Swenshuai.xi             break;
6687*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
6688*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
6689*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
6690*53ee8cc1Swenshuai.xi             break;
6691*53ee8cc1Swenshuai.xi         default :
6692*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] Clear AVPktNum Error\n",__FILE__,__FUNCTION__,__LINE__);
6693*53ee8cc1Swenshuai.xi             break;
6694*53ee8cc1Swenshuai.xi     }
6695*53ee8cc1Swenshuai.xi }
6696*53ee8cc1Swenshuai.xi 
HAL_TSP_FltNullPkt_En(MS_BOOL bEn)6697*53ee8cc1Swenshuai.xi void HAL_TSP_FltNullPkt_En(MS_BOOL bEn)
6698*53ee8cc1Swenshuai.xi {
6699*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
6700*53ee8cc1Swenshuai.xi     {
6701*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_2D,CFG3_2D_FILTER_NULL_PKT);
6702*53ee8cc1Swenshuai.xi     }
6703*53ee8cc1Swenshuai.xi     else
6704*53ee8cc1Swenshuai.xi     {
6705*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_2D,CFG3_2D_FILTER_NULL_PKT);
6706*53ee8cc1Swenshuai.xi     }
6707*53ee8cc1Swenshuai.xi }
6708*53ee8cc1Swenshuai.xi 
HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)6709*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)
6710*53ee8cc1Swenshuai.xi {
6711*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
6712*53ee8cc1Swenshuai.xi     {
6713*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
6714*53ee8cc1Swenshuai.xi     }
6715*53ee8cc1Swenshuai.xi     else
6716*53ee8cc1Swenshuai.xi     {
6717*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
6718*53ee8cc1Swenshuai.xi     }
6719*53ee8cc1Swenshuai.xi }
6720*53ee8cc1Swenshuai.xi 
HAL_TSP_OR_Address_Protect(MS_PHY u32UpBoundAddr,MS_PHY u32LowBoundAddr)6721*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect(MS_PHY u32UpBoundAddr, MS_PHY u32LowBoundAddr)
6722*53ee8cc1Swenshuai.xi {
6723*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
6724*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetLB, phyMiuOffsetUB;
6725*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetLB, u32LowBoundAddr);
6726*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetUB, u32UpBoundAddr);
6727*53ee8cc1Swenshuai.xi 
6728*53ee8cc1Swenshuai.xi     if (u8MiuSel >= E_CHIP_MIU_0){
6729*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->ORZ_DMAW_LBND,(MS_U32)((phyMiuOffsetLB >> MIU_BUS) & TSP_ORZ_DMAW_LBND_MASK));
6730*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->ORZ_DMAW_UBND,(MS_U32)((phyMiuOffsetUB >> MIU_BUS) & TSP_ORZ_DMAW_UBND_MASK));
6731*53ee8cc1Swenshuai.xi     }
6732*53ee8cc1Swenshuai.xi }
6733*53ee8cc1Swenshuai.xi 
HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)6734*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)
6735*53ee8cc1Swenshuai.xi {
6736*53ee8cc1Swenshuai.xi 
6737*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
6738*53ee8cc1Swenshuai.xi     {
6739*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
6740*53ee8cc1Swenshuai.xi     }
6741*53ee8cc1Swenshuai.xi     else
6742*53ee8cc1Swenshuai.xi     {
6743*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
6744*53ee8cc1Swenshuai.xi     }
6745*53ee8cc1Swenshuai.xi }
6746*53ee8cc1Swenshuai.xi 
HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID,MS_PHY u32UpBoundAddr,MS_PHY u32LowBoundAddr)6747*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID, MS_PHY u32UpBoundAddr, MS_PHY u32LowBoundAddr)
6748*53ee8cc1Swenshuai.xi {
6749*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
6750*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetLB, phyMiuOffsetUB;
6751*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetLB, u32LowBoundAddr);
6752*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetUB, u32UpBoundAddr);
6753*53ee8cc1Swenshuai.xi 
6754*53ee8cc1Swenshuai.xi     if (u8MiuSel >= E_CHIP_MIU_0){
6755*53ee8cc1Swenshuai.xi         MS_U32  u32LBnd = (MS_U32)((phyMiuOffsetLB >> MIU_BUS) & TSP_DMAW_BND_MASK);
6756*53ee8cc1Swenshuai.xi         MS_U32  u32UBnd = (MS_U32)((phyMiuOffsetUB >> MIU_BUS) & TSP_DMAW_BND_MASK);
6757*53ee8cc1Swenshuai.xi 
6758*53ee8cc1Swenshuai.xi         switch(u8SecID)
6759*53ee8cc1Swenshuai.xi         {
6760*53ee8cc1Swenshuai.xi             case 0:
6761*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_LBND0,u32LBnd);
6762*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_UBND0,u32UBnd);
6763*53ee8cc1Swenshuai.xi                 break;
6764*53ee8cc1Swenshuai.xi             case 1:
6765*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_LBND1,u32LBnd);
6766*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_UBND1,u32UBnd);
6767*53ee8cc1Swenshuai.xi                 break;
6768*53ee8cc1Swenshuai.xi             default:
6769*53ee8cc1Swenshuai.xi                 break;
6770*53ee8cc1Swenshuai.xi         }
6771*53ee8cc1Swenshuai.xi     }
6772*53ee8cc1Swenshuai.xi }
6773*53ee8cc1Swenshuai.xi 
HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)6774*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)
6775*53ee8cc1Swenshuai.xi {
6776*53ee8cc1Swenshuai.xi     if(bEnable)
6777*53ee8cc1Swenshuai.xi     {
6778*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6779*53ee8cc1Swenshuai.xi         {
6780*53ee8cc1Swenshuai.xi             case 0:
6781*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
6782*53ee8cc1Swenshuai.xi                 break;
6783*53ee8cc1Swenshuai.xi             case 1:
6784*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
6785*53ee8cc1Swenshuai.xi                 break;
6786*53ee8cc1Swenshuai.xi             case 2:
6787*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR3_DMAW_PROTECT_EN);
6788*53ee8cc1Swenshuai.xi                 break;
6789*53ee8cc1Swenshuai.xi             case 3:
6790*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR4_DMAW_PROTECT_EN);
6791*53ee8cc1Swenshuai.xi                 break;
6792*53ee8cc1Swenshuai.xi             default:
6793*53ee8cc1Swenshuai.xi                 break;
6794*53ee8cc1Swenshuai.xi         }
6795*53ee8cc1Swenshuai.xi     }
6796*53ee8cc1Swenshuai.xi     else
6797*53ee8cc1Swenshuai.xi     {
6798*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6799*53ee8cc1Swenshuai.xi         {
6800*53ee8cc1Swenshuai.xi             case 0:
6801*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
6802*53ee8cc1Swenshuai.xi                 break;
6803*53ee8cc1Swenshuai.xi             case 1:
6804*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
6805*53ee8cc1Swenshuai.xi                 break;
6806*53ee8cc1Swenshuai.xi             case 2:
6807*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR3_DMAW_PROTECT_EN);
6808*53ee8cc1Swenshuai.xi                 break;
6809*53ee8cc1Swenshuai.xi             case 3:
6810*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR4_DMAW_PROTECT_EN);
6811*53ee8cc1Swenshuai.xi                 break;
6812*53ee8cc1Swenshuai.xi             default:
6813*53ee8cc1Swenshuai.xi                 break;
6814*53ee8cc1Swenshuai.xi         }
6815*53ee8cc1Swenshuai.xi     }
6816*53ee8cc1Swenshuai.xi }
6817*53ee8cc1Swenshuai.xi 
HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32UpBoundAddr,MS_PHY u32LowBoundAddr)6818*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32UpBoundAddr, MS_PHY u32LowBoundAddr)
6819*53ee8cc1Swenshuai.xi {
6820*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
6821*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetLB, phyMiuOffsetUB;
6822*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetLB, u32LowBoundAddr);
6823*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetUB, u32UpBoundAddr);
6824*53ee8cc1Swenshuai.xi 
6825*53ee8cc1Swenshuai.xi     if (u8MiuSel >= E_CHIP_MIU_0){
6826*53ee8cc1Swenshuai.xi         MS_U32  u32LBnd = (MS_U32)((phyMiuOffsetLB >> MIU_BUS) & TSP_PVR_MASK);
6827*53ee8cc1Swenshuai.xi         MS_U32  u32UBnd = (MS_U32)((phyMiuOffsetUB >> MIU_BUS) & TSP_PVR_MASK);
6828*53ee8cc1Swenshuai.xi 
6829*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6830*53ee8cc1Swenshuai.xi         {
6831*53ee8cc1Swenshuai.xi             case 0:
6832*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_LBND2, u32LBnd);
6833*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_UBND2, u32UBnd);
6834*53ee8cc1Swenshuai.xi                 break;
6835*53ee8cc1Swenshuai.xi             case 1:
6836*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_LBND3, u32LBnd);
6837*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_UBND3, u32UBnd);
6838*53ee8cc1Swenshuai.xi                 break;
6839*53ee8cc1Swenshuai.xi             case 2:
6840*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_LBND4, u32LBnd);
6841*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->DMAW_UBND4, u32UBnd);
6842*53ee8cc1Swenshuai.xi                 break;
6843*53ee8cc1Swenshuai.xi             case 3:
6844*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl3->CFG3_12_13, u32LBnd);
6845*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl3->CFG3_14_15, u32UBnd);
6846*53ee8cc1Swenshuai.xi                 break;
6847*53ee8cc1Swenshuai.xi             default:
6848*53ee8cc1Swenshuai.xi                 break;
6849*53ee8cc1Swenshuai.xi         }
6850*53ee8cc1Swenshuai.xi     }
6851*53ee8cc1Swenshuai.xi }
6852*53ee8cc1Swenshuai.xi 
HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)6853*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)
6854*53ee8cc1Swenshuai.xi {
6855*53ee8cc1Swenshuai.xi     if(bEnable)
6856*53ee8cc1Swenshuai.xi     {
6857*53ee8cc1Swenshuai.xi         switch(eFileEng)
6858*53ee8cc1Swenshuai.xi         {
6859*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
6860*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
6861*53ee8cc1Swenshuai.xi                 break;
6862*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
6863*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
6864*53ee8cc1Swenshuai.xi                 break;
6865*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
6866*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
6867*53ee8cc1Swenshuai.xi                 break;
6868*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
6869*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN3_DMAR_PROTECT_EN);
6870*53ee8cc1Swenshuai.xi                 break;
6871*53ee8cc1Swenshuai.xi             default:
6872*53ee8cc1Swenshuai.xi                 break;
6873*53ee8cc1Swenshuai.xi         }
6874*53ee8cc1Swenshuai.xi     }
6875*53ee8cc1Swenshuai.xi     else
6876*53ee8cc1Swenshuai.xi     {
6877*53ee8cc1Swenshuai.xi         switch(eFileEng)
6878*53ee8cc1Swenshuai.xi         {
6879*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
6880*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
6881*53ee8cc1Swenshuai.xi                 break;
6882*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
6883*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
6884*53ee8cc1Swenshuai.xi                 break;
6885*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
6886*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
6887*53ee8cc1Swenshuai.xi                 break;
6888*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
6889*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN3_DMAR_PROTECT_EN);
6890*53ee8cc1Swenshuai.xi                 break;
6891*53ee8cc1Swenshuai.xi             default:
6892*53ee8cc1Swenshuai.xi                 break;
6893*53ee8cc1Swenshuai.xi         }
6894*53ee8cc1Swenshuai.xi     }
6895*53ee8cc1Swenshuai.xi }
6896*53ee8cc1Swenshuai.xi 
HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32UpBoundAddr,MS_PHY u32LowBoundAddr)6897*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32UpBoundAddr, MS_PHY u32LowBoundAddr)
6898*53ee8cc1Swenshuai.xi {
6899*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
6900*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetLB, phyMiuOffsetUB;
6901*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetLB, u32LowBoundAddr);
6902*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetUB, u32UpBoundAddr);
6903*53ee8cc1Swenshuai.xi 
6904*53ee8cc1Swenshuai.xi     if (u8MiuSel >= E_CHIP_MIU_0){
6905*53ee8cc1Swenshuai.xi         MS_U32  u32LBnd = (MS_U32)((phyMiuOffsetLB >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
6906*53ee8cc1Swenshuai.xi         MS_U32  u32UBnd = (MS_U32)((phyMiuOffsetUB >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
6907*53ee8cc1Swenshuai.xi 
6908*53ee8cc1Swenshuai.xi         switch(eFileEng)
6909*53ee8cc1Swenshuai.xi         {
6910*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
6911*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_30_31, u32LBnd);
6912*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_32_33, u32UBnd);
6913*53ee8cc1Swenshuai.xi                 break;
6914*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
6915*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_34_35, u32LBnd);
6916*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_36_37, u32UBnd);
6917*53ee8cc1Swenshuai.xi                 break;
6918*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
6919*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_38_39, u32LBnd);
6920*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_3A_3B, u32UBnd);
6921*53ee8cc1Swenshuai.xi                 break;
6922*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
6923*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_3C_3D, u32LBnd);
6924*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_3E_3F, u32UBnd);
6925*53ee8cc1Swenshuai.xi                 break;
6926*53ee8cc1Swenshuai.xi             default:
6927*53ee8cc1Swenshuai.xi                 break;
6928*53ee8cc1Swenshuai.xi         }
6929*53ee8cc1Swenshuai.xi     }
6930*53ee8cc1Swenshuai.xi }
6931*53ee8cc1Swenshuai.xi 
HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)6932*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)
6933*53ee8cc1Swenshuai.xi {
6934*53ee8cc1Swenshuai.xi     if(bEnable)
6935*53ee8cc1Swenshuai.xi     {
6936*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
6937*53ee8cc1Swenshuai.xi         {
6938*53ee8cc1Swenshuai.xi             case 0:
6939*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
6940*53ee8cc1Swenshuai.xi                 break;
6941*53ee8cc1Swenshuai.xi             case 1:
6942*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
6943*53ee8cc1Swenshuai.xi                 break;
6944*53ee8cc1Swenshuai.xi             default:
6945*53ee8cc1Swenshuai.xi                 break;
6946*53ee8cc1Swenshuai.xi         }
6947*53ee8cc1Swenshuai.xi     }
6948*53ee8cc1Swenshuai.xi     else
6949*53ee8cc1Swenshuai.xi     {
6950*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
6951*53ee8cc1Swenshuai.xi         {
6952*53ee8cc1Swenshuai.xi             case 0:
6953*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
6954*53ee8cc1Swenshuai.xi                 break;
6955*53ee8cc1Swenshuai.xi             case 1:
6956*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
6957*53ee8cc1Swenshuai.xi                 break;
6958*53ee8cc1Swenshuai.xi             default:
6959*53ee8cc1Swenshuai.xi                 break;
6960*53ee8cc1Swenshuai.xi         }
6961*53ee8cc1Swenshuai.xi     }
6962*53ee8cc1Swenshuai.xi }
6963*53ee8cc1Swenshuai.xi 
HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32UpBoundAddr,MS_PHY u32LowBoundAddr)6964*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32UpBoundAddr, MS_PHY u32LowBoundAddr)
6965*53ee8cc1Swenshuai.xi {
6966*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
6967*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetLB, phyMiuOffsetUB;
6968*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetLB, u32LowBoundAddr);
6969*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetUB, u32UpBoundAddr);
6970*53ee8cc1Swenshuai.xi 
6971*53ee8cc1Swenshuai.xi     if (u8MiuSel >= E_CHIP_MIU_0){
6972*53ee8cc1Swenshuai.xi         MS_U32  u32LBnd = (MS_U32)((phyMiuOffsetLB >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
6973*53ee8cc1Swenshuai.xi         MS_U32  u32UBnd = (MS_U32)((phyMiuOffsetUB >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
6974*53ee8cc1Swenshuai.xi 
6975*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
6976*53ee8cc1Swenshuai.xi         {
6977*53ee8cc1Swenshuai.xi             case 0:
6978*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_48_49, u32LBnd);
6979*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_4A_4B, u32UBnd);
6980*53ee8cc1Swenshuai.xi                 break;
6981*53ee8cc1Swenshuai.xi             case 1:
6982*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_4C_4D, u32LBnd);
6983*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl6->CFG6_4E_4F, u32UBnd);
6984*53ee8cc1Swenshuai.xi                 break;
6985*53ee8cc1Swenshuai.xi             default:
6986*53ee8cc1Swenshuai.xi                 break;
6987*53ee8cc1Swenshuai.xi         }
6988*53ee8cc1Swenshuai.xi     }
6989*53ee8cc1Swenshuai.xi }
6990*53ee8cc1Swenshuai.xi 
6991*53ee8cc1Swenshuai.xi 
HAL_TSP_SaveFltState(void)6992*53ee8cc1Swenshuai.xi void HAL_TSP_SaveFltState(void)
6993*53ee8cc1Swenshuai.xi {
6994*53ee8cc1Swenshuai.xi     MS_U32              u32Size;
6995*53ee8cc1Swenshuai.xi     TSP32 *             pRegEnd;
6996*53ee8cc1Swenshuai.xi     TSP32 *             pReg;
6997*53ee8cc1Swenshuai.xi     int                 i, j;
6998*53ee8cc1Swenshuai.xi 
6999*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_PIDFLT_NUM; i++)
7000*53ee8cc1Swenshuai.xi     {
7001*53ee8cc1Swenshuai.xi          _u32PidFltReg[i] = TSP32_IdrR(&(_REGPid0->Flt[i]));
7002*53ee8cc1Swenshuai.xi          _u32PidDstReg[i] = TSP32_IdrR(&(_REGPid1->Flt[i]));
7003*53ee8cc1Swenshuai.xi     }
7004*53ee8cc1Swenshuai.xi 
7005*53ee8cc1Swenshuai.xi     u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
7006*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_SECFLT_NUM; i++)
7007*53ee8cc1Swenshuai.xi     {
7008*53ee8cc1Swenshuai.xi          pReg = (TSP32*)&(_REGSec->Flt[i]);
7009*53ee8cc1Swenshuai.xi          pRegEnd = pReg + u32Size;
7010*53ee8cc1Swenshuai.xi          j = 0;
7011*53ee8cc1Swenshuai.xi          for ( ; pReg < pRegEnd; pReg++)
7012*53ee8cc1Swenshuai.xi          {
7013*53ee8cc1Swenshuai.xi              _u32SecReg[i*u32Size+j] = TSP32_IdrR(pReg);
7014*53ee8cc1Swenshuai.xi              j++;
7015*53ee8cc1Swenshuai.xi          }
7016*53ee8cc1Swenshuai.xi     }
7017*53ee8cc1Swenshuai.xi }
7018*53ee8cc1Swenshuai.xi 
HAL_TSP_CMD_Run(MS_U32 u32Cmd,MS_U32 u32Config0,MS_U32 u32Config1,MS_U32 * pData)7019*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1, MS_U32* pData)
7020*53ee8cc1Swenshuai.xi {
7021*53ee8cc1Swenshuai.xi     MS_U32 u32Data = 0;
7022*53ee8cc1Swenshuai.xi     MS_BOOL brtn = FALSE;
7023*53ee8cc1Swenshuai.xi     //printf("\033[31m [%s] Mode = %lX , Config0 =%lX , Config1 = %lX \033[m\n",__FUNCTION__,u32Cmd,u32Config0,u32Config1);  // Eason test
7024*53ee8cc1Swenshuai.xi     switch (u32Cmd)
7025*53ee8cc1Swenshuai.xi     {
7026*53ee8cc1Swenshuai.xi         case HAL_DMX_CMD_RUN_DISABLE_SEC_CC_CHECK:
7027*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Data1, u32Config0);
7028*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SEC_CC_CHECK_DISABLE);
7029*53ee8cc1Swenshuai.xi             _delay(10); // supposed TSP is able to respond in 10us
7030*53ee8cc1Swenshuai.xi             u32Data = REG32_R(&_RegCtrl->MCU_Data1);
7031*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
7032*53ee8cc1Swenshuai.xi             brtn = (u32Data == TSP_MCU_CMD_SEC_CC_CHECK_DISABLE)? TRUE : FALSE;
7033*53ee8cc1Swenshuai.xi             break;
7034*53ee8cc1Swenshuai.xi         default:
7035*53ee8cc1Swenshuai.xi             break;
7036*53ee8cc1Swenshuai.xi     }
7037*53ee8cc1Swenshuai.xi     return brtn;
7038*53ee8cc1Swenshuai.xi }
7039*53ee8cc1Swenshuai.xi 
HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng,MS_BOOL bEnable)7040*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_BOOL bEnable)
7041*53ee8cc1Swenshuai.xi {
7042*53ee8cc1Swenshuai.xi     printf("[%s] not support!!\n",__FUNCTION__);
7043*53ee8cc1Swenshuai.xi     return FALSE;
7044*53ee8cc1Swenshuai.xi }
7045*53ee8cc1Swenshuai.xi 
HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng,MS_U16 u16CaPvrMode,MS_BOOL bEnable)7046*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng, MS_U16 u16CaPvrMode, MS_BOOL bEnable)
7047*53ee8cc1Swenshuai.xi {
7048*53ee8cc1Swenshuai.xi     MS_U16 u16value = REG16_R(&_RegCtrl3->CFG3_38);
7049*53ee8cc1Swenshuai.xi 
7050*53ee8cc1Swenshuai.xi     switch(u32Eng)
7051*53ee8cc1Swenshuai.xi     {
7052*53ee8cc1Swenshuai.xi         case 0:
7053*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR1_SEL_MASK|HW4_CFG38_PKT192_SPS_EN1);
7054*53ee8cc1Swenshuai.xi             break;
7055*53ee8cc1Swenshuai.xi         case 1:
7056*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR2_SEL_MASK|HW4_CFG38_PKT192_SPS_EN2);
7057*53ee8cc1Swenshuai.xi             break;
7058*53ee8cc1Swenshuai.xi         case 2:
7059*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR3_SEL_MASK|HW4_CFG38_PKT192_SPS_EN3);
7060*53ee8cc1Swenshuai.xi             break;
7061*53ee8cc1Swenshuai.xi         case 3:
7062*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR4_SEL_MASK|HW4_CFG38_PKT192_SPS_EN4);
7063*53ee8cc1Swenshuai.xi             break;
7064*53ee8cc1Swenshuai.xi         default:
7065*53ee8cc1Swenshuai.xi             return FALSE;
7066*53ee8cc1Swenshuai.xi     }
7067*53ee8cc1Swenshuai.xi 
7068*53ee8cc1Swenshuai.xi     if(bEnable)
7069*53ee8cc1Swenshuai.xi     {
7070*53ee8cc1Swenshuai.xi         switch(u32Eng)
7071*53ee8cc1Swenshuai.xi         {
7072*53ee8cc1Swenshuai.xi             case 0:
7073*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR1_SEL_SHIFT);
7074*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN1;
7075*53ee8cc1Swenshuai.xi                 break;
7076*53ee8cc1Swenshuai.xi             case 1:
7077*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR2_SEL_SHIFT);
7078*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN2;
7079*53ee8cc1Swenshuai.xi                 break;
7080*53ee8cc1Swenshuai.xi             case 2:
7081*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR3_SEL_SHIFT);
7082*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN3;
7083*53ee8cc1Swenshuai.xi                 break;
7084*53ee8cc1Swenshuai.xi             case 3:
7085*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR4_SEL_SHIFT);
7086*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN4;
7087*53ee8cc1Swenshuai.xi                 break;
7088*53ee8cc1Swenshuai.xi         }
7089*53ee8cc1Swenshuai.xi     }
7090*53ee8cc1Swenshuai.xi 
7091*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl3->CFG3_38, u16value);
7092*53ee8cc1Swenshuai.xi 
7093*53ee8cc1Swenshuai.xi     return TRUE;
7094*53ee8cc1Swenshuai.xi 
7095*53ee8cc1Swenshuai.xi }
7096*53ee8cc1Swenshuai.xi 
7097*53ee8cc1Swenshuai.xi //@TODO
7098*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng,MS_BOOL CTR_mode)7099*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng, MS_BOOL CTR_mode)
7100*53ee8cc1Swenshuai.xi {
7101*53ee8cc1Swenshuai.xi     switch(u32Eng)
7102*53ee8cc1Swenshuai.xi     {
7103*53ee8cc1Swenshuai.xi         case 0: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN1);
7104*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR1_KEY);
7105*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7106*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7107*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7108*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7109*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7110*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7111*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7112*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7113*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY1);
7114*53ee8cc1Swenshuai.xi                 break;
7115*53ee8cc1Swenshuai.xi         case 1: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN2);
7116*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR2_KEY);
7117*53ee8cc1Swenshuai.xi                 /*
7118*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x2222);//PVR SPS key
7119*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x2222);
7120*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x2222);
7121*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x2222);
7122*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x3333);
7123*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x3333);
7124*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x3333);
7125*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x3333);
7126*53ee8cc1Swenshuai.xi                 */
7127*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7128*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7129*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7130*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7131*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7132*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7133*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7134*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7135*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY2);
7136*53ee8cc1Swenshuai.xi                 break;
7137*53ee8cc1Swenshuai.xi         case 2: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN3);
7138*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR3_KEY);
7139*53ee8cc1Swenshuai.xi                 /*
7140*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x4444);//PVR SPS key
7141*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x4444);
7142*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x4444);
7143*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x4444);
7144*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x5555);
7145*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x5555);
7146*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x5555);
7147*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x5555);
7148*53ee8cc1Swenshuai.xi                 */
7149*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7150*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7151*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7152*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7153*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7154*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7155*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7156*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7157*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY3);
7158*53ee8cc1Swenshuai.xi                 break;
7159*53ee8cc1Swenshuai.xi         case 3: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN4);
7160*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR4_KEY);
7161*53ee8cc1Swenshuai.xi                 /*
7162*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x6666);//PVR SPS key
7163*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x6666);
7164*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x6666);
7165*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x6666);
7166*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x7777);
7167*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x7777);
7168*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x7777);
7169*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x7777);
7170*53ee8cc1Swenshuai.xi                 */
7171*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7172*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7173*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7174*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7175*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7176*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7177*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7178*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7179*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY4);
7180*53ee8cc1Swenshuai.xi                 break;
7181*53ee8cc1Swenshuai.xi         default: printf("Not Support !!\n");
7182*53ee8cc1Swenshuai.xi                  break;
7183*53ee8cc1Swenshuai.xi     }
7184*53ee8cc1Swenshuai.xi 
7185*53ee8cc1Swenshuai.xi     if(CTR_mode == TRUE)
7186*53ee8cc1Swenshuai.xi     {
7187*53ee8cc1Swenshuai.xi         printf("SPS CTR mode = %p\n",&(_RegCtrl8[u32Eng].CFG8_05));
7188*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_CTR_MODE_SPS_PVR1);   //set CTR mode
7189*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[0]), 0x0000);                 //set counter IV
7190*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[1]), 0x0000);
7191*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[2]), 0x0000);
7192*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[3]), 0x0000);
7193*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_04), CFG8_04_CTR_IV_SPS_MAX_1K);    //set counter IV max vld
7194*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_LOAD_INIT_CNT_SPS1);  //load counter IV
7195*53ee8cc1Swenshuai.xi     }
7196*53ee8cc1Swenshuai.xi }
7197*53ee8cc1Swenshuai.xi #endif
7198*53ee8cc1Swenshuai.xi 
7199*53ee8cc1Swenshuai.xi // u32GroupId: 0 -> filter0  ~ filter31
7200*53ee8cc1Swenshuai.xi // u32GroupId: 1 -> filter32 ~ filter63
7201*53ee8cc1Swenshuai.xi // u32GroupId: 2 -> filter64 ~ filter95
7202*53ee8cc1Swenshuai.xi // u32GroupId: 3 -> filter96 ~ filter127
7203*53ee8cc1Swenshuai.xi // u32GroupId: 4 -> filter128 ~ filter159
7204*53ee8cc1Swenshuai.xi // u32GroupId: 5 -> filter160 ~ filter191
7205*53ee8cc1Swenshuai.xi 
7206*53ee8cc1Swenshuai.xi 
HAL_DSCMB_GetStatus(MS_U32 u32PktDmx,MS_U32 u32GroupId,MS_U32 u32PidFltId,MS_U32 * pu32ScmbSts)7207*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_GetStatus(MS_U32 u32PktDmx, MS_U32 u32GroupId, MS_U32 u32PidFltId, MS_U32 *pu32ScmbSts)
7208*53ee8cc1Swenshuai.xi {
7209*53ee8cc1Swenshuai.xi     MS_U16              u16PktDmxSrc;
7210*53ee8cc1Swenshuai.xi     MS_U16              u16WordId;
7211*53ee8cc1Swenshuai.xi     MS_U32              u32PIDFltMask = u32PidFltId;
7212*53ee8cc1Swenshuai.xi 
7213*53ee8cc1Swenshuai.xi     if(u32PidFltId != 0xFFFFFFFF)
7214*53ee8cc1Swenshuai.xi     {
7215*53ee8cc1Swenshuai.xi         u32PIDFltMask = (1 << (u32PidFltId & 0x1F));
7216*53ee8cc1Swenshuai.xi     }
7217*53ee8cc1Swenshuai.xi 
7218*53ee8cc1Swenshuai.xi     u16PktDmxSrc = _CLR_(REG16_R(&_RegCtrl->reg15b8), TSP_MATCH_PID_SRC_MASK);
7219*53ee8cc1Swenshuai.xi 
7220*53ee8cc1Swenshuai.xi     switch(u32PktDmx)
7221*53ee8cc1Swenshuai.xi     {
7222*53ee8cc1Swenshuai.xi         case 0:
7223*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX0 << TSP_MATCH_PID_SRC_SHIFT);
7224*53ee8cc1Swenshuai.xi             break;
7225*53ee8cc1Swenshuai.xi         case 1:
7226*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX1 << TSP_MATCH_PID_SRC_SHIFT);
7227*53ee8cc1Swenshuai.xi             break;
7228*53ee8cc1Swenshuai.xi         case 2:
7229*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX2 << TSP_MATCH_PID_SRC_SHIFT);
7230*53ee8cc1Swenshuai.xi             break;
7231*53ee8cc1Swenshuai.xi         case 3:
7232*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX3 << TSP_MATCH_PID_SRC_SHIFT);
7233*53ee8cc1Swenshuai.xi             break;
7234*53ee8cc1Swenshuai.xi         default:
7235*53ee8cc1Swenshuai.xi             break;
7236*53ee8cc1Swenshuai.xi     }
7237*53ee8cc1Swenshuai.xi 
7238*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->reg15b8, u16PktDmxSrc);
7239*53ee8cc1Swenshuai.xi 
7240*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // Set 1 to load match_pid_num
7241*53ee8cc1Swenshuai.xi 
7242*53ee8cc1Swenshuai.xi     // get status
7243*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // freeze
7244*53ee8cc1Swenshuai.xi 
7245*53ee8cc1Swenshuai.xi     u16WordId =  _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_SEL_MASK);
7246*53ee8cc1Swenshuai.xi 
7247*53ee8cc1Swenshuai.xi     if (u32GroupId < 6)
7248*53ee8cc1Swenshuai.xi     {
7249*53ee8cc1Swenshuai.xi         u16WordId = _SET_(u16WordId, u32GroupId << TSP_MATCH_PID_SEL_SHIFT);
7250*53ee8cc1Swenshuai.xi         REG16_MSK_W(&_RegCtrl->PVRConfig,TSP_MATCH_PID_SEL_MASK,u16WordId);
7251*53ee8cc1Swenshuai.xi     }
7252*53ee8cc1Swenshuai.xi     else
7253*53ee8cc1Swenshuai.xi     {
7254*53ee8cc1Swenshuai.xi         printf("[TSP_ERR][%s][%d] Unsupported u32GroupId (%lu)!!!\n",__FUNCTION__, __LINE__, (long unsigned int)u32GroupId);
7255*53ee8cc1Swenshuai.xi     }
7256*53ee8cc1Swenshuai.xi 
7257*53ee8cc1Swenshuai.xi     *pu32ScmbSts = _AND_(REG32_R(&_RegCtrl->TsPidScmbStatTsin), u32PIDFltMask);
7258*53ee8cc1Swenshuai.xi 
7259*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // re-enable
7260*53ee8cc1Swenshuai.xi 
7261*53ee8cc1Swenshuai.xi     if(u32PIDFltMask != 0xFFFFFFFF)
7262*53ee8cc1Swenshuai.xi     {
7263*53ee8cc1Swenshuai.xi         *pu32ScmbSts = ((*pu32ScmbSts > 0) ? 1: 0);
7264*53ee8cc1Swenshuai.xi     }
7265*53ee8cc1Swenshuai.xi 
7266*53ee8cc1Swenshuai.xi     return TRUE;
7267*53ee8cc1Swenshuai.xi }
7268*53ee8cc1Swenshuai.xi 
7269*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
7270*53ee8cc1Swenshuai.xi // Merge Stream
7271*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path,MS_U8 u8Idx,MS_U8 * pu8SyncByte,MS_BOOL bSet)7272*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path, MS_U8 u8Idx, MS_U8 *pu8SyncByte, MS_BOOL bSet)
7273*53ee8cc1Swenshuai.xi {
7274*53ee8cc1Swenshuai.xi     REG16 *SynReg=0;
7275*53ee8cc1Swenshuai.xi     MS_U16 u16Mask = 0x00FF, u16Sync = 0, u16Shift = 0;
7276*53ee8cc1Swenshuai.xi 
7277*53ee8cc1Swenshuai.xi     switch(u8Path)
7278*53ee8cc1Swenshuai.xi     {
7279*53ee8cc1Swenshuai.xi         case TSP_TSIF0:
7280*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif0[u8Idx>>1]);
7281*53ee8cc1Swenshuai.xi             break;
7282*53ee8cc1Swenshuai.xi         case TSP_TSIF1:
7283*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif1[u8Idx>>1]);
7284*53ee8cc1Swenshuai.xi             break;
7285*53ee8cc1Swenshuai.xi         case TSP_TSIF2:
7286*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif2[u8Idx>>1]);
7287*53ee8cc1Swenshuai.xi             break;
7288*53ee8cc1Swenshuai.xi         case TSP_TSIF3:
7289*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif3[u8Idx>>1]);
7290*53ee8cc1Swenshuai.xi             break;
7291*53ee8cc1Swenshuai.xi         default:
7292*53ee8cc1Swenshuai.xi             return FALSE;
7293*53ee8cc1Swenshuai.xi     }
7294*53ee8cc1Swenshuai.xi 
7295*53ee8cc1Swenshuai.xi 
7296*53ee8cc1Swenshuai.xi     if(u8Idx & 0x1)
7297*53ee8cc1Swenshuai.xi     {
7298*53ee8cc1Swenshuai.xi         u16Shift = 8;
7299*53ee8cc1Swenshuai.xi     }
7300*53ee8cc1Swenshuai.xi 
7301*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
7302*53ee8cc1Swenshuai.xi     {
7303*53ee8cc1Swenshuai.xi         u16Sync = (MS_U16)(*pu8SyncByte & 0xFF);
7304*53ee8cc1Swenshuai.xi         REG16_W(SynReg,((REG16_R(SynReg) & ~(u16Mask << u16Shift)) | (u16Sync << u16Shift)));
7305*53ee8cc1Swenshuai.xi     }
7306*53ee8cc1Swenshuai.xi     else
7307*53ee8cc1Swenshuai.xi     {
7308*53ee8cc1Swenshuai.xi         u16Sync = (REG16_R(SynReg) & (u16Mask << u16Shift)) >> u16Shift;
7309*53ee8cc1Swenshuai.xi         *pu8SyncByte = (MS_U8)u16Sync;
7310*53ee8cc1Swenshuai.xi     }
7311*53ee8cc1Swenshuai.xi 
7312*53ee8cc1Swenshuai.xi     return TRUE;
7313*53ee8cc1Swenshuai.xi 
7314*53ee8cc1Swenshuai.xi }
7315*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path,MS_U8 u8Idx,MS_U8 * pu8SrcId,MS_BOOL bSet)7316*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path, MS_U8 u8Idx, MS_U8 *pu8SrcId, MS_BOOL bSet)
7317*53ee8cc1Swenshuai.xi {
7318*53ee8cc1Swenshuai.xi     REG16 *SrcIdReg =0;
7319*53ee8cc1Swenshuai.xi     MS_U16 u16SrcId = 0, u16Mask = 0x000F, u16Shift = 0;
7320*53ee8cc1Swenshuai.xi 
7321*53ee8cc1Swenshuai.xi     switch(u8Path)
7322*53ee8cc1Swenshuai.xi     {
7323*53ee8cc1Swenshuai.xi         case TSP_TSIF0:
7324*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif0[u8Idx>>2]);
7325*53ee8cc1Swenshuai.xi             break;
7326*53ee8cc1Swenshuai.xi         case TSP_TSIF1:
7327*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif1[u8Idx>>2]);
7328*53ee8cc1Swenshuai.xi             break;
7329*53ee8cc1Swenshuai.xi         case TSP_TSIF2:
7330*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif2[u8Idx>>2]);
7331*53ee8cc1Swenshuai.xi             break;
7332*53ee8cc1Swenshuai.xi         case TSP_TSIF3:
7333*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif3[u8Idx>>2]);
7334*53ee8cc1Swenshuai.xi             break;
7335*53ee8cc1Swenshuai.xi         default:
7336*53ee8cc1Swenshuai.xi             return FALSE;
7337*53ee8cc1Swenshuai.xi     }
7338*53ee8cc1Swenshuai.xi 
7339*53ee8cc1Swenshuai.xi     switch(u8Idx & 0x3)
7340*53ee8cc1Swenshuai.xi     {
7341*53ee8cc1Swenshuai.xi         case 0x1:
7342*53ee8cc1Swenshuai.xi             u16Shift = 4;
7343*53ee8cc1Swenshuai.xi             break;
7344*53ee8cc1Swenshuai.xi         case 0x2:
7345*53ee8cc1Swenshuai.xi             u16Shift = 8;
7346*53ee8cc1Swenshuai.xi             break;
7347*53ee8cc1Swenshuai.xi         case 0x3:
7348*53ee8cc1Swenshuai.xi             u16Shift = 12;
7349*53ee8cc1Swenshuai.xi             break;
7350*53ee8cc1Swenshuai.xi     }
7351*53ee8cc1Swenshuai.xi 
7352*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
7353*53ee8cc1Swenshuai.xi     {
7354*53ee8cc1Swenshuai.xi         u16SrcId = (MS_U16)(*pu8SrcId & 0xFF);
7355*53ee8cc1Swenshuai.xi         REG16_W(SrcIdReg,((REG16_R(SrcIdReg) & ~(u16Mask << u16Shift)) | (u16SrcId << u16Shift)));
7356*53ee8cc1Swenshuai.xi     }
7357*53ee8cc1Swenshuai.xi     else
7358*53ee8cc1Swenshuai.xi     {
7359*53ee8cc1Swenshuai.xi         u16SrcId = (REG16_R(SrcIdReg) & (u16Mask << u16Shift)) >> u16Shift;
7360*53ee8cc1Swenshuai.xi         *pu8SrcId = (MS_U8)u16SrcId;
7361*53ee8cc1Swenshuai.xi     }
7362*53ee8cc1Swenshuai.xi 
7363*53ee8cc1Swenshuai.xi     return TRUE;
7364*53ee8cc1Swenshuai.xi }
7365*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path,MS_U8 u8PktHeaderLen)7366*53ee8cc1Swenshuai.xi static void HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path, MS_U8 u8PktHeaderLen)
7367*53ee8cc1Swenshuai.xi {
7368*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7369*53ee8cc1Swenshuai.xi 
7370*53ee8cc1Swenshuai.xi     REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_MXL_PKT_HEADER_MASK)) | ((u8PktHeaderLen << TSP_MXL_PKT_HEADER_SHIFT) & TSP_MXL_PKT_HEADER_MASK)));
7371*53ee8cc1Swenshuai.xi }
7372*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_PktMode(MS_U8 u8Path,TSP_HAL_PKT_MODE ePktMode)7373*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_PktMode(MS_U8 u8Path, TSP_HAL_PKT_MODE ePktMode)
7374*53ee8cc1Swenshuai.xi {
7375*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7376*53ee8cc1Swenshuai.xi 
7377*53ee8cc1Swenshuai.xi     switch(ePktMode)
7378*53ee8cc1Swenshuai.xi     {
7379*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_NORMAL:
7380*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_188Mode));
7381*53ee8cc1Swenshuai.xi             break;
7382*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_CI:
7383*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_CIMode));
7384*53ee8cc1Swenshuai.xi             break;
7385*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_OPEN_CABLE:
7386*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_OpenCableMode));
7387*53ee8cc1Swenshuai.xi             break;
7388*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_ATS:
7389*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_ATSMode));
7390*53ee8cc1Swenshuai.xi             break;
7391*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_192:
7392*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7393*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,4);
7394*53ee8cc1Swenshuai.xi             break;
7395*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_196:
7396*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7397*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,8);
7398*53ee8cc1Swenshuai.xi             break;
7399*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_200:
7400*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7401*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,12);
7402*53ee8cc1Swenshuai.xi             break;
7403*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_ND:
7404*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_NagraDongleMode));
7405*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,1);
7406*53ee8cc1Swenshuai.xi             break;
7407*53ee8cc1Swenshuai.xi         default:
7408*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong PktConverter Packet Mode!!!\n",__FUNCTION__,__LINE__);
7409*53ee8cc1Swenshuai.xi             return FALSE;
7410*53ee8cc1Swenshuai.xi     }
7411*53ee8cc1Swenshuai.xi 
7412*53ee8cc1Swenshuai.xi     return TRUE;
7413*53ee8cc1Swenshuai.xi }
7414*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path,MS_BOOL bEnable)7415*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path, MS_BOOL bEnable)
7416*53ee8cc1Swenshuai.xi {
7417*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7418*53ee8cc1Swenshuai.xi 
7419*53ee8cc1Swenshuai.xi     if(bEnable)
7420*53ee8cc1Swenshuai.xi     {
7421*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _SET_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47)); // Set 1 to force sync byte be 0x47
7422*53ee8cc1Swenshuai.xi     }
7423*53ee8cc1Swenshuai.xi     else
7424*53ee8cc1Swenshuai.xi     {
7425*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47));
7426*53ee8cc1Swenshuai.xi     }
7427*53ee8cc1Swenshuai.xi }
7428*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SrcIdFlt(MS_U8 u8Path,MS_BOOL bEnable)7429*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_SrcIdFlt(MS_U8 u8Path, MS_BOOL bEnable)
7430*53ee8cc1Swenshuai.xi {
7431*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7432*53ee8cc1Swenshuai.xi 
7433*53ee8cc1Swenshuai.xi     if(bEnable)
7434*53ee8cc1Swenshuai.xi     {
7435*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
7436*53ee8cc1Swenshuai.xi     }
7437*53ee8cc1Swenshuai.xi     else
7438*53ee8cc1Swenshuai.xi     {
7439*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_SRC_ID_FLT_EN));
7440*53ee8cc1Swenshuai.xi     }
7441*53ee8cc1Swenshuai.xi }
7442*53ee8cc1Swenshuai.xi 
7443*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId,MS_U32 u32SrcId)7444*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId, MS_U32 u32SrcId)
7445*53ee8cc1Swenshuai.xi {
7446*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
7447*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcId << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
7448*53ee8cc1Swenshuai.xi }
7449*53ee8cc1Swenshuai.xi 
HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)7450*53ee8cc1Swenshuai.xi void HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)
7451*53ee8cc1Swenshuai.xi {
7452*53ee8cc1Swenshuai.xi     MS_U8   u8Id;
7453*53ee8cc1Swenshuai.xi     MS_U8   u8SyncByte;
7454*53ee8cc1Swenshuai.xi 
7455*53ee8cc1Swenshuai.xi     u8SyncByte = 0x47;
7456*53ee8cc1Swenshuai.xi     for(u8Id = 0; u8Id < TSP_MERGESTREAM_NUM; u8Id++,u8SyncByte++)
7457*53ee8cc1Swenshuai.xi     {
7458*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Id, &u8SyncByte, TRUE);
7459*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SetSrcId(u8Path, u8Id, &u8Id, TRUE);
7460*53ee8cc1Swenshuai.xi     }
7461*53ee8cc1Swenshuai.xi     HAL_TSP_PktConverter_PktMode(u8Path,E_TSP_HAL_PKT_MODE_NORMAL);
7462*53ee8cc1Swenshuai.xi }
7463*53ee8cc1Swenshuai.xi 
7464*53ee8cc1Swenshuai.xi 
7465*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
7466*53ee8cc1Swenshuai.xi //  For Debug Table
7467*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
7468*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)7469*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)
7470*53ee8cc1Swenshuai.xi {
7471*53ee8cc1Swenshuai.xi     switch (eFlow)
7472*53ee8cc1Swenshuai.xi     {
7473*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE0:
7474*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX0;
7475*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE1:
7476*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
7477*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE2:
7478*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
7479*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE3:
7480*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX1;
7481*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE0:
7482*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX1;
7483*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE1:
7484*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
7485*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE2:
7486*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX0;
7487*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE3:
7488*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
7489*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_MMFI0:
7490*53ee8cc1Swenshuai.xi             return E_TSP_SRC_MMFI0;
7491*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_MMFI1:
7492*53ee8cc1Swenshuai.xi             return E_TSP_SRC_MMFI1;
7493*53ee8cc1Swenshuai.xi         default:
7494*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] UnSupported Debug Flow : %d !!!\n",__FUNCTION__, __LINE__,eFlow);
7495*53ee8cc1Swenshuai.xi             return E_TSP_SRC_INVALID;
7496*53ee8cc1Swenshuai.xi     }
7497*53ee8cc1Swenshuai.xi }
7498*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)7499*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)
7500*53ee8cc1Swenshuai.xi {
7501*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
7502*53ee8cc1Swenshuai.xi 
7503*53ee8cc1Swenshuai.xi     switch(u32TsIf)
7504*53ee8cc1Swenshuai.xi     {
7505*53ee8cc1Swenshuai.xi         case 0:
7506*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
7507*53ee8cc1Swenshuai.xi             break;
7508*53ee8cc1Swenshuai.xi         case 1:
7509*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
7510*53ee8cc1Swenshuai.xi             break;
7511*53ee8cc1Swenshuai.xi         case 2:
7512*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
7513*53ee8cc1Swenshuai.xi             break;
7514*53ee8cc1Swenshuai.xi         case 3:
7515*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
7516*53ee8cc1Swenshuai.xi             break;
7517*53ee8cc1Swenshuai.xi         default:
7518*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7519*53ee8cc1Swenshuai.xi             break;
7520*53ee8cc1Swenshuai.xi     }
7521*53ee8cc1Swenshuai.xi 
7522*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_TSIF_SRC_SEL_MASK,(u16TSIF << CFG5_7F_TSIF_SRC_SEL_SHIFT));
7523*53ee8cc1Swenshuai.xi }
7524*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)7525*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
7526*53ee8cc1Swenshuai.xi {
7527*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7528*53ee8cc1Swenshuai.xi     {
7529*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7530*53ee8cc1Swenshuai.xi         {
7531*53ee8cc1Swenshuai.xi             case 0:
7532*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
7533*53ee8cc1Swenshuai.xi                 break;
7534*53ee8cc1Swenshuai.xi             case 1:
7535*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
7536*53ee8cc1Swenshuai.xi                 break;
7537*53ee8cc1Swenshuai.xi             case 2:
7538*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
7539*53ee8cc1Swenshuai.xi                 break;
7540*53ee8cc1Swenshuai.xi             case 3:
7541*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_3_LOAD);
7542*53ee8cc1Swenshuai.xi                 break;
7543*53ee8cc1Swenshuai.xi             default:
7544*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7545*53ee8cc1Swenshuai.xi                 break;
7546*53ee8cc1Swenshuai.xi         }
7547*53ee8cc1Swenshuai.xi     }
7548*53ee8cc1Swenshuai.xi     else
7549*53ee8cc1Swenshuai.xi     {
7550*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7551*53ee8cc1Swenshuai.xi         {
7552*53ee8cc1Swenshuai.xi             case 0:
7553*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
7554*53ee8cc1Swenshuai.xi                 break;
7555*53ee8cc1Swenshuai.xi             case 1:
7556*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
7557*53ee8cc1Swenshuai.xi                 break;
7558*53ee8cc1Swenshuai.xi             case 2:
7559*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
7560*53ee8cc1Swenshuai.xi                 break;
7561*53ee8cc1Swenshuai.xi             case 3:
7562*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_3_LOAD);
7563*53ee8cc1Swenshuai.xi                 break;
7564*53ee8cc1Swenshuai.xi             default:
7565*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7566*53ee8cc1Swenshuai.xi                 break;
7567*53ee8cc1Swenshuai.xi         }
7568*53ee8cc1Swenshuai.xi     }
7569*53ee8cc1Swenshuai.xi 
7570*53ee8cc1Swenshuai.xi }
7571*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf,MS_BOOL bLock)7572*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf, MS_BOOL bLock)
7573*53ee8cc1Swenshuai.xi {
7574*53ee8cc1Swenshuai.xi     if(bLock)  // 188 mode
7575*53ee8cc1Swenshuai.xi     {
7576*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
7577*53ee8cc1Swenshuai.xi     }
7578*53ee8cc1Swenshuai.xi     else       // Non 188 mode
7579*53ee8cc1Swenshuai.xi     {
7580*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
7581*53ee8cc1Swenshuai.xi     }
7582*53ee8cc1Swenshuai.xi 
7583*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Locked_PKT_Cnt);
7584*53ee8cc1Swenshuai.xi }
7585*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)7586*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)
7587*53ee8cc1Swenshuai.xi {
7588*53ee8cc1Swenshuai.xi     switch (u32Tsif)
7589*53ee8cc1Swenshuai.xi     {
7590*53ee8cc1Swenshuai.xi         case 0 :
7591*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
7592*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
7593*53ee8cc1Swenshuai.xi             break;
7594*53ee8cc1Swenshuai.xi         case 1:
7595*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
7596*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
7597*53ee8cc1Swenshuai.xi             break;
7598*53ee8cc1Swenshuai.xi         case 2:
7599*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
7600*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
7601*53ee8cc1Swenshuai.xi             break;
7602*53ee8cc1Swenshuai.xi         case 3:
7603*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_3_CLR);
7604*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_3_CLR);
7605*53ee8cc1Swenshuai.xi             break;
7606*53ee8cc1Swenshuai.xi         default :
7607*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
7608*53ee8cc1Swenshuai.xi             break;
7609*53ee8cc1Swenshuai.xi     }
7610*53ee8cc1Swenshuai.xi }
7611*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)7612*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)
7613*53ee8cc1Swenshuai.xi {
7614*53ee8cc1Swenshuai.xi     switch (eClrSrc)
7615*53ee8cc1Swenshuai.xi     {
7616*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7617*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX0 << CFG5_7F_CLR_SRC_SHIFT);
7618*53ee8cc1Swenshuai.xi             break;
7619*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7620*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX1 << CFG5_7F_CLR_SRC_SHIFT);
7621*53ee8cc1Swenshuai.xi             break;
7622*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7623*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX2 << CFG5_7F_CLR_SRC_SHIFT);
7624*53ee8cc1Swenshuai.xi             break;
7625*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7626*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX3 << CFG5_7F_CLR_SRC_SHIFT);
7627*53ee8cc1Swenshuai.xi             break;
7628*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7629*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI0 << CFG5_7F_CLR_SRC_SHIFT);
7630*53ee8cc1Swenshuai.xi             break;
7631*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7632*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI1 << CFG5_7F_CLR_SRC_SHIFT);
7633*53ee8cc1Swenshuai.xi             break;
7634*53ee8cc1Swenshuai.xi         default:
7635*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported Clear Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,eClrSrc);
7636*53ee8cc1Swenshuai.xi             break;
7637*53ee8cc1Swenshuai.xi     }
7638*53ee8cc1Swenshuai.xi }
7639*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)7640*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType, TSP_SRC_SEQ ePktDmxId)
7641*53ee8cc1Swenshuai.xi {
7642*53ee8cc1Swenshuai.xi     MS_U16 u16AvSrc = 0;
7643*53ee8cc1Swenshuai.xi 
7644*53ee8cc1Swenshuai.xi     switch(ePktDmxId)
7645*53ee8cc1Swenshuai.xi     {
7646*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7647*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX0;
7648*53ee8cc1Swenshuai.xi             break;
7649*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7650*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX1;
7651*53ee8cc1Swenshuai.xi             break;
7652*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7653*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX2;
7654*53ee8cc1Swenshuai.xi             break;
7655*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7656*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX3;
7657*53ee8cc1Swenshuai.xi             break;
7658*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7659*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_MMFI0;
7660*53ee8cc1Swenshuai.xi             break;
7661*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7662*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_MMFI1;
7663*53ee8cc1Swenshuai.xi             break;
7664*53ee8cc1Swenshuai.xi         default:
7665*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Source : %d!\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
7666*53ee8cc1Swenshuai.xi             break;
7667*53ee8cc1Swenshuai.xi     }
7668*53ee8cc1Swenshuai.xi 
7669*53ee8cc1Swenshuai.xi     switch (eAvType)
7670*53ee8cc1Swenshuai.xi     {
7671*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7672*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_SRC_MASK, u16AvSrc << CFG5_7E_VID_SRC_SHIFT);
7673*53ee8cc1Swenshuai.xi             break;
7674*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
7675*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_3D_SRC_MASK, u16AvSrc << CFG5_7E_VID_3D_SRC_SHIFT);
7676*53ee8cc1Swenshuai.xi             break;
7677*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7678*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDA_SRC_MASK, u16AvSrc << CFG5_7E_AUDA_SRC_SHIFT);
7679*53ee8cc1Swenshuai.xi             break;
7680*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7681*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDB_SRC_MASK, u16AvSrc << CFG5_7E_AUDB_SRC_SHIFT);
7682*53ee8cc1Swenshuai.xi             break;
7683*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7684*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_AUDC_SRC_MASK, u16AvSrc << CFG5_78_AUDC_SRC_SHIFT);
7685*53ee8cc1Swenshuai.xi             break;
7686*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7687*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_AUDD_SRC_MASK, u16AvSrc << CFG5_78_AUDD_SRC_SHIFT);
7688*53ee8cc1Swenshuai.xi             break;
7689*53ee8cc1Swenshuai.xi         default:
7690*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7691*53ee8cc1Swenshuai.xi             break;
7692*53ee8cc1Swenshuai.xi     }
7693*53ee8cc1Swenshuai.xi }
7694*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)7695*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType, MS_BOOL bEn)
7696*53ee8cc1Swenshuai.xi {
7697*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7698*53ee8cc1Swenshuai.xi     {
7699*53ee8cc1Swenshuai.xi         switch (eAvType)
7700*53ee8cc1Swenshuai.xi         {
7701*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7702*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
7703*53ee8cc1Swenshuai.xi                 break;
7704*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7705*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
7706*53ee8cc1Swenshuai.xi                 break;
7707*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7708*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
7709*53ee8cc1Swenshuai.xi                 break;
7710*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7711*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
7712*53ee8cc1Swenshuai.xi                 break;
7713*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7714*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_ADC_PKT_CNT_LOAD);
7715*53ee8cc1Swenshuai.xi                 break;
7716*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7717*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_ADD_PKT_CNT_LOAD);
7718*53ee8cc1Swenshuai.xi                 break;
7719*53ee8cc1Swenshuai.xi             default :
7720*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7721*53ee8cc1Swenshuai.xi                 break;
7722*53ee8cc1Swenshuai.xi         }
7723*53ee8cc1Swenshuai.xi     }
7724*53ee8cc1Swenshuai.xi     else
7725*53ee8cc1Swenshuai.xi     {
7726*53ee8cc1Swenshuai.xi         switch (eAvType)
7727*53ee8cc1Swenshuai.xi         {
7728*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7729*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
7730*53ee8cc1Swenshuai.xi                 break;
7731*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7732*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
7733*53ee8cc1Swenshuai.xi                 break;
7734*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7735*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
7736*53ee8cc1Swenshuai.xi                 break;
7737*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7738*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
7739*53ee8cc1Swenshuai.xi                 break;
7740*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7741*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_ADC_PKT_CNT_LOAD);
7742*53ee8cc1Swenshuai.xi                 break;
7743*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7744*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_ADD_PKT_CNT_LOAD);
7745*53ee8cc1Swenshuai.xi                 break;
7746*53ee8cc1Swenshuai.xi             default :
7747*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7748*53ee8cc1Swenshuai.xi                 break;
7749*53ee8cc1Swenshuai.xi         }
7750*53ee8cc1Swenshuai.xi     }
7751*53ee8cc1Swenshuai.xi }
7752*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)7753*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)
7754*53ee8cc1Swenshuai.xi {
7755*53ee8cc1Swenshuai.xi     switch (eAvType)
7756*53ee8cc1Swenshuai.xi     {
7757*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7758*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7759*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
7760*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
7761*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7762*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
7763*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7764*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7765*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
7766*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7767*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
7768*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
7769*53ee8cc1Swenshuai.xi         default :
7770*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7771*53ee8cc1Swenshuai.xi             return 0;
7772*53ee8cc1Swenshuai.xi     }
7773*53ee8cc1Swenshuai.xi }
7774*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)7775*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)
7776*53ee8cc1Swenshuai.xi {
7777*53ee8cc1Swenshuai.xi     switch (eAvType)
7778*53ee8cc1Swenshuai.xi     {
7779*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7780*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
7781*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
7782*53ee8cc1Swenshuai.xi             break;
7783*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
7784*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
7785*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
7786*53ee8cc1Swenshuai.xi             break;
7787*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7788*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
7789*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
7790*53ee8cc1Swenshuai.xi             break;
7791*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7792*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
7793*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
7794*53ee8cc1Swenshuai.xi             break;
7795*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7796*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_ADC_PKT_CNT_CLR);
7797*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_ADC_PKT_CNT_CLR);
7798*53ee8cc1Swenshuai.xi             break;
7799*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7800*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_ADD_PKT_CNT_CLR);
7801*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_ADD_PKT_CNT_CLR);
7802*53ee8cc1Swenshuai.xi             break;
7803*53ee8cc1Swenshuai.xi         default :
7804*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7805*53ee8cc1Swenshuai.xi             break;
7806*53ee8cc1Swenshuai.xi     }
7807*53ee8cc1Swenshuai.xi }
7808*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)7809*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)
7810*53ee8cc1Swenshuai.xi {
7811*53ee8cc1Swenshuai.xi     MS_U16 u16AvType = 0;
7812*53ee8cc1Swenshuai.xi 
7813*53ee8cc1Swenshuai.xi     switch(eAvType)
7814*53ee8cc1Swenshuai.xi     {
7815*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
7816*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V;
7817*53ee8cc1Swenshuai.xi             break;
7818*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
7819*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V3D;
7820*53ee8cc1Swenshuai.xi             break;
7821*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
7822*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_A;
7823*53ee8cc1Swenshuai.xi             break;
7824*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
7825*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_AD;
7826*53ee8cc1Swenshuai.xi             break;
7827*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
7828*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_ADC;
7829*53ee8cc1Swenshuai.xi             break;
7830*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
7831*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_ADD;
7832*53ee8cc1Swenshuai.xi             break;
7833*53ee8cc1Swenshuai.xi         default:
7834*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7835*53ee8cc1Swenshuai.xi             break;
7836*53ee8cc1Swenshuai.xi     }
7837*53ee8cc1Swenshuai.xi 
7838*53ee8cc1Swenshuai.xi     switch(ePktDmxId)
7839*53ee8cc1Swenshuai.xi     {
7840*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7841*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL_SHIFT));
7842*53ee8cc1Swenshuai.xi             break;
7843*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7844*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL1_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL1_SHIFT));
7845*53ee8cc1Swenshuai.xi             break;
7846*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7847*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL2_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL2_SHIFT));
7848*53ee8cc1Swenshuai.xi             break;
7849*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7850*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL3_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL3_SHIFT));
7851*53ee8cc1Swenshuai.xi             break;
7852*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7853*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI0_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI0_SHIFT));
7854*53ee8cc1Swenshuai.xi             break;
7855*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7856*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI1_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI1_SHIFT));
7857*53ee8cc1Swenshuai.xi             break;
7858*53ee8cc1Swenshuai.xi         default:
7859*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV FIFO Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
7860*53ee8cc1Swenshuai.xi             break;
7861*53ee8cc1Swenshuai.xi     }
7862*53ee8cc1Swenshuai.xi }
7863*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)7864*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)
7865*53ee8cc1Swenshuai.xi {
7866*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7867*53ee8cc1Swenshuai.xi     {
7868*53ee8cc1Swenshuai.xi         switch (eAvType)
7869*53ee8cc1Swenshuai.xi         {
7870*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7871*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
7872*53ee8cc1Swenshuai.xi                 break;
7873*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7874*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
7875*53ee8cc1Swenshuai.xi                 break;
7876*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7877*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
7878*53ee8cc1Swenshuai.xi                 break;
7879*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7880*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
7881*53ee8cc1Swenshuai.xi                 break;
7882*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7883*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADC_LOAD);
7884*53ee8cc1Swenshuai.xi                 break;
7885*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7886*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADD_LOAD);
7887*53ee8cc1Swenshuai.xi                 break;
7888*53ee8cc1Swenshuai.xi             default :
7889*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7890*53ee8cc1Swenshuai.xi                 break;
7891*53ee8cc1Swenshuai.xi         }
7892*53ee8cc1Swenshuai.xi     }
7893*53ee8cc1Swenshuai.xi     else
7894*53ee8cc1Swenshuai.xi     {
7895*53ee8cc1Swenshuai.xi         switch (eAvType)
7896*53ee8cc1Swenshuai.xi         {
7897*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7898*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
7899*53ee8cc1Swenshuai.xi                 break;
7900*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7901*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
7902*53ee8cc1Swenshuai.xi                 break;
7903*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7904*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
7905*53ee8cc1Swenshuai.xi                 break;
7906*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7907*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
7908*53ee8cc1Swenshuai.xi                 break;
7909*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7910*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADC_LOAD);
7911*53ee8cc1Swenshuai.xi                 break;
7912*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7913*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADD_LOAD);
7914*53ee8cc1Swenshuai.xi                 break;
7915*53ee8cc1Swenshuai.xi             default :
7916*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7917*53ee8cc1Swenshuai.xi                 break;
7918*53ee8cc1Swenshuai.xi         }
7919*53ee8cc1Swenshuai.xi     }
7920*53ee8cc1Swenshuai.xi }
7921*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)7922*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)
7923*53ee8cc1Swenshuai.xi {
7924*53ee8cc1Swenshuai.xi     if(bPayload)
7925*53ee8cc1Swenshuai.xi     {
7926*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
7927*53ee8cc1Swenshuai.xi     }
7928*53ee8cc1Swenshuai.xi     else
7929*53ee8cc1Swenshuai.xi     {
7930*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
7931*53ee8cc1Swenshuai.xi     }
7932*53ee8cc1Swenshuai.xi 
7933*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7934*53ee8cc1Swenshuai.xi     {
7935*53ee8cc1Swenshuai.xi         switch (eAvType)
7936*53ee8cc1Swenshuai.xi         {
7937*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7938*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
7939*53ee8cc1Swenshuai.xi                 break;
7940*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7941*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V3D_LOAD);
7942*53ee8cc1Swenshuai.xi                 break;
7943*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7944*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
7945*53ee8cc1Swenshuai.xi                 break;
7946*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7947*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
7948*53ee8cc1Swenshuai.xi                 break;
7949*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7950*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADC_LOAD);
7951*53ee8cc1Swenshuai.xi                 break;
7952*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7953*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADD_LOAD);
7954*53ee8cc1Swenshuai.xi                 break;
7955*53ee8cc1Swenshuai.xi             default :
7956*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7957*53ee8cc1Swenshuai.xi                 break;
7958*53ee8cc1Swenshuai.xi         }
7959*53ee8cc1Swenshuai.xi     }
7960*53ee8cc1Swenshuai.xi     else
7961*53ee8cc1Swenshuai.xi     {
7962*53ee8cc1Swenshuai.xi         switch (eAvType)
7963*53ee8cc1Swenshuai.xi         {
7964*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
7965*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
7966*53ee8cc1Swenshuai.xi                 break;
7967*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
7968*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V3D_LOAD);
7969*53ee8cc1Swenshuai.xi                 break;
7970*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
7971*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
7972*53ee8cc1Swenshuai.xi                 break;
7973*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
7974*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
7975*53ee8cc1Swenshuai.xi                 break;
7976*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
7977*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADC_LOAD);
7978*53ee8cc1Swenshuai.xi                 break;
7979*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
7980*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADD_LOAD);
7981*53ee8cc1Swenshuai.xi                 break;
7982*53ee8cc1Swenshuai.xi             default :
7983*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
7984*53ee8cc1Swenshuai.xi                 break;
7985*53ee8cc1Swenshuai.xi         }
7986*53ee8cc1Swenshuai.xi     }
7987*53ee8cc1Swenshuai.xi }
7988*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId,MS_BOOL bDrop)7989*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId, MS_BOOL bDrop)
7990*53ee8cc1Swenshuai.xi {
7991*53ee8cc1Swenshuai.xi     if(bDrop)
7992*53ee8cc1Swenshuai.xi     {
7993*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
7994*53ee8cc1Swenshuai.xi     }
7995*53ee8cc1Swenshuai.xi     else
7996*53ee8cc1Swenshuai.xi     {
7997*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
7998*53ee8cc1Swenshuai.xi     }
7999*53ee8cc1Swenshuai.xi 
8000*53ee8cc1Swenshuai.xi     switch (ePktDmxId)
8001*53ee8cc1Swenshuai.xi     {
8002*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
8003*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_0);
8004*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
8005*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_1);
8006*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
8007*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_2);
8008*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
8009*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_3);
8010*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
8011*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->CFG5_0B);
8012*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
8013*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->CFG5_0C);
8014*53ee8cc1Swenshuai.xi         default :
8015*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV FIFO Source : %d\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
8016*53ee8cc1Swenshuai.xi             return 0;
8017*53ee8cc1Swenshuai.xi     }
8018*53ee8cc1Swenshuai.xi }
8019*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)8020*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)
8021*53ee8cc1Swenshuai.xi {
8022*53ee8cc1Swenshuai.xi     switch (eAvType)
8023*53ee8cc1Swenshuai.xi     {
8024*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8025*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
8026*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
8027*53ee8cc1Swenshuai.xi             break;
8028*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
8029*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
8030*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
8031*53ee8cc1Swenshuai.xi             break;
8032*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8033*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
8034*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
8035*53ee8cc1Swenshuai.xi             break;
8036*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8037*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
8038*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
8039*53ee8cc1Swenshuai.xi             break;
8040*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
8041*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADC_CLR);
8042*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADC_CLR);
8043*53ee8cc1Swenshuai.xi             break;
8044*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
8045*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADD_CLR);
8046*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADD_CLR);
8047*53ee8cc1Swenshuai.xi             break;
8048*53ee8cc1Swenshuai.xi         default :
8049*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8050*53ee8cc1Swenshuai.xi             break;
8051*53ee8cc1Swenshuai.xi     }
8052*53ee8cc1Swenshuai.xi }
8053*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)8054*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)
8055*53ee8cc1Swenshuai.xi {
8056*53ee8cc1Swenshuai.xi     switch (eAvType)
8057*53ee8cc1Swenshuai.xi     {
8058*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8059*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
8060*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
8061*53ee8cc1Swenshuai.xi             break;
8062*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
8063*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
8064*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
8065*53ee8cc1Swenshuai.xi             break;
8066*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8067*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
8068*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
8069*53ee8cc1Swenshuai.xi             break;
8070*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8071*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
8072*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
8073*53ee8cc1Swenshuai.xi             break;
8074*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
8075*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
8076*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
8077*53ee8cc1Swenshuai.xi             break;
8078*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
8079*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
8080*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
8081*53ee8cc1Swenshuai.xi             break;
8082*53ee8cc1Swenshuai.xi         default :
8083*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8084*53ee8cc1Swenshuai.xi             break;
8085*53ee8cc1Swenshuai.xi     }
8086*53ee8cc1Swenshuai.xi }
8087*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)8088*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)
8089*53ee8cc1Swenshuai.xi {
8090*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
8091*53ee8cc1Swenshuai.xi 
8092*53ee8cc1Swenshuai.xi     switch(u32TsIf)
8093*53ee8cc1Swenshuai.xi     {
8094*53ee8cc1Swenshuai.xi         case 0:
8095*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
8096*53ee8cc1Swenshuai.xi             break;
8097*53ee8cc1Swenshuai.xi         case 1:
8098*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
8099*53ee8cc1Swenshuai.xi             break;
8100*53ee8cc1Swenshuai.xi         case 2:
8101*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
8102*53ee8cc1Swenshuai.xi             break;
8103*53ee8cc1Swenshuai.xi         case 3:
8104*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
8105*53ee8cc1Swenshuai.xi             break;
8106*53ee8cc1Swenshuai.xi         default:
8107*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8108*53ee8cc1Swenshuai.xi             break;
8109*53ee8cc1Swenshuai.xi     }
8110*53ee8cc1Swenshuai.xi 
8111*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_ERR_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_ERR_PKT_SRC_SEL_SHIFT));
8112*53ee8cc1Swenshuai.xi }
8113*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)8114*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
8115*53ee8cc1Swenshuai.xi {
8116*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8117*53ee8cc1Swenshuai.xi     {
8118*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8119*53ee8cc1Swenshuai.xi         {
8120*53ee8cc1Swenshuai.xi             case 0:
8121*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
8122*53ee8cc1Swenshuai.xi                 break;
8123*53ee8cc1Swenshuai.xi             case 1:
8124*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
8125*53ee8cc1Swenshuai.xi                 break;
8126*53ee8cc1Swenshuai.xi             case 2:
8127*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
8128*53ee8cc1Swenshuai.xi                 break;
8129*53ee8cc1Swenshuai.xi             case 3:
8130*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_3_LOAD);
8131*53ee8cc1Swenshuai.xi                 break;
8132*53ee8cc1Swenshuai.xi             default:
8133*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8134*53ee8cc1Swenshuai.xi                 break;
8135*53ee8cc1Swenshuai.xi         }
8136*53ee8cc1Swenshuai.xi     }
8137*53ee8cc1Swenshuai.xi     else
8138*53ee8cc1Swenshuai.xi     {
8139*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8140*53ee8cc1Swenshuai.xi         {
8141*53ee8cc1Swenshuai.xi             case 0:
8142*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
8143*53ee8cc1Swenshuai.xi                 break;
8144*53ee8cc1Swenshuai.xi             case 1:
8145*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
8146*53ee8cc1Swenshuai.xi                 break;
8147*53ee8cc1Swenshuai.xi             case 2:
8148*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
8149*53ee8cc1Swenshuai.xi                 break;
8150*53ee8cc1Swenshuai.xi             case 3:
8151*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_3_LOAD);
8152*53ee8cc1Swenshuai.xi                 break;
8153*53ee8cc1Swenshuai.xi             default:
8154*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8155*53ee8cc1Swenshuai.xi                 break;
8156*53ee8cc1Swenshuai.xi         }
8157*53ee8cc1Swenshuai.xi     }
8158*53ee8cc1Swenshuai.xi 
8159*53ee8cc1Swenshuai.xi }
8160*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Get(void)8161*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_ErrPktCnt_Get(void)
8162*53ee8cc1Swenshuai.xi {
8163*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Err_PKT_Cnt);
8164*53ee8cc1Swenshuai.xi }
8165*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)8166*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)
8167*53ee8cc1Swenshuai.xi {
8168*53ee8cc1Swenshuai.xi     switch (u32Tsif)
8169*53ee8cc1Swenshuai.xi     {
8170*53ee8cc1Swenshuai.xi         case 0 :
8171*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
8172*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
8173*53ee8cc1Swenshuai.xi             break;
8174*53ee8cc1Swenshuai.xi         case 1:
8175*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
8176*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
8177*53ee8cc1Swenshuai.xi             break;
8178*53ee8cc1Swenshuai.xi         case 2 :
8179*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
8180*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
8181*53ee8cc1Swenshuai.xi             break;
8182*53ee8cc1Swenshuai.xi         case 3 :
8183*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_3_CLR);
8184*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_3_CLR);
8185*53ee8cc1Swenshuai.xi             break;
8186*53ee8cc1Swenshuai.xi 
8187*53ee8cc1Swenshuai.xi         default :
8188*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
8189*53ee8cc1Swenshuai.xi             break;
8190*53ee8cc1Swenshuai.xi     }
8191*53ee8cc1Swenshuai.xi }
8192*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)8193*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)
8194*53ee8cc1Swenshuai.xi {
8195*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
8196*53ee8cc1Swenshuai.xi 
8197*53ee8cc1Swenshuai.xi     switch(u32TsIf)
8198*53ee8cc1Swenshuai.xi     {
8199*53ee8cc1Swenshuai.xi         case 0:
8200*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
8201*53ee8cc1Swenshuai.xi             break;
8202*53ee8cc1Swenshuai.xi         case 1:
8203*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
8204*53ee8cc1Swenshuai.xi             break;
8205*53ee8cc1Swenshuai.xi         case 2:
8206*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
8207*53ee8cc1Swenshuai.xi             break;
8208*53ee8cc1Swenshuai.xi         case 3:
8209*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
8210*53ee8cc1Swenshuai.xi             break;
8211*53ee8cc1Swenshuai.xi         default:
8212*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8213*53ee8cc1Swenshuai.xi             break;
8214*53ee8cc1Swenshuai.xi     }
8215*53ee8cc1Swenshuai.xi 
8216*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_INPUT_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_INPUT_PKT_SRC_SEL_SHIT));
8217*53ee8cc1Swenshuai.xi }
8218*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)8219*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
8220*53ee8cc1Swenshuai.xi {
8221*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8222*53ee8cc1Swenshuai.xi     {
8223*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8224*53ee8cc1Swenshuai.xi         {
8225*53ee8cc1Swenshuai.xi             case 0:
8226*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
8227*53ee8cc1Swenshuai.xi                 break;
8228*53ee8cc1Swenshuai.xi             case 1:
8229*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
8230*53ee8cc1Swenshuai.xi                 break;
8231*53ee8cc1Swenshuai.xi             case 2:
8232*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
8233*53ee8cc1Swenshuai.xi                 break;
8234*53ee8cc1Swenshuai.xi             case 3:
8235*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_3_LOAD);
8236*53ee8cc1Swenshuai.xi                 break;
8237*53ee8cc1Swenshuai.xi             default:
8238*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8239*53ee8cc1Swenshuai.xi                 break;
8240*53ee8cc1Swenshuai.xi         }
8241*53ee8cc1Swenshuai.xi     }
8242*53ee8cc1Swenshuai.xi     else
8243*53ee8cc1Swenshuai.xi     {
8244*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8245*53ee8cc1Swenshuai.xi         {
8246*53ee8cc1Swenshuai.xi             case 0:
8247*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
8248*53ee8cc1Swenshuai.xi                 break;
8249*53ee8cc1Swenshuai.xi             case 1:
8250*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
8251*53ee8cc1Swenshuai.xi                 break;
8252*53ee8cc1Swenshuai.xi             case 2:
8253*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
8254*53ee8cc1Swenshuai.xi                 break;
8255*53ee8cc1Swenshuai.xi             case 3:
8256*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_3_LOAD);
8257*53ee8cc1Swenshuai.xi                 break;
8258*53ee8cc1Swenshuai.xi             default:
8259*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8260*53ee8cc1Swenshuai.xi                 break;
8261*53ee8cc1Swenshuai.xi         }
8262*53ee8cc1Swenshuai.xi     }
8263*53ee8cc1Swenshuai.xi }
8264*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Get(void)8265*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_InputPktCnt_Get(void)
8266*53ee8cc1Swenshuai.xi {
8267*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Input_PKT_Cnt);
8268*53ee8cc1Swenshuai.xi }
8269*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)8270*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)
8271*53ee8cc1Swenshuai.xi {
8272*53ee8cc1Swenshuai.xi     switch (u32Tsif)
8273*53ee8cc1Swenshuai.xi     {
8274*53ee8cc1Swenshuai.xi         case 0 :
8275*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
8276*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
8277*53ee8cc1Swenshuai.xi             break;
8278*53ee8cc1Swenshuai.xi         case 1:
8279*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
8280*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
8281*53ee8cc1Swenshuai.xi             break;
8282*53ee8cc1Swenshuai.xi         case 2 :
8283*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
8284*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
8285*53ee8cc1Swenshuai.xi             break;
8286*53ee8cc1Swenshuai.xi         case 3 :
8287*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_3_CLR);
8288*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_3_CLR);
8289*53ee8cc1Swenshuai.xi             break;
8290*53ee8cc1Swenshuai.xi 
8291*53ee8cc1Swenshuai.xi         default :
8292*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
8293*53ee8cc1Swenshuai.xi             break;
8294*53ee8cc1Swenshuai.xi     }
8295*53ee8cc1Swenshuai.xi 
8296*53ee8cc1Swenshuai.xi }
8297*53ee8cc1Swenshuai.xi 
HAL_TSP_Privilege_Enable(MS_BOOL bEnable)8298*53ee8cc1Swenshuai.xi void HAL_TSP_Privilege_Enable(MS_BOOL bEnable)
8299*53ee8cc1Swenshuai.xi {
8300*53ee8cc1Swenshuai.xi     if (bEnable)
8301*53ee8cc1Swenshuai.xi     {
8302*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_7C, CFG3_7C_PRIVILEGE_FLAG);
8303*53ee8cc1Swenshuai.xi     }
8304*53ee8cc1Swenshuai.xi     else
8305*53ee8cc1Swenshuai.xi     {
8306*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_7C, CFG3_7C_PRIVILEGE_FLAG);
8307*53ee8cc1Swenshuai.xi     }
8308*53ee8cc1Swenshuai.xi }
8309*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng,MS_U32 u32FQSrc)8310*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng, MS_U32 u32FQSrc)
8311*53ee8cc1Swenshuai.xi {
8312*53ee8cc1Swenshuai.xi     // not support
8313*53ee8cc1Swenshuai.xi     return TRUE;
8314*53ee8cc1Swenshuai.xi }
8315*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)8316*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)
8317*53ee8cc1Swenshuai.xi {
8318*53ee8cc1Swenshuai.xi     // not support
8319*53ee8cc1Swenshuai.xi     return 0;
8320*53ee8cc1Swenshuai.xi }
8321*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng,MS_BOOL bFltNull)8322*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng, MS_BOOL bFltNull)
8323*53ee8cc1Swenshuai.xi {
8324*53ee8cc1Swenshuai.xi     if(bFltNull)
8325*53ee8cc1Swenshuai.xi     {
8326*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_FILTER_NULL_PKT);
8327*53ee8cc1Swenshuai.xi     }
8328*53ee8cc1Swenshuai.xi     else
8329*53ee8cc1Swenshuai.xi     {
8330*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_FILTER_NULL_PKT);
8331*53ee8cc1Swenshuai.xi     }
8332*53ee8cc1Swenshuai.xi 
8333*53ee8cc1Swenshuai.xi     return TRUE;
8334*53ee8cc1Swenshuai.xi }
8335*53ee8cc1Swenshuai.xi 
HAL_TSP_CLK_GATING(TSP_HAL_GATING ePath,MS_U32 u32Eng,MS_BOOL bEn)8336*53ee8cc1Swenshuai.xi void HAL_TSP_CLK_GATING(TSP_HAL_GATING ePath, MS_U32 u32Eng, MS_BOOL bEn)
8337*53ee8cc1Swenshuai.xi {
8338*53ee8cc1Swenshuai.xi     if(bEn)
8339*53ee8cc1Swenshuai.xi     {
8340*53ee8cc1Swenshuai.xi         switch(ePath)
8341*53ee8cc1Swenshuai.xi         {
8342*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH0:
8343*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH1:
8344*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH2:
8345*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH3:
8346*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH4:
8347*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH5:
8348*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_TSIF_NUM)
8349*53ee8cc1Swenshuai.xi                 {
8350*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8351*53ee8cc1Swenshuai.xi                     return;
8352*53ee8cc1Swenshuai.xi                 }
8353*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_PATH0 << u32Eng);
8354*53ee8cc1Swenshuai.xi                 break;
8355*53ee8cc1Swenshuai.xi 
8356*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_TSP_ENG:
8357*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_TSP_ENG);
8358*53ee8cc1Swenshuai.xi                 break;
8359*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ:
8360*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_FIQ);
8361*53ee8cc1Swenshuai.xi                 break;
8362*53ee8cc1Swenshuai.xi 
8363*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR1:
8364*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR2:
8365*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR3:
8366*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR4:
8367*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_PVRENG_NUM)
8368*53ee8cc1Swenshuai.xi                 {
8369*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported PVR eng : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8370*53ee8cc1Swenshuai.xi                     return;
8371*53ee8cc1Swenshuai.xi                 }
8372*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_PVR1 << u32Eng);
8373*53ee8cc1Swenshuai.xi                 break;
8374*53ee8cc1Swenshuai.xi 
8375*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH0:
8376*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH1:
8377*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH2:
8378*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH3:
8379*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH4:
8380*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH5:
8381*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_TSIF_NUM)
8382*53ee8cc1Swenshuai.xi                 {
8383*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8384*53ee8cc1Swenshuai.xi                     return;
8385*53ee8cc1Swenshuai.xi                 }
8386*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7F,CFG6_7F_REG_MIU_CLK_GATING_PATH0 << u32Eng);
8387*53ee8cc1Swenshuai.xi                 break;
8388*53ee8cc1Swenshuai.xi 
8389*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_TSP_ENG:
8390*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7F,CFG6_7F_REG_MIU_CLK_GATING_TSP_ENG);
8391*53ee8cc1Swenshuai.xi                 break;
8392*53ee8cc1Swenshuai.xi 
8393*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ0:
8394*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ1:
8395*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ2:
8396*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ3:
8397*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ4:
8398*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ5:
8399*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_FQ_NUM)
8400*53ee8cc1Swenshuai.xi                 {
8401*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported FIQ : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8402*53ee8cc1Swenshuai.xi                     return;
8403*53ee8cc1Swenshuai.xi                 }
8404*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6D,CFG6_6D_REG_CLK_GATING_FIQ0 << u32Eng);
8405*53ee8cc1Swenshuai.xi                 break;
8406*53ee8cc1Swenshuai.xi 
8407*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ0:
8408*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ1:
8409*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ2:
8410*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ3:
8411*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ4:
8412*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ5:
8413*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_FQ_NUM)
8414*53ee8cc1Swenshuai.xi                 {
8415*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported FIQ : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8416*53ee8cc1Swenshuai.xi                     return;
8417*53ee8cc1Swenshuai.xi                 }
8418*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6D,CFG6_6D_REG_MIU_CLK_GATING_FIQ0 << u32Eng);
8419*53ee8cc1Swenshuai.xi                 break;
8420*53ee8cc1Swenshuai.xi             default :
8421*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported Type : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)ePath);
8422*53ee8cc1Swenshuai.xi                 break;
8423*53ee8cc1Swenshuai.xi         }
8424*53ee8cc1Swenshuai.xi     }
8425*53ee8cc1Swenshuai.xi     else
8426*53ee8cc1Swenshuai.xi     {
8427*53ee8cc1Swenshuai.xi         switch(ePath)
8428*53ee8cc1Swenshuai.xi         {
8429*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH0:
8430*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH1:
8431*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH2:
8432*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH3:
8433*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH4:
8434*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PATH5:
8435*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_TSIF_NUM)
8436*53ee8cc1Swenshuai.xi                 {
8437*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8438*53ee8cc1Swenshuai.xi                     return;
8439*53ee8cc1Swenshuai.xi                 }
8440*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_PATH0 << u32Eng);
8441*53ee8cc1Swenshuai.xi                 break;
8442*53ee8cc1Swenshuai.xi 
8443*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_TSP_ENG:
8444*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_TSP_ENG);
8445*53ee8cc1Swenshuai.xi                 break;
8446*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ:
8447*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_FIQ);
8448*53ee8cc1Swenshuai.xi                 break;
8449*53ee8cc1Swenshuai.xi 
8450*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR1:
8451*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR2:
8452*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR3:
8453*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_PVR4:
8454*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_PVRENG_NUM)
8455*53ee8cc1Swenshuai.xi                 {
8456*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported PVR eng : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8457*53ee8cc1Swenshuai.xi                     return;
8458*53ee8cc1Swenshuai.xi                 }
8459*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_79,CFG6_79_REG_CLK_GATING_PVR1 << u32Eng);
8460*53ee8cc1Swenshuai.xi                 break;
8461*53ee8cc1Swenshuai.xi 
8462*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH0:
8463*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH1:
8464*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH2:
8465*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH3:
8466*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH4:
8467*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_PATH5:
8468*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_TSIF_NUM)
8469*53ee8cc1Swenshuai.xi                 {
8470*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8471*53ee8cc1Swenshuai.xi                     return;
8472*53ee8cc1Swenshuai.xi                 }
8473*53ee8cc1Swenshuai.xi 
8474*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7F,CFG6_7F_REG_MIU_CLK_GATING_PATH0 << u32Eng);
8475*53ee8cc1Swenshuai.xi                 break;
8476*53ee8cc1Swenshuai.xi 
8477*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_TSP_ENG:
8478*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7F,CFG6_7F_REG_MIU_CLK_GATING_TSP_ENG);
8479*53ee8cc1Swenshuai.xi                 break;
8480*53ee8cc1Swenshuai.xi 
8481*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ0:
8482*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ1:
8483*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ2:
8484*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ3:
8485*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ4:
8486*53ee8cc1Swenshuai.xi             case E_TSP_HAL_GATING_FIQ5:
8487*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_FQ_NUM)
8488*53ee8cc1Swenshuai.xi                 {
8489*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported FIQ : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8490*53ee8cc1Swenshuai.xi                     return;
8491*53ee8cc1Swenshuai.xi                 }
8492*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6D,CFG6_6D_REG_CLK_GATING_FIQ0 << u32Eng);
8493*53ee8cc1Swenshuai.xi                 break;
8494*53ee8cc1Swenshuai.xi 
8495*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ0:
8496*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ1:
8497*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ2:
8498*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ3:
8499*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ4:
8500*53ee8cc1Swenshuai.xi             case E_TSP_HAL_MIU_CLK_GATING_FIQ5:
8501*53ee8cc1Swenshuai.xi                 if(u32Eng > TSP_FQ_NUM)
8502*53ee8cc1Swenshuai.xi                 {
8503*53ee8cc1Swenshuai.xi                     printf("[%s][%s][%d] UnSupported FIQ : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Eng);
8504*53ee8cc1Swenshuai.xi                     return;
8505*53ee8cc1Swenshuai.xi                 }
8506*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6D,CFG6_6D_REG_MIU_CLK_GATING_FIQ1 << u32Eng);
8507*53ee8cc1Swenshuai.xi                 break;
8508*53ee8cc1Swenshuai.xi 
8509*53ee8cc1Swenshuai.xi             default :
8510*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported Type : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)ePath);
8511*53ee8cc1Swenshuai.xi                 break;
8512*53ee8cc1Swenshuai.xi         }
8513*53ee8cc1Swenshuai.xi     }
8514*53ee8cc1Swenshuai.xi 
8515*53ee8cc1Swenshuai.xi }
8516*53ee8cc1Swenshuai.xi 
HAL_TSP_Module_Reset(TSP_HAL_RESET_CTRL ePath,MS_U32 u32Idx,MS_BOOL bEn)8517*53ee8cc1Swenshuai.xi void HAL_TSP_Module_Reset(TSP_HAL_RESET_CTRL ePath, MS_U32 u32Idx, MS_BOOL bEn)
8518*53ee8cc1Swenshuai.xi {
8519*53ee8cc1Swenshuai.xi 
8520*53ee8cc1Swenshuai.xi     if(bEn)
8521*53ee8cc1Swenshuai.xi     {
8522*53ee8cc1Swenshuai.xi         switch(ePath)
8523*53ee8cc1Swenshuai.xi         {
8524*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PKT_CONVERTER0:
8525*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8526*53ee8cc1Swenshuai.xi                     return;
8527*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7A,CFG6_7A_REG_CLK_RESET_PKT_CONVERTER0 << u32Idx);
8528*53ee8cc1Swenshuai.xi                 break;
8529*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_FIQ0:
8530*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8531*53ee8cc1Swenshuai.xi                     return;
8532*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7A,CFG6_7A_REG_CLK_RESET_FIQ0 << u32Idx);
8533*53ee8cc1Swenshuai.xi                 break;
8534*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_VQ_TX0:
8535*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8536*53ee8cc1Swenshuai.xi                     return;
8537*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_VQ_TX0 << u32Idx);
8538*53ee8cc1Swenshuai.xi                 break;
8539*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_VQ_RX:
8540*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_VQ_RX);
8541*53ee8cc1Swenshuai.xi                 break;
8542*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_VQ_TOP:
8543*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_VQ_TOP);
8544*53ee8cc1Swenshuai.xi                 break;
8545*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PKT_DEMUX0:
8546*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8547*53ee8cc1Swenshuai.xi                     return;
8548*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_PKT_DEMUX0 << u32Idx);
8549*53ee8cc1Swenshuai.xi                 break;
8550*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PVR1:
8551*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8552*53ee8cc1Swenshuai.xi                     return;
8553*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7C,CFG6_7C_REG_RESET_PVR1 << u32Idx);
8554*53ee8cc1Swenshuai.xi                 break;
8555*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_TIMESTAMP_SEL_PVR1:
8556*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8557*53ee8cc1Swenshuai.xi                     return;
8558*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7C,CFG6_7C_REG_RESET_TIMESTAMP_SEL_PVR1 << u32Idx);
8559*53ee8cc1Swenshuai.xi                 break;
8560*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_SP_D0:
8561*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8562*53ee8cc1Swenshuai.xi                     return;
8563*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7C,CFG6_7C_REG_RESET_SP_D0 << u32Idx);
8564*53ee8cc1Swenshuai.xi                 break;
8565*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_FILTER_NULL_PKT0:
8566*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8567*53ee8cc1Swenshuai.xi                     return;
8568*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7D,CFG6_7D_REG_RESET_FILTER_NULL_PKT0 << u32Idx);
8569*53ee8cc1Swenshuai.xi                 break;
8570*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_DIRECTV_130_188_0:
8571*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8572*53ee8cc1Swenshuai.xi                     return;
8573*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7D,CFG6_7D_REG_RESET_DIRECTV_130_188_0 << u32Idx);
8574*53ee8cc1Swenshuai.xi                 break;
8575*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_SRC_ID_PARSER0:
8576*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8577*53ee8cc1Swenshuai.xi                     return;
8578*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7E,CFG6_7E_REG_RESET_SRC_ID_PARSER0 << u32Idx);
8579*53ee8cc1Swenshuai.xi                 break;
8580*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PCRFLT_0:
8581*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8582*53ee8cc1Swenshuai.xi                     return;
8583*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_7E,CFG6_7E_REG_RESET_PCRFLT_0 << u32Idx);
8584*53ee8cc1Swenshuai.xi                 break;
8585*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_PATH0:
8586*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8587*53ee8cc1Swenshuai.xi                     return;
8588*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_PATH0 << u32Idx);
8589*53ee8cc1Swenshuai.xi                 break;
8590*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_OTV:
8591*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_OTV);
8592*53ee8cc1Swenshuai.xi                 break;
8593*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_DEBUG_TABLE:
8594*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_DEBUG_TABLE);
8595*53ee8cc1Swenshuai.xi                 break;
8596*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_DMA_ENG:
8597*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_DMA_ENG);
8598*53ee8cc1Swenshuai.xi                 break;
8599*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_SEC_CMP:
8600*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_SEC_CMP);
8601*53ee8cc1Swenshuai.xi                 break;
8602*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_SECFLT_REG:
8603*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_SECFLT_REG);
8604*53ee8cc1Swenshuai.xi                 break;
8605*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_SEC:
8606*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_SEC);
8607*53ee8cc1Swenshuai.xi                 break;
8608*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_PID_TABLE:
8609*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_PID_TABLE);
8610*53ee8cc1Swenshuai.xi                 break;
8611*53ee8cc1Swenshuai.xi 
8612*53ee8cc1Swenshuai.xi             default :
8613*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported Type : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)ePath);
8614*53ee8cc1Swenshuai.xi                 break;
8615*53ee8cc1Swenshuai.xi         }
8616*53ee8cc1Swenshuai.xi     }
8617*53ee8cc1Swenshuai.xi     else
8618*53ee8cc1Swenshuai.xi     {
8619*53ee8cc1Swenshuai.xi         switch(ePath)
8620*53ee8cc1Swenshuai.xi         {
8621*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PKT_CONVERTER0:
8622*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8623*53ee8cc1Swenshuai.xi                     return;
8624*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7A,CFG6_7A_REG_CLK_RESET_PKT_CONVERTER0 << u32Idx);
8625*53ee8cc1Swenshuai.xi                 break;
8626*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_FIQ0:
8627*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8628*53ee8cc1Swenshuai.xi                     return;
8629*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7A,CFG6_7A_REG_CLK_RESET_FIQ0 << u32Idx);
8630*53ee8cc1Swenshuai.xi                 break;
8631*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_VQ_TX0:
8632*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8633*53ee8cc1Swenshuai.xi                     return;
8634*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_VQ_TX0 << u32Idx);
8635*53ee8cc1Swenshuai.xi                 break;
8636*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_VQ_RX:
8637*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_VQ_RX);
8638*53ee8cc1Swenshuai.xi                 break;
8639*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_VQ_TOP:
8640*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_VQ_TOP);
8641*53ee8cc1Swenshuai.xi                 break;
8642*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PKT_DEMUX0:
8643*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8644*53ee8cc1Swenshuai.xi                     return;
8645*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7B,CFG6_7B_REG_RESET_PKT_DEMUX0 << u32Idx);
8646*53ee8cc1Swenshuai.xi                 break;
8647*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PVR1:
8648*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8649*53ee8cc1Swenshuai.xi                     return;
8650*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7C,CFG6_7C_REG_RESET_PVR1 << u32Idx);
8651*53ee8cc1Swenshuai.xi                 break;
8652*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_TIMESTAMP_SEL_PVR1:
8653*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8654*53ee8cc1Swenshuai.xi                     return;
8655*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7C,CFG6_7C_REG_RESET_TIMESTAMP_SEL_PVR1 << u32Idx);
8656*53ee8cc1Swenshuai.xi                 break;
8657*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_SP_D0:
8658*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8659*53ee8cc1Swenshuai.xi                     return;
8660*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7C,CFG6_7C_REG_RESET_SP_D0 << u32Idx);
8661*53ee8cc1Swenshuai.xi                 break;
8662*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_FILTER_NULL_PKT0:
8663*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8664*53ee8cc1Swenshuai.xi                     return;
8665*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7D,CFG6_7D_REG_RESET_FILTER_NULL_PKT0 << u32Idx);
8666*53ee8cc1Swenshuai.xi                 break;
8667*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_DIRECTV_130_188_0:
8668*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8669*53ee8cc1Swenshuai.xi                     return;
8670*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7D,CFG6_7D_REG_RESET_DIRECTV_130_188_0 << u32Idx);
8671*53ee8cc1Swenshuai.xi                 break;
8672*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_SRC_ID_PARSER0:
8673*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8674*53ee8cc1Swenshuai.xi                     return;
8675*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7E,CFG6_7E_REG_RESET_SRC_ID_PARSER0 << u32Idx);
8676*53ee8cc1Swenshuai.xi                 break;
8677*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_CTRL_PCRFLT_0:
8678*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8679*53ee8cc1Swenshuai.xi                     return;
8680*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_7E,CFG6_7E_REG_RESET_PCRFLT_0 << u32Idx);
8681*53ee8cc1Swenshuai.xi                 break;
8682*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_PATH0:
8683*53ee8cc1Swenshuai.xi                 if(u32Idx > TSP_TSIF_NUM)
8684*53ee8cc1Swenshuai.xi                     return;
8685*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_PATH0 << u32Idx);
8686*53ee8cc1Swenshuai.xi                 break;
8687*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_OTV:
8688*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_OTV);
8689*53ee8cc1Swenshuai.xi                 break;
8690*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_DEBUG_TABLE:
8691*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_DEBUG_TABLE);
8692*53ee8cc1Swenshuai.xi                 break;
8693*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_DMA_ENG:
8694*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_DMA_ENG);
8695*53ee8cc1Swenshuai.xi                 break;
8696*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_SEC_CMP:
8697*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_SEC_CMP);
8698*53ee8cc1Swenshuai.xi                 break;
8699*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_SECFLT_REG:
8700*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_SECFLT_REG);
8701*53ee8cc1Swenshuai.xi                 break;
8702*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_SEC:
8703*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_SEC);
8704*53ee8cc1Swenshuai.xi                 break;
8705*53ee8cc1Swenshuai.xi             case E_TSP_HAL_RESET_PID_TABLE:
8706*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_6C,CFG6_6C_REG_RESET_PID_TABLE);
8707*53ee8cc1Swenshuai.xi                 break;
8708*53ee8cc1Swenshuai.xi 
8709*53ee8cc1Swenshuai.xi             default :
8710*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported Type : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)ePath);
8711*53ee8cc1Swenshuai.xi                 break;
8712*53ee8cc1Swenshuai.xi         }
8713*53ee8cc1Swenshuai.xi     }
8714*53ee8cc1Swenshuai.xi 
8715*53ee8cc1Swenshuai.xi }
8716*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_MMFI_MIU_Sel(TSP_HAL_MIU_SEL_TYPE eType,MS_U8 u8Eng,MS_PHY phyBufStart)8717*53ee8cc1Swenshuai.xi void HAL_TSP_FQ_MMFI_MIU_Sel(TSP_HAL_MIU_SEL_TYPE eType, MS_U8 u8Eng, MS_PHY phyBufStart)
8718*53ee8cc1Swenshuai.xi {
8719*53ee8cc1Swenshuai.xi     MS_U8   u8MiuSel = 0;
8720*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffsetFileinAddr = 0;
8721*53ee8cc1Swenshuai.xi     MS_U8   u8Shift = u8Eng * TSP_MIU_SEL_BITS_LEN;
8722*53ee8cc1Swenshuai.xi 
8723*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFileinAddr, phyBufStart);
8724*53ee8cc1Swenshuai.xi 
8725*53ee8cc1Swenshuai.xi     switch(eType)
8726*53ee8cc1Swenshuai.xi     {
8727*53ee8cc1Swenshuai.xi         case E_TSP_HAL_MIU_SEL_MMFI:
8728*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)));
8729*53ee8cc1Swenshuai.xi             break;
8730*53ee8cc1Swenshuai.xi         case E_TSP_HAL_MIU_SEL_FQ:
8731*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)));
8732*53ee8cc1Swenshuai.xi             break;
8733*53ee8cc1Swenshuai.xi         default:
8734*53ee8cc1Swenshuai.xi             break;
8735*53ee8cc1Swenshuai.xi     }
8736*53ee8cc1Swenshuai.xi }
8737*53ee8cc1Swenshuai.xi 
8738