xref: /utopia/UTPA2-700.0.x/modules/dmx/hal/k6/tsp/halTSP.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2*53ee8cc1Swenshuai.xi //
3*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
4*53ee8cc1Swenshuai.xi // All rights reserved.
5*53ee8cc1Swenshuai.xi //
6*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
7*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
8*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
9*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
10*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
11*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
12*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
13*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
14*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
19*53ee8cc1Swenshuai.xi // file   halPVR.c
20*53ee8cc1Swenshuai.xi // @brief  PVR HAL
21*53ee8cc1Swenshuai.xi // @author MStar Semiconductor,Inc.
22*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
23*53ee8cc1Swenshuai.xi #include "MsCommon.h"
24*53ee8cc1Swenshuai.xi #include "halCHIP.h"
25*53ee8cc1Swenshuai.xi #include "regTSP.h"
26*53ee8cc1Swenshuai.xi #include "halTSP.h"
27*53ee8cc1Swenshuai.xi #include "drvSYS.h"
28*53ee8cc1Swenshuai.xi #include "MsOS.h"
29*53ee8cc1Swenshuai.xi 
30*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
31*53ee8cc1Swenshuai.xi     #include "drvCLKM.h"
32*53ee8cc1Swenshuai.xi #endif
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi #define K6U02         (MDrv_SYS_GetChipRev() >= 0x1)  // This feature/behavior is supported after K6 U02
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi #define TSP_MIU_SEL_BITS_LEN    2
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
40*53ee8cc1Swenshuai.xi //  Driver Compiler Option
41*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi 
44*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
45*53ee8cc1Swenshuai.xi //  TSP Hardware Abstraction Layer
46*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
47*53ee8cc1Swenshuai.xi MS_VIRT              _u32RegBase                       = 0;
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi static REG_Ctrl*    _RegCtrl                          = NULL;  // TSP0 and TSP1
50*53ee8cc1Swenshuai.xi static REG_Ctrl2*   _RegCtrl2                         = NULL;  // TSP3
51*53ee8cc1Swenshuai.xi static REG_Ctrl3*   _RegCtrl3                         = NULL;  // TSP4
52*53ee8cc1Swenshuai.xi static REG_Ctrl4*   _RegCtrl4                         = NULL;  // TSP6
53*53ee8cc1Swenshuai.xi static REG_Ctrl5*   _RegCtrl5                         = NULL;  // TSP7
54*53ee8cc1Swenshuai.xi static REG_Ctrl6*   _RegCtrl6                         = NULL;  // TSP8
55*53ee8cc1Swenshuai.xi static REG_Ctrl7*   _RegCtrl7                         = NULL;  // TSP9
56*53ee8cc1Swenshuai.xi static REG_Ctrl8*   _RegCtrl8                         = NULL;  // TSP10
57*53ee8cc1Swenshuai.xi static REG_Ctrl8_1* _RegCtrl8_1                       = NULL;  // TSP10
58*53ee8cc1Swenshuai.xi 
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi // @F_TODO These parameters need to be combined with global variables in Utopia 2.0
62*53ee8cc1Swenshuai.xi static MS_U32                       _u32PidFltReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
63*53ee8cc1Swenshuai.xi static MS_U32                       _u32PidDstReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
64*53ee8cc1Swenshuai.xi static MS_U32                       _u32SecReg[(TSP_SECFLT_NUM * ((sizeof(REG_SecFlt) - sizeof(((REG_SecFlt*)0)->_x50))/sizeof(TSP32)))];
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
67*53ee8cc1Swenshuai.xi //  Local Structures
68*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
69*53ee8cc1Swenshuai.xi 
70*53ee8cc1Swenshuai.xi typedef struct //  structure for PVR Buffer
71*53ee8cc1Swenshuai.xi {
72*53ee8cc1Swenshuai.xi     MS_BOOL         bOverWrite;           // True  : means the PVR buffer has been written already
73*53ee8cc1Swenshuai.xi                                           // False : means the PVR buffer has not been written yet
74*53ee8cc1Swenshuai.xi     MS_U32          u32Start;             // PVR buffer physical start address
75*53ee8cc1Swenshuai.xi     MS_U32          u32End;               // PVR buffer physical end address
76*53ee8cc1Swenshuai.xi     MS_BOOL         bPA2KSEG1_Mapping;    // True   : means PA2KSEG1 mapping success
77*53ee8cc1Swenshuai.xi 
78*53ee8cc1Swenshuai.xi }PVR_Buf;
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi static PVR_Buf   _stPvrBuf[PVR_NUM];
81*53ee8cc1Swenshuai.xi 
82*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
83*53ee8cc1Swenshuai.xi //  Local Functions
84*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
85*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value);
86*53ee8cc1Swenshuai.xi 
_delay(MS_U32 usec)87*53ee8cc1Swenshuai.xi static void _delay(MS_U32 usec)
88*53ee8cc1Swenshuai.xi {
89*53ee8cc1Swenshuai.xi     MsOS_DelayTaskUs_Poll(usec);
90*53ee8cc1Swenshuai.xi }
91*53ee8cc1Swenshuai.xi 
REG32_R(REG32 * reg)92*53ee8cc1Swenshuai.xi static MS_U32 REG32_R(REG32 *reg)
93*53ee8cc1Swenshuai.xi {
94*53ee8cc1Swenshuai.xi     MS_U32              value = 0;
95*53ee8cc1Swenshuai.xi     value  = (reg)->low;
96*53ee8cc1Swenshuai.xi     value |= (reg)->high << 16;
97*53ee8cc1Swenshuai.xi     return value;
98*53ee8cc1Swenshuai.xi }
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi 
REG16_R(REG16 * reg)101*53ee8cc1Swenshuai.xi static MS_U16 REG16_R(REG16 *reg)
102*53ee8cc1Swenshuai.xi {
103*53ee8cc1Swenshuai.xi     MS_U16              value = 0;
104*53ee8cc1Swenshuai.xi     value = (reg)->data;
105*53ee8cc1Swenshuai.xi     return value;
106*53ee8cc1Swenshuai.xi }
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi static MS_BOOL _u32RegDump = 0;
109*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32 * reg, MS_U32 value );
110*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16 * reg, MS_U16 value);
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi #if 0
113*53ee8cc1Swenshuai.xi #define REG32_W(reg, value);    { (reg)->low = ((value) & 0x0000FFFF);                          \
114*53ee8cc1Swenshuai.xi                                   (reg)->high = ((value) >> 16);\
115*53ee8cc1Swenshuai.xi                                   if(_u32RegDump)\
116*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);\
117*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);}}
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi #define REG16_W(reg, value);    {(reg)->data = ((value) & 0x0000FFFF);\
120*53ee8cc1Swenshuai.xi                                   if(_u32RegDump)\
121*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);}}
122*53ee8cc1Swenshuai.xi #endif
123*53ee8cc1Swenshuai.xi #define REG32_W(reg, value)     { (reg)->low = ((value) & 0x0000FFFF);                          \
124*53ee8cc1Swenshuai.xi                                   (reg)->high = ((value) >> 16);\
125*53ee8cc1Swenshuai.xi                                 if(_u32RegDump){_REG32_DUMP(reg, value);}}
126*53ee8cc1Swenshuai.xi 
127*53ee8cc1Swenshuai.xi #define REG16_W(reg, value)     {(reg)->data = ((value) & 0x0000FFFF);\
128*53ee8cc1Swenshuai.xi                                 if(_u32RegDump){_REG16_DUMP(reg, value);}}
129*53ee8cc1Swenshuai.xi 
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi #define _AND_(flag, bit)            ((flag) &   (bit) )
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi #define _SET_(flag, bit)            ((flag) |   (bit) )
134*53ee8cc1Swenshuai.xi #define _CLR_(flag, bit)            ((flag) & (~(bit)))
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi #define REG16_SET(reg, value)    REG16_W(reg, _SET_(REG16_R(reg), value))
137*53ee8cc1Swenshuai.xi #define REG32_SET(reg, value)    REG32_W(reg, _SET_(REG32_R(reg), value))
138*53ee8cc1Swenshuai.xi #define REG16_CLR(reg, value)    REG16_W(reg, _CLR_(REG16_R(reg), value))
139*53ee8cc1Swenshuai.xi #define REG32_CLR(reg, value)    REG32_W(reg, _CLR_(REG32_R(reg), value))
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi #define REG16_MSK_W(reg, mask, value)    REG16_W((reg), _CLR_(REG16_R(reg), (mask)) | _AND_((value), (mask)))
142*53ee8cc1Swenshuai.xi #define REG32_MSK_W(reg, mask, value)    REG32_W((reg), _CLR_(REG32_R(reg), (mask)) | _AND_((value), (mask)))
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi #define MIU_BUS (4)
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi 
147*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
148*53ee8cc1Swenshuai.xi //  Debug Message
149*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
150*53ee8cc1Swenshuai.xi typedef enum
151*53ee8cc1Swenshuai.xi {
152*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_NONE,   // no debug message shown
153*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_ERR,    // only shows error message that can't be recover
154*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_WARN,   // error case can be recover, like retry
155*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_EVENT,  // event that is okay but better known, ex: timestamp ring, file circular, etc.
156*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_INFO,   // information for internal parameter
157*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_FUNC,   // Function trace and input parameter trace
158*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_LEVEL_TRACE,  // debug trace
159*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_LEVEL;
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi typedef enum
162*53ee8cc1Swenshuai.xi {
163*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_MODEL_NONE,         // @temporarily , need to refine
164*53ee8cc1Swenshuai.xi     E_HAL_TSP_DBG_MODEL_ALL,
165*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_MODEL;
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi #define HAL_TSP_DBGMSG(_level,_model,_f) do {if(_u32TSPDbgLevel >= (_level)&&((_u32TSPDbgModel&_model)!=0)) (_f);} while(0)
168*53ee8cc1Swenshuai.xi static MS_U32  _u32TSPDbgLevel = E_HAL_TSP_DBG_LEVEL_ERR;
169*53ee8cc1Swenshuai.xi static MS_U32  _u32TSPDbgModel = E_HAL_TSP_DBG_MODEL_ALL;
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
173*53ee8cc1Swenshuai.xi //  Implementation
174*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
TSP32_IdrW(TSP32 * preg,MS_U32 value)175*53ee8cc1Swenshuai.xi void TSP32_IdrW(TSP32 *preg, MS_U32 value)
176*53ee8cc1Swenshuai.xi {
177*53ee8cc1Swenshuai.xi     MS_U32 tempDump = _u32RegDump;
178*53ee8cc1Swenshuai.xi     if(_u32RegDump)
179*53ee8cc1Swenshuai.xi     {
180*53ee8cc1Swenshuai.xi         //test_chip_top.write_ind32('h00221004, 32'hffffffff);  //indirect .... (address,data)
181*53ee8cc1Swenshuai.xi         _u32RegDump = 0;
182*53ee8cc1Swenshuai.xi         printf("test_chip_top.write_ind32(\'h%08lx, 32\'h%08lx);\n", (long unsigned int)preg, (long unsigned int)value);
183*53ee8cc1Swenshuai.xi     }
184*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Addr, (MS_VIRT)preg);
185*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Write, value);
186*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_WRITE);
187*53ee8cc1Swenshuai.xi     _u32RegDump = tempDump;
188*53ee8cc1Swenshuai.xi }
189*53ee8cc1Swenshuai.xi 
TSP32_IdrR(TSP32 * preg)190*53ee8cc1Swenshuai.xi MS_U32 TSP32_IdrR(TSP32 *preg)
191*53ee8cc1Swenshuai.xi {
192*53ee8cc1Swenshuai.xi     MS_U32 tempDump = _u32RegDump;
193*53ee8cc1Swenshuai.xi     if(_u32RegDump)
194*53ee8cc1Swenshuai.xi     {
195*53ee8cc1Swenshuai.xi         _u32RegDump = 0;
196*53ee8cc1Swenshuai.xi     }
197*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Idr_Addr,  (MS_VIRT)preg);
198*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_READ);
199*53ee8cc1Swenshuai.xi     _u32RegDump = tempDump;
200*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->Idr_Read);
201*53ee8cc1Swenshuai.xi }
202*53ee8cc1Swenshuai.xi 
HAL_TSP_SetBank(MS_VIRT u32BankAddr)203*53ee8cc1Swenshuai.xi void HAL_TSP_SetBank(MS_VIRT u32BankAddr)
204*53ee8cc1Swenshuai.xi {
205*53ee8cc1Swenshuai.xi     _u32RegBase = u32BankAddr;
206*53ee8cc1Swenshuai.xi     _RegCtrl    = (REG_Ctrl*)(u32BankAddr   + 0x2A00UL);      // TSP0  0x1015, TSP1 0x1016
207*53ee8cc1Swenshuai.xi     _RegCtrl2   = (REG_Ctrl2*)(u32BankAddr  + 0xE0400UL);     // TSP3  0x1702,
208*53ee8cc1Swenshuai.xi     _RegCtrl3   = (REG_Ctrl3*)(u32BankAddr  + 0xE0600UL);     // TSP4  0x1703
209*53ee8cc1Swenshuai.xi     _RegCtrl4   = (REG_Ctrl4*)(u32BankAddr  + 0xC2000UL);     // TSP6  0x1610
210*53ee8cc1Swenshuai.xi     _RegCtrl5   = (REG_Ctrl5*)(u32BankAddr  + 0xC2200UL);     // TSP7  0x1611
211*53ee8cc1Swenshuai.xi     _RegCtrl6   = (REG_Ctrl6*)(u32BankAddr  + 0xC4E00UL);     // TSP8  0x1627
212*53ee8cc1Swenshuai.xi     _RegCtrl7   = (REG_Ctrl7*)(u32BankAddr  + 0xE1800UL);     // TSP9  0x170C
213*53ee8cc1Swenshuai.xi     _RegCtrl8   = (REG_Ctrl8*)(u32BankAddr  + 0xE1A00UL);     // TSP10 0x170D
214*53ee8cc1Swenshuai.xi     _RegCtrl8_1 = (REG_Ctrl8_1*)(u32BankAddr  + 0xE1B00UL);   // TSP10 0x170D , offset(16-bits): 0x40
215*53ee8cc1Swenshuai.xi }
216*53ee8cc1Swenshuai.xi 
HAL_TSP_RegDump(MS_BOOL bEnable)217*53ee8cc1Swenshuai.xi void HAL_TSP_RegDump(MS_BOOL bEnable)
218*53ee8cc1Swenshuai.xi {
219*53ee8cc1Swenshuai.xi     _u32RegDump = bEnable;
220*53ee8cc1Swenshuai.xi }
221*53ee8cc1Swenshuai.xi #if 1
_REG32_DUMP(REG32 * reg,MS_U32 value)222*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32* reg, MS_U32 value )
223*53ee8cc1Swenshuai.xi {
224*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a);   //..bank 15 ,7h06 ....reg ,16h400a ......
225*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7h06 ....reg ,16h400a ......
226*53ee8cc1Swenshuai.xi     //`RIU_W((24'h103800>>1) +  7'h56 ,  2'b11, 16'h0000); //....bank 038
227*53ee8cc1Swenshuai.xi     MS_U32 bank = ((MS_VIRT)(&(reg)->low) - _u32RegBase)>>(1+8);
228*53ee8cc1Swenshuai.xi     MS_U32 addr_low = ((((MS_VIRT)(&(reg)->low) - _u32RegBase)>>1)&0xFF)>>1;
229*53ee8cc1Swenshuai.xi     MS_U32 addr_high = ((((MS_VIRT)(&(reg)->high) - _u32RegBase)>>1)&0xFF)>>1;
230*53ee8cc1Swenshuai.xi     MS_U32 val_low  = (value) & 0x0000FFFF;
231*53ee8cc1Swenshuai.xi     MS_U32 val_high  = ((value) & 0xFFFF0000 )>>16;
232*53ee8cc1Swenshuai.xi 
233*53ee8cc1Swenshuai.xi     if(bank == 0x15)
234*53ee8cc1Swenshuai.xi     {
235*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);
236*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);
237*53ee8cc1Swenshuai.xi     }
238*53ee8cc1Swenshuai.xi     else if(bank == 0x16)
239*53ee8cc1Swenshuai.xi     {
240*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);
241*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);
242*53ee8cc1Swenshuai.xi     }
243*53ee8cc1Swenshuai.xi     else if(bank == 0x38)
244*53ee8cc1Swenshuai.xi     {
245*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);
246*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);
247*53ee8cc1Swenshuai.xi     }
248*53ee8cc1Swenshuai.xi }
_REG16_DUMP(REG16 * reg,MS_U16 value)249*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16* reg, MS_U16 value )
250*53ee8cc1Swenshuai.xi {
251*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a);   //..bank 15 ,7h06 ....reg ,16h400a ......
252*53ee8cc1Swenshuai.xi     //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7h06 ....reg ,16h400a ......
253*53ee8cc1Swenshuai.xi     //`RIU_W((24'h103800>>1) +  7'h56 ,  2'b11, 16'h0000); //....bank 038
254*53ee8cc1Swenshuai.xi     MS_U32 bank = ((MS_VIRT)(&(reg)) - _u32RegBase)>>(1+8);
255*53ee8cc1Swenshuai.xi     MS_U32 addr = ((((MS_VIRT)(&(reg)) - _u32RegBase)>>1)&0xFF)>>1;
256*53ee8cc1Swenshuai.xi     MS_U32 val  = (value) & 0x0000FFFF;
257*53ee8cc1Swenshuai.xi 
258*53ee8cc1Swenshuai.xi     if(bank == 0x15)
259*53ee8cc1Swenshuai.xi     {
260*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);
261*53ee8cc1Swenshuai.xi     }
262*53ee8cc1Swenshuai.xi     else if(bank == 0x16)
263*53ee8cc1Swenshuai.xi     {
264*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);
265*53ee8cc1Swenshuai.xi     }
266*53ee8cc1Swenshuai.xi     else if(bank == 0x38)
267*53ee8cc1Swenshuai.xi     {
268*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);
269*53ee8cc1Swenshuai.xi     }
270*53ee8cc1Swenshuai.xi }
271*53ee8cc1Swenshuai.xi #endif
272*53ee8cc1Swenshuai.xi 
273*53ee8cc1Swenshuai.xi // [HW Issue]
274*53ee8cc1Swenshuai.xi // The K3 series PVR write pointer's return value is different from K1 series chip.
275*53ee8cc1Swenshuai.xi // For example, if PVR MIU alignment is 16 bytes. Write 32 bytes to PVR buffer from PVR start address 0.
276*53ee8cc1Swenshuai.xi // The 32 bytes data would be allocated to PVR buffer(address 0~31).
277*53ee8cc1Swenshuai.xi // And then we get the write pointer. The K3 series write pointer will return the value 16(W).
278*53ee8cc1Swenshuai.xi // The last MIU alignment address of the written data.
279*53ee8cc1Swenshuai.xi // The K1 series write pointer will return the value 32(W').
280*53ee8cc1Swenshuai.xi // The next MIU alignment address for the next writting.
281*53ee8cc1Swenshuai.xi // PVR write pointer value has 1 MIU alignment difference between K3 and K1 series.
282*53ee8cc1Swenshuai.xi // To SW, the K1 series write pointer's return value is more meaningful than K3 series.
283*53ee8cc1Swenshuai.xi // Now we use _Adjust_PVR_WritePtr function to make K3 series write pointer's return value consistent with K1 series.
284*53ee8cc1Swenshuai.xi //  --------------------------------->
285*53ee8cc1Swenshuai.xi // S          W          W'         E
286*53ee8cc1Swenshuai.xi // ######################
287*53ee8cc1Swenshuai.xi // +----------+----------+----------+
288*53ee8cc1Swenshuai.xi // 0          16        32
289*53ee8cc1Swenshuai.xi //  ----------------------------------
290*53ee8cc1Swenshuai.xi 
_Adjust_PVR_WritePtr(MS_U32 u32Eng,MS_U32 u32WritePtr)291*53ee8cc1Swenshuai.xi static MS_U32 _Adjust_PVR_WritePtr(MS_U32 u32Eng, MS_U32 u32WritePtr)
292*53ee8cc1Swenshuai.xi {
293*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32Eng].bPA2KSEG1_Mapping != TRUE)
294*53ee8cc1Swenshuai.xi     {
295*53ee8cc1Swenshuai.xi         return u32WritePtr;
296*53ee8cc1Swenshuai.xi     }
297*53ee8cc1Swenshuai.xi 
298*53ee8cc1Swenshuai.xi     if (_stPvrBuf[u32Eng].u32Start == 0)
299*53ee8cc1Swenshuai.xi     {
300*53ee8cc1Swenshuai.xi         return u32WritePtr;
301*53ee8cc1Swenshuai.xi     }
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi     if (!((E_TSP_PVR_PVRENG_START <= u32Eng) && (E_TSP_PVR_PVRENG_END > u32Eng))) // PVR Eng number check
304*53ee8cc1Swenshuai.xi     {
305*53ee8cc1Swenshuai.xi         return u32WritePtr;
306*53ee8cc1Swenshuai.xi     }
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi     if( _stPvrBuf[u32Eng].bOverWrite ) // If PVR buffer in OverWrite state
309*53ee8cc1Swenshuai.xi     {
310*53ee8cc1Swenshuai.xi         u32WritePtr = u32WritePtr + (1 << MIU_BUS);
311*53ee8cc1Swenshuai.xi     }
312*53ee8cc1Swenshuai.xi     else // If PVR buffer in non-OverWrite state
313*53ee8cc1Swenshuai.xi     {
314*53ee8cc1Swenshuai.xi         MsOS_ReadMemory();
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi         if(*((MS_U64*)(MsOS_PA2KSEG1(_stPvrBuf[u32Eng].u32Start)))!= PVR_NON_OVERWRITE)
317*53ee8cc1Swenshuai.xi         {
318*53ee8cc1Swenshuai.xi             _stPvrBuf[u32Eng].bOverWrite = TRUE; // Set PVR buffer to OverWrite state
319*53ee8cc1Swenshuai.xi             u32WritePtr = u32WritePtr + (1 << MIU_BUS);
320*53ee8cc1Swenshuai.xi         }
321*53ee8cc1Swenshuai.xi     }
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi     if( u32WritePtr >= _stPvrBuf[u32Eng].u32End )
324*53ee8cc1Swenshuai.xi     {
325*53ee8cc1Swenshuai.xi         //reset write address
326*53ee8cc1Swenshuai.xi         u32WritePtr = _stPvrBuf[u32Eng].u32Start;
327*53ee8cc1Swenshuai.xi     }
328*53ee8cc1Swenshuai.xi 
329*53ee8cc1Swenshuai.xi     return u32WritePtr;
330*53ee8cc1Swenshuai.xi }
331*53ee8cc1Swenshuai.xi 
HAL_TSP_HwPatch(void)332*53ee8cc1Swenshuai.xi void HAL_TSP_HwPatch(void)
333*53ee8cc1Swenshuai.xi {
334*53ee8cc1Swenshuai.xi     //For sram
335*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_HW_STANDBY_MODE);
336*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi     // @F_TODO check these setting with Stephen
339*53ee8cc1Swenshuai.xi     // TSP_HW_CFG4_WSTAT_CH_EN <--this is bit disable HW sync section buf id with section filter id
340*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);
341*53ee8cc1Swenshuai.xi 
342*53ee8cc1Swenshuai.xi     // Bad initial value of TSP_CTRL1
343*53ee8cc1Swenshuai.xi     // Suppose Standby mode for TSP should NOT be enabled.
344*53ee8cc1Swenshuai.xi     // Enabling TSP standby mode cause TSP section registers (SRAM in AEON) malfunction.
345*53ee8cc1Swenshuai.xi     // Disable it by SW at this stage.
346*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_STANDBY);
347*53ee8cc1Swenshuai.xi 
348*53ee8cc1Swenshuai.xi     //enable PVR record to bypass header
349*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b4, TSP_PVR_PID_BYPASS|TSP_PVR_PID_BYPASS2);
350*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PID_BYPASS3_REC);
351*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PID_BYPASS4_REC);
352*53ee8cc1Swenshuai.xi 
353*53ee8cc1Swenshuai.xi     // load lpcr1 for all pvr engines, HW default value may be wrong
354*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
355*53ee8cc1Swenshuai.xi     REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
356*53ee8cc1Swenshuai.xi     REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
357*53ee8cc1Swenshuai.xi     REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
358*53ee8cc1Swenshuai.xi 
359*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
360*53ee8cc1Swenshuai.xi 
361*53ee8cc1Swenshuai.xi     //Disable TSP_RM_OVF_GLITCH to fix that section A would occur overflow when section B occured overflow at first.
362*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ2PINGPONG_EN | TSP_RM_PKT_DEMUX_PIPE /*| TSP_PVR1_ALIGN_EN*/);
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi     //Disable all live pathes block mechanism
365*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160C, TSP_DOUBLE_BUF_DESC/*| TSP_VQTX0_BLOCK_DIS|TSP_VQTX2_BLOCK_DIS|TSP_VQTX3_BLOCK_DIS*/);
366*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg160E, TSP_RM_DMA_GLITCH);
367*53ee8cc1Swenshuai.xi 
368*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PUSI_3BYTE_MODE); //Enable audio 3 byte mode
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi     //record null packets for record-all case
373*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->PVRConfig, TSP_MATCH_PID_LD | TSP_REC_NULL);
374*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BLK_AD_SCMBTIS_TSP);
375*53ee8cc1Swenshuai.xi 
376*53ee8cc1Swenshuai.xi     //Disable pvr1 & pvr2 block mechanism
377*53ee8cc1Swenshuai.xi     //DisableAV FIFO block mechanism for live path
378*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
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi     // Serial mode config
381*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_SERIAL_EXT_SYNC_1T);
382*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_SYNC_RISING_DETECT);
383*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_VALID_FALLING_DETECT)
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi     // Internal Sync Patch
386*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_DATA_CHK_2T);
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi     // Chip after Kirin will lost data when byte timer enable and delay set to 0 setting this bit to fix this issue
389*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_FIX_192_TIMER_0_EN);
390*53ee8cc1Swenshuai.xi 
391*53ee8cc1Swenshuai.xi     // Fix load fw secure issue (dma_start = 1 , polling dma_done , dma_start = 0)
392*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_16, CFG3_16_FIXED_DMA_RSTART_OTP_ONEWAY_LOAD_FW);
393*53ee8cc1Swenshuai.xi 
394*53ee8cc1Swenshuai.xi     // Fix pass_pkt_timestamp will hang issue
395*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_60, TSP_INIT_TIMESTAMP_RESTART_EN);
396*53ee8cc1Swenshuai.xi 
397*53ee8cc1Swenshuai.xi     // Merge stream through FIQ ECO config
398*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2B, TSP_ECO_TS_SYNC_OUT_DELAY);
399*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2B, TSP_ECO_TS_SYNC_OUT_REVERSE_BLOCK);
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi     // Fix filter null packet
402*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2B, TSP_FIX_FILTER_NULL_PKT);
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi     // Fixed miu_req & miu_last
405*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl6->CFG6_2A, FIXED_VQ_MIU_REG_FLUSH);
406*53ee8cc1Swenshuai.xi 
407*53ee8cc1Swenshuai.xi     // File/Live in 130 bytes stream will reference
408*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl3->CFG3_18, CFG3_18_HD_0000_TO_SECTION_RVU | CFG3_18_HD_0000_TO_SECTION_DIRECTV);
409*53ee8cc1Swenshuai.xi 
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi     // Fix miu arbiter last_done_z
412*53ee8cc1Swenshuai.xi     if(K6U02)
413*53ee8cc1Swenshuai.xi     {
414*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_04,  CFG_04_MIU_FIXED_LAST_DONE_Z_ABT_ALL);
415*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_10,  CFG_10_MIU_CHECK_MI2RDY_ABT_ALL);
416*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl6->CFG6_2B, TSP_OR_WRITE_FIX_FOR_NEW_MIU_ARBITER_DISABLE);
417*53ee8cc1Swenshuai.xi     }
418*53ee8cc1Swenshuai.xi }
419*53ee8cc1Swenshuai.xi 
420*53ee8cc1Swenshuai.xi // ------------ initial config ------------
421*53ee8cc1Swenshuai.xi // Sync Byte: 0x47 , 0x48 .... , 0x4e
422*53ee8cc1Swenshuai.xi // Source id : 0 , 1 , ... , 7
423*53ee8cc1Swenshuai.xi // User can use "HAL_TSP_PktConverter_SetSyncByte()" to change Sync Byte configuration
424*53ee8cc1Swenshuai.xi // , and use "HAL_TSP_PktConverter_SetSrcId()" to change Source id configuration
HAL_TSP_PktConverter_Init(void)425*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_Init(void)
426*53ee8cc1Swenshuai.xi {
427*53ee8cc1Swenshuai.xi     MS_U8   u8Path, u8Idx;
428*53ee8cc1Swenshuai.xi     MS_U8   u8SyncByte, u8SrcId;
429*53ee8cc1Swenshuai.xi 
430*53ee8cc1Swenshuai.xi     for(u8Path = 0; u8Path < TSP_TSIF_NUM; ++u8Path)
431*53ee8cc1Swenshuai.xi     {
432*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_ForceSync(u8Path,TRUE);//default: FALSE
433*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SrcIdFlt(u8Path, TRUE); // default: FALSE
434*53ee8cc1Swenshuai.xi         u8SyncByte = 0x47;
435*53ee8cc1Swenshuai.xi         u8SrcId = 0;
436*53ee8cc1Swenshuai.xi 
437*53ee8cc1Swenshuai.xi         for(u8Idx = 0; u8Idx < TSP_MERGESTREAM_NUM; ++u8Idx,++u8SyncByte,++u8SrcId)
438*53ee8cc1Swenshuai.xi         {
439*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Idx, &u8SyncByte, TRUE);
440*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetSrcId(u8Path, u8Idx, &u8SrcId, TRUE);
441*53ee8cc1Swenshuai.xi         }
442*53ee8cc1Swenshuai.xi     }
443*53ee8cc1Swenshuai.xi 
444*53ee8cc1Swenshuai.xi }
445*53ee8cc1Swenshuai.xi 
446*53ee8cc1Swenshuai.xi 
HAL_TSP_Reset(MS_BOOL bEn)447*53ee8cc1Swenshuai.xi void HAL_TSP_Reset(MS_BOOL bEn)
448*53ee8cc1Swenshuai.xi {
449*53ee8cc1Swenshuai.xi     //MS_U16              reg;
450*53ee8cc1Swenshuai.xi 
451*53ee8cc1Swenshuai.xi     if (bEn)
452*53ee8cc1Swenshuai.xi     {
453*53ee8cc1Swenshuai.xi     #if 0
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi         // WB DMA source won't be reset by SW_RST bit so we use HWPATCH to make it's source to default
456*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
457*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
458*53ee8cc1Swenshuai.xi 
459*53ee8cc1Swenshuai.xi     #endif
460*53ee8cc1Swenshuai.xi         // reset CMDQ for tsif 0~3
461*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
462*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
463*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
464*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
465*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
466*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
467*53ee8cc1Swenshuai.xi     }
468*53ee8cc1Swenshuai.xi     else
469*53ee8cc1Swenshuai.xi     {
470*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
471*53ee8cc1Swenshuai.xi 
472*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
473*53ee8cc1Swenshuai.xi         // set CMDQ for tsif 0~3
474*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
475*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
476*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
477*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
478*53ee8cc1Swenshuai.xi     }
479*53ee8cc1Swenshuai.xi }
480*53ee8cc1Swenshuai.xi 
481*53ee8cc1Swenshuai.xi 
HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)482*53ee8cc1Swenshuai.xi void HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)
483*53ee8cc1Swenshuai.xi {
484*53ee8cc1Swenshuai.xi     switch(tsIf)
485*53ee8cc1Swenshuai.xi     {
486*53ee8cc1Swenshuai.xi         case 0: if(bEn)
487*53ee8cc1Swenshuai.xi                 {
488*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
489*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
490*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
491*53ee8cc1Swenshuai.xi                 }
492*53ee8cc1Swenshuai.xi                 else
493*53ee8cc1Swenshuai.xi                 {
494*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
495*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
496*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
497*53ee8cc1Swenshuai.xi                 }
498*53ee8cc1Swenshuai.xi                 break;
499*53ee8cc1Swenshuai.xi         case 1: if(bEn)
500*53ee8cc1Swenshuai.xi                 {
501*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
502*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
503*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
504*53ee8cc1Swenshuai.xi                 }
505*53ee8cc1Swenshuai.xi                 else
506*53ee8cc1Swenshuai.xi                 {
507*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
508*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
509*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
510*53ee8cc1Swenshuai.xi                 }
511*53ee8cc1Swenshuai.xi                 break;
512*53ee8cc1Swenshuai.xi         case 2: if(bEn)
513*53ee8cc1Swenshuai.xi                 {
514*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
515*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
516*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
517*53ee8cc1Swenshuai.xi                 }
518*53ee8cc1Swenshuai.xi                 else
519*53ee8cc1Swenshuai.xi                 {
520*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
521*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
522*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
523*53ee8cc1Swenshuai.xi                 }
524*53ee8cc1Swenshuai.xi                 break;
525*53ee8cc1Swenshuai.xi         case 3: if(bEn)
526*53ee8cc1Swenshuai.xi                 {
527*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_0A,CFG_0A_RST_TS_FIN3);
528*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT3);
529*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF3 | CFG_12_REG_REST_PDBF3);
530*53ee8cc1Swenshuai.xi                 }
531*53ee8cc1Swenshuai.xi                 else
532*53ee8cc1Swenshuai.xi                 {
533*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF3 | CFG_12_REG_REST_PDBF3);
534*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT3);
535*53ee8cc1Swenshuai.xi                     REG16_CLR(&_RegCtrl2->CFG_0A,CFG_0A_RST_TS_FIN3);
536*53ee8cc1Swenshuai.xi                 }
537*53ee8cc1Swenshuai.xi                 break;
538*53ee8cc1Swenshuai.xi         default: break;
539*53ee8cc1Swenshuai.xi     }
540*53ee8cc1Swenshuai.xi }
541*53ee8cc1Swenshuai.xi 
HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType,MS_U8 u8Index,ST_TSP_HAL_CLK_STATUS * pstClkStatus)542*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType, MS_U8 u8Index, ST_TSP_HAL_CLK_STATUS *pstClkStatus)
543*53ee8cc1Swenshuai.xi {
544*53ee8cc1Swenshuai.xi     switch(eClkType)
545*53ee8cc1Swenshuai.xi     {
546*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSP_CLK:
547*53ee8cc1Swenshuai.xi             pstClkStatus->bEnable = !(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_DISABLE);
548*53ee8cc1Swenshuai.xi             pstClkStatus->bInvert = !!(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_INVERT);
549*53ee8cc1Swenshuai.xi             pstClkStatus->u8ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_CLK_MASK) >> REG_CLKGEN0_TSP_SRC_SHIFT;
550*53ee8cc1Swenshuai.xi             break;
551*53ee8cc1Swenshuai.xi         default:
552*53ee8cc1Swenshuai.xi             return FALSE;
553*53ee8cc1Swenshuai.xi     }
554*53ee8cc1Swenshuai.xi 
555*53ee8cc1Swenshuai.xi     return TRUE;
556*53ee8cc1Swenshuai.xi }
557*53ee8cc1Swenshuai.xi 
558*53ee8cc1Swenshuai.xi 
HAL_TSP_Power(MS_BOOL bEn)559*53ee8cc1Swenshuai.xi void HAL_TSP_Power(MS_BOOL bEn)
560*53ee8cc1Swenshuai.xi {
561*53ee8cc1Swenshuai.xi     if(bEn)
562*53ee8cc1Swenshuai.xi     {
563*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
564*53ee8cc1Swenshuai.xi 
565*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
566*53ee8cc1Swenshuai.xi 
567*53ee8cc1Swenshuai.xi         // Enable TSP Clk
568*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tsp");
569*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TSP_FAST");
570*53ee8cc1Swenshuai.xi         // Enable STC1,2 Clk
571*53ee8cc1Swenshuai.xi         // STC0
572*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc0");
573*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STC0_BUF");
574*53ee8cc1Swenshuai.xi         // STC1
575*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc1");
576*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STC0_BUF");
577*53ee8cc1Swenshuai.xi         // Stamp
578*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stamp");
579*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_STAMP_NORMAL");
580*53ee8cc1Swenshuai.xi         // Parser
581*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_parser");
582*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_PARSER_NORMAL");
583*53ee8cc1Swenshuai.xi         // Enable TSIF => Disable TSIF
584*53ee8cc1Swenshuai.xi         // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
585*53ee8cc1Swenshuai.xi         //TS0
586*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
587*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
588*53ee8cc1Swenshuai.xi         //TS1
589*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
590*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
591*53ee8cc1Swenshuai.xi         //TS2
592*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
593*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
594*53ee8cc1Swenshuai.xi         //TS3
595*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
596*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TS0_PAD0");
597*53ee8cc1Swenshuai.xi 
598*53ee8cc1Swenshuai.xi         //TSO0
599*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
600*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle,"CLK_TSOIN0_PAD0");
601*53ee8cc1Swenshuai.xi 
602*53ee8cc1Swenshuai.xi #else
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi         // Enable TSP Clk
605*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & ~REG_CLKGEN0_TSP_CLK_MASK)
606*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_TSP_SRC_192MHZ << REG_CLKGEN0_TSP_SRC_SHIFT);
607*53ee8cc1Swenshuai.xi 
608*53ee8cc1Swenshuai.xi         // Enable STC 0,1,2,3 Clk
609*53ee8cc1Swenshuai.xi         // STC0
610*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) & ~REG_CLKGEN0_STC0_MASK)
611*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC0_SHIFT));
612*53ee8cc1Swenshuai.xi         // STC1
613*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) & ~REG_CLKGEN0_STC1_MASK)
614*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC1_SHIFT));
615*53ee8cc1Swenshuai.xi         // STC2
616*53ee8cc1Swenshuai.xi         TSP_CLKGEN2_REG(REG_CLKGEN2_STC2_CLK) = (TSP_CLKGEN2_REG(REG_CLKGEN2_STC2_CLK) & ~REG_CLKGEN2_STC2_MASK)
617*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN2_STC_SRC_SYNTH << (REG_CLKGEN2_STC_SRC_SHIFT+REG_CLKGEN2_STC2_SHIFT));
618*53ee8cc1Swenshuai.xi         // STC3
619*53ee8cc1Swenshuai.xi         TSP_CLKGEN2_REG(REG_CLKGEN2_STC3_CLK) = (TSP_CLKGEN2_REG(REG_CLKGEN2_STC3_CLK) & ~REG_CLKGEN2_STC3_MASK)
620*53ee8cc1Swenshuai.xi                 | (REG_CLKGEN2_STC_SRC_SYNTH << (REG_CLKGEN2_STC_SRC_SHIFT+REG_CLKGEN2_STC3_SHIFT));
621*53ee8cc1Swenshuai.xi 
622*53ee8cc1Swenshuai.xi         // Stamp
623*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) & ~REG_CLKGEN0_STAMP_MASK);
624*53ee8cc1Swenshuai.xi 
625*53ee8cc1Swenshuai.xi         // Parser
626*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) & ~REG_CLKGEN0_PARSER_MASK);
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi         // Enable TSIF => Disable TSIF
629*53ee8cc1Swenshuai.xi         // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
630*53ee8cc1Swenshuai.xi         //TS0
631*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & ~REG_CLKGEN0_TS_MASK);
632*53ee8cc1Swenshuai.xi 
633*53ee8cc1Swenshuai.xi         //TS1
634*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS1_SHIFT));
635*53ee8cc1Swenshuai.xi 
636*53ee8cc1Swenshuai.xi         //TS2
637*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS2_SHIFT));
638*53ee8cc1Swenshuai.xi 
639*53ee8cc1Swenshuai.xi         //TS3
640*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS3_SHIFT));
641*53ee8cc1Swenshuai.xi 
642*53ee8cc1Swenshuai.xi         //TSO0
643*53ee8cc1Swenshuai.xi         TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK);
644*53ee8cc1Swenshuai.xi 
645*53ee8cc1Swenshuai.xi #endif
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi         // TSP Boot clk sel
648*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;
649*53ee8cc1Swenshuai.xi 
650*53ee8cc1Swenshuai.xi         // TSP SRAM sel
651*53ee8cc1Swenshuai.xi         TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) = TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) | REG_MMFI_TSP_SEL_SRAM_EN;
652*53ee8cc1Swenshuai.xi 
653*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
654*53ee8cc1Swenshuai.xi 
655*53ee8cc1Swenshuai.xi         // Disable MCM
656*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
657*53ee8cc1Swenshuai.xi 
658*53ee8cc1Swenshuai.xi     }
659*53ee8cc1Swenshuai.xi     else
660*53ee8cc1Swenshuai.xi     {
661*53ee8cc1Swenshuai.xi         // Enable MCM
662*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
663*53ee8cc1Swenshuai.xi 
664*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
665*53ee8cc1Swenshuai.xi 
666*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
667*53ee8cc1Swenshuai.xi 
668*53ee8cc1Swenshuai.xi         // Disable TSP Clk
669*53ee8cc1Swenshuai.xi         // [2016.10.14] Because AESDMA share clk with TSP. We can't disable TSP clk.
670*53ee8cc1Swenshuai.xi         // s32Handle = Drv_Clkm_Get_Handle("g_clk_tsp");
671*53ee8cc1Swenshuai.xi         // Drv_Clkm_Clk_Gate_Disable(s32Handle);
672*53ee8cc1Swenshuai.xi 
673*53ee8cc1Swenshuai.xi         // Disable STC Clk
674*53ee8cc1Swenshuai.xi         //STC0
675*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc0");
676*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
677*53ee8cc1Swenshuai.xi         //STC0
678*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stc1");
679*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
680*53ee8cc1Swenshuai.xi         // Stamp
681*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_stamp");
682*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
683*53ee8cc1Swenshuai.xi         // Parser
684*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_parser");
685*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
686*53ee8cc1Swenshuai.xi         //TS0
687*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
688*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
689*53ee8cc1Swenshuai.xi         //TS1
690*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
691*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
692*53ee8cc1Swenshuai.xi         //TS2
693*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
694*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
695*53ee8cc1Swenshuai.xi         //TS3
696*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
697*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi         //TSO0
700*53ee8cc1Swenshuai.xi         s32Handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
701*53ee8cc1Swenshuai.xi         Drv_Clkm_Clk_Gate_Disable(s32Handle);
702*53ee8cc1Swenshuai.xi 
703*53ee8cc1Swenshuai.xi #else
704*53ee8cc1Swenshuai.xi         // Disable TSP Clk
705*53ee8cc1Swenshuai.xi         // [2016.10.11] Because AESDMA share clk with TSP. We can't disable TSP clk.
706*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));
707*53ee8cc1Swenshuai.xi 
708*53ee8cc1Swenshuai.xi         // Disable STC Clk
709*53ee8cc1Swenshuai.xi         //STC0
710*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));
711*53ee8cc1Swenshuai.xi         //STC1
712*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));
713*53ee8cc1Swenshuai.xi         //STC2
714*53ee8cc1Swenshuai.xi         TSP_CLKGEN2_REG(REG_CLKGEN2_STC2_CLK)   = _SET_(TSP_CLKGEN2_REG(REG_CLKGEN2_STC2_CLK),(REG_CLKGEN2_STC_DISABLE << REG_CLKGEN2_STC2_SHIFT));
715*53ee8cc1Swenshuai.xi         //STC3
716*53ee8cc1Swenshuai.xi         TSP_CLKGEN2_REG(REG_CLKGEN2_STC3_CLK)   = _SET_(TSP_CLKGEN2_REG(REG_CLKGEN2_STC3_CLK),(REG_CLKGEN2_STC_DISABLE << REG_CLKGEN2_STC3_SHIFT));
717*53ee8cc1Swenshuai.xi 
718*53ee8cc1Swenshuai.xi         // Stamp
719*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));
720*53ee8cc1Swenshuai.xi 
721*53ee8cc1Swenshuai.xi         // Parser
722*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));
723*53ee8cc1Swenshuai.xi 
724*53ee8cc1Swenshuai.xi         // Disable TSIF clk
725*53ee8cc1Swenshuai.xi         //TS0
726*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));
727*53ee8cc1Swenshuai.xi         //TS1
728*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));
729*53ee8cc1Swenshuai.xi         //TS2
730*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));
731*53ee8cc1Swenshuai.xi         //TS3
732*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));
733*53ee8cc1Swenshuai.xi 
734*53ee8cc1Swenshuai.xi         //TSO0
735*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));
736*53ee8cc1Swenshuai.xi 
737*53ee8cc1Swenshuai.xi #endif
738*53ee8cc1Swenshuai.xi 
739*53ee8cc1Swenshuai.xi     }
740*53ee8cc1Swenshuai.xi }
741*53ee8cc1Swenshuai.xi 
HAL_TSP_CPU(MS_BOOL bEn)742*53ee8cc1Swenshuai.xi void HAL_TSP_CPU(MS_BOOL bEn)
743*53ee8cc1Swenshuai.xi {
744*53ee8cc1Swenshuai.xi     if (bEn)
745*53ee8cc1Swenshuai.xi     {
746*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
747*53ee8cc1Swenshuai.xi     }
748*53ee8cc1Swenshuai.xi     else
749*53ee8cc1Swenshuai.xi     {
750*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
751*53ee8cc1Swenshuai.xi     }
752*53ee8cc1Swenshuai.xi }
HAL_TSP_ResetCPU(MS_BOOL bReset)753*53ee8cc1Swenshuai.xi void HAL_TSP_ResetCPU(MS_BOOL bReset)
754*53ee8cc1Swenshuai.xi {
755*53ee8cc1Swenshuai.xi     // @NOTE TRUE for stop cpu clock
756*53ee8cc1Swenshuai.xi     if (bReset)
757*53ee8cc1Swenshuai.xi     {
758*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
759*53ee8cc1Swenshuai.xi     }
760*53ee8cc1Swenshuai.xi     else
761*53ee8cc1Swenshuai.xi     {
762*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
763*53ee8cc1Swenshuai.xi     }
764*53ee8cc1Swenshuai.xi }
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi 
HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr,MS_U32 u32FwSize)767*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr, MS_U32 u32FwSize)
768*53ee8cc1Swenshuai.xi {
769*53ee8cc1Swenshuai.xi 
770*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_MASK            0xffffc000 //code: 0x2000, data: 0x1000, total: 0x3000
771*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_HIT        0x00000000
772*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_MISS       0xffffffff
773*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_MASK            0xffffc000
774*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_HIT        0x00000000
775*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_MISS       0xffffffff
776*53ee8cc1Swenshuai.xi #define _TSP_QMEM_SIZE              0x1000 // 16K bytes, 32bit aligment  //0x4000  this is 4 byte address
777*53ee8cc1Swenshuai.xi 
778*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Cpu_Base, 0); // 16 bytes address unit
779*53ee8cc1Swenshuai.xi 
780*53ee8cc1Swenshuai.xi     MS_U32              u32DnldCtrl  = 0;
781*53ee8cc1Swenshuai.xi     MS_U32              u32DnldCtrl1 = 0;
782*53ee8cc1Swenshuai.xi 
783*53ee8cc1Swenshuai.xi     // Check MIU select
784*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel = 0;
785*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetFWBuf = 0;
786*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFWBuf, u32FwPhyAddr);
787*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));
788*53ee8cc1Swenshuai.xi 
789*53ee8cc1Swenshuai.xi     u32DnldCtrl  =      (phyMiuOffsetFWBuf >> MIU_BUS) >> TSP_DNLD_ADDR_ALI_SHIFT;
790*53ee8cc1Swenshuai.xi     u32DnldCtrl1 =      u32DnldCtrl >> 16;
791*53ee8cc1Swenshuai.xi 
792*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Dnld_Ctrl_Addr, (MS_U16)(u32DnldCtrl & TSP_DNLD_ADDR_MASK)); // oneway register
793*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl->Dnld_AddrH, TSP_DMA_RADDR_MSB_MASK, (MS_U16)u32DnldCtrl1);
794*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Dnld_Ctrl_Size, _TSP_QMEM_SIZE);
795*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
796*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START);
797*53ee8cc1Swenshuai.xi 
798*53ee8cc1Swenshuai.xi     //@TODO temprarily comment because of Secure Protect
799*53ee8cc1Swenshuai.xi #if 1
800*53ee8cc1Swenshuai.xi     while (!(REG16_R(&_RegCtrl->TSP_Ctrl) & TSP_CTRL_DNLD_DONE))
801*53ee8cc1Swenshuai.xi     {
802*53ee8cc1Swenshuai.xi     }
803*53ee8cc1Swenshuai.xi #endif
804*53ee8cc1Swenshuai.xi 
805*53ee8cc1Swenshuai.xi 
806*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
807*53ee8cc1Swenshuai.xi 
808*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Imask, _TSP_QMEM_I_MASK);
809*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Ibase, _TSP_QMEM_I_ADDR_HIT);
810*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Dmask, _TSP_QMEM_D_MASK);
811*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Qmem_Dbase, _TSP_QMEM_D_ADDR_HIT);
812*53ee8cc1Swenshuai.xi 
813*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_MASK
814*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_HIT
815*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_MISS
816*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_MASK
817*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_HIT
818*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_MISS
819*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_SIZE
820*53ee8cc1Swenshuai.xi 
821*53ee8cc1Swenshuai.xi     return TRUE;
822*53ee8cc1Swenshuai.xi }
823*53ee8cc1Swenshuai.xi 
HAL_TSP_RestoreFltState(void)824*53ee8cc1Swenshuai.xi void    HAL_TSP_RestoreFltState(void)
825*53ee8cc1Swenshuai.xi {
826*53ee8cc1Swenshuai.xi     MS_U32              u32Size;
827*53ee8cc1Swenshuai.xi     TSP32 *             pRegEnd;
828*53ee8cc1Swenshuai.xi     TSP32 *             pReg;
829*53ee8cc1Swenshuai.xi     int                 i, j;
830*53ee8cc1Swenshuai.xi 
831*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_PIDFLT_NUM; i++)
832*53ee8cc1Swenshuai.xi     {
833*53ee8cc1Swenshuai.xi         TSP32_IdrW(&(_REGPid0->Flt[i]), _u32PidFltReg[i]);
834*53ee8cc1Swenshuai.xi         TSP32_IdrW(&(_REGPid1->Flt[i]), _u32PidDstReg[i]);
835*53ee8cc1Swenshuai.xi     }
836*53ee8cc1Swenshuai.xi 
837*53ee8cc1Swenshuai.xi     u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
838*53ee8cc1Swenshuai.xi 
839*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_SECFLT_NUM; i++)
840*53ee8cc1Swenshuai.xi     {
841*53ee8cc1Swenshuai.xi        pReg = (TSP32*)&(_REGSec->Flt[i]);
842*53ee8cc1Swenshuai.xi        pRegEnd = pReg + u32Size;
843*53ee8cc1Swenshuai.xi        j = 0;
844*53ee8cc1Swenshuai.xi        for ( ; pReg < pRegEnd; pReg++)
845*53ee8cc1Swenshuai.xi        {
846*53ee8cc1Swenshuai.xi            TSP32_IdrW(pReg, _u32SecReg[i*u32Size+j]);
847*53ee8cc1Swenshuai.xi            j++;
848*53ee8cc1Swenshuai.xi        }
849*53ee8cc1Swenshuai.xi     }
850*53ee8cc1Swenshuai.xi 
851*53ee8cc1Swenshuai.xi }
852*53ee8cc1Swenshuai.xi 
HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)853*53ee8cc1Swenshuai.xi void HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
854*53ee8cc1Swenshuai.xi {
855*53ee8cc1Swenshuai.xi     if(bEn)
856*53ee8cc1Swenshuai.xi     {
857*53ee8cc1Swenshuai.xi         switch(pktDmxId)
858*53ee8cc1Swenshuai.xi         {
859*53ee8cc1Swenshuai.xi             case 0:
860*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
861*53ee8cc1Swenshuai.xi                 break;
862*53ee8cc1Swenshuai.xi             case 1:
863*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
864*53ee8cc1Swenshuai.xi                 break;
865*53ee8cc1Swenshuai.xi             case 2:
866*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
867*53ee8cc1Swenshuai.xi                 break;
868*53ee8cc1Swenshuai.xi             case 3:
869*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF3);
870*53ee8cc1Swenshuai.xi                 break;
871*53ee8cc1Swenshuai.xi             default:
872*53ee8cc1Swenshuai.xi                 break;
873*53ee8cc1Swenshuai.xi         }
874*53ee8cc1Swenshuai.xi     }
875*53ee8cc1Swenshuai.xi     else
876*53ee8cc1Swenshuai.xi     {
877*53ee8cc1Swenshuai.xi         switch(pktDmxId)
878*53ee8cc1Swenshuai.xi         {
879*53ee8cc1Swenshuai.xi             case 0:
880*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
881*53ee8cc1Swenshuai.xi                 break;
882*53ee8cc1Swenshuai.xi             case 1:
883*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
884*53ee8cc1Swenshuai.xi                 break;
885*53ee8cc1Swenshuai.xi             case 2:
886*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
887*53ee8cc1Swenshuai.xi                 break;
888*53ee8cc1Swenshuai.xi             case 3:
889*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF3);
890*53ee8cc1Swenshuai.xi                 break;
891*53ee8cc1Swenshuai.xi             default:
892*53ee8cc1Swenshuai.xi                 break;
893*53ee8cc1Swenshuai.xi         }
894*53ee8cc1Swenshuai.xi     }
895*53ee8cc1Swenshuai.xi }
896*53ee8cc1Swenshuai.xi 
HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)897*53ee8cc1Swenshuai.xi void HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
898*53ee8cc1Swenshuai.xi {
899*53ee8cc1Swenshuai.xi     if(bEn)
900*53ee8cc1Swenshuai.xi     {
901*53ee8cc1Swenshuai.xi         switch(pktDmxId)
902*53ee8cc1Swenshuai.xi         {
903*53ee8cc1Swenshuai.xi             case 0:
904*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
905*53ee8cc1Swenshuai.xi                 break;
906*53ee8cc1Swenshuai.xi             case 1:
907*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
908*53ee8cc1Swenshuai.xi                 break;
909*53ee8cc1Swenshuai.xi             case 2:
910*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
911*53ee8cc1Swenshuai.xi                 break;
912*53ee8cc1Swenshuai.xi             case 3:
913*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF3);
914*53ee8cc1Swenshuai.xi                 break;
915*53ee8cc1Swenshuai.xi             default:
916*53ee8cc1Swenshuai.xi                 break;
917*53ee8cc1Swenshuai.xi         }
918*53ee8cc1Swenshuai.xi     }
919*53ee8cc1Swenshuai.xi     else
920*53ee8cc1Swenshuai.xi     {
921*53ee8cc1Swenshuai.xi         switch(pktDmxId)
922*53ee8cc1Swenshuai.xi         {
923*53ee8cc1Swenshuai.xi             case 0:
924*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
925*53ee8cc1Swenshuai.xi                 break;
926*53ee8cc1Swenshuai.xi             case 1:
927*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
928*53ee8cc1Swenshuai.xi                 break;
929*53ee8cc1Swenshuai.xi             case 2:
930*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
931*53ee8cc1Swenshuai.xi                 break;
932*53ee8cc1Swenshuai.xi             case 3:
933*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF3);
934*53ee8cc1Swenshuai.xi                 break;
935*53ee8cc1Swenshuai.xi             default:
936*53ee8cc1Swenshuai.xi                 break;
937*53ee8cc1Swenshuai.xi         }
938*53ee8cc1Swenshuai.xi     }
939*53ee8cc1Swenshuai.xi }
940*53ee8cc1Swenshuai.xi 
HAL_TSP_SetTSIF(MS_U16 u16TSIF,TSP_TSIF_CFG u16Cfg,MS_BOOL bFileIn)941*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetTSIF(MS_U16 u16TSIF, TSP_TSIF_CFG u16Cfg, MS_BOOL bFileIn)
942*53ee8cc1Swenshuai.xi {
943*53ee8cc1Swenshuai.xi     if(bFileIn)
944*53ee8cc1Swenshuai.xi     {
945*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, TRUE); // this returns true only we don't check the return value
946*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_LiveEn(u16TSIF, FALSE);             // this returns true only we don't check the return value
947*53ee8cc1Swenshuai.xi     }
948*53ee8cc1Swenshuai.xi     else
949*53ee8cc1Swenshuai.xi     {
950*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, FALSE);
951*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_LiveEn(u16TSIF, TRUE);
952*53ee8cc1Swenshuai.xi     }
953*53ee8cc1Swenshuai.xi 
954*53ee8cc1Swenshuai.xi     if(bFileIn != TRUE)
955*53ee8cc1Swenshuai.xi     {
956*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_BitSwap(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_BITSWAP)?TRUE:FALSE));
957*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_ExtSync(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_EXTSYNC)?TRUE:FALSE));
958*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_Parl   (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_PARA   )?TRUE:FALSE));
959*53ee8cc1Swenshuai.xi         HAL_TSP_TSIF_3Wire  (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_3WIRE  )?TRUE:FALSE));
960*53ee8cc1Swenshuai.xi     }
961*53ee8cc1Swenshuai.xi 
962*53ee8cc1Swenshuai.xi     return TRUE;
963*53ee8cc1Swenshuai.xi }
964*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_LiveEn(MS_U32 tsIf,MS_BOOL bEnable)965*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_LiveEn(MS_U32 tsIf, MS_BOOL bEnable)
966*53ee8cc1Swenshuai.xi {
967*53ee8cc1Swenshuai.xi     if(bEnable)
968*53ee8cc1Swenshuai.xi     {
969*53ee8cc1Swenshuai.xi         switch(tsIf)
970*53ee8cc1Swenshuai.xi         {
971*53ee8cc1Swenshuai.xi             case 0:
972*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
973*53ee8cc1Swenshuai.xi                 break;
974*53ee8cc1Swenshuai.xi             case 1:
975*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
976*53ee8cc1Swenshuai.xi                 break;
977*53ee8cc1Swenshuai.xi             case 2:
978*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
979*53ee8cc1Swenshuai.xi                 break;
980*53ee8cc1Swenshuai.xi             case 3:
981*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_IF3_EN);
982*53ee8cc1Swenshuai.xi                 break;
983*53ee8cc1Swenshuai.xi             default:
984*53ee8cc1Swenshuai.xi                 return FALSE;
985*53ee8cc1Swenshuai.xi         }
986*53ee8cc1Swenshuai.xi     }
987*53ee8cc1Swenshuai.xi     else
988*53ee8cc1Swenshuai.xi     {
989*53ee8cc1Swenshuai.xi         switch(tsIf)
990*53ee8cc1Swenshuai.xi         {
991*53ee8cc1Swenshuai.xi             case 0:
992*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
993*53ee8cc1Swenshuai.xi                 break;
994*53ee8cc1Swenshuai.xi             case 1:
995*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
996*53ee8cc1Swenshuai.xi                 break;
997*53ee8cc1Swenshuai.xi             case 2:
998*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
999*53ee8cc1Swenshuai.xi                 break;
1000*53ee8cc1Swenshuai.xi             case 3:
1001*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_IF3_EN);
1002*53ee8cc1Swenshuai.xi                 break;
1003*53ee8cc1Swenshuai.xi             default:
1004*53ee8cc1Swenshuai.xi                 return FALSE;
1005*53ee8cc1Swenshuai.xi         }
1006*53ee8cc1Swenshuai.xi     }
1007*53ee8cc1Swenshuai.xi 
1008*53ee8cc1Swenshuai.xi     return TRUE;
1009*53ee8cc1Swenshuai.xi }
1010*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad(MS_U32 tsIf,TSP_TS_PAD eTSPad)1011*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad(MS_U32 tsIf, TSP_TS_PAD eTSPad) // @FIXME modify this parameter to enum plz
1012*53ee8cc1Swenshuai.xi {
1013*53ee8cc1Swenshuai.xi     MS_U32 clk_src = REG_CLKGEN0_TS_SRC_EXT0;
1014*53ee8cc1Swenshuai.xi     MS_U32 pad_src = REG_TOP_TS_SRC_EXT0;
1015*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1016*53ee8cc1Swenshuai.xi     MS_S32 handle;
1017*53ee8cc1Swenshuai.xi     MS_U8  u8NameIdx = 0;
1018*53ee8cc1Swenshuai.xi     char* u8ClkSrcNames[] =
1019*53ee8cc1Swenshuai.xi     {
1020*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD0",
1021*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD1",
1022*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD2",
1023*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD3",
1024*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD4",
1025*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD5",
1026*53ee8cc1Swenshuai.xi         "CLK_TS0_PAD6",
1027*53ee8cc1Swenshuai.xi         "CLK_TS0_PADTSO"
1028*53ee8cc1Swenshuai.xi         "CLK_TS0_PADTSIO"
1029*53ee8cc1Swenshuai.xi     };
1030*53ee8cc1Swenshuai.xi #endif
1031*53ee8cc1Swenshuai.xi 
1032*53ee8cc1Swenshuai.xi     //@NOTE
1033*53ee8cc1Swenshuai.xi     //EX3~6 are serial mode and ts2_padmax_mode must be 2 or 3.
1034*53ee8cc1Swenshuai.xi 
1035*53ee8cc1Swenshuai.xi 
1036*53ee8cc1Swenshuai.xi     switch (eTSPad)
1037*53ee8cc1Swenshuai.xi     {
1038*53ee8cc1Swenshuai.xi         default:
1039*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT0:
1040*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT0;
1041*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT0;
1042*53ee8cc1Swenshuai.xi             break;
1043*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1:
1044*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT1;
1045*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT1;
1046*53ee8cc1Swenshuai.xi             break;
1047*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT2:
1048*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT2;
1049*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT2;
1050*53ee8cc1Swenshuai.xi             break;
1051*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT3:
1052*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT3;
1053*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT3;
1054*53ee8cc1Swenshuai.xi             break;
1055*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT4:
1056*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT4;
1057*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT4;
1058*53ee8cc1Swenshuai.xi             break;
1059*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT5:
1060*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT5;
1061*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT5;
1062*53ee8cc1Swenshuai.xi             break;
1063*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT6:
1064*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT6;
1065*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT6;
1066*53ee8cc1Swenshuai.xi             break;
1067*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSOUT0:
1068*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_TSO0;
1069*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_TSO0;
1070*53ee8cc1Swenshuai.xi             break;
1071*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSIOOUT0:
1072*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_TSIO0;
1073*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_TSIO0;
1074*53ee8cc1Swenshuai.xi             break;
1075*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER0:
1076*53ee8cc1Swenshuai.xi             clk_src = REG_CLKGEN0_TS_SRC_EXT0;
1077*53ee8cc1Swenshuai.xi             pad_src = REG_TOP_TS_SRC_EXT0;
1078*53ee8cc1Swenshuai.xi             printf("[%s][%d]Warning KANO not support Internal Demod\n",__FUNCTION__,__LINE__);
1079*53ee8cc1Swenshuai.xi             break;
1080*53ee8cc1Swenshuai.xi     }
1081*53ee8cc1Swenshuai.xi 
1082*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1083*53ee8cc1Swenshuai.xi     switch(clk_src)
1084*53ee8cc1Swenshuai.xi     {
1085*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT0:
1086*53ee8cc1Swenshuai.xi             u8NameIdx = 0;
1087*53ee8cc1Swenshuai.xi             break;
1088*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT1:
1089*53ee8cc1Swenshuai.xi             u8NameIdx = 1;
1090*53ee8cc1Swenshuai.xi             break;
1091*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT2:
1092*53ee8cc1Swenshuai.xi             u8NameIdx = 2;
1093*53ee8cc1Swenshuai.xi             break;
1094*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT3:
1095*53ee8cc1Swenshuai.xi             u8NameIdx = 3;
1096*53ee8cc1Swenshuai.xi             break;
1097*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT4:
1098*53ee8cc1Swenshuai.xi             u8NameIdx = 4;
1099*53ee8cc1Swenshuai.xi             break;
1100*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT5:
1101*53ee8cc1Swenshuai.xi             u8NameIdx = 5;
1102*53ee8cc1Swenshuai.xi             break;
1103*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_EXT6:
1104*53ee8cc1Swenshuai.xi             u8NameIdx = 6;
1105*53ee8cc1Swenshuai.xi             break;
1106*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSO0:
1107*53ee8cc1Swenshuai.xi             u8NameIdx = 7;
1108*53ee8cc1Swenshuai.xi             break;
1109*53ee8cc1Swenshuai.xi         case REG_CLKGEN0_TS_SRC_TSIO0:
1110*53ee8cc1Swenshuai.xi             u8NameIdx = 8;
1111*53ee8cc1Swenshuai.xi             break;
1112*53ee8cc1Swenshuai.xi         default:
1113*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__));
1114*53ee8cc1Swenshuai.xi             u8NameIdx = 0;
1115*53ee8cc1Swenshuai.xi             break;
1116*53ee8cc1Swenshuai.xi     }
1117*53ee8cc1Swenshuai.xi #endif
1118*53ee8cc1Swenshuai.xi 
1119*53ee8cc1Swenshuai.xi     //@FIXME use enum instead of constant
1120*53ee8cc1Swenshuai.xi     switch (tsIf)
1121*53ee8cc1Swenshuai.xi     {
1122*53ee8cc1Swenshuai.xi         case 0:
1123*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);
1124*53ee8cc1Swenshuai.xi 
1125*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1126*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts");
1127*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1128*53ee8cc1Swenshuai.xi         #else
1129*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));
1130*53ee8cc1Swenshuai.xi         #endif
1131*53ee8cc1Swenshuai.xi             break;
1132*53ee8cc1Swenshuai.xi         case 1:
1133*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))
1134*53ee8cc1Swenshuai.xi                                                         | (pad_src<<REG_TOP_TS1_SHIFT);
1135*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1136*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1137*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1138*53ee8cc1Swenshuai.xi         #else
1139*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS1_SHIFT))
1140*53ee8cc1Swenshuai.xi                                                         | (clk_src<<(REG_CLKGEN0_TS1_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1141*53ee8cc1Swenshuai.xi         #endif
1142*53ee8cc1Swenshuai.xi             break;
1143*53ee8cc1Swenshuai.xi         case 2:
1144*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))
1145*53ee8cc1Swenshuai.xi                                                         | (pad_src<<REG_TOP_TS2_SHIFT);
1146*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1147*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1148*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1149*53ee8cc1Swenshuai.xi         #else
1150*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS2_SHIFT))
1151*53ee8cc1Swenshuai.xi                                                         | (clk_src<<(REG_CLKGEN0_TS2_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1152*53ee8cc1Swenshuai.xi         #endif
1153*53ee8cc1Swenshuai.xi             break;
1154*53ee8cc1Swenshuai.xi         case 3:
1155*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))
1156*53ee8cc1Swenshuai.xi                                                         | (pad_src<<REG_TOP_TS3_SHIFT);
1157*53ee8cc1Swenshuai.xi         #ifdef CONFIG_MSTAR_CLKM
1158*53ee8cc1Swenshuai.xi             handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1159*53ee8cc1Swenshuai.xi             Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1160*53ee8cc1Swenshuai.xi         #else
1161*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK)  = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS3_SHIFT))
1162*53ee8cc1Swenshuai.xi                                                         | (clk_src<<(REG_CLKGEN0_TS3_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1163*53ee8cc1Swenshuai.xi         #endif
1164*53ee8cc1Swenshuai.xi             break;
1165*53ee8cc1Swenshuai.xi 
1166*53ee8cc1Swenshuai.xi         default:
1167*53ee8cc1Swenshuai.xi             return FALSE;
1168*53ee8cc1Swenshuai.xi     }
1169*53ee8cc1Swenshuai.xi     return TRUE;
1170*53ee8cc1Swenshuai.xi }
1171*53ee8cc1Swenshuai.xi 
_HAL_TSO_SetPad1OutMux(MS_BOOL bSet)1172*53ee8cc1Swenshuai.xi static void _HAL_TSO_SetPad1OutMux(MS_BOOL bSet)
1173*53ee8cc1Swenshuai.xi {
1174*53ee8cc1Swenshuai.xi     if(bSet)
1175*53ee8cc1Swenshuai.xi     {
1176*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);
1177*53ee8cc1Swenshuai.xi     }
1178*53ee8cc1Swenshuai.xi     else
1179*53ee8cc1Swenshuai.xi     {
1180*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))
1181*53ee8cc1Swenshuai.xi                                             | (REG_TOP_TS1MODE_INPUT << REG_TOP_TS1MODE_SHIFT));
1182*53ee8cc1Swenshuai.xi     }
1183*53ee8cc1Swenshuai.xi }
1184*53ee8cc1Swenshuai.xi 
HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)1185*53ee8cc1Swenshuai.xi void HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)
1186*53ee8cc1Swenshuai.xi {
1187*53ee8cc1Swenshuai.xi     _HAL_TSO_SetPad1OutMux(bSet);
1188*53ee8cc1Swenshuai.xi }
1189*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)1190*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)
1191*53ee8cc1Swenshuai.xi {
1192*53ee8cc1Swenshuai.xi     MS_U16  u16Temp = 0;
1193*53ee8cc1Swenshuai.xi 
1194*53ee8cc1Swenshuai.xi     switch(eOutPad) // output pad
1195*53ee8cc1Swenshuai.xi     {
1196*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1: // TS_pad #1
1197*53ee8cc1Swenshuai.xi             if(eInPad == E_TSP_TS_PAD_EXT1)  // output pad == input pad ?
1198*53ee8cc1Swenshuai.xi             {
1199*53ee8cc1Swenshuai.xi                 return FALSE;
1200*53ee8cc1Swenshuai.xi             }
1201*53ee8cc1Swenshuai.xi 
1202*53ee8cc1Swenshuai.xi             _HAL_TSO_SetPad1OutMux(bEnable); // set pad mode (input or output)
1203*53ee8cc1Swenshuai.xi 
1204*53ee8cc1Swenshuai.xi             switch(eOutPadMode) // set pad output mode
1205*53ee8cc1Swenshuai.xi             {
1206*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_TSO:
1207*53ee8cc1Swenshuai.xi                     // input from TSO
1208*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))
1209*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_TSO << REG_TOP_TS_OUT_MODE_SHIFT);
1210*53ee8cc1Swenshuai.xi                     break;
1211*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_S2P:
1212*53ee8cc1Swenshuai.xi                     // input from S2P
1213*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))
1214*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_S2P << REG_TOP_TS_OUT_MODE_SHIFT);
1215*53ee8cc1Swenshuai.xi 
1216*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
1217*53ee8cc1Swenshuai.xi                     if(eInPadMode == E_TSP_TS_PAD_MUX_PARALLEL)
1218*53ee8cc1Swenshuai.xi                     {
1219*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_BYPASS_S2P;                                                  // bypass S2P: if input is parallel , set it
1220*53ee8cc1Swenshuai.xi                     }
1221*53ee8cc1Swenshuai.xi                     else if(eInPadMode == E_TSP_TS_PAD_MUX_3WIRED_SERIAL)
1222*53ee8cc1Swenshuai.xi                     {
1223*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_S2P_3WIRE;                                                   // input pad is 3-wire serial
1224*53ee8cc1Swenshuai.xi                     }
1225*53ee8cc1Swenshuai.xi 
1226*53ee8cc1Swenshuai.xi                     // S2P config
1227*53ee8cc1Swenshuai.xi                     TSP_TSO_REG(REG_TSO_TSP_CONFIG0) = (TSP_TSO_REG(REG_TSO_TSP_CONFIG0) & ~REG_TSO_TSP_S2P_MASK) | u16Temp;
1228*53ee8cc1Swenshuai.xi                     // select S2P input pad
1229*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TSO4_5_MUX) = (TSP_TOP_REG(REG_TOP_TSO4_5_MUX) & ~REG_TOP_TSO4_MASK)
1230*53ee8cc1Swenshuai.xi                                                     | (eInPad << REG_TOP_TSO4_SHIFT);
1231*53ee8cc1Swenshuai.xi                     // select S2P input clk source
1232*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1233*53ee8cc1Swenshuai.xi                     {
1234*53ee8cc1Swenshuai.xi                         MS_S32 handle;
1235*53ee8cc1Swenshuai.xi                         MS_U8  u8NameIdx = 0;
1236*53ee8cc1Swenshuai.xi                         char* u8ClkSrcNames[] =
1237*53ee8cc1Swenshuai.xi                         {
1238*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD0",
1239*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD1",
1240*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD2",
1241*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD3",
1242*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD4",
1243*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD5",
1244*53ee8cc1Swenshuai.xi                             "CLK_S2P0_PAD6"
1245*53ee8cc1Swenshuai.xi                         };
1246*53ee8cc1Swenshuai.xi 
1247*53ee8cc1Swenshuai.xi                         switch(eInPad)
1248*53ee8cc1Swenshuai.xi                         {
1249*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT0:
1250*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1251*53ee8cc1Swenshuai.xi                                 break;
1252*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT1:
1253*53ee8cc1Swenshuai.xi                                 u8NameIdx = 1;
1254*53ee8cc1Swenshuai.xi                                 break;
1255*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT2:
1256*53ee8cc1Swenshuai.xi                                 u8NameIdx = 2;
1257*53ee8cc1Swenshuai.xi                                 break;
1258*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT3:
1259*53ee8cc1Swenshuai.xi                                 u8NameIdx = 3;
1260*53ee8cc1Swenshuai.xi                                 break;
1261*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT4:
1262*53ee8cc1Swenshuai.xi                                 u8NameIdx = 4;
1263*53ee8cc1Swenshuai.xi                                 break;
1264*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT5:
1265*53ee8cc1Swenshuai.xi                                 u8NameIdx = 5;
1266*53ee8cc1Swenshuai.xi                                 break;
1267*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT6:
1268*53ee8cc1Swenshuai.xi                                 u8NameIdx = 6;
1269*53ee8cc1Swenshuai.xi                                 break;
1270*53ee8cc1Swenshuai.xi                             default:
1271*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__));
1272*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1273*53ee8cc1Swenshuai.xi                                 break;
1274*53ee8cc1Swenshuai.xi                         }
1275*53ee8cc1Swenshuai.xi 
1276*53ee8cc1Swenshuai.xi                         handle = Drv_Clkm_Get_Handle("g_clk_s2p_in");
1277*53ee8cc1Swenshuai.xi                         Drv_Clkm_Set_Clk_Source(handle, u8ClkSrcNames[u8NameIdx]);
1278*53ee8cc1Swenshuai.xi                     }
1279*53ee8cc1Swenshuai.xi #else
1280*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))
1281*53ee8cc1Swenshuai.xi                                                                 | ((eInPad & REG_CLKGEN0_S2P_IN_CLK_SRC_MASK) << (REG_CLKGEN0_S2P_IN_CLK_SHIFT + REG_CLKGEN0_S2P_IN_CLK_SRC_SHIFT));
1282*53ee8cc1Swenshuai.xi #endif
1283*53ee8cc1Swenshuai.xi                     break;
1284*53ee8cc1Swenshuai.xi                 case E_TSP_TS_PAD_MUX_S2P1:
1285*53ee8cc1Swenshuai.xi                     // input from S2P1
1286*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))
1287*53ee8cc1Swenshuai.xi                                                         | (REG_TOP_TS_OUT_MODE_S2P1 << REG_TOP_TS_OUT_MODE_SHIFT);
1288*53ee8cc1Swenshuai.xi 
1289*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
1290*53ee8cc1Swenshuai.xi                     if(eInPadMode == E_TSP_TS_PAD_MUX_PARALLEL)
1291*53ee8cc1Swenshuai.xi                     {
1292*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_BYPASS_S2P1;                                                 // bypass S2P1: if input is parallel , set it
1293*53ee8cc1Swenshuai.xi                     }
1294*53ee8cc1Swenshuai.xi                     else if(eInPadMode == E_TSP_TS_PAD_MUX_3WIRED_SERIAL)
1295*53ee8cc1Swenshuai.xi                     {
1296*53ee8cc1Swenshuai.xi                         u16Temp |= REG_TSO_TSP_S2P1_3WIRE;                                                  // input pad is 3-wire serial
1297*53ee8cc1Swenshuai.xi                     }
1298*53ee8cc1Swenshuai.xi                     // S2P1 config
1299*53ee8cc1Swenshuai.xi                     TSP_TSO_REG(REG_TSO_TSP_CONFIG0) = (TSP_TSO_REG(REG_TSO_TSP_CONFIG0) & ~REG_TSO_TSP_S2P1_MASK) | u16Temp;
1300*53ee8cc1Swenshuai.xi                     // select S2P1 input pad
1301*53ee8cc1Swenshuai.xi                     TSP_TOP_REG(REG_TOP_TSO4_5_MUX) = (TSP_TOP_REG(REG_TOP_TSO4_5_MUX) & ~REG_TOP_TSO5_MASK)
1302*53ee8cc1Swenshuai.xi                                                     | (eInPad << REG_TOP_TSO5_SHIFT);
1303*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1304*53ee8cc1Swenshuai.xi                     {
1305*53ee8cc1Swenshuai.xi                         MS_S32 handle;
1306*53ee8cc1Swenshuai.xi                         MS_U8  u8NameIdx = 0;
1307*53ee8cc1Swenshuai.xi                         char* u8ClkSrcNames[] =
1308*53ee8cc1Swenshuai.xi                         {
1309*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD0",
1310*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD1",
1311*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD2",
1312*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD3",
1313*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD4",
1314*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD5",
1315*53ee8cc1Swenshuai.xi                             "CLK_S2P1_PAD6"
1316*53ee8cc1Swenshuai.xi                         };
1317*53ee8cc1Swenshuai.xi 
1318*53ee8cc1Swenshuai.xi                         switch(eInPad)
1319*53ee8cc1Swenshuai.xi                         {
1320*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT0:
1321*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1322*53ee8cc1Swenshuai.xi                                 break;
1323*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT1:
1324*53ee8cc1Swenshuai.xi                                 u8NameIdx = 1;
1325*53ee8cc1Swenshuai.xi                                 break;
1326*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT2:
1327*53ee8cc1Swenshuai.xi                                 u8NameIdx = 2;
1328*53ee8cc1Swenshuai.xi                                 break;
1329*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT3:
1330*53ee8cc1Swenshuai.xi                                 u8NameIdx = 3;
1331*53ee8cc1Swenshuai.xi                                 break;
1332*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT4:
1333*53ee8cc1Swenshuai.xi                                 u8NameIdx = 4;
1334*53ee8cc1Swenshuai.xi                                 break;
1335*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT5:
1336*53ee8cc1Swenshuai.xi                                 u8NameIdx = 5;
1337*53ee8cc1Swenshuai.xi                                 break;
1338*53ee8cc1Swenshuai.xi                             case E_TSP_TS_PAD_EXT6:
1339*53ee8cc1Swenshuai.xi                                 u8NameIdx = 6;
1340*53ee8cc1Swenshuai.xi                                 break;
1341*53ee8cc1Swenshuai.xi                             default:
1342*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__));
1343*53ee8cc1Swenshuai.xi                                 u8NameIdx = 0;
1344*53ee8cc1Swenshuai.xi                                 break;
1345*53ee8cc1Swenshuai.xi                         }
1346*53ee8cc1Swenshuai.xi 
1347*53ee8cc1Swenshuai.xi                         handle = Drv_Clkm_Get_Handle("g_clk_s2p1_in");
1348*53ee8cc1Swenshuai.xi                         Drv_Clkm_Set_Clk_Source(handle, u8ClkSrcNames[u8NameIdx]);
1349*53ee8cc1Swenshuai.xi                     }
1350*53ee8cc1Swenshuai.xi #else
1351*53ee8cc1Swenshuai.xi                     // select S2P1 input clk source
1352*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))
1353*53ee8cc1Swenshuai.xi                                                                 | ((eInPad & REG_CLKGEN0_S2P_IN_CLK_SRC_MASK) << (REG_CLKGEN0_S2P1_IN_CLK_SHIFT + REG_CLKGEN0_S2P_IN_CLK_SRC_SHIFT));
1354*53ee8cc1Swenshuai.xi #endif
1355*53ee8cc1Swenshuai.xi 
1356*53ee8cc1Swenshuai.xi                     break;
1357*53ee8cc1Swenshuai.xi                 default:
1358*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));
1359*53ee8cc1Swenshuai.xi                     return FALSE;
1360*53ee8cc1Swenshuai.xi             }
1361*53ee8cc1Swenshuai.xi             break;
1362*53ee8cc1Swenshuai.xi         default:
1363*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__));
1364*53ee8cc1Swenshuai.xi             return FALSE;
1365*53ee8cc1Swenshuai.xi     }
1366*53ee8cc1Swenshuai.xi 
1367*53ee8cc1Swenshuai.xi     return TRUE;
1368*53ee8cc1Swenshuai.xi }
1369*53ee8cc1Swenshuai.xi 
_TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad,MS_U32 * pu32PADSrc,MS_U32 * pu32CLKSrc)1370*53ee8cc1Swenshuai.xi static MS_BOOL _TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad, MS_U32* pu32PADSrc, MS_U32* pu32CLKSrc)
1371*53ee8cc1Swenshuai.xi {
1372*53ee8cc1Swenshuai.xi     switch (eTSPad)
1373*53ee8cc1Swenshuai.xi     {
1374*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT0:
1375*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
1376*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_EXT0;
1377*53ee8cc1Swenshuai.xi             break;
1378*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_EXT1:
1379*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT1;
1380*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_EXT1;
1381*53ee8cc1Swenshuai.xi             break;
1382*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_INTER0:
1383*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_DMD0;
1384*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_DMD0;
1385*53ee8cc1Swenshuai.xi             break;
1386*53ee8cc1Swenshuai.xi         case E_TSP_TS_PAD_TSOUT0:
1387*53ee8cc1Swenshuai.xi             *pu32CLKSrc = REG_CLKGEN0_TS_SRC_TSO0;
1388*53ee8cc1Swenshuai.xi             *pu32PADSrc = REG_TOP_TS_SRC_TSO0;
1389*53ee8cc1Swenshuai.xi             break;
1390*53ee8cc1Swenshuai.xi 
1391*53ee8cc1Swenshuai.xi         default:
1392*53ee8cc1Swenshuai.xi             return FALSE;
1393*53ee8cc1Swenshuai.xi     }
1394*53ee8cc1Swenshuai.xi 
1395*53ee8cc1Swenshuai.xi     return TRUE;
1396*53ee8cc1Swenshuai.xi }
1397*53ee8cc1Swenshuai.xi 
HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng,TSP_TS_PAD eTSPad)1398*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng, TSP_TS_PAD eTSPad)
1399*53ee8cc1Swenshuai.xi {
1400*53ee8cc1Swenshuai.xi     MS_U32 u32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
1401*53ee8cc1Swenshuai.xi     MS_U32 u32PADSrc = REG_TOP_TS_SRC_EXT0;
1402*53ee8cc1Swenshuai.xi     _TSP_Hal_TSPAD2RelatedReg_Mapping(eTSPad, &u32PADSrc, &u32CLKSrc);
1403*53ee8cc1Swenshuai.xi 
1404*53ee8cc1Swenshuai.xi     switch(u32TSOEng)
1405*53ee8cc1Swenshuai.xi     {
1406*53ee8cc1Swenshuai.xi         case 0:
1407*53ee8cc1Swenshuai.xi             TSP_TOP_REG(REG_TOP_TSO0_MUX) = (TSP_TOP_REG(REG_TOP_TSO0_MUX) & ~REG_TOP_TS_SRC_MASK) | u32PADSrc;
1408*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1409*53ee8cc1Swenshuai.xi             {
1410*53ee8cc1Swenshuai.xi                 MS_S32 handle;
1411*53ee8cc1Swenshuai.xi                 MS_U8  u8NameIdx = 0;
1412*53ee8cc1Swenshuai.xi                 char* u8ClkSrcNames[] =
1413*53ee8cc1Swenshuai.xi                 {
1414*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD0",
1415*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD1",
1416*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD2",
1417*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD3",
1418*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD4",
1419*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD5",
1420*53ee8cc1Swenshuai.xi                 "CLK_TSOIN0_PAD6"
1421*53ee8cc1Swenshuai.xi                 };
1422*53ee8cc1Swenshuai.xi 
1423*53ee8cc1Swenshuai.xi                 switch(u32CLKSrc)
1424*53ee8cc1Swenshuai.xi                 {
1425*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT0:
1426*53ee8cc1Swenshuai.xi                         u8NameIdx = 0;
1427*53ee8cc1Swenshuai.xi                         break;
1428*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT1:
1429*53ee8cc1Swenshuai.xi                         u8NameIdx = 1;
1430*53ee8cc1Swenshuai.xi                         break;
1431*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT2:
1432*53ee8cc1Swenshuai.xi                         u8NameIdx = 2;
1433*53ee8cc1Swenshuai.xi                         break;
1434*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT3:
1435*53ee8cc1Swenshuai.xi                         u8NameIdx = 3;
1436*53ee8cc1Swenshuai.xi                         break;
1437*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT4:
1438*53ee8cc1Swenshuai.xi                         u8NameIdx = 4;
1439*53ee8cc1Swenshuai.xi                         break;
1440*53ee8cc1Swenshuai.xi                     case REG_CLKGEN0_TS_SRC_EXT5:
1441*53ee8cc1Swenshuai.xi                         u8NameIdx = 5;
1442*53ee8cc1Swenshuai.xi                         break;
1443*53ee8cc1Swenshuai.xi                     default:
1444*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__));
1445*53ee8cc1Swenshuai.xi                         u8NameIdx = 0;
1446*53ee8cc1Swenshuai.xi                         break;
1447*53ee8cc1Swenshuai.xi                 }
1448*53ee8cc1Swenshuai.xi 
1449*53ee8cc1Swenshuai.xi                 handle = Drv_Clkm_Get_Handle("g_clk_tso_in");
1450*53ee8cc1Swenshuai.xi                 Drv_Clkm_Set_Clk_Source(handle,u8ClkSrcNames[u8NameIdx]);
1451*53ee8cc1Swenshuai.xi             }
1452*53ee8cc1Swenshuai.xi #else
1453*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK)
1454*53ee8cc1Swenshuai.xi                 | (u32CLKSrc << (REG_CLKGEN0_TSO0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
1455*53ee8cc1Swenshuai.xi #endif
1456*53ee8cc1Swenshuai.xi             return TRUE;
1457*53ee8cc1Swenshuai.xi 
1458*53ee8cc1Swenshuai.xi         default:
1459*53ee8cc1Swenshuai.xi             return FALSE;
1460*53ee8cc1Swenshuai.xi     }
1461*53ee8cc1Swenshuai.xi }
1462*53ee8cc1Swenshuai.xi 
1463*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf,MS_BOOL bClkInv)1464*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf , MS_BOOL bClkInv)
1465*53ee8cc1Swenshuai.xi {
1466*53ee8cc1Swenshuai.xi     if (bClkInv)
1467*53ee8cc1Swenshuai.xi     {
1468*53ee8cc1Swenshuai.xi         switch (tsIf)
1469*53ee8cc1Swenshuai.xi         {
1470*53ee8cc1Swenshuai.xi             case 0:
1471*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
1472*53ee8cc1Swenshuai.xi                 break;
1473*53ee8cc1Swenshuai.xi             case 1:
1474*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
1475*53ee8cc1Swenshuai.xi                 break;
1476*53ee8cc1Swenshuai.xi             case 2:
1477*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
1478*53ee8cc1Swenshuai.xi                 break;
1479*53ee8cc1Swenshuai.xi             case 3:
1480*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS3_SHIFT));
1481*53ee8cc1Swenshuai.xi                 break;
1482*53ee8cc1Swenshuai.xi             default:
1483*53ee8cc1Swenshuai.xi                 return FALSE;
1484*53ee8cc1Swenshuai.xi         }
1485*53ee8cc1Swenshuai.xi     }
1486*53ee8cc1Swenshuai.xi     else
1487*53ee8cc1Swenshuai.xi     {
1488*53ee8cc1Swenshuai.xi         switch (tsIf)
1489*53ee8cc1Swenshuai.xi         {
1490*53ee8cc1Swenshuai.xi             case 0:
1491*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
1492*53ee8cc1Swenshuai.xi                 break;
1493*53ee8cc1Swenshuai.xi             case 1:
1494*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
1495*53ee8cc1Swenshuai.xi                 break;
1496*53ee8cc1Swenshuai.xi             case 2:
1497*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
1498*53ee8cc1Swenshuai.xi                 break;
1499*53ee8cc1Swenshuai.xi             case 3:
1500*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS3_SHIFT));
1501*53ee8cc1Swenshuai.xi                 break;
1502*53ee8cc1Swenshuai.xi             default:
1503*53ee8cc1Swenshuai.xi                 return FALSE;
1504*53ee8cc1Swenshuai.xi         }
1505*53ee8cc1Swenshuai.xi     }
1506*53ee8cc1Swenshuai.xi     return TRUE;
1507*53ee8cc1Swenshuai.xi }
1508*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf,MS_BOOL bClkDis)1509*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf , MS_BOOL bClkDis)
1510*53ee8cc1Swenshuai.xi {
1511*53ee8cc1Swenshuai.xi     if (bClkDis)
1512*53ee8cc1Swenshuai.xi     {
1513*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1514*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
1515*53ee8cc1Swenshuai.xi 
1516*53ee8cc1Swenshuai.xi         switch (tsIf)
1517*53ee8cc1Swenshuai.xi         {
1518*53ee8cc1Swenshuai.xi             case 0:
1519*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
1520*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1521*53ee8cc1Swenshuai.xi                 break;
1522*53ee8cc1Swenshuai.xi             case 1:
1523*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1524*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1525*53ee8cc1Swenshuai.xi                 break;
1526*53ee8cc1Swenshuai.xi             case 2:
1527*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1528*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1529*53ee8cc1Swenshuai.xi                 break;
1530*53ee8cc1Swenshuai.xi             case 3:
1531*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1532*53ee8cc1Swenshuai.xi                 Drv_Clkm_Clk_Gate_Disable(s32Handle);
1533*53ee8cc1Swenshuai.xi                 break;
1534*53ee8cc1Swenshuai.xi             default:
1535*53ee8cc1Swenshuai.xi                 return FALSE;
1536*53ee8cc1Swenshuai.xi         }
1537*53ee8cc1Swenshuai.xi #else
1538*53ee8cc1Swenshuai.xi         switch (tsIf)
1539*53ee8cc1Swenshuai.xi         {
1540*53ee8cc1Swenshuai.xi             case 0:
1541*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
1542*53ee8cc1Swenshuai.xi                 break;
1543*53ee8cc1Swenshuai.xi             case 1:
1544*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
1545*53ee8cc1Swenshuai.xi                 break;
1546*53ee8cc1Swenshuai.xi             case 2:
1547*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
1548*53ee8cc1Swenshuai.xi                 break;
1549*53ee8cc1Swenshuai.xi             case 3:
1550*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS3_SHIFT));
1551*53ee8cc1Swenshuai.xi                 break;
1552*53ee8cc1Swenshuai.xi             default:
1553*53ee8cc1Swenshuai.xi                 return FALSE;
1554*53ee8cc1Swenshuai.xi         }
1555*53ee8cc1Swenshuai.xi #endif
1556*53ee8cc1Swenshuai.xi     }
1557*53ee8cc1Swenshuai.xi     else
1558*53ee8cc1Swenshuai.xi     {
1559*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_CLKM
1560*53ee8cc1Swenshuai.xi         MS_S32 s32Handle;
1561*53ee8cc1Swenshuai.xi         MS_U16 u16ClkSrc;
1562*53ee8cc1Swenshuai.xi         MS_U8  u8NameIdx = 0;
1563*53ee8cc1Swenshuai.xi         char* u8ClkSrcNames[] =
1564*53ee8cc1Swenshuai.xi         {
1565*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD0",
1566*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD1",
1567*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD2",
1568*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD3",
1569*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD4",
1570*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD5",
1571*53ee8cc1Swenshuai.xi             "CLK_TS0_PAD6",
1572*53ee8cc1Swenshuai.xi             "CLK_TS0_PADTSO"
1573*53ee8cc1Swenshuai.xi         };
1574*53ee8cc1Swenshuai.xi 
1575*53ee8cc1Swenshuai.xi         switch (tsIf)
1576*53ee8cc1Swenshuai.xi         {
1577*53ee8cc1Swenshuai.xi             case 0:
1578*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts");
1579*53ee8cc1Swenshuai.xi                 u16ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & REG_CLKGEN0_TS_MASK) >> (REG_CLKGEN0_TS0_SHIFT + REG_CLKGEN0_TS_SRC_SHIFT);
1580*53ee8cc1Swenshuai.xi                 break;
1581*53ee8cc1Swenshuai.xi             case 1:
1582*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts1");
1583*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);
1584*53ee8cc1Swenshuai.xi                 break;
1585*53ee8cc1Swenshuai.xi             case 2:
1586*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts2");
1587*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);
1588*53ee8cc1Swenshuai.xi                 break;
1589*53ee8cc1Swenshuai.xi             case 3:
1590*53ee8cc1Swenshuai.xi                 s32Handle = Drv_Clkm_Get_Handle("g_clk_ts3");
1591*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);
1592*53ee8cc1Swenshuai.xi                 break;
1593*53ee8cc1Swenshuai.xi             default:
1594*53ee8cc1Swenshuai.xi                 return FALSE;
1595*53ee8cc1Swenshuai.xi         }
1596*53ee8cc1Swenshuai.xi 
1597*53ee8cc1Swenshuai.xi         switch(u16ClkSrc)
1598*53ee8cc1Swenshuai.xi         {
1599*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT0:
1600*53ee8cc1Swenshuai.xi                 u8NameIdx = 0;
1601*53ee8cc1Swenshuai.xi                 break;
1602*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT1:
1603*53ee8cc1Swenshuai.xi                 u8NameIdx = 1;
1604*53ee8cc1Swenshuai.xi                 break;
1605*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT2:
1606*53ee8cc1Swenshuai.xi                 u8NameIdx = 2;
1607*53ee8cc1Swenshuai.xi                 break;
1608*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT3:
1609*53ee8cc1Swenshuai.xi                 u8NameIdx = 3;
1610*53ee8cc1Swenshuai.xi                 break;
1611*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT4:
1612*53ee8cc1Swenshuai.xi                 u8NameIdx = 4;
1613*53ee8cc1Swenshuai.xi                 break;
1614*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT5:
1615*53ee8cc1Swenshuai.xi                 u8NameIdx = 5;
1616*53ee8cc1Swenshuai.xi                 break;
1617*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_EXT6:
1618*53ee8cc1Swenshuai.xi                 u8NameIdx = 6;
1619*53ee8cc1Swenshuai.xi                 break;
1620*53ee8cc1Swenshuai.xi             case REG_CLKGEN0_TS_SRC_TSO0:
1621*53ee8cc1Swenshuai.xi                 u8NameIdx = 7;
1622*53ee8cc1Swenshuai.xi                 break;
1623*53ee8cc1Swenshuai.xi             default:
1624*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__));
1625*53ee8cc1Swenshuai.xi                 u8NameIdx = 0;
1626*53ee8cc1Swenshuai.xi                 break;
1627*53ee8cc1Swenshuai.xi         }
1628*53ee8cc1Swenshuai.xi 
1629*53ee8cc1Swenshuai.xi         Drv_Clkm_Set_Clk_Source(s32Handle, u8ClkSrcNames[u8NameIdx]);
1630*53ee8cc1Swenshuai.xi #else
1631*53ee8cc1Swenshuai.xi         switch (tsIf)
1632*53ee8cc1Swenshuai.xi         {
1633*53ee8cc1Swenshuai.xi             case 0:
1634*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
1635*53ee8cc1Swenshuai.xi                 break;
1636*53ee8cc1Swenshuai.xi             case 1:
1637*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
1638*53ee8cc1Swenshuai.xi                 break;
1639*53ee8cc1Swenshuai.xi             case 2:
1640*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
1641*53ee8cc1Swenshuai.xi                 break;
1642*53ee8cc1Swenshuai.xi             case 3:
1643*53ee8cc1Swenshuai.xi                 TSP_CLKGEN0_REG(REG_CLKGEN0_TS3_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS3_SHIFT));
1644*53ee8cc1Swenshuai.xi                 break;
1645*53ee8cc1Swenshuai.xi             default:
1646*53ee8cc1Swenshuai.xi                 return FALSE;
1647*53ee8cc1Swenshuai.xi         }
1648*53ee8cc1Swenshuai.xi #endif
1649*53ee8cc1Swenshuai.xi     }
1650*53ee8cc1Swenshuai.xi     return TRUE;
1651*53ee8cc1Swenshuai.xi }
1652*53ee8cc1Swenshuai.xi 
1653*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)1654*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_FileEn(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
1655*53ee8cc1Swenshuai.xi {
1656*53ee8cc1Swenshuai.xi     if(bEnable)
1657*53ee8cc1Swenshuai.xi     {
1658*53ee8cc1Swenshuai.xi         switch(eFileEng)
1659*53ee8cc1Swenshuai.xi         {
1660*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1661*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);    // for wishbone DMA (load firmware or playback)
1662*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);        //Tsif0 output is live TS
1663*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);                 //filein enable
1664*53ee8cc1Swenshuai.xi                 break;
1665*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1666*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
1667*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
1668*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
1669*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);         //filein enable
1670*53ee8cc1Swenshuai.xi                 break;
1671*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1672*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
1673*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
1674*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
1675*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
1676*53ee8cc1Swenshuai.xi                 break;
1677*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1678*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TSP_FILE_SEGMENT3);
1679*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_SEGMENT_TSIF3);
1680*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA_PORT_SEL3);
1681*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_IN_TSIF3);
1682*53ee8cc1Swenshuai.xi                 break;
1683*53ee8cc1Swenshuai.xi             default:
1684*53ee8cc1Swenshuai.xi                 return FALSE;
1685*53ee8cc1Swenshuai.xi         }
1686*53ee8cc1Swenshuai.xi     }
1687*53ee8cc1Swenshuai.xi     else
1688*53ee8cc1Swenshuai.xi     {
1689*53ee8cc1Swenshuai.xi         switch(eFileEng)
1690*53ee8cc1Swenshuai.xi         {
1691*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1692*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
1693*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);
1694*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);
1695*53ee8cc1Swenshuai.xi                 break;
1696*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1697*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TSP_FILE_SEGMENT1);
1698*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
1699*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
1700*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);
1701*53ee8cc1Swenshuai.xi                 break;
1702*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1703*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
1704*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
1705*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
1706*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
1707*53ee8cc1Swenshuai.xi                 break;
1708*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1709*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TSP_FILE_SEGMENT3);
1710*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_SEGMENT_TSIF3);
1711*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA_PORT_SEL3);
1712*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_TSP_FILE_IN_TSIF3);
1713*53ee8cc1Swenshuai.xi                 break;
1714*53ee8cc1Swenshuai.xi             default:
1715*53ee8cc1Swenshuai.xi                 return FALSE;
1716*53ee8cc1Swenshuai.xi         }
1717*53ee8cc1Swenshuai.xi     }
1718*53ee8cc1Swenshuai.xi 
1719*53ee8cc1Swenshuai.xi     return TRUE;
1720*53ee8cc1Swenshuai.xi }
1721*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_BitSwap(MS_U32 tsIf,MS_BOOL bEnable)1722*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_BitSwap(MS_U32 tsIf, MS_BOOL bEnable)
1723*53ee8cc1Swenshuai.xi {
1724*53ee8cc1Swenshuai.xi     if(bEnable)
1725*53ee8cc1Swenshuai.xi     {
1726*53ee8cc1Swenshuai.xi         switch(tsIf)
1727*53ee8cc1Swenshuai.xi         {
1728*53ee8cc1Swenshuai.xi             case 0:
1729*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1730*53ee8cc1Swenshuai.xi                 break;
1731*53ee8cc1Swenshuai.xi             case 1:
1732*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1733*53ee8cc1Swenshuai.xi                 break;
1734*53ee8cc1Swenshuai.xi             case 2:
1735*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1736*53ee8cc1Swenshuai.xi                 break;
1737*53ee8cc1Swenshuai.xi             case 3:
1738*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA3_SWAP);
1739*53ee8cc1Swenshuai.xi                 break;
1740*53ee8cc1Swenshuai.xi             default:
1741*53ee8cc1Swenshuai.xi                 return;
1742*53ee8cc1Swenshuai.xi         }
1743*53ee8cc1Swenshuai.xi     }
1744*53ee8cc1Swenshuai.xi     else
1745*53ee8cc1Swenshuai.xi     {
1746*53ee8cc1Swenshuai.xi         switch(tsIf)
1747*53ee8cc1Swenshuai.xi         {
1748*53ee8cc1Swenshuai.xi             case 0:
1749*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1750*53ee8cc1Swenshuai.xi                 break;
1751*53ee8cc1Swenshuai.xi             case 1:
1752*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1753*53ee8cc1Swenshuai.xi                 break;
1754*53ee8cc1Swenshuai.xi             case 2:
1755*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1756*53ee8cc1Swenshuai.xi                 break;
1757*53ee8cc1Swenshuai.xi             case 3:
1758*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TS_DATA3_SWAP);
1759*53ee8cc1Swenshuai.xi                 break;
1760*53ee8cc1Swenshuai.xi             default:
1761*53ee8cc1Swenshuai.xi                 return;
1762*53ee8cc1Swenshuai.xi         }
1763*53ee8cc1Swenshuai.xi     }
1764*53ee8cc1Swenshuai.xi }
1765*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_ExtSync(MS_U32 tsIf,MS_BOOL bEnable)1766*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_ExtSync(MS_U32 tsIf, MS_BOOL bEnable)
1767*53ee8cc1Swenshuai.xi {
1768*53ee8cc1Swenshuai.xi     if(bEnable)
1769*53ee8cc1Swenshuai.xi     {
1770*53ee8cc1Swenshuai.xi         //printf("External Sync\n");
1771*53ee8cc1Swenshuai.xi 
1772*53ee8cc1Swenshuai.xi         switch(tsIf)
1773*53ee8cc1Swenshuai.xi         {
1774*53ee8cc1Swenshuai.xi             case 0:
1775*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1776*53ee8cc1Swenshuai.xi                 break;
1777*53ee8cc1Swenshuai.xi             case 1:
1778*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1779*53ee8cc1Swenshuai.xi                 break;
1780*53ee8cc1Swenshuai.xi             case 2:
1781*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1782*53ee8cc1Swenshuai.xi                 break;
1783*53ee8cc1Swenshuai.xi             case 3:
1784*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_EXT_SYNC_SEL3);
1785*53ee8cc1Swenshuai.xi                 break;
1786*53ee8cc1Swenshuai.xi             default:
1787*53ee8cc1Swenshuai.xi                 return;
1788*53ee8cc1Swenshuai.xi         }
1789*53ee8cc1Swenshuai.xi     }
1790*53ee8cc1Swenshuai.xi     else
1791*53ee8cc1Swenshuai.xi     {
1792*53ee8cc1Swenshuai.xi         //printf("Internal Sync\n");
1793*53ee8cc1Swenshuai.xi 
1794*53ee8cc1Swenshuai.xi         switch(tsIf)
1795*53ee8cc1Swenshuai.xi         {
1796*53ee8cc1Swenshuai.xi             case 0:
1797*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1798*53ee8cc1Swenshuai.xi                 break;
1799*53ee8cc1Swenshuai.xi             case 1:
1800*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1801*53ee8cc1Swenshuai.xi                 break;
1802*53ee8cc1Swenshuai.xi             case 2:
1803*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1804*53ee8cc1Swenshuai.xi                 break;
1805*53ee8cc1Swenshuai.xi             case 3:
1806*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_EXT_SYNC_SEL3);
1807*53ee8cc1Swenshuai.xi                 break;
1808*53ee8cc1Swenshuai.xi             default:
1809*53ee8cc1Swenshuai.xi                 return;
1810*53ee8cc1Swenshuai.xi         }
1811*53ee8cc1Swenshuai.xi     }
1812*53ee8cc1Swenshuai.xi }
1813*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng,MS_BOOL bBypass)1814*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng, MS_BOOL bBypass)
1815*53ee8cc1Swenshuai.xi {
1816*53ee8cc1Swenshuai.xi     if(bBypass)
1817*53ee8cc1Swenshuai.xi     {
1818*53ee8cc1Swenshuai.xi         switch (eFileEng)
1819*53ee8cc1Swenshuai.xi         {
1820*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
1821*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP);
1822*53ee8cc1Swenshuai.xi                 break;
1823*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1824*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP1);
1825*53ee8cc1Swenshuai.xi                 break;
1826*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1827*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP2);
1828*53ee8cc1Swenshuai.xi                 break;
1829*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1830*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP3);
1831*53ee8cc1Swenshuai.xi                 break;
1832*53ee8cc1Swenshuai.xi             default:
1833*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));
1834*53ee8cc1Swenshuai.xi                 break;
1835*53ee8cc1Swenshuai.xi         }
1836*53ee8cc1Swenshuai.xi         //REG16_MSK_W(&_RegCtrl3->CFG3_10,CFG3_10_PS_MODE_SRC_MASK,(eFileEng << CFG3_10_PS_MODE_SRC_SHIFT));
1837*53ee8cc1Swenshuai.xi     }
1838*53ee8cc1Swenshuai.xi     else
1839*53ee8cc1Swenshuai.xi     {
1840*53ee8cc1Swenshuai.xi         switch (eFileEng)
1841*53ee8cc1Swenshuai.xi         {
1842*53ee8cc1Swenshuai.xi            case E_FILEENG_TSIF0:
1843*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP);
1844*53ee8cc1Swenshuai.xi                 break;
1845*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
1846*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP1);
1847*53ee8cc1Swenshuai.xi                 break;
1848*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
1849*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP2);
1850*53ee8cc1Swenshuai.xi                 break;
1851*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
1852*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_AV_DIRECT_STOP3);
1853*53ee8cc1Swenshuai.xi                 break;
1854*53ee8cc1Swenshuai.xi             default:
1855*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));
1856*53ee8cc1Swenshuai.xi                 break;
1857*53ee8cc1Swenshuai.xi         }
1858*53ee8cc1Swenshuai.xi     }
1859*53ee8cc1Swenshuai.xi }
1860*53ee8cc1Swenshuai.xi 
1861*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_Parl(MS_U32 tsIf,MS_BOOL bEnable)1862*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_Parl(MS_U32 tsIf, MS_BOOL bEnable)
1863*53ee8cc1Swenshuai.xi {
1864*53ee8cc1Swenshuai.xi     if(bEnable)
1865*53ee8cc1Swenshuai.xi     {
1866*53ee8cc1Swenshuai.xi         switch(tsIf)
1867*53ee8cc1Swenshuai.xi         {
1868*53ee8cc1Swenshuai.xi             case 0:
1869*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1870*53ee8cc1Swenshuai.xi                 break;
1871*53ee8cc1Swenshuai.xi             case 1:
1872*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1873*53ee8cc1Swenshuai.xi                 break;
1874*53ee8cc1Swenshuai.xi             case 2:
1875*53ee8cc1Swenshuai.xi                 REG32_SET(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1876*53ee8cc1Swenshuai.xi                 break;
1877*53ee8cc1Swenshuai.xi             case 3:
1878*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_0B), CFG_0B_P_SEL3);
1879*53ee8cc1Swenshuai.xi                 break;
1880*53ee8cc1Swenshuai.xi             default:
1881*53ee8cc1Swenshuai.xi                 return;
1882*53ee8cc1Swenshuai.xi         }
1883*53ee8cc1Swenshuai.xi     }
1884*53ee8cc1Swenshuai.xi     else
1885*53ee8cc1Swenshuai.xi     {
1886*53ee8cc1Swenshuai.xi         switch(tsIf)
1887*53ee8cc1Swenshuai.xi         {
1888*53ee8cc1Swenshuai.xi             case 0:
1889*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1890*53ee8cc1Swenshuai.xi                 break;
1891*53ee8cc1Swenshuai.xi             case 1:
1892*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1893*53ee8cc1Swenshuai.xi                 break;
1894*53ee8cc1Swenshuai.xi             case 2:
1895*53ee8cc1Swenshuai.xi                 REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1896*53ee8cc1Swenshuai.xi                 break;
1897*53ee8cc1Swenshuai.xi             case 3:
1898*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_0B), CFG_0B_P_SEL3);
1899*53ee8cc1Swenshuai.xi                 break;
1900*53ee8cc1Swenshuai.xi             default:
1901*53ee8cc1Swenshuai.xi                 return;
1902*53ee8cc1Swenshuai.xi         }
1903*53ee8cc1Swenshuai.xi     }
1904*53ee8cc1Swenshuai.xi }
1905*53ee8cc1Swenshuai.xi 
HAL_TSP_PAD_3Wire(MS_U32 u32Pad,MS_BOOL bEnable)1906*53ee8cc1Swenshuai.xi void HAL_TSP_PAD_3Wire(MS_U32 u32Pad, MS_BOOL bEnable)
1907*53ee8cc1Swenshuai.xi {
1908*53ee8cc1Swenshuai.xi #if 0 //@NOTE: Kano do NOT need to set
1909*53ee8cc1Swenshuai.xi     if(bEnable)
1910*53ee8cc1Swenshuai.xi     {
1911*53ee8cc1Swenshuai.xi         switch(u32Pad)
1912*53ee8cc1Swenshuai.xi         {
1913*53ee8cc1Swenshuai.xi             case 0:
1914*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS0_3WIRE_EN;
1915*53ee8cc1Swenshuai.xi                 break;
1916*53ee8cc1Swenshuai.xi             case 1:
1917*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS1_3WIRE_EN;
1918*53ee8cc1Swenshuai.xi                 break;
1919*53ee8cc1Swenshuai.xi             case 2:
1920*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1)| REG_TOP_TSP_TS2_3WIRE_EN;
1921*53ee8cc1Swenshuai.xi                 break;
1922*53ee8cc1Swenshuai.xi             case 3:
1923*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) | REG_TOP_TSP_TS3_3WIRE_EN;
1924*53ee8cc1Swenshuai.xi                 break;
1925*53ee8cc1Swenshuai.xi 
1926*53ee8cc1Swenshuai.xi             default:
1927*53ee8cc1Swenshuai.xi                 return;
1928*53ee8cc1Swenshuai.xi         }
1929*53ee8cc1Swenshuai.xi     }
1930*53ee8cc1Swenshuai.xi     else
1931*53ee8cc1Swenshuai.xi     {
1932*53ee8cc1Swenshuai.xi         switch(u32Pad)
1933*53ee8cc1Swenshuai.xi         {
1934*53ee8cc1Swenshuai.xi             case 0:
1935*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS0_3WIRE_EN;
1936*53ee8cc1Swenshuai.xi                 break;
1937*53ee8cc1Swenshuai.xi             case 1:
1938*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS1_3WIRE_EN;
1939*53ee8cc1Swenshuai.xi                 break;
1940*53ee8cc1Swenshuai.xi             case 2:
1941*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) & ~REG_TOP_TSP_TS2_3WIRE_EN;
1942*53ee8cc1Swenshuai.xi                 break;
1943*53ee8cc1Swenshuai.xi             case 3:
1944*53ee8cc1Swenshuai.xi                 TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) & ~REG_TOP_TSP_TS3_3WIRE_EN;
1945*53ee8cc1Swenshuai.xi                 break;
1946*53ee8cc1Swenshuai.xi             default:
1947*53ee8cc1Swenshuai.xi                 return;
1948*53ee8cc1Swenshuai.xi         }
1949*53ee8cc1Swenshuai.xi     }
1950*53ee8cc1Swenshuai.xi #endif
1951*53ee8cc1Swenshuai.xi }
1952*53ee8cc1Swenshuai.xi 
HAL_TSP_TSIF_3Wire(MS_U32 tsIf,MS_BOOL bEnable)1953*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_3Wire(MS_U32 tsIf, MS_BOOL bEnable)
1954*53ee8cc1Swenshuai.xi {
1955*53ee8cc1Swenshuai.xi     if(bEnable)
1956*53ee8cc1Swenshuai.xi     {
1957*53ee8cc1Swenshuai.xi         switch(tsIf)
1958*53ee8cc1Swenshuai.xi         {
1959*53ee8cc1Swenshuai.xi             case 0:
1960*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1961*53ee8cc1Swenshuai.xi                 break;
1962*53ee8cc1Swenshuai.xi             case 1:
1963*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1964*53ee8cc1Swenshuai.xi                 break;
1965*53ee8cc1Swenshuai.xi             case 2:
1966*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1967*53ee8cc1Swenshuai.xi                 break;
1968*53ee8cc1Swenshuai.xi             case 3:
1969*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS3);
1970*53ee8cc1Swenshuai.xi                 break;
1971*53ee8cc1Swenshuai.xi             default:
1972*53ee8cc1Swenshuai.xi                 return;
1973*53ee8cc1Swenshuai.xi         }
1974*53ee8cc1Swenshuai.xi     }
1975*53ee8cc1Swenshuai.xi     else
1976*53ee8cc1Swenshuai.xi     {
1977*53ee8cc1Swenshuai.xi         switch(tsIf)
1978*53ee8cc1Swenshuai.xi         {
1979*53ee8cc1Swenshuai.xi             case 0:
1980*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1981*53ee8cc1Swenshuai.xi                 break;
1982*53ee8cc1Swenshuai.xi             case 1:
1983*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1984*53ee8cc1Swenshuai.xi                 break;
1985*53ee8cc1Swenshuai.xi             case 2:
1986*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1987*53ee8cc1Swenshuai.xi                 break;
1988*53ee8cc1Swenshuai.xi             case 3:
1989*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS3);
1990*53ee8cc1Swenshuai.xi                 break;
1991*53ee8cc1Swenshuai.xi             default:
1992*53ee8cc1Swenshuai.xi                 return;
1993*53ee8cc1Swenshuai.xi         }
1994*53ee8cc1Swenshuai.xi     }
1995*53ee8cc1Swenshuai.xi 
1996*53ee8cc1Swenshuai.xi }
1997*53ee8cc1Swenshuai.xi 
HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId,MS_BOOL bEn)1998*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId, MS_BOOL bEn)
1999*53ee8cc1Swenshuai.xi {
2000*53ee8cc1Swenshuai.xi     if(bEn)
2001*53ee8cc1Swenshuai.xi     {
2002*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
2003*53ee8cc1Swenshuai.xi     }
2004*53ee8cc1Swenshuai.xi     else
2005*53ee8cc1Swenshuai.xi     {
2006*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
2007*53ee8cc1Swenshuai.xi     }
2008*53ee8cc1Swenshuai.xi }
2009*53ee8cc1Swenshuai.xi 
HAL_TSP_ReDirect_File(MS_U32 reDir,MS_U32 tsIf,MS_BOOL bEn)2010*53ee8cc1Swenshuai.xi void HAL_TSP_ReDirect_File(MS_U32 reDir, MS_U32 tsIf, MS_BOOL bEn)
2011*53ee8cc1Swenshuai.xi {
2012*53ee8cc1Swenshuai.xi    //@NOTE  Not support in KANO(K7)
2013*53ee8cc1Swenshuai.xi    #if 0
2014*53ee8cc1Swenshuai.xi     MS_U16 u16Src = 0;
2015*53ee8cc1Swenshuai.xi 
2016*53ee8cc1Swenshuai.xi     if((reDir > 0) || (tsIf > 1))
2017*53ee8cc1Swenshuai.xi         return;
2018*53ee8cc1Swenshuai.xi 
2019*53ee8cc1Swenshuai.xi     if(bEn)
2020*53ee8cc1Swenshuai.xi     {
2021*53ee8cc1Swenshuai.xi         u16Src = (MS_U16)(tsIf + 1) << CFG_01_PDFLT2_FILE_SRC_SHIFT;
2022*53ee8cc1Swenshuai.xi     }
2023*53ee8cc1Swenshuai.xi 
2024*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PDFLT2_FILE_SRC, u16Src);
2025*53ee8cc1Swenshuai.xi    #endif
2026*53ee8cc1Swenshuai.xi }
2027*53ee8cc1Swenshuai.xi 
2028*53ee8cc1Swenshuai.xi // [ToDo]
HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)2029*53ee8cc1Swenshuai.xi void HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)
2030*53ee8cc1Swenshuai.xi {
2031*53ee8cc1Swenshuai.xi     if(bEn)
2032*53ee8cc1Swenshuai.xi     {
2033*53ee8cc1Swenshuai.xi         switch(u32Tsif)
2034*53ee8cc1Swenshuai.xi         {
2035*53ee8cc1Swenshuai.xi             case 0:
2036*53ee8cc1Swenshuai.xi                 switch (eFltType)
2037*53ee8cc1Swenshuai.xi                 {
2038*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2039*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
2040*53ee8cc1Swenshuai.xi                         break;
2041*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2042*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
2043*53ee8cc1Swenshuai.xi                         break;
2044*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2045*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX0_TRACE_MARK_V3_EN);
2046*53ee8cc1Swenshuai.xi                         break;
2047*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2048*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX0_TRACE_MARK_V4_EN);
2049*53ee8cc1Swenshuai.xi                         break;
2050*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2051*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
2052*53ee8cc1Swenshuai.xi                         break;
2053*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2054*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
2055*53ee8cc1Swenshuai.xi                         break;
2056*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2057*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AC_EN);
2058*53ee8cc1Swenshuai.xi                         break;
2059*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2060*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX0_TRACE_MARK_AD_EN);
2061*53ee8cc1Swenshuai.xi                         break;
2062*53ee8cc1Swenshuai.xi                     default:
2063*53ee8cc1Swenshuai.xi                         break;
2064*53ee8cc1Swenshuai.xi                 }
2065*53ee8cc1Swenshuai.xi                 break;
2066*53ee8cc1Swenshuai.xi             case 1:
2067*53ee8cc1Swenshuai.xi                 switch (eFltType)
2068*53ee8cc1Swenshuai.xi                 {
2069*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2070*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
2071*53ee8cc1Swenshuai.xi                         break;
2072*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2073*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
2074*53ee8cc1Swenshuai.xi                         break;
2075*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2076*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX1_TRACE_MARK_V3_EN);
2077*53ee8cc1Swenshuai.xi                         break;
2078*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2079*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX1_TRACE_MARK_V4_EN);
2080*53ee8cc1Swenshuai.xi                         break;
2081*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2082*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
2083*53ee8cc1Swenshuai.xi                         break;
2084*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2085*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
2086*53ee8cc1Swenshuai.xi                         break;
2087*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2088*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AC_EN);
2089*53ee8cc1Swenshuai.xi                         break;
2090*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2091*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX1_TRACE_MARK_AD_EN);
2092*53ee8cc1Swenshuai.xi                         break;
2093*53ee8cc1Swenshuai.xi                     default:
2094*53ee8cc1Swenshuai.xi                         break;
2095*53ee8cc1Swenshuai.xi                 }
2096*53ee8cc1Swenshuai.xi                 break;
2097*53ee8cc1Swenshuai.xi             case 2:
2098*53ee8cc1Swenshuai.xi                 switch (eFltType)
2099*53ee8cc1Swenshuai.xi                 {
2100*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2101*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
2102*53ee8cc1Swenshuai.xi                         break;
2103*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2104*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
2105*53ee8cc1Swenshuai.xi                         break;
2106*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2107*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX2_TRACE_MARK_V3_EN);
2108*53ee8cc1Swenshuai.xi                         break;
2109*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2110*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX2_TRACE_MARK_V4_EN);
2111*53ee8cc1Swenshuai.xi                         break;
2112*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2113*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
2114*53ee8cc1Swenshuai.xi                         break;
2115*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2116*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
2117*53ee8cc1Swenshuai.xi                         break;
2118*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2119*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AC_EN);
2120*53ee8cc1Swenshuai.xi                         break;
2121*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2122*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX2_TRACE_MARK_AD_EN);
2123*53ee8cc1Swenshuai.xi                         break;
2124*53ee8cc1Swenshuai.xi                     default:
2125*53ee8cc1Swenshuai.xi                         break;
2126*53ee8cc1Swenshuai.xi                 }
2127*53ee8cc1Swenshuai.xi                 break;
2128*53ee8cc1Swenshuai.xi             case 3:
2129*53ee8cc1Swenshuai.xi                 switch (eFltType)
2130*53ee8cc1Swenshuai.xi                 {
2131*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2132*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V_EN);
2133*53ee8cc1Swenshuai.xi                         break;
2134*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2135*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V3D_EN);
2136*53ee8cc1Swenshuai.xi                         break;
2137*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2138*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX3_TRACE_MARK_V3_EN);
2139*53ee8cc1Swenshuai.xi                         break;
2140*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2141*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX3_TRACE_MARK_V4_EN);
2142*53ee8cc1Swenshuai.xi                         break;
2143*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2144*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_A_EN);
2145*53ee8cc1Swenshuai.xi                         break;
2146*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2147*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AB_EN);
2148*53ee8cc1Swenshuai.xi                         break;
2149*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2150*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AC_EN);
2151*53ee8cc1Swenshuai.xi                         break;
2152*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2153*53ee8cc1Swenshuai.xi                         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX3_TRACE_MARK_AD_EN);
2154*53ee8cc1Swenshuai.xi                         break;
2155*53ee8cc1Swenshuai.xi                     default:
2156*53ee8cc1Swenshuai.xi                         break;
2157*53ee8cc1Swenshuai.xi                 }
2158*53ee8cc1Swenshuai.xi                 break;
2159*53ee8cc1Swenshuai.xi             default:
2160*53ee8cc1Swenshuai.xi                 break;
2161*53ee8cc1Swenshuai.xi         }
2162*53ee8cc1Swenshuai.xi     }
2163*53ee8cc1Swenshuai.xi     else
2164*53ee8cc1Swenshuai.xi     {
2165*53ee8cc1Swenshuai.xi         switch(u32Tsif)
2166*53ee8cc1Swenshuai.xi         {
2167*53ee8cc1Swenshuai.xi             case 0:
2168*53ee8cc1Swenshuai.xi                 switch (eFltType)
2169*53ee8cc1Swenshuai.xi                 {
2170*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2171*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
2172*53ee8cc1Swenshuai.xi                         break;
2173*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2174*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
2175*53ee8cc1Swenshuai.xi                         break;
2176*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2177*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX0_TRACE_MARK_V3_EN);
2178*53ee8cc1Swenshuai.xi                         break;
2179*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2180*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX0_TRACE_MARK_V4_EN);
2181*53ee8cc1Swenshuai.xi                         break;
2182*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2183*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
2184*53ee8cc1Swenshuai.xi                         break;
2185*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2186*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
2187*53ee8cc1Swenshuai.xi                         break;
2188*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2189*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AC_EN);
2190*53ee8cc1Swenshuai.xi                         break;
2191*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2192*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX0_TRACE_MARK_AD_EN);
2193*53ee8cc1Swenshuai.xi                         break;
2194*53ee8cc1Swenshuai.xi                     default:
2195*53ee8cc1Swenshuai.xi                         break;
2196*53ee8cc1Swenshuai.xi                 }
2197*53ee8cc1Swenshuai.xi                 break;
2198*53ee8cc1Swenshuai.xi             case 1:
2199*53ee8cc1Swenshuai.xi                 switch (eFltType)
2200*53ee8cc1Swenshuai.xi                 {
2201*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2202*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
2203*53ee8cc1Swenshuai.xi                         break;
2204*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2205*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
2206*53ee8cc1Swenshuai.xi                         break;
2207*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2208*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX1_TRACE_MARK_V3_EN);
2209*53ee8cc1Swenshuai.xi                         break;
2210*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2211*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX1_TRACE_MARK_V4_EN);
2212*53ee8cc1Swenshuai.xi                         break;
2213*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2214*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
2215*53ee8cc1Swenshuai.xi                         break;
2216*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2217*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
2218*53ee8cc1Swenshuai.xi                         break;
2219*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2220*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AC_EN);
2221*53ee8cc1Swenshuai.xi                         break;
2222*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2223*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX1_TRACE_MARK_AD_EN);
2224*53ee8cc1Swenshuai.xi                         break;
2225*53ee8cc1Swenshuai.xi                     default:
2226*53ee8cc1Swenshuai.xi                         break;
2227*53ee8cc1Swenshuai.xi                 }
2228*53ee8cc1Swenshuai.xi                 break;
2229*53ee8cc1Swenshuai.xi             case 2:
2230*53ee8cc1Swenshuai.xi                 switch (eFltType)
2231*53ee8cc1Swenshuai.xi                 {
2232*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2233*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
2234*53ee8cc1Swenshuai.xi                         break;
2235*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2236*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
2237*53ee8cc1Swenshuai.xi                         break;
2238*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2239*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX2_TRACE_MARK_V3_EN);
2240*53ee8cc1Swenshuai.xi                         break;
2241*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2242*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX2_TRACE_MARK_V4_EN);
2243*53ee8cc1Swenshuai.xi                         break;
2244*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2245*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
2246*53ee8cc1Swenshuai.xi                         break;
2247*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2248*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
2249*53ee8cc1Swenshuai.xi                         break;
2250*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2251*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AC_EN);
2252*53ee8cc1Swenshuai.xi                         break;
2253*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2254*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX2_TRACE_MARK_AD_EN);
2255*53ee8cc1Swenshuai.xi                         break;
2256*53ee8cc1Swenshuai.xi                     default:
2257*53ee8cc1Swenshuai.xi                         break;
2258*53ee8cc1Swenshuai.xi                 }
2259*53ee8cc1Swenshuai.xi                 break;
2260*53ee8cc1Swenshuai.xi             case 3:
2261*53ee8cc1Swenshuai.xi                 switch (eFltType)
2262*53ee8cc1Swenshuai.xi                 {
2263*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO:
2264*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V_EN);
2265*53ee8cc1Swenshuai.xi                         break;
2266*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3D:
2267*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_V3D_EN);
2268*53ee8cc1Swenshuai.xi                         break;
2269*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO3:
2270*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2E, CFG3_2E_PKTDMX3_TRACE_MARK_V3_EN);
2271*53ee8cc1Swenshuai.xi                         break;
2272*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_VIDEO4:
2273*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2F, CFG3_2F_PKTDMX3_TRACE_MARK_V4_EN);
2274*53ee8cc1Swenshuai.xi                         break;
2275*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO:
2276*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_A_EN);
2277*53ee8cc1Swenshuai.xi                         break;
2278*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO2:
2279*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AB_EN);
2280*53ee8cc1Swenshuai.xi                         break;
2281*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO3:
2282*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2B, CFG3_2B_PKTDMX3_TRACE_MARK_AC_EN);
2283*53ee8cc1Swenshuai.xi                         break;
2284*53ee8cc1Swenshuai.xi                     case E_TSP_DST_FIFO_AUDIO4:
2285*53ee8cc1Swenshuai.xi                         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_PKTDMX3_TRACE_MARK_AD_EN);
2286*53ee8cc1Swenshuai.xi                         break;
2287*53ee8cc1Swenshuai.xi                     default:
2288*53ee8cc1Swenshuai.xi                         break;
2289*53ee8cc1Swenshuai.xi                 }
2290*53ee8cc1Swenshuai.xi                 break;
2291*53ee8cc1Swenshuai.xi             default:
2292*53ee8cc1Swenshuai.xi                 break;
2293*53ee8cc1Swenshuai.xi         }
2294*53ee8cc1Swenshuai.xi     }
2295*53ee8cc1Swenshuai.xi }
2296*53ee8cc1Swenshuai.xi 
HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)2297*53ee8cc1Swenshuai.xi void HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)
2298*53ee8cc1Swenshuai.xi {
2299*53ee8cc1Swenshuai.xi 
2300*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
2301*53ee8cc1Swenshuai.xi     {
2302*53ee8cc1Swenshuai.xi         switch(u32BD)
2303*53ee8cc1Swenshuai.xi         {
2304*53ee8cc1Swenshuai.xi             case 0:
2305*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
2306*53ee8cc1Swenshuai.xi                 break;
2307*53ee8cc1Swenshuai.xi             case 1:
2308*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
2309*53ee8cc1Swenshuai.xi                 break;
2310*53ee8cc1Swenshuai.xi             default:
2311*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2312*53ee8cc1Swenshuai.xi                 break;
2313*53ee8cc1Swenshuai.xi         }
2314*53ee8cc1Swenshuai.xi     }
2315*53ee8cc1Swenshuai.xi     else
2316*53ee8cc1Swenshuai.xi     {
2317*53ee8cc1Swenshuai.xi         switch(u32BD)
2318*53ee8cc1Swenshuai.xi         {
2319*53ee8cc1Swenshuai.xi             case 0:
2320*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
2321*53ee8cc1Swenshuai.xi                 break;
2322*53ee8cc1Swenshuai.xi             case 1:
2323*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
2324*53ee8cc1Swenshuai.xi                 break;
2325*53ee8cc1Swenshuai.xi             default:
2326*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2327*53ee8cc1Swenshuai.xi                 break;
2328*53ee8cc1Swenshuai.xi 
2329*53ee8cc1Swenshuai.xi         }
2330*53ee8cc1Swenshuai.xi     }
2331*53ee8cc1Swenshuai.xi 
2332*53ee8cc1Swenshuai.xi }
2333*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng,MS_U32 u32PktSize)2334*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng, MS_U32 u32PktSize)
2335*53ee8cc1Swenshuai.xi {
2336*53ee8cc1Swenshuai.xi     MS_U32 u32PktLen = u32PktSize;
2337*53ee8cc1Swenshuai.xi     MS_U16 u16value  = 0;
2338*53ee8cc1Swenshuai.xi 
2339*53ee8cc1Swenshuai.xi     if(u32PktSize == 130)
2340*53ee8cc1Swenshuai.xi     {
2341*53ee8cc1Swenshuai.xi         u32PktLen = 188;
2342*53ee8cc1Swenshuai.xi     }
2343*53ee8cc1Swenshuai.xi     else if(u32PktSize == 134)
2344*53ee8cc1Swenshuai.xi     {
2345*53ee8cc1Swenshuai.xi         u32PktLen = 192;
2346*53ee8cc1Swenshuai.xi     }
2347*53ee8cc1Swenshuai.xi     switch(eFileEng)
2348*53ee8cc1Swenshuai.xi     {
2349*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2350*53ee8cc1Swenshuai.xi             u16value = HW4_CFG36_RVU_PSI_EN0 | HW4_CFG36_RVU_EN0 | HW4_CFG36_RVU_TIMESTAMP_EN0;
2351*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_36, u16value);
2352*53ee8cc1Swenshuai.xi             break;
2353*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2354*53ee8cc1Swenshuai.xi             u16value = HW4_CFG36_RVU_PSI_EN1 | HW4_CFG36_RVU_EN1 | HW4_CFG36_RVU_TIMESTAMP_EN1;
2355*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_36, u16value);
2356*53ee8cc1Swenshuai.xi             break;
2357*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2358*53ee8cc1Swenshuai.xi             u16value = CFG4_54_RVU_PSI_EN2 | CFG4_54_RVU_EN2 | CFG4_54_RVU_TIMESTAMP_EN2;
2359*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl4->CFG4_54, u16value);
2360*53ee8cc1Swenshuai.xi             break;
2361*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2362*53ee8cc1Swenshuai.xi             u16value = CFG4_54_RVU_PSI_EN3 | CFG4_54_RVU_EN3 | CFG4_54_RVU_TIMESTAMP_EN3;
2363*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl4->CFG4_54, u16value);
2364*53ee8cc1Swenshuai.xi             break;
2365*53ee8cc1Swenshuai.xi         default:
2366*53ee8cc1Swenshuai.xi             printf("Not support !!\n");
2367*53ee8cc1Swenshuai.xi             return;
2368*53ee8cc1Swenshuai.xi     }
2369*53ee8cc1Swenshuai.xi 
2370*53ee8cc1Swenshuai.xi     if(K6U02)
2371*53ee8cc1Swenshuai.xi     {
2372*53ee8cc1Swenshuai.xi         switch(eFileEng)
2373*53ee8cc1Swenshuai.xi         {
2374*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2375*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH0);
2376*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH0_RVU_ALWAYS_PAYLOAD_128);
2377*53ee8cc1Swenshuai.xi                 break;
2378*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2379*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH1);
2380*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH1_RVU_ALWAYS_PAYLOAD_128);
2381*53ee8cc1Swenshuai.xi                 break;
2382*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2383*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH2);
2384*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH2_RVU_ALWAYS_PAYLOAD_128);
2385*53ee8cc1Swenshuai.xi                 break;
2386*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2387*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH3);
2388*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH3_RVU_ALWAYS_PAYLOAD_128);
2389*53ee8cc1Swenshuai.xi                 break;
2390*53ee8cc1Swenshuai.xi             default:
2391*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2392*53ee8cc1Swenshuai.xi                 return;
2393*53ee8cc1Swenshuai.xi         }
2394*53ee8cc1Swenshuai.xi     }
2395*53ee8cc1Swenshuai.xi 
2396*53ee8cc1Swenshuai.xi     if(u32PktSize == 130 || u32PktSize == 134) //RVU
2397*53ee8cc1Swenshuai.xi     {
2398*53ee8cc1Swenshuai.xi         MS_U16 u16value = 0;
2399*53ee8cc1Swenshuai.xi 
2400*53ee8cc1Swenshuai.xi         if(u32PktSize == 134)
2401*53ee8cc1Swenshuai.xi         {
2402*53ee8cc1Swenshuai.xi             switch(eFileEng)
2403*53ee8cc1Swenshuai.xi             {
2404*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF0:
2405*53ee8cc1Swenshuai.xi                     u16value = HW4_CFG36_RVU_TIMESTAMP_EN0;
2406*53ee8cc1Swenshuai.xi                     break;
2407*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF1:
2408*53ee8cc1Swenshuai.xi                     u16value = HW4_CFG36_RVU_TIMESTAMP_EN1;
2409*53ee8cc1Swenshuai.xi                     break;
2410*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF2:
2411*53ee8cc1Swenshuai.xi                     u16value = CFG4_54_RVU_TIMESTAMP_EN2;
2412*53ee8cc1Swenshuai.xi                     break;
2413*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF3:
2414*53ee8cc1Swenshuai.xi                     u16value = CFG4_54_RVU_TIMESTAMP_EN3;
2415*53ee8cc1Swenshuai.xi                     break;
2416*53ee8cc1Swenshuai.xi                 default:
2417*53ee8cc1Swenshuai.xi                     printf("Not support !!\n");
2418*53ee8cc1Swenshuai.xi                     break;
2419*53ee8cc1Swenshuai.xi             }
2420*53ee8cc1Swenshuai.xi         }
2421*53ee8cc1Swenshuai.xi 
2422*53ee8cc1Swenshuai.xi         switch(eFileEng)
2423*53ee8cc1Swenshuai.xi         {
2424*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2425*53ee8cc1Swenshuai.xi                 u16value |= (HW4_CFG36_RVU_PSI_EN0 | HW4_CFG36_RVU_EN0);
2426*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_36, u16value);
2427*53ee8cc1Swenshuai.xi                 break;
2428*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2429*53ee8cc1Swenshuai.xi                 u16value |= (HW4_CFG36_RVU_PSI_EN1 | HW4_CFG36_RVU_EN1);
2430*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_36, u16value);
2431*53ee8cc1Swenshuai.xi                 break;
2432*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2433*53ee8cc1Swenshuai.xi                 u16value |= (CFG4_54_RVU_PSI_EN2 | CFG4_54_RVU_EN2);
2434*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl4->CFG4_54, u16value);
2435*53ee8cc1Swenshuai.xi                 break;
2436*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2437*53ee8cc1Swenshuai.xi                 u16value |= (CFG4_54_RVU_PSI_EN3 | CFG4_54_RVU_EN3);
2438*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl4->CFG4_54, u16value);
2439*53ee8cc1Swenshuai.xi                 break;
2440*53ee8cc1Swenshuai.xi             default:
2441*53ee8cc1Swenshuai.xi                 printf("Not support !!\n");
2442*53ee8cc1Swenshuai.xi                 return;
2443*53ee8cc1Swenshuai.xi         }
2444*53ee8cc1Swenshuai.xi 
2445*53ee8cc1Swenshuai.xi         if(K6U02)
2446*53ee8cc1Swenshuai.xi         {
2447*53ee8cc1Swenshuai.xi             switch(eFileEng)
2448*53ee8cc1Swenshuai.xi             {
2449*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF0:
2450*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH0);
2451*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH0_RVU_ALWAYS_PAYLOAD_128);
2452*53ee8cc1Swenshuai.xi                     break;
2453*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF1:
2454*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH1);
2455*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH1_RVU_ALWAYS_PAYLOAD_128);
2456*53ee8cc1Swenshuai.xi                     break;
2457*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF2:
2458*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH2);
2459*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH2_RVU_ALWAYS_PAYLOAD_128);
2460*53ee8cc1Swenshuai.xi                     break;
2461*53ee8cc1Swenshuai.xi                 case E_FILEENG_TSIF3:
2462*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1A, CFG3_1A_RVU_DIRECTV_AFTER_CA_ENABLE_PATH3);
2463*53ee8cc1Swenshuai.xi                     REG16_SET(&_RegCtrl3->CFG3_1C, CFG3_1C_PATH3_RVU_ALWAYS_PAYLOAD_128);
2464*53ee8cc1Swenshuai.xi                     break;
2465*53ee8cc1Swenshuai.xi                 default:
2466*53ee8cc1Swenshuai.xi                     printf("Not support !!\n");
2467*53ee8cc1Swenshuai.xi                     return;
2468*53ee8cc1Swenshuai.xi             }
2469*53ee8cc1Swenshuai.xi         }
2470*53ee8cc1Swenshuai.xi 
2471*53ee8cc1Swenshuai.xi     }
2472*53ee8cc1Swenshuai.xi 
2473*53ee8cc1Swenshuai.xi     switch(eFileEng)
2474*53ee8cc1Swenshuai.xi     {
2475*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2476*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_ALT_TS_SIZE);
2477*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->PktChkSizeFilein, (REG16_R(&_RegCtrl->PktChkSizeFilein) & ~TSP_PKT_SIZE_MASK) | (TSP_PKT_SIZE_MASK & (u32PktLen-1)));
2478*53ee8cc1Swenshuai.xi             break;
2479*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2480*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)));
2481*53ee8cc1Swenshuai.xi             break;
2482*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2483*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)));
2484*53ee8cc1Swenshuai.xi             break;
2485*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2486*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)));
2487*53ee8cc1Swenshuai.xi             break;
2488*53ee8cc1Swenshuai.xi         default:
2489*53ee8cc1Swenshuai.xi             break;
2490*53ee8cc1Swenshuai.xi     }
2491*53ee8cc1Swenshuai.xi }
2492*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng,MS_U32 addr)2493*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng, MS_U32 addr)
2494*53ee8cc1Swenshuai.xi {
2495*53ee8cc1Swenshuai.xi     // Check MIU select
2496*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
2497*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetFileinAddr;
2498*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFileinAddr, addr);
2499*53ee8cc1Swenshuai.xi 
2500*53ee8cc1Swenshuai.xi     switch(eFileEng)
2501*53ee8cc1Swenshuai.xi     {
2502*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2503*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));
2504*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsDma_Addr, phyMiuOffsetFileinAddr);
2505*53ee8cc1Swenshuai.xi             break;
2506*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2507*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));
2508*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_30_31, phyMiuOffsetFileinAddr);
2509*53ee8cc1Swenshuai.xi             break;
2510*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2511*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));
2512*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_35_36, phyMiuOffsetFileinAddr);
2513*53ee8cc1Swenshuai.xi             break;
2514*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2515*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));
2516*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_3A_3B, phyMiuOffsetFileinAddr);
2517*53ee8cc1Swenshuai.xi             break;
2518*53ee8cc1Swenshuai.xi         default:
2519*53ee8cc1Swenshuai.xi             break;
2520*53ee8cc1Swenshuai.xi     }
2521*53ee8cc1Swenshuai.xi }
2522*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng,MS_U32 size)2523*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng, MS_U32 size)
2524*53ee8cc1Swenshuai.xi {
2525*53ee8cc1Swenshuai.xi     switch(eFileEng)
2526*53ee8cc1Swenshuai.xi     {
2527*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2528*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsDma_Size, size);
2529*53ee8cc1Swenshuai.xi             break;
2530*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2531*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_32_33, size);
2532*53ee8cc1Swenshuai.xi             break;
2533*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2534*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_37_38, size);
2535*53ee8cc1Swenshuai.xi             break;
2536*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2537*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_3C_3D, size);
2538*53ee8cc1Swenshuai.xi             break;
2539*53ee8cc1Swenshuai.xi         default:
2540*53ee8cc1Swenshuai.xi             break;
2541*53ee8cc1Swenshuai.xi     }
2542*53ee8cc1Swenshuai.xi }
2543*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)2544*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)
2545*53ee8cc1Swenshuai.xi {
2546*53ee8cc1Swenshuai.xi     switch(eFileEng)
2547*53ee8cc1Swenshuai.xi     {
2548*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2549*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TsDma_Ctrl, TSP_TSDMA_CTRL_START);
2550*53ee8cc1Swenshuai.xi             break;
2551*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2552*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_34, CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START);
2553*53ee8cc1Swenshuai.xi             break;
2554*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2555*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_39, CFG_39_FILEIN_CTRL_TSIF2_START);
2556*53ee8cc1Swenshuai.xi             break;
2557*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2558*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_3E, CFG_3E_FILEIN_CTRL_TSIF3_START);
2559*53ee8cc1Swenshuai.xi             break;
2560*53ee8cc1Swenshuai.xi         default:
2561*53ee8cc1Swenshuai.xi             break;
2562*53ee8cc1Swenshuai.xi     }
2563*53ee8cc1Swenshuai.xi }
2564*53ee8cc1Swenshuai.xi 
HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)2565*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)
2566*53ee8cc1Swenshuai.xi {
2567*53ee8cc1Swenshuai.xi     switch (eFileEng)
2568*53ee8cc1Swenshuai.xi     {
2569*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2570*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
2571*53ee8cc1Swenshuai.xi             return TRUE;
2572*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2573*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
2574*53ee8cc1Swenshuai.xi             return TRUE;
2575*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2576*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
2577*53ee8cc1Swenshuai.xi             return TRUE;
2578*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2579*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF3_FILE_PAUSE);
2580*53ee8cc1Swenshuai.xi             return TRUE;
2581*53ee8cc1Swenshuai.xi         default:
2582*53ee8cc1Swenshuai.xi             return FALSE;
2583*53ee8cc1Swenshuai.xi     }
2584*53ee8cc1Swenshuai.xi }
2585*53ee8cc1Swenshuai.xi 
HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)2586*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)
2587*53ee8cc1Swenshuai.xi {
2588*53ee8cc1Swenshuai.xi     switch (eFileEng)
2589*53ee8cc1Swenshuai.xi     {
2590*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2591*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
2592*53ee8cc1Swenshuai.xi             return TRUE;
2593*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2594*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
2595*53ee8cc1Swenshuai.xi             return TRUE;
2596*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2597*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
2598*53ee8cc1Swenshuai.xi             return TRUE;
2599*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2600*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF3_FILE_PAUSE);
2601*53ee8cc1Swenshuai.xi             return TRUE;
2602*53ee8cc1Swenshuai.xi         default:
2603*53ee8cc1Swenshuai.xi             return FALSE;
2604*53ee8cc1Swenshuai.xi     }
2605*53ee8cc1Swenshuai.xi }
2606*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)2607*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)
2608*53ee8cc1Swenshuai.xi {
2609*53ee8cc1Swenshuai.xi     switch(eFileEng)
2610*53ee8cc1Swenshuai.xi     {
2611*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2612*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->TsDma_Ctrl, (TSP_TSDMA_INIT_TRUST | TSP_TSDMA_CTRL_START));
2613*53ee8cc1Swenshuai.xi             break;
2614*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2615*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_34, (CFG_34_REG_TSP_FILEIN_INIT_TRUST_TSIF1 | CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START));
2616*53ee8cc1Swenshuai.xi             break;
2617*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2618*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_39, (CFG_39_FILEIN_INIT_TRUST_TSIF2 | CFG_39_FILEIN_CTRL_TSIF2_START));
2619*53ee8cc1Swenshuai.xi             break;
2620*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2621*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_3E, (CFG_3E_FILEIN_INIT_TRUST_TSIF3 | CFG_3E_FILEIN_CTRL_TSIF3_START));
2622*53ee8cc1Swenshuai.xi             break;
2623*53ee8cc1Swenshuai.xi         default:
2624*53ee8cc1Swenshuai.xi             break;
2625*53ee8cc1Swenshuai.xi     }
2626*53ee8cc1Swenshuai.xi }
2627*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng,MS_BOOL bEn)2628*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng, MS_BOOL bEn)
2629*53ee8cc1Swenshuai.xi {
2630*53ee8cc1Swenshuai.xi     if(bEn)
2631*53ee8cc1Swenshuai.xi     {
2632*53ee8cc1Swenshuai.xi         switch(eFileEng)
2633*53ee8cc1Swenshuai.xi         {
2634*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2635*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
2636*53ee8cc1Swenshuai.xi                 break;
2637*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2638*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
2639*53ee8cc1Swenshuai.xi                 break;
2640*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2641*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
2642*53ee8cc1Swenshuai.xi                 break;
2643*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2644*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF3);
2645*53ee8cc1Swenshuai.xi                 break;
2646*53ee8cc1Swenshuai.xi             default:
2647*53ee8cc1Swenshuai.xi                 break;
2648*53ee8cc1Swenshuai.xi         }
2649*53ee8cc1Swenshuai.xi     }
2650*53ee8cc1Swenshuai.xi     else
2651*53ee8cc1Swenshuai.xi     {
2652*53ee8cc1Swenshuai.xi         switch(eFileEng)
2653*53ee8cc1Swenshuai.xi         {
2654*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2655*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
2656*53ee8cc1Swenshuai.xi                 break;
2657*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2658*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
2659*53ee8cc1Swenshuai.xi                 break;
2660*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2661*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
2662*53ee8cc1Swenshuai.xi                 break;
2663*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2664*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF3);
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_CmdQRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)2672*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
2673*53ee8cc1Swenshuai.xi {
2674*53ee8cc1Swenshuai.xi     if(bEnable)
2675*53ee8cc1Swenshuai.xi     {
2676*53ee8cc1Swenshuai.xi         switch(eFileEng)
2677*53ee8cc1Swenshuai.xi         {
2678*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2679*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
2680*53ee8cc1Swenshuai.xi                 break;
2681*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2682*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
2683*53ee8cc1Swenshuai.xi                 break;
2684*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2685*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
2686*53ee8cc1Swenshuai.xi                 break;
2687*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2688*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
2689*53ee8cc1Swenshuai.xi                 break;
2690*53ee8cc1Swenshuai.xi             default:
2691*53ee8cc1Swenshuai.xi                 break;
2692*53ee8cc1Swenshuai.xi         }
2693*53ee8cc1Swenshuai.xi     }
2694*53ee8cc1Swenshuai.xi     else
2695*53ee8cc1Swenshuai.xi     {
2696*53ee8cc1Swenshuai.xi         switch(eFileEng)
2697*53ee8cc1Swenshuai.xi         {
2698*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2699*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
2700*53ee8cc1Swenshuai.xi                 break;
2701*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2702*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
2703*53ee8cc1Swenshuai.xi                 break;
2704*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2705*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
2706*53ee8cc1Swenshuai.xi                 break;
2707*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2708*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
2709*53ee8cc1Swenshuai.xi                 break;
2710*53ee8cc1Swenshuai.xi             default:
2711*53ee8cc1Swenshuai.xi                 break;
2712*53ee8cc1Swenshuai.xi         }
2713*53ee8cc1Swenshuai.xi     }
2714*53ee8cc1Swenshuai.xi }
2715*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)2716*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)
2717*53ee8cc1Swenshuai.xi {
2718*53ee8cc1Swenshuai.xi     switch(eFileEng)
2719*53ee8cc1Swenshuai.xi     {
2720*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2721*53ee8cc1Swenshuai.xi             return (TSP_CMDQ_SIZE - ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT));
2722*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2723*53ee8cc1Swenshuai.xi             return (CFG_3F_REG_TSIF1_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT));
2724*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2725*53ee8cc1Swenshuai.xi             return (CFG_40_REG_TSIF2_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT));
2726*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2727*53ee8cc1Swenshuai.xi             return (CFG_41_REG_TSIF3_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_CNT));
2728*53ee8cc1Swenshuai.xi 
2729*53ee8cc1Swenshuai.xi         default:
2730*53ee8cc1Swenshuai.xi             return 0;
2731*53ee8cc1Swenshuai.xi     }
2732*53ee8cc1Swenshuai.xi }
2733*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)2734*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)
2735*53ee8cc1Swenshuai.xi {
2736*53ee8cc1Swenshuai.xi     switch(eFileEng)
2737*53ee8cc1Swenshuai.xi     {
2738*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2739*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT);
2740*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2741*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT);
2742*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2743*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT);
2744*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2745*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_CNT);
2746*53ee8cc1Swenshuai.xi         default:
2747*53ee8cc1Swenshuai.xi             return 0;
2748*53ee8cc1Swenshuai.xi     }
2749*53ee8cc1Swenshuai.xi }
2750*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)2751*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)
2752*53ee8cc1Swenshuai.xi {
2753*53ee8cc1Swenshuai.xi     switch(eFileEng)
2754*53ee8cc1Swenshuai.xi     {
2755*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2756*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_CMDQ_WR_LEVEL_MASK) >> TSP_CMDQ_WR_LEVEL_SHFT);
2757*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2758*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2759*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2760*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2761*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2762*53ee8cc1Swenshuai.xi             return ((REG16_R(&_RegCtrl2->CFG_41) & CFG_41_REG_TSIF3_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
2763*53ee8cc1Swenshuai.xi         default:
2764*53ee8cc1Swenshuai.xi             return 0;
2765*53ee8cc1Swenshuai.xi     }
2766*53ee8cc1Swenshuai.xi }
2767*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng,MS_U32 delay,MS_BOOL bEnable)2768*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng, MS_U32 delay, MS_BOOL bEnable)
2769*53ee8cc1Swenshuai.xi {
2770*53ee8cc1Swenshuai.xi     if(bEnable)
2771*53ee8cc1Swenshuai.xi     {
2772*53ee8cc1Swenshuai.xi         switch(eFileEng)
2773*53ee8cc1Swenshuai.xi         {
2774*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2775*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->TsFileIn_Timer, delay & TSP_FILE_TIMER_MASK);
2776*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
2777*53ee8cc1Swenshuai.xi                 break;
2778*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2779*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_03, delay & CFG_03_TSP_FILE_TIMER1);
2780*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
2781*53ee8cc1Swenshuai.xi                 break;
2782*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2783*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_08, delay & CFG_08_TSP_FILE_TIMER2);
2784*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
2785*53ee8cc1Swenshuai.xi                 break;
2786*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2787*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_0D, delay & CFG_0D_TSP_FILE_TIMER3);
2788*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_TIMER_EN3);
2789*53ee8cc1Swenshuai.xi                 break;
2790*53ee8cc1Swenshuai.xi             default:
2791*53ee8cc1Swenshuai.xi                 break;
2792*53ee8cc1Swenshuai.xi         }
2793*53ee8cc1Swenshuai.xi     }
2794*53ee8cc1Swenshuai.xi     else
2795*53ee8cc1Swenshuai.xi     {
2796*53ee8cc1Swenshuai.xi         switch(eFileEng)
2797*53ee8cc1Swenshuai.xi         {
2798*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2799*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
2800*53ee8cc1Swenshuai.xi                 REG32_W(&_RegCtrl->TsFileIn_Timer, 0x0000);
2801*53ee8cc1Swenshuai.xi                 break;
2802*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2803*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
2804*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_03, 0x0000);
2805*53ee8cc1Swenshuai.xi                 break;
2806*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2807*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
2808*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_08, 0x0000);
2809*53ee8cc1Swenshuai.xi                 break;
2810*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2811*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_TIMER_EN3);
2812*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_0D, 0x0000);
2813*53ee8cc1Swenshuai.xi                 break;
2814*53ee8cc1Swenshuai.xi             default:
2815*53ee8cc1Swenshuai.xi                 break;
2816*53ee8cc1Swenshuai.xi         }
2817*53ee8cc1Swenshuai.xi     }
2818*53ee8cc1Swenshuai.xi }
2819*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)2820*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)
2821*53ee8cc1Swenshuai.xi {
2822*53ee8cc1Swenshuai.xi     switch(eFileEng)
2823*53ee8cc1Swenshuai.xi     {
2824*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2825*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_TSDMA_FILEIN_DONE);
2826*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2827*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_34) & CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_DONE);
2828*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2829*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_39) & CFG_39_FILEIN_CTRL_TSIF2_DONE);
2830*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2831*53ee8cc1Swenshuai.xi             return !(REG16_R(&_RegCtrl2->CFG_3E) & CFG_3E_FILEIN_CTRL_TSIF3_DONE);
2832*53ee8cc1Swenshuai.xi         default:
2833*53ee8cc1Swenshuai.xi             return 0;
2834*53ee8cc1Swenshuai.xi     }
2835*53ee8cc1Swenshuai.xi }
2836*53ee8cc1Swenshuai.xi 
2837*53ee8cc1Swenshuai.xi // Only used by [HW test code]
2838*53ee8cc1Swenshuai.xi /*
2839*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_Filein_Done_Status(FILEENG_SEQ eFileEng)
2840*53ee8cc1Swenshuai.xi {
2841*53ee8cc1Swenshuai.xi     return !HAL_TSP_Filein_Status(eFileEng);
2842*53ee8cc1Swenshuai.xi }
2843*53ee8cc1Swenshuai.xi */
2844*53ee8cc1Swenshuai.xi 
2845*53ee8cc1Swenshuai.xi //To do : only tsif0 has pause functionality in Kaiser
HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)2846*53ee8cc1Swenshuai.xi TSP_HAL_FileState HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)
2847*53ee8cc1Swenshuai.xi {
2848*53ee8cc1Swenshuai.xi     TSP_HAL_FileState       state = E_TSP_HAL_FILE_STATE_INVALID;
2849*53ee8cc1Swenshuai.xi     MS_U32                  u32Status = HAL_TSP_Filein_Status(eFileEng);
2850*53ee8cc1Swenshuai.xi 
2851*53ee8cc1Swenshuai.xi     // @FIXME in kaiser u01 only tsif0 file eng has pause function
2852*53ee8cc1Swenshuai.xi     switch (eFileEng)
2853*53ee8cc1Swenshuai.xi     {
2854*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
2855*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl->TSP_Ctrl1) & TSP_CTRL1_FILEIN_PAUSE )
2856*53ee8cc1Swenshuai.xi             {
2857*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2858*53ee8cc1Swenshuai.xi             }
2859*53ee8cc1Swenshuai.xi             else if (u32Status)
2860*53ee8cc1Swenshuai.xi             {
2861*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2862*53ee8cc1Swenshuai.xi             }
2863*53ee8cc1Swenshuai.xi             else
2864*53ee8cc1Swenshuai.xi             {
2865*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2866*53ee8cc1Swenshuai.xi             }
2867*53ee8cc1Swenshuai.xi             break;
2868*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
2869*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF1_FILE_PAUSE)
2870*53ee8cc1Swenshuai.xi             {
2871*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2872*53ee8cc1Swenshuai.xi             }
2873*53ee8cc1Swenshuai.xi             else if (u32Status)
2874*53ee8cc1Swenshuai.xi             {
2875*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2876*53ee8cc1Swenshuai.xi             }
2877*53ee8cc1Swenshuai.xi             else
2878*53ee8cc1Swenshuai.xi             {
2879*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2880*53ee8cc1Swenshuai.xi             }
2881*53ee8cc1Swenshuai.xi             break;
2882*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
2883*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF2_FILE_PAUSE)
2884*53ee8cc1Swenshuai.xi             {
2885*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2886*53ee8cc1Swenshuai.xi             }
2887*53ee8cc1Swenshuai.xi             else if (u32Status)
2888*53ee8cc1Swenshuai.xi             {
2889*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2890*53ee8cc1Swenshuai.xi             }
2891*53ee8cc1Swenshuai.xi             else
2892*53ee8cc1Swenshuai.xi             {
2893*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2894*53ee8cc1Swenshuai.xi             }
2895*53ee8cc1Swenshuai.xi             break;
2896*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
2897*53ee8cc1Swenshuai.xi             if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF3_FILE_PAUSE)
2898*53ee8cc1Swenshuai.xi             {
2899*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_PAUSE;
2900*53ee8cc1Swenshuai.xi             }
2901*53ee8cc1Swenshuai.xi             else if (u32Status)
2902*53ee8cc1Swenshuai.xi             {
2903*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_BUSY;
2904*53ee8cc1Swenshuai.xi             }
2905*53ee8cc1Swenshuai.xi             else
2906*53ee8cc1Swenshuai.xi             {
2907*53ee8cc1Swenshuai.xi                 state = E_TSP_HAL_FILE_STATE_IDLE;
2908*53ee8cc1Swenshuai.xi             }
2909*53ee8cc1Swenshuai.xi             break;
2910*53ee8cc1Swenshuai.xi         default:
2911*53ee8cc1Swenshuai.xi             state = E_TSP_HAL_FILE_STATE_INVALID;
2912*53ee8cc1Swenshuai.xi             break;
2913*53ee8cc1Swenshuai.xi     }
2914*53ee8cc1Swenshuai.xi     return state;
2915*53ee8cc1Swenshuai.xi }
2916*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)2917*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)
2918*53ee8cc1Swenshuai.xi {
2919*53ee8cc1Swenshuai.xi     if(bSet)
2920*53ee8cc1Swenshuai.xi     {
2921*53ee8cc1Swenshuai.xi         switch(eFileEng)
2922*53ee8cc1Swenshuai.xi         {
2923*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2924*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
2925*53ee8cc1Swenshuai.xi                 break;
2926*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2927*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
2928*53ee8cc1Swenshuai.xi                 break;
2929*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2930*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
2931*53ee8cc1Swenshuai.xi                 break;
2932*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2933*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_EN3);
2934*53ee8cc1Swenshuai.xi                 break;
2935*53ee8cc1Swenshuai.xi             default:
2936*53ee8cc1Swenshuai.xi                 break;
2937*53ee8cc1Swenshuai.xi         }
2938*53ee8cc1Swenshuai.xi     }
2939*53ee8cc1Swenshuai.xi     else
2940*53ee8cc1Swenshuai.xi     {
2941*53ee8cc1Swenshuai.xi         switch(eFileEng)
2942*53ee8cc1Swenshuai.xi         {
2943*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2944*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
2945*53ee8cc1Swenshuai.xi                 break;
2946*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2947*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
2948*53ee8cc1Swenshuai.xi                 break;
2949*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2950*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
2951*53ee8cc1Swenshuai.xi                 break;
2952*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2953*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_EN3);
2954*53ee8cc1Swenshuai.xi                 break;
2955*53ee8cc1Swenshuai.xi             default:
2956*53ee8cc1Swenshuai.xi                 break;
2957*53ee8cc1Swenshuai.xi         }
2958*53ee8cc1Swenshuai.xi     }
2959*53ee8cc1Swenshuai.xi 
2960*53ee8cc1Swenshuai.xi }
2961*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng,MS_BOOL bEn)2962*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng, MS_BOOL bEn)
2963*53ee8cc1Swenshuai.xi {
2964*53ee8cc1Swenshuai.xi     if(bEn)
2965*53ee8cc1Swenshuai.xi     {
2966*53ee8cc1Swenshuai.xi         switch(eFileEng)
2967*53ee8cc1Swenshuai.xi         {
2968*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2969*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
2970*53ee8cc1Swenshuai.xi                 break;
2971*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2972*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
2973*53ee8cc1Swenshuai.xi                 break;
2974*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2975*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
2976*53ee8cc1Swenshuai.xi                 break;
2977*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2978*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_BLK_DISABLE3);
2979*53ee8cc1Swenshuai.xi             default:
2980*53ee8cc1Swenshuai.xi                 break;
2981*53ee8cc1Swenshuai.xi         }
2982*53ee8cc1Swenshuai.xi     }
2983*53ee8cc1Swenshuai.xi     else
2984*53ee8cc1Swenshuai.xi     {
2985*53ee8cc1Swenshuai.xi         switch(eFileEng)
2986*53ee8cc1Swenshuai.xi         {
2987*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
2988*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
2989*53ee8cc1Swenshuai.xi                 break;
2990*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
2991*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
2992*53ee8cc1Swenshuai.xi                 break;
2993*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
2994*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
2995*53ee8cc1Swenshuai.xi                 break;
2996*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
2997*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_PKT192_BLK_DISABLE3);
2998*53ee8cc1Swenshuai.xi                 break;
2999*53ee8cc1Swenshuai.xi             default:
3000*53ee8cc1Swenshuai.xi                 break;
3001*53ee8cc1Swenshuai.xi         }
3002*53ee8cc1Swenshuai.xi     }
3003*53ee8cc1Swenshuai.xi }
3004*53ee8cc1Swenshuai.xi 
3005*53ee8cc1Swenshuai.xi #if 0
3006*53ee8cc1Swenshuai.xi static void _HAL_TSP_FILEIN_ResetPktTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32InitTimeStamp)
3007*53ee8cc1Swenshuai.xi {
3008*53ee8cc1Swenshuai.xi     switch(eFileEng)
3009*53ee8cc1Swenshuai.xi     {
3010*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3011*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
3012*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_50_51, u32InitTimeStamp);
3013*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
3014*53ee8cc1Swenshuai.xi             break;
3015*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3016*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
3017*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_52_53, u32InitTimeStamp);
3018*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
3019*53ee8cc1Swenshuai.xi             break;
3020*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3021*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
3022*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_54_55, u32InitTimeStamp);
3023*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
3024*53ee8cc1Swenshuai.xi             break;
3025*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3026*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_3);
3027*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_56_57, u32InitTimeStamp);
3028*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_3);
3029*53ee8cc1Swenshuai.xi             break;
3030*53ee8cc1Swenshuai.xi         default:
3031*53ee8cc1Swenshuai.xi             break;
3032*53ee8cc1Swenshuai.xi     }
3033*53ee8cc1Swenshuai.xi }
3034*53ee8cc1Swenshuai.xi #endif
3035*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng,MS_U32 u32Stamp)3036*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32Stamp)
3037*53ee8cc1Swenshuai.xi {
3038*53ee8cc1Swenshuai.xi     switch(eFileEng)
3039*53ee8cc1Swenshuai.xi     {
3040*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3041*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
3042*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->LPcr2, u32Stamp);
3043*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
3044*53ee8cc1Swenshuai.xi             break;
3045*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3046*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
3047*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_50_51, u32Stamp);
3048*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
3049*53ee8cc1Swenshuai.xi             break;
3050*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3051*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
3052*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_52_53, u32Stamp);
3053*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
3054*53ee8cc1Swenshuai.xi             break;
3055*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3056*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_0B, CFG_0B_LPCR2_WLD3);
3057*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_54_55, u32Stamp);
3058*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_0B, CFG_0B_LPCR2_WLD3);
3059*53ee8cc1Swenshuai.xi             break;
3060*53ee8cc1Swenshuai.xi         default:
3061*53ee8cc1Swenshuai.xi             break;
3062*53ee8cc1Swenshuai.xi     }
3063*53ee8cc1Swenshuai.xi 
3064*53ee8cc1Swenshuai.xi    // Fix pass_pkt_timestamp will hang issue by TSP8,0x60[3] : reg_init_timestamp_restart_en
3065*53ee8cc1Swenshuai.xi    // _HAL_TSP_FILEIN_ResetPktTimeStamp(eFileEng, 0);
3066*53ee8cc1Swenshuai.xi }
3067*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng,TSP_HAL_TimeStamp_Clk eTimeStampClk)3068*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng, TSP_HAL_TimeStamp_Clk eTimeStampClk)
3069*53ee8cc1Swenshuai.xi {
3070*53ee8cc1Swenshuai.xi     switch(eFileEng)
3071*53ee8cc1Swenshuai.xi     {
3072*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3073*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
3074*53ee8cc1Swenshuai.xi             {
3075*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
3076*53ee8cc1Swenshuai.xi             }
3077*53ee8cc1Swenshuai.xi             else
3078*53ee8cc1Swenshuai.xi             {
3079*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
3080*53ee8cc1Swenshuai.xi             }
3081*53ee8cc1Swenshuai.xi             break;
3082*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3083*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
3084*53ee8cc1Swenshuai.xi             {
3085*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
3086*53ee8cc1Swenshuai.xi             }
3087*53ee8cc1Swenshuai.xi             else
3088*53ee8cc1Swenshuai.xi             {
3089*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
3090*53ee8cc1Swenshuai.xi             }
3091*53ee8cc1Swenshuai.xi             break;
3092*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3093*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
3094*53ee8cc1Swenshuai.xi             {
3095*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
3096*53ee8cc1Swenshuai.xi             }
3097*53ee8cc1Swenshuai.xi             else
3098*53ee8cc1Swenshuai.xi             {
3099*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
3100*53ee8cc1Swenshuai.xi             }
3101*53ee8cc1Swenshuai.xi             break;
3102*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3103*53ee8cc1Swenshuai.xi             if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
3104*53ee8cc1Swenshuai.xi             {
3105*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF3_C27M);
3106*53ee8cc1Swenshuai.xi             }
3107*53ee8cc1Swenshuai.xi             else
3108*53ee8cc1Swenshuai.xi             {
3109*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF3_C27M);
3110*53ee8cc1Swenshuai.xi             }
3111*53ee8cc1Swenshuai.xi             break;
3112*53ee8cc1Swenshuai.xi         default:
3113*53ee8cc1Swenshuai.xi             break;
3114*53ee8cc1Swenshuai.xi     }
3115*53ee8cc1Swenshuai.xi }
3116*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)3117*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)
3118*53ee8cc1Swenshuai.xi {
3119*53ee8cc1Swenshuai.xi     MS_U32 u32Stamp = 0;
3120*53ee8cc1Swenshuai.xi     switch(eFileEng)
3121*53ee8cc1Swenshuai.xi     {
3122*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3123*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
3124*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl->LPcr2);
3125*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
3126*53ee8cc1Swenshuai.xi             break;
3127*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3128*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
3129*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_50_51);
3130*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
3131*53ee8cc1Swenshuai.xi             break;
3132*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3133*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
3134*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_52_53);
3135*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
3136*53ee8cc1Swenshuai.xi             break;
3137*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3138*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_LPCR2_LOAD_TSIF3);
3139*53ee8cc1Swenshuai.xi             u32Stamp = REG32_R(&_RegCtrl2->CFG_54_55);
3140*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_LPCR2_LOAD_TSIF3);
3141*53ee8cc1Swenshuai.xi             break;
3142*53ee8cc1Swenshuai.xi         default:
3143*53ee8cc1Swenshuai.xi             u32Stamp = 0;
3144*53ee8cc1Swenshuai.xi             break;
3145*53ee8cc1Swenshuai.xi     }
3146*53ee8cc1Swenshuai.xi     return u32Stamp;
3147*53ee8cc1Swenshuai.xi }
3148*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)3149*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)
3150*53ee8cc1Swenshuai.xi {
3151*53ee8cc1Swenshuai.xi     switch(eFileEng)
3152*53ee8cc1Swenshuai.xi     {
3153*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3154*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl->TimeStamp_FileIn);
3155*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3156*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_42_43);
3157*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3158*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_44_45);
3159*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3160*53ee8cc1Swenshuai.xi             return REG32_R(&_RegCtrl2->CFG_46_47);
3161*53ee8cc1Swenshuai.xi         default:
3162*53ee8cc1Swenshuai.xi             break;
3163*53ee8cc1Swenshuai.xi     }
3164*53ee8cc1Swenshuai.xi     return 0;
3165*53ee8cc1Swenshuai.xi }
3166*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng,MS_PHY * pu32Addr)3167*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng, MS_PHY *pu32Addr)
3168*53ee8cc1Swenshuai.xi {
3169*53ee8cc1Swenshuai.xi     switch(eFileEng)
3170*53ee8cc1Swenshuai.xi     {
3171*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
3172*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl->TsFileIn_RPtr) & TSP_FILE_RPTR_MASK);
3173*53ee8cc1Swenshuai.xi             break;
3174*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
3175*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6A_6B) & CFG_6A_6B_TSP2MI_RADDR_S_TSIF1);
3176*53ee8cc1Swenshuai.xi             break;
3177*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
3178*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6C_6D) & CFG_6C_6D_TSP2MI_RADDR_S_TSIF2);
3179*53ee8cc1Swenshuai.xi             break;
3180*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
3181*53ee8cc1Swenshuai.xi             *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6E_6F) & CFG_6E_6F_TSP2MI_RADDR_S_TSIF3);
3182*53ee8cc1Swenshuai.xi             break;
3183*53ee8cc1Swenshuai.xi         default:
3184*53ee8cc1Swenshuai.xi             break;
3185*53ee8cc1Swenshuai.xi     }
3186*53ee8cc1Swenshuai.xi 
3187*53ee8cc1Swenshuai.xi }
3188*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)3189*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
3190*53ee8cc1Swenshuai.xi {
3191*53ee8cc1Swenshuai.xi     if(bEnable)
3192*53ee8cc1Swenshuai.xi     {
3193*53ee8cc1Swenshuai.xi         switch(eFileEng)
3194*53ee8cc1Swenshuai.xi         {
3195*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3196*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_RESET);
3197*53ee8cc1Swenshuai.xi                 break;
3198*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3199*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
3200*53ee8cc1Swenshuai.xi                 break;
3201*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3202*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
3203*53ee8cc1Swenshuai.xi                 break;
3204*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3205*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF3);
3206*53ee8cc1Swenshuai.xi                 break;
3207*53ee8cc1Swenshuai.xi             default:
3208*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));
3209*53ee8cc1Swenshuai.xi                 break;
3210*53ee8cc1Swenshuai.xi         }
3211*53ee8cc1Swenshuai.xi     }
3212*53ee8cc1Swenshuai.xi     else
3213*53ee8cc1Swenshuai.xi     {
3214*53ee8cc1Swenshuai.xi         switch(eFileEng)
3215*53ee8cc1Swenshuai.xi         {
3216*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3217*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_RESET);
3218*53ee8cc1Swenshuai.xi                 break;
3219*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3220*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
3221*53ee8cc1Swenshuai.xi                 break;
3222*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3223*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
3224*53ee8cc1Swenshuai.xi                 break;
3225*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3226*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF3);
3227*53ee8cc1Swenshuai.xi                 break;
3228*53ee8cc1Swenshuai.xi             default:
3229*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));
3230*53ee8cc1Swenshuai.xi                 break;
3231*53ee8cc1Swenshuai.xi         }
3232*53ee8cc1Swenshuai.xi     }
3233*53ee8cc1Swenshuai.xi }
3234*53ee8cc1Swenshuai.xi 
HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng,MS_BOOL bEnable,MS_U32 u32Key)3235*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng, MS_BOOL bEnable, MS_U32 u32Key)
3236*53ee8cc1Swenshuai.xi {
3237*53ee8cc1Swenshuai.xi     if(bEnable)
3238*53ee8cc1Swenshuai.xi     {
3239*53ee8cc1Swenshuai.xi         switch(eFileEng)
3240*53ee8cc1Swenshuai.xi         {
3241*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3242*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl->Mobf_Filein_Idx, (u32Key & TSP_MOBF_FILEIN_MASK));
3243*53ee8cc1Swenshuai.xi                 break;
3244*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3245*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_75, (u32Key & CFG_75_FI_MOBF_INDEC_TSIF1_MASK));
3246*53ee8cc1Swenshuai.xi                 break;
3247*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3248*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_76, (u32Key & CFG_76_FI_MOBF_INDEC_TSIF2_MASK));
3249*53ee8cc1Swenshuai.xi                 break;
3250*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3251*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_77, (u32Key & CFG_77_FI_MOBF_INDEC_TSIF3_MASK));
3252*53ee8cc1Swenshuai.xi                 break;
3253*53ee8cc1Swenshuai.xi             default:
3254*53ee8cc1Swenshuai.xi                 break;
3255*53ee8cc1Swenshuai.xi         }
3256*53ee8cc1Swenshuai.xi     }
3257*53ee8cc1Swenshuai.xi     else
3258*53ee8cc1Swenshuai.xi     {
3259*53ee8cc1Swenshuai.xi         switch(eFileEng)
3260*53ee8cc1Swenshuai.xi         {
3261*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
3262*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl->Mobf_Filein_Idx, 0);
3263*53ee8cc1Swenshuai.xi                 break;
3264*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
3265*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_75, 0);
3266*53ee8cc1Swenshuai.xi                 break;
3267*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
3268*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_76, 0);
3269*53ee8cc1Swenshuai.xi                 break;
3270*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
3271*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl2->CFG_77, 0);
3272*53ee8cc1Swenshuai.xi                 break;
3273*53ee8cc1Swenshuai.xi             default:
3274*53ee8cc1Swenshuai.xi                 break;
3275*53ee8cc1Swenshuai.xi         }
3276*53ee8cc1Swenshuai.xi     }
3277*53ee8cc1Swenshuai.xi }
3278*53ee8cc1Swenshuai.xi 
HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)3279*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
3280*53ee8cc1Swenshuai.xi {
3281*53ee8cc1Swenshuai.xi     switch (ePidFltSrc)
3282*53ee8cc1Swenshuai.xi     {
3283*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE0:
3284*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF0;
3285*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE1:
3286*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF2;
3287*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE2:
3288*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF3;
3289*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE3:
3290*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF1;
3291*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE0:
3292*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF1;
3293*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE1:
3294*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF3;
3295*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE2:
3296*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF0;
3297*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE3:
3298*53ee8cc1Swenshuai.xi             return TSP_PIDFLT_TSIF2;
3299*53ee8cc1Swenshuai.xi         default:
3300*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong filter source!!!\n",__FUNCTION__, __LINE__);
3301*53ee8cc1Swenshuai.xi             break;
3302*53ee8cc1Swenshuai.xi     }
3303*53ee8cc1Swenshuai.xi 
3304*53ee8cc1Swenshuai.xi     return 0;
3305*53ee8cc1Swenshuai.xi }
3306*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId,MS_U32 u32FltIn)3307*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId, MS_U32 u32FltIn)
3308*53ee8cc1Swenshuai.xi {
3309*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
3310*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_IN_MASK) | ((u32FltIn << TSP_PIDFLT_TSIF_SHFT) & TSP_PIDFLT_IN_MASK));
3311*53ee8cc1Swenshuai.xi }
3312*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId,MS_U32 u32FltOut)3313*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId, MS_U32 u32FltOut)
3314*53ee8cc1Swenshuai.xi {
3315*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3316*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_OUT_MASK)) | (u32FltOut & TSP_PIDFLT_OUT_MASK)));
3317*53ee8cc1Swenshuai.xi }
3318*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId,MS_U32 u32SrcID)3319*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId, MS_U32 u32SrcID)
3320*53ee8cc1Swenshuai.xi {
3321*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3322*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcID << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
3323*53ee8cc1Swenshuai.xi }
3324*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId,MS_U32 u32SecFltId)3325*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId, MS_U32 u32SecFltId)
3326*53ee8cc1Swenshuai.xi {
3327*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3328*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_SECFLT_MASK) | ((u32SecFltId << TSP_PIDFLT_SECFLT_SHFT) & TSP_PIDFLT_SECFLT_MASK));
3329*53ee8cc1Swenshuai.xi }
3330*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId,MS_U32 u32PVREng,MS_BOOL bEn)3331*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId, MS_U32 u32PVREng, MS_BOOL bEn)
3332*53ee8cc1Swenshuai.xi {
3333*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3334*53ee8cc1Swenshuai.xi     if(bEn)
3335*53ee8cc1Swenshuai.xi     {
3336*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK) | (((1 << u32PVREng) << TSP_PIDFLT_PVRFLT_SHFT) & TSP_PIDFLT_PVRFLT_MASK));
3337*53ee8cc1Swenshuai.xi     }
3338*53ee8cc1Swenshuai.xi     else
3339*53ee8cc1Swenshuai.xi     {
3340*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK));
3341*53ee8cc1Swenshuai.xi     }
3342*53ee8cc1Swenshuai.xi }
3343*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId,MS_U8 u8Enable)3344*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId, MS_U8 u8Enable)
3345*53ee8cc1Swenshuai.xi {
3346*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
3347*53ee8cc1Swenshuai.xi     if(u8Enable)
3348*53ee8cc1Swenshuai.xi         TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) | (TSP_PID_FLT_PKTPUSH_PASS));
3349*53ee8cc1Swenshuai.xi     else
3350*53ee8cc1Swenshuai.xi         TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) & ~(TSP_PID_FLT_PKTPUSH_PASS));
3351*53ee8cc1Swenshuai.xi }
3352*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetPid(MS_U32 fltId,MS_U32 u32Pid)3353*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPid(MS_U32 fltId, MS_U32 u32Pid)
3354*53ee8cc1Swenshuai.xi {
3355*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
3356*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PID_MASK) | ((u32Pid << TSP_PIDFLT_PID_SHFT) & TSP_PIDFLT_PID_MASK));
3357*53ee8cc1Swenshuai.xi }
3358*53ee8cc1Swenshuai.xi 
3359*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3360*53ee8cc1Swenshuai.xi // For section filter part
3361*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3362*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)3363*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)
3364*53ee8cc1Swenshuai.xi {
3365*53ee8cc1Swenshuai.xi      REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SEC_DMA_BURST_EN);
3366*53ee8cc1Swenshuai.xi      REG16_MSK_W(&_RegCtrl->Hw_Config4, TSP_HW_DMA_MODE_MASK, (burstMode << TSP_HW_DMA_MODE_SHIFT));
3367*53ee8cc1Swenshuai.xi }
3368*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetType(REG_SecFlt * pSecFlt,MS_U32 u32FltType)3369*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetType(REG_SecFlt *pSecFlt, MS_U32 u32FltType)
3370*53ee8cc1Swenshuai.xi {
3371*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_USER_MASK) | (u32FltType << TSP_SECFLT_USER_SHFT));
3372*53ee8cc1Swenshuai.xi }
3373*53ee8cc1Swenshuai.xi 
3374*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetMode(REG_SecFlt * pSecFlt,MS_U32 u32SecFltMode)3375*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMode(REG_SecFlt *pSecFlt, MS_U32 u32SecFltMode)
3376*53ee8cc1Swenshuai.xi {
3377*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_MASK) | ((u32SecFltMode << TSP_SECFLT_MODE_SHFT) & TSP_SECFLT_MODE_MASK));
3378*53ee8cc1Swenshuai.xi }
3379*53ee8cc1Swenshuai.xi 
3380*53ee8cc1Swenshuai.xi 
3381*53ee8cc1Swenshuai.xi // match mask --> 0 will compare
HAL_TSP_SecFlt_SetMask(REG_SecFlt * pSecFlt,MS_U8 * pu8Mask)3382*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMask(REG_SecFlt *pSecFlt, MS_U8 *pu8Mask)
3383*53ee8cc1Swenshuai.xi {
3384*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3385*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3386*53ee8cc1Swenshuai.xi 
3387*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3388*53ee8cc1Swenshuai.xi     {
3389*53ee8cc1Swenshuai.xi         j = (i<< 2);
3390*53ee8cc1Swenshuai.xi         u32Temp = (pu8Mask[j]) | (pu8Mask[j+ 1] << 8  ) | (pu8Mask[j+ 2] << 16  )| (pu8Mask[j+ 3] << 24);
3391*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->Mask[i], u32Temp);
3392*53ee8cc1Swenshuai.xi     }
3393*53ee8cc1Swenshuai.xi }
3394*53ee8cc1Swenshuai.xi 
3395*53ee8cc1Swenshuai.xi 
3396*53ee8cc1Swenshuai.xi // not match mask --> 1 will compare
HAL_TSP_SecFlt_SetNMask(REG_SecFlt * pSecFlt,MS_U8 * pu8NMask)3397*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetNMask(REG_SecFlt *pSecFlt, MS_U8 *pu8NMask)
3398*53ee8cc1Swenshuai.xi {
3399*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3400*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3401*53ee8cc1Swenshuai.xi 
3402*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3403*53ee8cc1Swenshuai.xi     {
3404*53ee8cc1Swenshuai.xi         j = (i<< 2);
3405*53ee8cc1Swenshuai.xi         u32Temp = (pu8NMask[j]) | (pu8NMask[j+ 1] << 8  ) | (pu8NMask[j+ 2] << 16  )| (pu8NMask[j+ 3] << 24);
3406*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->NMask[i], u32Temp);
3407*53ee8cc1Swenshuai.xi     }
3408*53ee8cc1Swenshuai.xi }
3409*53ee8cc1Swenshuai.xi 
3410*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetMatch(REG_SecFlt * pSecFlt,MS_U8 * pu8Match)3411*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMatch(REG_SecFlt *pSecFlt, MS_U8 *pu8Match)
3412*53ee8cc1Swenshuai.xi {
3413*53ee8cc1Swenshuai.xi     MS_U32 i,j;
3414*53ee8cc1Swenshuai.xi     MS_U32 u32Temp;
3415*53ee8cc1Swenshuai.xi 
3416*53ee8cc1Swenshuai.xi     for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
3417*53ee8cc1Swenshuai.xi     {
3418*53ee8cc1Swenshuai.xi         j = (i<< 2);
3419*53ee8cc1Swenshuai.xi         u32Temp =  (pu8Match[j]) | (pu8Match[j+ 1] << 8  ) | (pu8Match[j+ 2] << 16  )| (pu8Match[j+ 3] << 24);
3420*53ee8cc1Swenshuai.xi         TSP32_IdrW((TSP32 *)&pSecFlt->Match[i], u32Temp);
3421*53ee8cc1Swenshuai.xi     }
3422*53ee8cc1Swenshuai.xi }
3423*53ee8cc1Swenshuai.xi 
3424*53ee8cc1Swenshuai.xi 
3425*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)3426*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SelSecBuf(REG_SecFlt *pSecFlt, MS_U16 u16BufId)
3427*53ee8cc1Swenshuai.xi {
3428*53ee8cc1Swenshuai.xi     TSP32_IdrW( &pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_SECBUF_MASK)
3429*53ee8cc1Swenshuai.xi             | ((u16BufId << TSP_SECFLT_SECBUF_SHFT) & TSP_SECFLT_SECBUF_MASK) );
3430*53ee8cc1Swenshuai.xi }
3431*53ee8cc1Swenshuai.xi 
3432*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt * pSecFlt)3433*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt *pSecFlt)
3434*53ee8cc1Swenshuai.xi {
3435*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_SECBUF_MASK) >> TSP_SECFLT_SECBUF_SHFT);
3436*53ee8cc1Swenshuai.xi }
3437*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt * pPidFlt)3438*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt *pPidFlt)
3439*53ee8cc1Swenshuai.xi {
3440*53ee8cc1Swenshuai.xi     return (TSP32_IdrR(pPidFlt) & TSP_PIDFLT_OUT_MASK);
3441*53ee8cc1Swenshuai.xi }
3442*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)3443*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)
3444*53ee8cc1Swenshuai.xi {
3445*53ee8cc1Swenshuai.xi // don't have to implement no reference
3446*53ee8cc1Swenshuai.xi }
3447*53ee8cc1Swenshuai.xi 
3448*53ee8cc1Swenshuai.xi 
3449*53ee8cc1Swenshuai.xi // @FIXME: Is it secflt or secbuf?
HAL_TSP_SecFlt_ResetState(REG_SecFlt * pSecFlt)3450*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetState(REG_SecFlt* pSecFlt)
3451*53ee8cc1Swenshuai.xi {
3452*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~(TSP_SECFLT_STATE_MASK));
3453*53ee8cc1Swenshuai.xi }
3454*53ee8cc1Swenshuai.xi 
3455*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt * pSecFlt)3456*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt *pSecFlt)
3457*53ee8cc1Swenshuai.xi {
3458*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, 0);
3459*53ee8cc1Swenshuai.xi }
3460*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetState(REG_SecFlt * pSecFlt)3461*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetState(REG_SecFlt *pSecFlt)
3462*53ee8cc1Swenshuai.xi {
3463*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_STATE_MASK) >> TSP_SECFLT_STATE_SHFT);
3464*53ee8cc1Swenshuai.xi }
3465*53ee8cc1Swenshuai.xi 
3466*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_GetMode(REG_SecFlt * pSecFlt)3467*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetMode(REG_SecFlt *pSecFlt)
3468*53ee8cc1Swenshuai.xi {
3469*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_MODE_MASK) >> TSP_SECFLT_MODE_SHFT);
3470*53ee8cc1Swenshuai.xi }
3471*53ee8cc1Swenshuai.xi 
3472*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_PcrReset(REG_SecFlt * pSecFlt)3473*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_PcrReset(REG_SecFlt *pSecFlt)
3474*53ee8cc1Swenshuai.xi {
3475*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_PCRRST);
3476*53ee8cc1Swenshuai.xi }
3477*53ee8cc1Swenshuai.xi 
3478*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_TryAlloc(REG_SecFlt * pSecFlt,MS_U16 u16TSPId)3479*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecFlt_TryAlloc(REG_SecFlt* pSecFlt, MS_U16 u16TSPId)
3480*53ee8cc1Swenshuai.xi {
3481*53ee8cc1Swenshuai.xi     MS_U32              reg;
3482*53ee8cc1Swenshuai.xi 
3483*53ee8cc1Swenshuai.xi     //_TSP_HW_Lock();
3484*53ee8cc1Swenshuai.xi 
3485*53ee8cc1Swenshuai.xi     // rmn counter doesn't need 32bit (check 13818) so we use some of it to store owner and alloc info
3486*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecFlt->RmnCnt) & (TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
3487*53ee8cc1Swenshuai.xi     if (reg & TSP_SECFLT_ALLOC_MASK)
3488*53ee8cc1Swenshuai.xi     {
3489*53ee8cc1Swenshuai.xi         //_TSP_HW_Unlock();
3490*53ee8cc1Swenshuai.xi         return FALSE;
3491*53ee8cc1Swenshuai.xi     }
3492*53ee8cc1Swenshuai.xi     reg |= TSP_SECFLT_ALLOC_MASK | ((u16TSPId<<TSP_SECFLT_OWNER_SHFT) & TSP_SECFLT_OWNER_MASK);
3493*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, reg);
3494*53ee8cc1Swenshuai.xi 
3495*53ee8cc1Swenshuai.xi     //_TSP_HW_Unlock();
3496*53ee8cc1Swenshuai.xi     return TRUE;
3497*53ee8cc1Swenshuai.xi }
3498*53ee8cc1Swenshuai.xi 
3499*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt * pSecFlt,MS_BOOL bSet)3500*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt *pSecFlt, MS_BOOL bSet)
3501*53ee8cc1Swenshuai.xi {
3502*53ee8cc1Swenshuai.xi     if(bSet)
3503*53ee8cc1Swenshuai.xi     {
3504*53ee8cc1Swenshuai.xi         TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_MODE_AUTO_CRCCHK);
3505*53ee8cc1Swenshuai.xi     }
3506*53ee8cc1Swenshuai.xi     else
3507*53ee8cc1Swenshuai.xi     {
3508*53ee8cc1Swenshuai.xi         TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_AUTO_CRCCHK);
3509*53ee8cc1Swenshuai.xi     }
3510*53ee8cc1Swenshuai.xi }
3511*53ee8cc1Swenshuai.xi 
3512*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_Free(REG_SecFlt * pSecFlt)3513*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_Free(REG_SecFlt* pSecFlt)
3514*53ee8cc1Swenshuai.xi {
3515*53ee8cc1Swenshuai.xi     MS_U32              reg;
3516*53ee8cc1Swenshuai.xi 
3517*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
3518*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, reg);
3519*53ee8cc1Swenshuai.xi }
3520*53ee8cc1Swenshuai.xi 
HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt * pSecFlt)3521*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt* pSecFlt)
3522*53ee8cc1Swenshuai.xi {
3523*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecFlt->RmnCnt, TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECBUF_RMNCNT_MASK));
3524*53ee8cc1Swenshuai.xi }
3525*53ee8cc1Swenshuai.xi 
3526*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3527*53ee8cc1Swenshuai.xi //  For section buffer part
3528*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_TSP_SecBuf_SetBuf(REG_SecBuf * pSecBuf,MS_U32 u32StartAddr,MS_U32 u32BufSize)3529*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetBuf(REG_SecBuf *pSecBuf, MS_U32 u32StartAddr, MS_U32 u32BufSize)
3530*53ee8cc1Swenshuai.xi {
3531*53ee8cc1Swenshuai.xi     // Check MIU select
3532*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
3533*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetSecBuf;
3534*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetSecBuf, u32StartAddr);
3535*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));
3536*53ee8cc1Swenshuai.xi 
3537*53ee8cc1Swenshuai.xi     MS_U32              owner;
3538*53ee8cc1Swenshuai.xi     // To avoid SW read hidden HW byte enable information.
3539*53ee8cc1Swenshuai.xi     owner = TSP32_IdrR(&pSecBuf->Start); // @FIXME local variable but not used?
3540*53ee8cc1Swenshuai.xi 
3541*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Start, phyMiuOffsetSecBuf);
3542*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->End, phyMiuOffsetSecBuf + u32BufSize);
3543*53ee8cc1Swenshuai.xi }
3544*53ee8cc1Swenshuai.xi 
3545*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_SetRead(REG_SecBuf * pSecBuf,MS_U32 u32ReadAddr)3546*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetRead(REG_SecBuf *pSecBuf, MS_U32 u32ReadAddr)
3547*53ee8cc1Swenshuai.xi {
3548*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Read, u32ReadAddr);
3549*53ee8cc1Swenshuai.xi }
3550*53ee8cc1Swenshuai.xi 
3551*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetStart(REG_SecBuf * pSecBuf)3552*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetStart(REG_SecBuf *pSecBuf)
3553*53ee8cc1Swenshuai.xi {
3554*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->Start);
3555*53ee8cc1Swenshuai.xi }
3556*53ee8cc1Swenshuai.xi 
3557*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetEnd(REG_SecBuf * pSecBuf)3558*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetEnd(REG_SecBuf *pSecBuf)
3559*53ee8cc1Swenshuai.xi {
3560*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->End);
3561*53ee8cc1Swenshuai.xi }
3562*53ee8cc1Swenshuai.xi 
3563*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetBufCur(REG_SecBuf * pSecBuf)3564*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetBufCur(REG_SecBuf *pSecBuf)
3565*53ee8cc1Swenshuai.xi {
3566*53ee8cc1Swenshuai.xi     //BufCur is control by firmware
3567*53ee8cc1Swenshuai.xi     //we use Cur pointer to receive the newest data
3568*53ee8cc1Swenshuai.xi     //and use write pointer to guarantee that the data between
3569*53ee8cc1Swenshuai.xi     //read and write pointer is correct, so that user won't get
3570*53ee8cc1Swenshuai.xi     //unverified data.
3571*53ee8cc1Swenshuai.xi     return TSP32_IdrR(&pSecBuf->Cur);
3572*53ee8cc1Swenshuai.xi }
3573*53ee8cc1Swenshuai.xi 
3574*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_Reset(REG_SecBuf * pSecBuf)3575*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Reset(REG_SecBuf *pSecBuf)
3576*53ee8cc1Swenshuai.xi {
3577*53ee8cc1Swenshuai.xi     MS_U32              start;
3578*53ee8cc1Swenshuai.xi 
3579*53ee8cc1Swenshuai.xi     start = TSP32_IdrR(&pSecBuf->Start);
3580*53ee8cc1Swenshuai.xi 
3581*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Cur,    start);
3582*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Read,   start);
3583*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Write,  start);
3584*53ee8cc1Swenshuai.xi 
3585*53ee8cc1Swenshuai.xi     start = ( (MS_VIRT)pSecBuf - (MS_VIRT)REG_SECBUF_BASE ) / sizeof(REG_SecBuf)  ;
3586*53ee8cc1Swenshuai.xi     HAL_TSP_HCMD_BufRst(start); // @FIXME seems we don't need to do this
3587*53ee8cc1Swenshuai.xi }
3588*53ee8cc1Swenshuai.xi 
3589*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetRead(REG_SecBuf * pSecBuf)3590*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_SecBuf_GetRead(REG_SecBuf *pSecBuf)
3591*53ee8cc1Swenshuai.xi {
3592*53ee8cc1Swenshuai.xi     return TSP32_IdrR((TSP32*)&pSecBuf->Read);
3593*53ee8cc1Swenshuai.xi }
3594*53ee8cc1Swenshuai.xi 
3595*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_GetWrite(REG_SecBuf * pSecBuf)3596*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_SecBuf_GetWrite(REG_SecBuf *pSecBuf)
3597*53ee8cc1Swenshuai.xi {
3598*53ee8cc1Swenshuai.xi     return TSP32_IdrR((TSP32*)&pSecBuf->Write);
3599*53ee8cc1Swenshuai.xi }
3600*53ee8cc1Swenshuai.xi 
3601*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_TryAlloc(REG_SecBuf * pSecBuf,MS_U16 u16TSPId)3602*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecBuf_TryAlloc(REG_SecBuf *pSecBuf, MS_U16 u16TSPId)
3603*53ee8cc1Swenshuai.xi {
3604*53ee8cc1Swenshuai.xi     // @TODO make sure the owner and alloc info is necessary or not.
3605*53ee8cc1Swenshuai.xi     MS_U32              reg;
3606*53ee8cc1Swenshuai.xi 
3607*53ee8cc1Swenshuai.xi     //_TSP_HW_Lock();
3608*53ee8cc1Swenshuai.xi 
3609*53ee8cc1Swenshuai.xi     reg = TSP32_IdrR(&pSecBuf->Start) & (TSP_SECBUF_OWNER_MASK | TSP_SECBUF_ALLOC_MASK);
3610*53ee8cc1Swenshuai.xi     //if (reg & TSP_SECBUF_ALLOC_MASK)
3611*53ee8cc1Swenshuai.xi     //{
3612*53ee8cc1Swenshuai.xi     //    //_TSP_HW_Unlock();
3613*53ee8cc1Swenshuai.xi     //    return FALSE;
3614*53ee8cc1Swenshuai.xi     //}
3615*53ee8cc1Swenshuai.xi     reg |= TSP_SECBUF_ALLOC_MASK | ((u16TSPId<<TSP_SECBUF_OWNER_SHFT) & TSP_SECBUF_OWNER_MASK);
3616*53ee8cc1Swenshuai.xi     //TSP32_IdrW(&pSecBuf->Start, reg);
3617*53ee8cc1Swenshuai.xi 
3618*53ee8cc1Swenshuai.xi     //_TSP_HW_Unlock();
3619*53ee8cc1Swenshuai.xi     return TRUE;
3620*53ee8cc1Swenshuai.xi }
3621*53ee8cc1Swenshuai.xi 
3622*53ee8cc1Swenshuai.xi 
HAL_TSP_SecBuf_Free(REG_SecBuf * pSecBuf)3623*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Free(REG_SecBuf *pSecBuf)
3624*53ee8cc1Swenshuai.xi {
3625*53ee8cc1Swenshuai.xi     // @TODO ref to HAL_TSP_SecBuf_TryAlloc
3626*53ee8cc1Swenshuai.xi     TSP32_IdrW(&pSecBuf->Start, 0x0);
3627*53ee8cc1Swenshuai.xi }
3628*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_GetPid(REG_PidFlt * pPidFlt)3629*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetPid(REG_PidFlt* pPidFlt)
3630*53ee8cc1Swenshuai.xi {
3631*53ee8cc1Swenshuai.xi     return ((TSP32_IdrR(pPidFlt) & TSP_PIDFLT_PID_MASK) >> TSP_PIDFLT_PID_SHFT);
3632*53ee8cc1Swenshuai.xi }
3633*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId,MS_BOOL bEnable)3634*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId, MS_BOOL bEnable)
3635*53ee8cc1Swenshuai.xi {
3636*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3637*53ee8cc1Swenshuai.xi     {
3638*53ee8cc1Swenshuai.xi         case 0:
3639*53ee8cc1Swenshuai.xi             if(bEnable)
3640*53ee8cc1Swenshuai.xi             {
3641*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
3642*53ee8cc1Swenshuai.xi             }
3643*53ee8cc1Swenshuai.xi             else
3644*53ee8cc1Swenshuai.xi             {
3645*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
3646*53ee8cc1Swenshuai.xi             }
3647*53ee8cc1Swenshuai.xi             break;
3648*53ee8cc1Swenshuai.xi         case 1:
3649*53ee8cc1Swenshuai.xi             if(bEnable)
3650*53ee8cc1Swenshuai.xi             {
3651*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
3652*53ee8cc1Swenshuai.xi             }
3653*53ee8cc1Swenshuai.xi             else
3654*53ee8cc1Swenshuai.xi             {
3655*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
3656*53ee8cc1Swenshuai.xi             }
3657*53ee8cc1Swenshuai.xi             break;
3658*53ee8cc1Swenshuai.xi         case 2:
3659*53ee8cc1Swenshuai.xi             if(bEnable)
3660*53ee8cc1Swenshuai.xi             {
3661*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_44, CFG8_44_PIDFLT_PCR2_EN);
3662*53ee8cc1Swenshuai.xi             }
3663*53ee8cc1Swenshuai.xi             else
3664*53ee8cc1Swenshuai.xi             {
3665*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_44, CFG8_44_PIDFLT_PCR2_EN);
3666*53ee8cc1Swenshuai.xi             }
3667*53ee8cc1Swenshuai.xi             break;
3668*53ee8cc1Swenshuai.xi         case 3:
3669*53ee8cc1Swenshuai.xi             if(bEnable)
3670*53ee8cc1Swenshuai.xi             {
3671*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_45, CFG8_45_PIDFLT_PCR3_EN);
3672*53ee8cc1Swenshuai.xi             }
3673*53ee8cc1Swenshuai.xi             else
3674*53ee8cc1Swenshuai.xi             {
3675*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_45, CFG8_45_PIDFLT_PCR3_EN);
3676*53ee8cc1Swenshuai.xi             }
3677*53ee8cc1Swenshuai.xi             break;
3678*53ee8cc1Swenshuai.xi         default:
3679*53ee8cc1Swenshuai.xi             break;
3680*53ee8cc1Swenshuai.xi     }
3681*53ee8cc1Swenshuai.xi }
3682*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId,MS_U32 u32Pid)3683*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId, MS_U32 u32Pid)
3684*53ee8cc1Swenshuai.xi {
3685*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3686*53ee8cc1Swenshuai.xi     {
3687*53ee8cc1Swenshuai.xi         case 0:
3688*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_PID_MASK, u32Pid);
3689*53ee8cc1Swenshuai.xi             break;
3690*53ee8cc1Swenshuai.xi         case 1:
3691*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_PID_MASK, u32Pid);
3692*53ee8cc1Swenshuai.xi             break;
3693*53ee8cc1Swenshuai.xi         case 2:
3694*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_44, CFG8_44_PIDFLT_PCR2_PID_MASK, u32Pid);
3695*53ee8cc1Swenshuai.xi             break;
3696*53ee8cc1Swenshuai.xi         case 3:
3697*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_45, CFG8_45_PIDFLT_PCR3_PID_MASK, u32Pid);
3698*53ee8cc1Swenshuai.xi             break;
3699*53ee8cc1Swenshuai.xi         default:
3700*53ee8cc1Swenshuai.xi             break;
3701*53ee8cc1Swenshuai.xi     }
3702*53ee8cc1Swenshuai.xi 
3703*53ee8cc1Swenshuai.xi }
3704*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)3705*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)
3706*53ee8cc1Swenshuai.xi {
3707*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3708*53ee8cc1Swenshuai.xi     {
3709*53ee8cc1Swenshuai.xi         case 0:
3710*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->PIDFLT_PCR0) & TSP_PIDFLT_PCR0_PID_MASK);
3711*53ee8cc1Swenshuai.xi         case 1:
3712*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->PIDFLT_PCR1) & TSP_PIDFLT_PCR1_PID_MASK);
3713*53ee8cc1Swenshuai.xi         case 2:
3714*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl8_1->CFG8_44) & CFG8_44_PIDFLT_PCR2_PID_MASK);
3715*53ee8cc1Swenshuai.xi         case 3:
3716*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl8_1->CFG8_45) & CFG8_45_PIDFLT_PCR3_PID_MASK);
3717*53ee8cc1Swenshuai.xi         default:
3718*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__));
3719*53ee8cc1Swenshuai.xi             return PVR_PIDFLT_DEF;
3720*53ee8cc1Swenshuai.xi     }
3721*53ee8cc1Swenshuai.xi }
3722*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId,TSP_PCR_SRC src)3723*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId, TSP_PCR_SRC src)
3724*53ee8cc1Swenshuai.xi {
3725*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3726*53ee8cc1Swenshuai.xi     {
3727*53ee8cc1Swenshuai.xi         case 0:
3728*53ee8cc1Swenshuai.xi             //src 0
3729*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR0_SRC_MASK, src << CFG_01_PCR0_SRC_SHIFT);
3730*53ee8cc1Swenshuai.xi             break;
3731*53ee8cc1Swenshuai.xi         case 1:
3732*53ee8cc1Swenshuai.xi             //src 1
3733*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR1_SRC_MASK, src << CFG_01_PCR1_SRC_SHIFT);
3734*53ee8cc1Swenshuai.xi             break;
3735*53ee8cc1Swenshuai.xi         case 2:
3736*53ee8cc1Swenshuai.xi             //src 2
3737*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_42, CFG8_42_PCR2_SRC_MASK, src << CFG8_42_PCR2_SRC_SHIFT);
3738*53ee8cc1Swenshuai.xi             break;
3739*53ee8cc1Swenshuai.xi         case 3:
3740*53ee8cc1Swenshuai.xi             //src 3
3741*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_43, CFG8_43_PCR3_SRC_MASK, src << CFG8_43_PCR3_SRC_SHIFT);
3742*53ee8cc1Swenshuai.xi             break;
3743*53ee8cc1Swenshuai.xi         default:
3744*53ee8cc1Swenshuai.xi             break;
3745*53ee8cc1Swenshuai.xi     }
3746*53ee8cc1Swenshuai.xi }
3747*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId,MS_U32 u32SrcId)3748*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId, MS_U32 u32SrcId)
3749*53ee8cc1Swenshuai.xi {
3750*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3751*53ee8cc1Swenshuai.xi     {
3752*53ee8cc1Swenshuai.xi         case 0:
3753*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_72, CFG3_72_PIDFLT_PCR0_SRC_ID_MASK, u32SrcId<<CFG3_72_PIDFLT_PCR0_SRC_ID_SHIFT);
3754*53ee8cc1Swenshuai.xi             break;
3755*53ee8cc1Swenshuai.xi         case 1:
3756*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_72, CFG3_72_PIDFLT_PCR1_SRC_ID_MASK, u32SrcId<<CFG3_72_PIDFLT_PCR1_SRC_ID_SHIFT);
3757*53ee8cc1Swenshuai.xi             break;
3758*53ee8cc1Swenshuai.xi         case 2:
3759*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);
3760*53ee8cc1Swenshuai.xi             break;
3761*53ee8cc1Swenshuai.xi         case 3:
3762*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);
3763*53ee8cc1Swenshuai.xi             break;
3764*53ee8cc1Swenshuai.xi         default:
3765*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));
3766*53ee8cc1Swenshuai.xi             break;
3767*53ee8cc1Swenshuai.xi     }
3768*53ee8cc1Swenshuai.xi }
3769*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId,TSP_PCR_SRC * pPcrSrc)3770*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId, TSP_PCR_SRC *pPcrSrc)
3771*53ee8cc1Swenshuai.xi {
3772*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3773*53ee8cc1Swenshuai.xi     {
3774*53ee8cc1Swenshuai.xi         case 0:
3775*53ee8cc1Swenshuai.xi             //src 0
3776*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR0_SRC_MASK) >> CFG_01_PCR0_SRC_SHIFT;
3777*53ee8cc1Swenshuai.xi             break;
3778*53ee8cc1Swenshuai.xi         case 1:
3779*53ee8cc1Swenshuai.xi             //src 1
3780*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR1_SRC_MASK) >> CFG_01_PCR1_SRC_SHIFT;
3781*53ee8cc1Swenshuai.xi             break;
3782*53ee8cc1Swenshuai.xi         case 2:
3783*53ee8cc1Swenshuai.xi             //src 2
3784*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl8_1->CFG8_42) & CFG8_42_PCR2_SRC_MASK) >> CFG8_42_PCR2_SRC_SHIFT;
3785*53ee8cc1Swenshuai.xi             break;
3786*53ee8cc1Swenshuai.xi         case 3:
3787*53ee8cc1Swenshuai.xi             //src 3
3788*53ee8cc1Swenshuai.xi             *pPcrSrc = (REG16_R(&_RegCtrl8_1->CFG8_43) & CFG8_43_PCR3_SRC_MASK) >> CFG8_43_PCR3_SRC_SHIFT;
3789*53ee8cc1Swenshuai.xi             break;
3790*53ee8cc1Swenshuai.xi         default:
3791*53ee8cc1Swenshuai.xi             break;
3792*53ee8cc1Swenshuai.xi     }
3793*53ee8cc1Swenshuai.xi }
3794*53ee8cc1Swenshuai.xi 
HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)3795*53ee8cc1Swenshuai.xi TSP_PCR_SRC HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
3796*53ee8cc1Swenshuai.xi {
3797*53ee8cc1Swenshuai.xi     TSP_PCR_SRC ePcrSrc = E_TSP_PCR_SRC_INVALID;
3798*53ee8cc1Swenshuai.xi     switch(ePidFltSrc)
3799*53ee8cc1Swenshuai.xi     {
3800*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE0:
3801*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF0;
3802*53ee8cc1Swenshuai.xi             break;
3803*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE1:
3804*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF2;
3805*53ee8cc1Swenshuai.xi             break;
3806*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE2:
3807*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF3;
3808*53ee8cc1Swenshuai.xi             break;
3809*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_LIVE3:
3810*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF1;
3811*53ee8cc1Swenshuai.xi             break;
3812*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE0:
3813*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF1;
3814*53ee8cc1Swenshuai.xi             break;
3815*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE1:
3816*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF3;
3817*53ee8cc1Swenshuai.xi             break;
3818*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE2:
3819*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF0;
3820*53ee8cc1Swenshuai.xi             break;
3821*53ee8cc1Swenshuai.xi         case E_TSP_PIDFLT_FILE3:
3822*53ee8cc1Swenshuai.xi             ePcrSrc = E_TSP_PCR_SRC_TSIF2;
3823*53ee8cc1Swenshuai.xi             break;
3824*53ee8cc1Swenshuai.xi         default:
3825*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong Flt Src type!!!\n",__FUNCTION__,__LINE__);
3826*53ee8cc1Swenshuai.xi             break;
3827*53ee8cc1Swenshuai.xi     }
3828*53ee8cc1Swenshuai.xi     return ePcrSrc;
3829*53ee8cc1Swenshuai.xi 
3830*53ee8cc1Swenshuai.xi }
3831*53ee8cc1Swenshuai.xi 
3832*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId,MS_U32 * pu32Pcr_H,MS_U32 * pu32Pcr)3833*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId, MS_U32 *pu32Pcr_H, MS_U32 *pu32Pcr)
3834*53ee8cc1Swenshuai.xi {
3835*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3836*53ee8cc1Swenshuai.xi     {
3837*53ee8cc1Swenshuai.xi         case 0:
3838*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
3839*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl->HWPCR0_L);
3840*53ee8cc1Swenshuai.xi             *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR0_H) & 0x1;
3841*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
3842*53ee8cc1Swenshuai.xi             break;
3843*53ee8cc1Swenshuai.xi         case 1:
3844*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
3845*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl->HWPCR1_L);
3846*53ee8cc1Swenshuai.xi             *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR1_H) & 0x1;
3847*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
3848*53ee8cc1Swenshuai.xi             break;
3849*53ee8cc1Swenshuai.xi         case 2:
3850*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_READ);
3851*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl8_1->CFG8_60_61);
3852*53ee8cc1Swenshuai.xi             *pu32Pcr_H = (MS_U32)(REG16_R(&_RegCtrl8_1->CFG8_62) & 0x1);
3853*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_READ);
3854*53ee8cc1Swenshuai.xi             break;
3855*53ee8cc1Swenshuai.xi         case 3:
3856*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_READ);
3857*53ee8cc1Swenshuai.xi             *pu32Pcr = REG32_R(&_RegCtrl8_1->CFG8_63_64);
3858*53ee8cc1Swenshuai.xi             *pu32Pcr_H = (MS_U32)(REG16_R(&_RegCtrl8_1->CFG8_65) & 0x1);
3859*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_READ);
3860*53ee8cc1Swenshuai.xi             break;
3861*53ee8cc1Swenshuai.xi 
3862*53ee8cc1Swenshuai.xi         default:
3863*53ee8cc1Swenshuai.xi             break;
3864*53ee8cc1Swenshuai.xi     }
3865*53ee8cc1Swenshuai.xi }
3866*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)3867*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)
3868*53ee8cc1Swenshuai.xi {
3869*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3870*53ee8cc1Swenshuai.xi     {
3871*53ee8cc1Swenshuai.xi         case 0:
3872*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
3873*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
3874*53ee8cc1Swenshuai.xi             break;
3875*53ee8cc1Swenshuai.xi         case 1:
3876*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
3877*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
3878*53ee8cc1Swenshuai.xi             break;
3879*53ee8cc1Swenshuai.xi         case 2:
3880*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_RESET);
3881*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_42, CFG8_42_REG_PCR2_RESET);
3882*53ee8cc1Swenshuai.xi             break;
3883*53ee8cc1Swenshuai.xi         case 3:
3884*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_RESET);
3885*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl8_1->CFG8_43, CFG8_43_REG_PCR3_RESET);
3886*53ee8cc1Swenshuai.xi             break;
3887*53ee8cc1Swenshuai.xi         default:
3888*53ee8cc1Swenshuai.xi             break;
3889*53ee8cc1Swenshuai.xi     }
3890*53ee8cc1Swenshuai.xi }
3891*53ee8cc1Swenshuai.xi 
3892*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)3893*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)
3894*53ee8cc1Swenshuai.xi {
3895*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3896*53ee8cc1Swenshuai.xi     {
3897*53ee8cc1Swenshuai.xi         case 0:
3898*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt2_Stat,TSP_HWINT2_PCR0_UPDATE_END);
3899*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt2_Stat,
3900*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt2_Stat) & (~TSP_HWINT2_STATUS_MASK)) |
3901*53ee8cc1Swenshuai.xi             (~TSP_HWINT2_PCR0_UPDATE_END & TSP_HWINT2_STATUS_MASK));
3902*53ee8cc1Swenshuai.xi             break;
3903*53ee8cc1Swenshuai.xi         case 1:
3904*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt2_Stat,TSP_HWINT2_PCR1_UPDATE_END);
3905*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt2_Stat,
3906*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt2_Stat) & (~TSP_HWINT2_STATUS_MASK)) |
3907*53ee8cc1Swenshuai.xi             (~TSP_HWINT2_PCR1_UPDATE_END & TSP_HWINT2_STATUS_MASK));
3908*53ee8cc1Swenshuai.xi             break;
3909*53ee8cc1Swenshuai.xi         case 2:
3910*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt3_Stat,TSP_HWINT2_PCR2_UPDATE_END);
3911*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt3_Stat,
3912*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt3_Stat) & (~TSP_HWINT3_STATUS_MASK)) |
3913*53ee8cc1Swenshuai.xi             (~TSP_HWINT3_PCR2_UPDATE_END & TSP_HWINT3_STATUS_MASK));
3914*53ee8cc1Swenshuai.xi             break;
3915*53ee8cc1Swenshuai.xi         case 3:
3916*53ee8cc1Swenshuai.xi             //REG16_CLR(&_RegCtrl->HwInt3_Stat,TSP_HWINT2_PCR3_UPDATE_END);
3917*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->HwInt3_Stat,
3918*53ee8cc1Swenshuai.xi             (REG16_R(&_RegCtrl->HwInt3_Stat) & (~TSP_HWINT3_STATUS_MASK)) |
3919*53ee8cc1Swenshuai.xi             (~TSP_HWINT3_PCR3_UPDATE_END & TSP_HWINT3_STATUS_MASK));
3920*53ee8cc1Swenshuai.xi             break;
3921*53ee8cc1Swenshuai.xi         default:
3922*53ee8cc1Swenshuai.xi             break;
3923*53ee8cc1Swenshuai.xi     }
3924*53ee8cc1Swenshuai.xi }
3925*53ee8cc1Swenshuai.xi 
HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)3926*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)
3927*53ee8cc1Swenshuai.xi {
3928*53ee8cc1Swenshuai.xi     switch(pcrFltId)
3929*53ee8cc1Swenshuai.xi     {
3930*53ee8cc1Swenshuai.xi         case 0:
3931*53ee8cc1Swenshuai.xi             return (TSP_HWINT2_PCR0_UPDATE_END_EN << 8);
3932*53ee8cc1Swenshuai.xi         case 1:
3933*53ee8cc1Swenshuai.xi             return (TSP_HWINT2_PCR1_UPDATE_END_EN << 8);
3934*53ee8cc1Swenshuai.xi         case 2:
3935*53ee8cc1Swenshuai.xi             return (TSP_HWINT3_PCR2_UPDATE_END_EN << 16);
3936*53ee8cc1Swenshuai.xi         case 3:
3937*53ee8cc1Swenshuai.xi             return (TSP_HWINT3_PCR3_UPDATE_END_EN << 16);
3938*53ee8cc1Swenshuai.xi         default:
3939*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__));
3940*53ee8cc1Swenshuai.xi             return 0;
3941*53ee8cc1Swenshuai.xi     }
3942*53ee8cc1Swenshuai.xi }
3943*53ee8cc1Swenshuai.xi 
HAL_TSP_STC_Init(void)3944*53ee8cc1Swenshuai.xi void HAL_TSP_STC_Init(void)
3945*53ee8cc1Swenshuai.xi {
3946*53ee8cc1Swenshuai.xi     /////////////Set STC control by HK////////////////
3947*53ee8cc1Swenshuai.xi     // select synth from chip top : bit 1 -> 0 -> controlled by HK
3948*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
3949*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
3950*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~REG_CLKGEN2_STC2_CW_SEL;
3951*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~REG_CLKGEN2_STC3_CW_SEL;
3952*53ee8cc1Swenshuai.xi 
3953*53ee8cc1Swenshuai.xi     // set HK STC synth CW
3954*53ee8cc1Swenshuai.xi      //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
3955*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L)  = 0x0000;
3956*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H)  = 0x2800;
3957*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = 0x0000;
3958*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = 0x2800;
3959*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC2_CW_L) = 0x0000;
3960*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC2_CW_H) = 0x2800;
3961*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC3_CW_L) = 0x0000;
3962*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC3_CW_H) = 0x2800;
3963*53ee8cc1Swenshuai.xi 
3964*53ee8cc1Swenshuai.xi     // set STC synth
3965*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3966*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_EN;
3967*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
3968*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3969*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_EN;
3970*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
3971*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC2_CW_EN);
3972*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) |= REG_CLKGEN2_STC2_CW_EN;
3973*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC2_CW_EN);
3974*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC3_CW_EN);
3975*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) |= REG_CLKGEN2_STC3_CW_EN;
3976*53ee8cc1Swenshuai.xi     TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC3_CW_EN);
3977*53ee8cc1Swenshuai.xi 
3978*53ee8cc1Swenshuai.xi #if 0  // we don't use TSP CPU to control STC anymmore, so we don't have to do the following
3979*53ee8cc1Swenshuai.xi     /////////////Set STC control by TSP////////////////
3980*53ee8cc1Swenshuai.xi     // select synth from TSP      : bit 1 -> 1 -> controlled by TSP
3981*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_SEL;
3982*53ee8cc1Swenshuai.xi     TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_SEL;
3983*53ee8cc1Swenshuai.xi 
3984*53ee8cc1Swenshuai.xi     // set TSP STC synth CW
3985*53ee8cc1Swenshuai.xi     //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
3986*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021024c<<1), 0x28000000);
3987*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x00210280<<1), 0x28000000); //STC1
3988*53ee8cc1Swenshuai.xi 
3989*53ee8cc1Swenshuai.xi     // t2 , t3 had no 0x0021025c, it was add after t4, eanble synthesizer
3990*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x01);
3991*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x01);
3992*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x02); //STC1
3993*53ee8cc1Swenshuai.xi     TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x02);
3994*53ee8cc1Swenshuai.xi #endif
3995*53ee8cc1Swenshuai.xi }
3996*53ee8cc1Swenshuai.xi 
HAL_TSP_GetSTCSynth(MS_U32 Eng,MS_U32 * u32Sync)3997*53ee8cc1Swenshuai.xi void HAL_TSP_GetSTCSynth(MS_U32 Eng, MS_U32* u32Sync)
3998*53ee8cc1Swenshuai.xi {
3999*53ee8cc1Swenshuai.xi     switch (Eng)
4000*53ee8cc1Swenshuai.xi     {
4001*53ee8cc1Swenshuai.xi         case 0:
4002*53ee8cc1Swenshuai.xi             // get HK STC synth CW
4003*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L);
4004*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) << 16 ;
4005*53ee8cc1Swenshuai.xi             break;
4006*53ee8cc1Swenshuai.xi         case 1:
4007*53ee8cc1Swenshuai.xi             // get HK STC synth CW
4008*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L);
4009*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) << 16 ;
4010*53ee8cc1Swenshuai.xi             break;
4011*53ee8cc1Swenshuai.xi         case 2:
4012*53ee8cc1Swenshuai.xi             // get HK STC synth CW
4013*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC2_CW_L);
4014*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC2_CW_H) << 16 ;
4015*53ee8cc1Swenshuai.xi             break;
4016*53ee8cc1Swenshuai.xi         case 3:
4017*53ee8cc1Swenshuai.xi             // get HK STC synth CW
4018*53ee8cc1Swenshuai.xi             *u32Sync  = TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC3_CW_L);
4019*53ee8cc1Swenshuai.xi             *u32Sync |= TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC3_CW_H) << 16 ;
4020*53ee8cc1Swenshuai.xi             break;
4021*53ee8cc1Swenshuai.xi     }
4022*53ee8cc1Swenshuai.xi }
4023*53ee8cc1Swenshuai.xi 
HAL_TSP_SetSTCSynth(MS_U32 Eng,MS_U32 u32Sync)4024*53ee8cc1Swenshuai.xi void HAL_TSP_SetSTCSynth(MS_U32 Eng, MS_U32 u32Sync)
4025*53ee8cc1Swenshuai.xi {
4026*53ee8cc1Swenshuai.xi     switch (Eng)
4027*53ee8cc1Swenshuai.xi     {
4028*53ee8cc1Swenshuai.xi         case 0:
4029*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
4030*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
4031*53ee8cc1Swenshuai.xi 
4032*53ee8cc1Swenshuai.xi             // set HK STC synth CW
4033*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L) = u32Sync & 0xFFFF;
4034*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) = u32Sync >> 16;
4035*53ee8cc1Swenshuai.xi 
4036*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
4037*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
4038*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |=   REG_CLKGEN0_STC_CW_EN;
4039*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
4040*53ee8cc1Swenshuai.xi             break;
4041*53ee8cc1Swenshuai.xi         case 1:
4042*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
4043*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
4044*53ee8cc1Swenshuai.xi 
4045*53ee8cc1Swenshuai.xi             // set HK STC synth CW
4046*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = u32Sync & 0xFFFF;
4047*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = u32Sync >> 16;
4048*53ee8cc1Swenshuai.xi 
4049*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
4050*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
4051*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |=   REG_CLKGEN0_STC1_CW_EN;
4052*53ee8cc1Swenshuai.xi             TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
4053*53ee8cc1Swenshuai.xi             break;
4054*53ee8cc1Swenshuai.xi         case 2:
4055*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
4056*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~REG_CLKGEN2_STC2_CW_SEL;
4057*53ee8cc1Swenshuai.xi 
4058*53ee8cc1Swenshuai.xi             // set HK STC synth CW
4059*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC2_CW_L) = u32Sync & 0xFFFF;
4060*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC2_CW_H) = u32Sync >> 16;
4061*53ee8cc1Swenshuai.xi 
4062*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
4063*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC2_CW_EN);
4064*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) |=   REG_CLKGEN2_STC2_CW_EN;
4065*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC2_CW_EN);
4066*53ee8cc1Swenshuai.xi             break;
4067*53ee8cc1Swenshuai.xi         case 3:
4068*53ee8cc1Swenshuai.xi             //set STC controller : HK or TSP CPU
4069*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~REG_CLKGEN2_STC3_CW_SEL;
4070*53ee8cc1Swenshuai.xi 
4071*53ee8cc1Swenshuai.xi             // set HK STC synth CW
4072*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC3_CW_L) = u32Sync & 0xFFFF;
4073*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_STC3_CW_H) = u32Sync >> 16;
4074*53ee8cc1Swenshuai.xi 
4075*53ee8cc1Swenshuai.xi             // set STC synth : toggle update bit
4076*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC3_CW_EN);
4077*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) |=   REG_CLKGEN2_STC3_CW_EN;
4078*53ee8cc1Swenshuai.xi             TSP_CLKGEN2_REG(REG_CLKGEN2_DC0_SYTNTH) &= ~(REG_CLKGEN2_STC3_CW_EN);
4079*53ee8cc1Swenshuai.xi             break;
4080*53ee8cc1Swenshuai.xi     }
4081*53ee8cc1Swenshuai.xi }
4082*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)4083*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)
4084*53ee8cc1Swenshuai.xi {
4085*53ee8cc1Swenshuai.xi     if (bEnable)
4086*53ee8cc1Swenshuai.xi     {
4087*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
4088*53ee8cc1Swenshuai.xi     }
4089*53ee8cc1Swenshuai.xi     else
4090*53ee8cc1Swenshuai.xi     {
4091*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
4092*53ee8cc1Swenshuai.xi     }
4093*53ee8cc1Swenshuai.xi }
4094*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Set(MS_U32 Eng,MS_U32 stcH,MS_U32 stcL)4095*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Set(MS_U32 Eng, MS_U32 stcH, MS_U32 stcL)
4096*53ee8cc1Swenshuai.xi {
4097*53ee8cc1Swenshuai.xi     switch (Eng)
4098*53ee8cc1Swenshuai.xi     {
4099*53ee8cc1Swenshuai.xi         case 0:
4100*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Pcr_L, stcL);
4101*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Pcr_H, stcH);
4102*53ee8cc1Swenshuai.xi             break;
4103*53ee8cc1Swenshuai.xi         case 1:
4104*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PCR64_2_L, stcL);
4105*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PCR64_2_H, stcH);
4106*53ee8cc1Swenshuai.xi             break;
4107*53ee8cc1Swenshuai.xi         case 2:
4108*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl8_1->CFG8_54_55, stcL);
4109*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl8_1->CFG8_56_57, stcH);
4110*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->STC_Config, TSP_STC_CFG_SET_TIME_BASE_64b_3);
4111*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->STC_Config, TSP_STC_CFG_SET_TIME_BASE_64b_3);
4112*53ee8cc1Swenshuai.xi             break;
4113*53ee8cc1Swenshuai.xi         case 3:
4114*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl8_1->CFG8_5A_5B, stcL);
4115*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl8_1->CFG8_5C_5D, stcH);
4116*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->STC_Config, TSP_STC_CFG_SET_TIME_BASE_64b_4);
4117*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->STC_Config, TSP_STC_CFG_SET_TIME_BASE_64b_4);
4118*53ee8cc1Swenshuai.xi             break;
4119*53ee8cc1Swenshuai.xi     }
4120*53ee8cc1Swenshuai.xi }
4121*53ee8cc1Swenshuai.xi 
HAL_TSP_STC64_Get(MS_U32 Eng,MS_U32 * pStcH,MS_U32 * pStcL)4122*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Get(MS_U32 Eng, MS_U32* pStcH, MS_U32* pStcL)
4123*53ee8cc1Swenshuai.xi {
4124*53ee8cc1Swenshuai.xi     switch (Eng)
4125*53ee8cc1Swenshuai.xi     {
4126*53ee8cc1Swenshuai.xi         case 0:
4127*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
4128*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl->Pcr_H);
4129*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl->Pcr_L);
4130*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
4131*53ee8cc1Swenshuai.xi             break;
4132*53ee8cc1Swenshuai.xi         case 1:
4133*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
4134*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl->PCR64_2_H);
4135*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl->PCR64_2_L);
4136*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
4137*53ee8cc1Swenshuai.xi             break;
4138*53ee8cc1Swenshuai.xi         case 2:
4139*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->STC_Config, TSP_STC_CFG_CNT64b_3_LD);
4140*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl8_1->CFG8_56_57);
4141*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl8_1->CFG8_54_55);
4142*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->STC_Config, TSP_STC_CFG_CNT64b_3_LD);
4143*53ee8cc1Swenshuai.xi             break;
4144*53ee8cc1Swenshuai.xi         case 3:
4145*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->STC_Config, TSP_STC_CFG_CNT64b_4_LD);
4146*53ee8cc1Swenshuai.xi             *pStcH = REG32_R(&_RegCtrl8_1->CFG8_5C_5D);
4147*53ee8cc1Swenshuai.xi             *pStcL = REG32_R(&_RegCtrl8_1->CFG8_5A_5B);
4148*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->STC_Config, TSP_STC_CFG_CNT64b_4_LD);
4149*53ee8cc1Swenshuai.xi             break;
4150*53ee8cc1Swenshuai.xi     }
4151*53ee8cc1Swenshuai.xi }
4152*53ee8cc1Swenshuai.xi 
HAL_TSP_STC33_CmdQSet(MS_U32 stcH,MS_U32 stcL)4153*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQSet(MS_U32 stcH, MS_U32 stcL)
4154*53ee8cc1Swenshuai.xi {
4155*53ee8cc1Swenshuai.xi     // @TODO ask designer for the difference between 64bit STC and 33 Bit STC
4156*53ee8cc1Swenshuai.xi     // and it's hw limit (like: cmdQ delay)
4157*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->Pcr_H_CmdQ, stcH & TSP_REG_PCR_CMDQ_H);
4158*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->Pcr_L_CmdQ, stcL);
4159*53ee8cc1Swenshuai.xi }
4160*53ee8cc1Swenshuai.xi 
HAL_TSP_STC33_CmdQGet(MS_U32 * pStcH,MS_U32 * pStcL)4161*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQGet(MS_U32* pStcH, MS_U32* pStcL)
4162*53ee8cc1Swenshuai.xi {
4163*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
4164*53ee8cc1Swenshuai.xi     *pStcH = REG16_R(&_RegCtrl->Pcr_H_CmdQ) & TSP_REG_PCR_CMDQ_H;
4165*53ee8cc1Swenshuai.xi     *pStcL = REG32_R(&_RegCtrl->Pcr_L_CmdQ);
4166*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
4167*53ee8cc1Swenshuai.xi }
4168*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType,MS_U32 pktDmxId)4169*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType, MS_U32 pktDmxId)
4170*53ee8cc1Swenshuai.xi {
4171*53ee8cc1Swenshuai.xi     switch (eFltType)
4172*53ee8cc1Swenshuai.xi     {
4173*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4174*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID_SRC_SHIFT);
4175*53ee8cc1Swenshuai.xi             break;
4176*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
4177*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID3D_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID3D_SRC_SHIFT);
4178*53ee8cc1Swenshuai.xi             break;
4179*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3:
4180*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_40, CFG8_40_REG_VID3_SRC_MASK, ((MS_U16)pktDmxId) << CFG8_40_REG_VID3_SRC_SHIFT);
4181*53ee8cc1Swenshuai.xi             break;
4182*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
4183*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_41, CFG8_41_REG_VID4_SRC_MASK, ((MS_U16)pktDmxId) << CFG8_41_REG_VID4_SRC_SHIFT);
4184*53ee8cc1Swenshuai.xi             break;
4185*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4186*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUD_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUD_SRC_SHIFT);
4187*53ee8cc1Swenshuai.xi             break;
4188*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4189*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUDB_SRC_MASK, ((MS_U16)pktDmxId)  << TSP_AUDB_SRC_SHIFT);
4190*53ee8cc1Swenshuai.xi             break;
4191*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4192*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PCR_Cfg, TSP_AUDC_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUDC_SRC_SHIFT);
4193*53ee8cc1Swenshuai.xi             break;
4194*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4195*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->PCR_Cfg, TSP_AUDD_SRC_MASK, ((MS_U16)pktDmxId)  << TSP_AUDD_SRC_SHIFT);
4196*53ee8cc1Swenshuai.xi             break;
4197*53ee8cc1Swenshuai.xi         default:
4198*53ee8cc1Swenshuai.xi             break;
4199*53ee8cc1Swenshuai.xi     }
4200*53ee8cc1Swenshuai.xi }
4201*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType,TSP_SRC_SEQ * pktDmxId)4202*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType, TSP_SRC_SEQ *pktDmxId)
4203*53ee8cc1Swenshuai.xi {
4204*53ee8cc1Swenshuai.xi     switch (eFltType)
4205*53ee8cc1Swenshuai.xi     {
4206*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4207*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID_SRC_MASK) >> TSP_VID_SRC_SHIFT;
4208*53ee8cc1Swenshuai.xi             break;
4209*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4210*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID3D_SRC_MASK) >> TSP_VID3D_SRC_SHIFT;
4211*53ee8cc1Swenshuai.xi             break;
4212*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3:
4213*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl8_1->CFG8_40)) & CFG8_40_REG_VID3_SRC_MASK) >> CFG8_40_REG_VID3_SRC_SHIFT;
4214*53ee8cc1Swenshuai.xi             break;
4215*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
4216*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl8_1->CFG8_41)) & CFG8_41_REG_VID4_SRC_MASK) >> CFG8_41_REG_VID4_SRC_SHIFT;
4217*53ee8cc1Swenshuai.xi              break;
4218*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4219*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUD_SRC_MASK) >> TSP_AUD_SRC_SHIFT;
4220*53ee8cc1Swenshuai.xi             break;
4221*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4222*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUDB_SRC_MASK) >> TSP_AUDB_SRC_SHIFT;
4223*53ee8cc1Swenshuai.xi             break;
4224*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4225*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->PCR_Cfg)) & TSP_AUDC_SRC_MASK) >> TSP_AUDC_SRC_SHIFT;
4226*53ee8cc1Swenshuai.xi             break;
4227*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4228*53ee8cc1Swenshuai.xi             *pktDmxId = ((REG16_R(&_RegCtrl->PCR_Cfg)) & TSP_AUDD_SRC_MASK) >> TSP_AUDD_SRC_SHIFT;
4229*53ee8cc1Swenshuai.xi             break;
4230*53ee8cc1Swenshuai.xi         default:
4231*53ee8cc1Swenshuai.xi             break;
4232*53ee8cc1Swenshuai.xi     }
4233*53ee8cc1Swenshuai.xi }
4234*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ClearAll()4235*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ClearAll()
4236*53ee8cc1Swenshuai.xi {
4237*53ee8cc1Swenshuai.xi     // clear ALL FIFO !!!
4238*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4239*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4240*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl8_1->CFG8_40, CFG8_40_PS_VID3_EN);
4241*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl8_1->CFG8_41, CFG8_41_PS_VID4_EN);
4242*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4243*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4244*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4245*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4246*53ee8cc1Swenshuai.xi 
4247*53ee8cc1Swenshuai.xi }
4248*53ee8cc1Swenshuai.xi 
4249*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadEn(MS_BOOL bEn)4250*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ReadEn(MS_BOOL bEn)
4251*53ee8cc1Swenshuai.xi {
4252*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
4253*53ee8cc1Swenshuai.xi     {
4254*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
4255*53ee8cc1Swenshuai.xi     }
4256*53ee8cc1Swenshuai.xi     else
4257*53ee8cc1Swenshuai.xi     {
4258*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
4259*53ee8cc1Swenshuai.xi     }
4260*53ee8cc1Swenshuai.xi 
4261*53ee8cc1Swenshuai.xi }
4262*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadPkt(void)4263*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_FIFO_ReadPkt(void)
4264*53ee8cc1Swenshuai.xi {
4265*53ee8cc1Swenshuai.xi     return (REG16_R(&_RegCtrl->PKT_CNT) & TSP_PKT_CNT_MASK);
4266*53ee8cc1Swenshuai.xi }
4267*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)4268*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)
4269*53ee8cc1Swenshuai.xi {
4270*53ee8cc1Swenshuai.xi     switch (eFltType)
4271*53ee8cc1Swenshuai.xi     {
4272*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
4273*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);
4274*53ee8cc1Swenshuai.xi             break;
4275*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4276*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);
4277*53ee8cc1Swenshuai.xi             break;
4278*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3:
4279*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_V3) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
4280*53ee8cc1Swenshuai.xi             break;
4281*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
4282*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl3->CFG3_2C, CFG3_2C_AVFIFO_READ_SEL_MASK, ((MS_U16)CFG3_2C_AVFIFO_READ_SEL_V4) << CFG3_2C_AVFIFO_READ_SEL_SHIFT);
4283*53ee8cc1Swenshuai.xi             break;
4284*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
4285*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);
4286*53ee8cc1Swenshuai.xi             break;
4287*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
4288*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);
4289*53ee8cc1Swenshuai.xi             break;
4290*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
4291*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);
4292*53ee8cc1Swenshuai.xi             break;
4293*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
4294*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);
4295*53ee8cc1Swenshuai.xi             break;
4296*53ee8cc1Swenshuai.xi         default:
4297*53ee8cc1Swenshuai.xi             break;
4298*53ee8cc1Swenshuai.xi     }
4299*53ee8cc1Swenshuai.xi }
4300*53ee8cc1Swenshuai.xi 
4301*53ee8cc1Swenshuai.xi //@NOTE for TS mode
4302*53ee8cc1Swenshuai.xi //@TODO need to rename (TS enable or PKTDMX_BYPASS)
HAL_TSP_Flt_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)4303*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
4304*53ee8cc1Swenshuai.xi {
4305*53ee8cc1Swenshuai.xi     if(bEn)
4306*53ee8cc1Swenshuai.xi     {
4307*53ee8cc1Swenshuai.xi         switch (eFltType)
4308*53ee8cc1Swenshuai.xi         {
4309*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4310*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
4311*53ee8cc1Swenshuai.xi                 break;
4312*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4313*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
4314*53ee8cc1Swenshuai.xi                 break;
4315*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4316*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2E, CFG3_2E_VPID_3_BYPASS);
4317*53ee8cc1Swenshuai.xi                 break;
4318*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4319*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2F, CFG3_2F_VPID_4_BYPASS);
4320*53ee8cc1Swenshuai.xi                 break;
4321*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4322*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
4323*53ee8cc1Swenshuai.xi                 break;
4324*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4325*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
4326*53ee8cc1Swenshuai.xi                 break;
4327*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4328*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_C_BYPASS);
4329*53ee8cc1Swenshuai.xi                 break;
4330*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4331*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_D_BYPASS);
4332*53ee8cc1Swenshuai.xi                 break;
4333*53ee8cc1Swenshuai.xi             default:
4334*53ee8cc1Swenshuai.xi                 break;
4335*53ee8cc1Swenshuai.xi         }
4336*53ee8cc1Swenshuai.xi     }
4337*53ee8cc1Swenshuai.xi     else
4338*53ee8cc1Swenshuai.xi     {
4339*53ee8cc1Swenshuai.xi         switch (eFltType)
4340*53ee8cc1Swenshuai.xi         {
4341*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4342*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
4343*53ee8cc1Swenshuai.xi                 break;
4344*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4345*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
4346*53ee8cc1Swenshuai.xi                 break;
4347*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4348*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2E, CFG3_2E_VPID_3_BYPASS);
4349*53ee8cc1Swenshuai.xi                 break;
4350*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4351*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2F, CFG3_2F_VPID_4_BYPASS);
4352*53ee8cc1Swenshuai.xi                 break;
4353*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4354*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
4355*53ee8cc1Swenshuai.xi                 break;
4356*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4357*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
4358*53ee8cc1Swenshuai.xi                 break;
4359*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4360*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_C_BYPASS);
4361*53ee8cc1Swenshuai.xi                 break;
4362*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4363*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_D_BYPASS);
4364*53ee8cc1Swenshuai.xi                 break;
4365*53ee8cc1Swenshuai.xi             default:
4366*53ee8cc1Swenshuai.xi                 break;
4367*53ee8cc1Swenshuai.xi 
4368*53ee8cc1Swenshuai.xi         }
4369*53ee8cc1Swenshuai.xi     }
4370*53ee8cc1Swenshuai.xi }
4371*53ee8cc1Swenshuai.xi 
HAL_TSP_PS_SRC(MS_U32 tsIf)4372*53ee8cc1Swenshuai.xi void HAL_TSP_PS_SRC(MS_U32 tsIf)
4373*53ee8cc1Swenshuai.xi {
4374*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl3->CFG3_10, CFG3_10_PS_MODE_SRC_MASK,(((MS_U16)tsIf)<< CFG3_10_PS_MODE_SRC_SHIFT));
4375*53ee8cc1Swenshuai.xi }
4376*53ee8cc1Swenshuai.xi 
4377*53ee8cc1Swenshuai.xi 
4378*53ee8cc1Swenshuai.xi 
4379*53ee8cc1Swenshuai.xi //PS MODE
4380*53ee8cc1Swenshuai.xi //NEED TO rename
HAL_TSP_FIFO_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)4381*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
4382*53ee8cc1Swenshuai.xi {
4383*53ee8cc1Swenshuai.xi     if(bEn)
4384*53ee8cc1Swenshuai.xi     {
4385*53ee8cc1Swenshuai.xi         switch (eFltType)
4386*53ee8cc1Swenshuai.xi         {
4387*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4388*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4389*53ee8cc1Swenshuai.xi                 break;
4390*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4391*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4392*53ee8cc1Swenshuai.xi                 break;
4393*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4394*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_40, CFG8_40_PS_VID3_EN);
4395*53ee8cc1Swenshuai.xi                 break;
4396*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4397*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_41, CFG8_41_PS_VID4_EN);
4398*53ee8cc1Swenshuai.xi                 break;
4399*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4400*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4401*53ee8cc1Swenshuai.xi                 break;
4402*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4403*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4404*53ee8cc1Swenshuai.xi                 break;
4405*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4406*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4407*53ee8cc1Swenshuai.xi                 break;
4408*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4409*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4410*53ee8cc1Swenshuai.xi                 break;
4411*53ee8cc1Swenshuai.xi             default:
4412*53ee8cc1Swenshuai.xi                 break;
4413*53ee8cc1Swenshuai.xi         }
4414*53ee8cc1Swenshuai.xi     }
4415*53ee8cc1Swenshuai.xi     else
4416*53ee8cc1Swenshuai.xi     {
4417*53ee8cc1Swenshuai.xi         switch (eFltType)
4418*53ee8cc1Swenshuai.xi         {
4419*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4420*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
4421*53ee8cc1Swenshuai.xi                 break;
4422*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4423*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
4424*53ee8cc1Swenshuai.xi                 break;
4425*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4426*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_40, CFG8_40_PS_VID3_EN);
4427*53ee8cc1Swenshuai.xi                 break;
4428*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4429*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_41, CFG8_41_PS_VID4_EN);
4430*53ee8cc1Swenshuai.xi                 break;
4431*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4432*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
4433*53ee8cc1Swenshuai.xi                 break;
4434*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4435*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
4436*53ee8cc1Swenshuai.xi                 break;
4437*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4438*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
4439*53ee8cc1Swenshuai.xi                 break;
4440*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4441*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
4442*53ee8cc1Swenshuai.xi                 break;
4443*53ee8cc1Swenshuai.xi             default:
4444*53ee8cc1Swenshuai.xi                 break;
4445*53ee8cc1Swenshuai.xi         }
4446*53ee8cc1Swenshuai.xi     }
4447*53ee8cc1Swenshuai.xi }
4448*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng,TSP_DST_SEQ eFltType)4449*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng, TSP_DST_SEQ eFltType)
4450*53ee8cc1Swenshuai.xi {
4451*53ee8cc1Swenshuai.xi     // (K6 HW CL)
4452*53ee8cc1Swenshuai.xi     // PS mode source sel need to be independent
4453*53ee8cc1Swenshuai.xi 
4454*53ee8cc1Swenshuai.xi     switch (eFltType)
4455*53ee8cc1Swenshuai.xi     {
4456*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
4457*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));
4458*53ee8cc1Swenshuai.xi             break;
4459*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4460*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));
4461*53ee8cc1Swenshuai.xi             break;
4462*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3:
4463*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_48,CFG8_48_REG_PS_MODE_SRC_V3_MASK, (eFileEng << CFG8_48_REG_PS_MODE_SRC_V3_SHIFT));
4464*53ee8cc1Swenshuai.xi             break;
4465*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
4466*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl8_1->CFG8_48,CFG8_48_REG_PS_MODE_SRC_V4_MASK, (eFileEng << CFG8_48_REG_PS_MODE_SRC_V4_SHIFT));
4467*53ee8cc1Swenshuai.xi             break;
4468*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
4469*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));
4470*53ee8cc1Swenshuai.xi             break;
4471*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
4472*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));
4473*53ee8cc1Swenshuai.xi             break;
4474*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
4475*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));
4476*53ee8cc1Swenshuai.xi             break;
4477*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
4478*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));
4479*53ee8cc1Swenshuai.xi             break;
4480*53ee8cc1Swenshuai.xi         default:
4481*53ee8cc1Swenshuai.xi             break;
4482*53ee8cc1Swenshuai.xi     }
4483*53ee8cc1Swenshuai.xi }
4484*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)4485*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)
4486*53ee8cc1Swenshuai.xi {
4487*53ee8cc1Swenshuai.xi     switch (eFltType)
4488*53ee8cc1Swenshuai.xi     {
4489*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO :
4490*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl->Vd_Pid_Hit) & TSP_VPID_MASK;
4491*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3D :
4492*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_70) & CFG_70_MATCHECED_VPID_3D_MASK;
4493*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3 :
4494*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_7D) & CFG_7D_MATCHECED_VPID_3_MASK;
4495*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO4 :
4496*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_7E) & CFG_7E_MATCHECED_VPID_4_MASK;
4497*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO :
4498*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl->Aud_Pid_Hit) & TSP_APID_MASK;
4499*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO2 :
4500*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_71) & CFG_71_MATCHECED_APID_B_MASK;
4501*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO3 :
4502*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_74) & CFG_74_MATCHECED_APID_C_MASK;
4503*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO4 :
4504*53ee8cc1Swenshuai.xi         return REG16_R(&_RegCtrl2->CFG_7C) & CFG_7C_MATCHECED_APID_D_MASK;
4505*53ee8cc1Swenshuai.xi     default:
4506*53ee8cc1Swenshuai.xi         return PVR_PIDFLT_DEF;
4507*53ee8cc1Swenshuai.xi     }
4508*53ee8cc1Swenshuai.xi }
4509*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType,MS_BOOL bReset)4510*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType, MS_BOOL bReset)
4511*53ee8cc1Swenshuai.xi {
4512*53ee8cc1Swenshuai.xi     if (bReset)
4513*53ee8cc1Swenshuai.xi     {
4514*53ee8cc1Swenshuai.xi         switch (eFltType)
4515*53ee8cc1Swenshuai.xi         {
4516*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4517*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
4518*53ee8cc1Swenshuai.xi                 break;
4519*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4520*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
4521*53ee8cc1Swenshuai.xi                 break;
4522*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4523*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_40, CFG8_40_RESET_VFIFO_3);
4524*53ee8cc1Swenshuai.xi                 break;
4525*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4526*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_41, CFG8_41_RESET_VFIFO_4);
4527*53ee8cc1Swenshuai.xi                 break;
4528*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4529*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
4530*53ee8cc1Swenshuai.xi                 break;
4531*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4532*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
4533*53ee8cc1Swenshuai.xi                 break;
4534*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4535*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO3);
4536*53ee8cc1Swenshuai.xi                 break;
4537*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4538*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_RESET_AFIFO4);
4539*53ee8cc1Swenshuai.xi                 break;
4540*53ee8cc1Swenshuai.xi             default :
4541*53ee8cc1Swenshuai.xi                 break;
4542*53ee8cc1Swenshuai.xi         }
4543*53ee8cc1Swenshuai.xi     }
4544*53ee8cc1Swenshuai.xi     else
4545*53ee8cc1Swenshuai.xi     {
4546*53ee8cc1Swenshuai.xi         switch (eFltType)
4547*53ee8cc1Swenshuai.xi         {
4548*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
4549*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
4550*53ee8cc1Swenshuai.xi                 break;
4551*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4552*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
4553*53ee8cc1Swenshuai.xi                 break;
4554*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4555*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_40, CFG8_40_RESET_VFIFO_3);
4556*53ee8cc1Swenshuai.xi                 break;
4557*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4558*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_41, CFG8_41_RESET_VFIFO_4);
4559*53ee8cc1Swenshuai.xi                 break;
4560*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4561*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
4562*53ee8cc1Swenshuai.xi                 break;
4563*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4564*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
4565*53ee8cc1Swenshuai.xi                 break;
4566*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4567*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO3);
4568*53ee8cc1Swenshuai.xi                 break;
4569*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4570*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_RESET_AFIFO4);
4571*53ee8cc1Swenshuai.xi                 break;
4572*53ee8cc1Swenshuai.xi             default :
4573*53ee8cc1Swenshuai.xi                 break;
4574*53ee8cc1Swenshuai.xi         }
4575*53ee8cc1Swenshuai.xi     }
4576*53ee8cc1Swenshuai.xi 
4577*53ee8cc1Swenshuai.xi     _delay(1);
4578*53ee8cc1Swenshuai.xi }
4579*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)4580*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)
4581*53ee8cc1Swenshuai.xi {
4582*53ee8cc1Swenshuai.xi     if(bSkip)
4583*53ee8cc1Swenshuai.xi     {
4584*53ee8cc1Swenshuai.xi         switch(eFltType)
4585*53ee8cc1Swenshuai.xi         {
4586*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4587*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
4588*53ee8cc1Swenshuai.xi                 break;
4589*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4590*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
4591*53ee8cc1Swenshuai.xi                 break;
4592*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4593*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_40, CFG8_40_MASK_SCR_V3_EN);
4594*53ee8cc1Swenshuai.xi                 break;
4595*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4596*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_45, CFG8_41_MASK_SCR_V4_EN);
4597*53ee8cc1Swenshuai.xi                 break;
4598*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4599*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
4600*53ee8cc1Swenshuai.xi                 break;
4601*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4602*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
4603*53ee8cc1Swenshuai.xi                 break;
4604*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4605*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AC_EN);
4606*53ee8cc1Swenshuai.xi                 break;
4607*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4608*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AD_EN);
4609*53ee8cc1Swenshuai.xi                 break;
4610*53ee8cc1Swenshuai.xi             default:
4611*53ee8cc1Swenshuai.xi                 break;
4612*53ee8cc1Swenshuai.xi         }
4613*53ee8cc1Swenshuai.xi     }
4614*53ee8cc1Swenshuai.xi     else
4615*53ee8cc1Swenshuai.xi     {
4616*53ee8cc1Swenshuai.xi         switch(eFltType)
4617*53ee8cc1Swenshuai.xi         {
4618*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4619*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
4620*53ee8cc1Swenshuai.xi                 break;
4621*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4622*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
4623*53ee8cc1Swenshuai.xi                 break;
4624*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4625*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_40, CFG8_40_MASK_SCR_V3_EN);
4626*53ee8cc1Swenshuai.xi                 break;
4627*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4628*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_45, CFG8_41_MASK_SCR_V4_EN);
4629*53ee8cc1Swenshuai.xi                 break;
4630*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO:
4631*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
4632*53ee8cc1Swenshuai.xi                 break;
4633*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2:
4634*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
4635*53ee8cc1Swenshuai.xi                 break;
4636*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3:
4637*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AC_EN);
4638*53ee8cc1Swenshuai.xi                 break;
4639*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4:
4640*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AD_EN);
4641*53ee8cc1Swenshuai.xi                 break;
4642*53ee8cc1Swenshuai.xi             default:
4643*53ee8cc1Swenshuai.xi                 break;
4644*53ee8cc1Swenshuai.xi         }
4645*53ee8cc1Swenshuai.xi 
4646*53ee8cc1Swenshuai.xi     }
4647*53ee8cc1Swenshuai.xi }
4648*53ee8cc1Swenshuai.xi 
4649*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType,MS_BOOL bDisable)4650*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType, MS_BOOL bDisable)
4651*53ee8cc1Swenshuai.xi {
4652*53ee8cc1Swenshuai.xi     if(bDisable)
4653*53ee8cc1Swenshuai.xi     {
4654*53ee8cc1Swenshuai.xi         switch(eFltType)
4655*53ee8cc1Swenshuai.xi         {
4656*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4657*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
4658*53ee8cc1Swenshuai.xi                 break;
4659*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4660*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
4661*53ee8cc1Swenshuai.xi                 break;
4662*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4663*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_40, CFG8_40_V3_BLOCK_DIS);
4664*53ee8cc1Swenshuai.xi                 break;
4665*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4666*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl8_1->CFG8_41, CFG8_41_V4_BLOCK_DIS);
4667*53ee8cc1Swenshuai.xi                 break;
4668*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4669*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
4670*53ee8cc1Swenshuai.xi                 break;
4671*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4672*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
4673*53ee8cc1Swenshuai.xi                 break;
4674*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4675*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_AC_BLOCK_DIS);
4676*53ee8cc1Swenshuai.xi                 break;
4677*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4678*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_ADD_BLOCK_DIS);
4679*53ee8cc1Swenshuai.xi                 break;
4680*53ee8cc1Swenshuai.xi             default:
4681*53ee8cc1Swenshuai.xi                 break;
4682*53ee8cc1Swenshuai.xi         }
4683*53ee8cc1Swenshuai.xi     }
4684*53ee8cc1Swenshuai.xi     else
4685*53ee8cc1Swenshuai.xi     {
4686*53ee8cc1Swenshuai.xi         switch(eFltType)
4687*53ee8cc1Swenshuai.xi         {
4688*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO:
4689*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
4690*53ee8cc1Swenshuai.xi                 break;
4691*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D:
4692*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
4693*53ee8cc1Swenshuai.xi                 break;
4694*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3:
4695*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_40, CFG8_40_V3_BLOCK_DIS);
4696*53ee8cc1Swenshuai.xi                 break;
4697*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4:
4698*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl8_1->CFG8_41, CFG8_41_V4_BLOCK_DIS);
4699*53ee8cc1Swenshuai.xi                 break;
4700*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
4701*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
4702*53ee8cc1Swenshuai.xi                 break;
4703*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
4704*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
4705*53ee8cc1Swenshuai.xi                 break;
4706*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
4707*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AC_BLOCK_DIS);
4708*53ee8cc1Swenshuai.xi                 break;
4709*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
4710*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_ADD_BLOCK_DIS);
4711*53ee8cc1Swenshuai.xi                 break;
4712*53ee8cc1Swenshuai.xi             default:
4713*53ee8cc1Swenshuai.xi                 break;
4714*53ee8cc1Swenshuai.xi         }
4715*53ee8cc1Swenshuai.xi     }
4716*53ee8cc1Swenshuai.xi }
4717*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)4718*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)
4719*53ee8cc1Swenshuai.xi {
4720*53ee8cc1Swenshuai.xi     MS_U32 u32Matched = 0;
4721*53ee8cc1Swenshuai.xi     switch (eFltType)
4722*53ee8cc1Swenshuai.xi     {
4723*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4724*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO;
4725*53ee8cc1Swenshuai.xi             break;
4726*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4727*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO3D;
4728*53ee8cc1Swenshuai.xi             break;
4729*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
4730*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl8_1->CFG8_40) & CFG8_40_RESET_VFIFO_3;
4731*53ee8cc1Swenshuai.xi             break;
4732*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
4733*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl8_1->CFG8_41) & CFG8_41_RESET_VFIFO_4;
4734*53ee8cc1Swenshuai.xi             break;
4735*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4736*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO;
4737*53ee8cc1Swenshuai.xi             break;
4738*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4739*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO2;
4740*53ee8cc1Swenshuai.xi             break;
4741*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4742*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO3;
4743*53ee8cc1Swenshuai.xi             break;
4744*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4745*53ee8cc1Swenshuai.xi             u32Matched = REG16_R(&_RegCtrl->PktChkSizeFilein) & TSP_RESET_AFIFO4;
4746*53ee8cc1Swenshuai.xi             break;
4747*53ee8cc1Swenshuai.xi         default :
4748*53ee8cc1Swenshuai.xi             return FALSE;
4749*53ee8cc1Swenshuai.xi     }
4750*53ee8cc1Swenshuai.xi     return (u32Matched) ? TRUE: FALSE;
4751*53ee8cc1Swenshuai.xi }
4752*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)4753*53ee8cc1Swenshuai.xi MS_U32  HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)
4754*53ee8cc1Swenshuai.xi {
4755*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_ISRESET    0x80000000
4756*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_EMPTY      0x00000001
4757*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_OVERFLOW   0x00000002
4758*53ee8cc1Swenshuai.xi     #define E_TSP_FIFO_STATUS_LEVEL      0x0000000C
4759*53ee8cc1Swenshuai.xi     #define TSP_FIFO_STATUS_LEVEL_SHFT            2   //shift the value get from HAL_TSP_FIFO_Level to the u32Status level position
4760*53ee8cc1Swenshuai.xi     // @NOTE please follow K2 like series to return this value
4761*53ee8cc1Swenshuai.xi     // since API layer didn't define for each column
4762*53ee8cc1Swenshuai.xi     // we only defined that 0x80000000 stands for this fifo reset is High
4763*53ee8cc1Swenshuai.xi     //                               0x00000001 stands for this fifo is empty
4764*53ee8cc1Swenshuai.xi     //                               0x00000002 stands for this fifo is overflow
4765*53ee8cc1Swenshuai.xi     //                               0x0000000C is a mask for this fifo level
4766*53ee8cc1Swenshuai.xi     // this is exclusive usage
4767*53ee8cc1Swenshuai.xi     MS_U32 u32Status = 0;
4768*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_IsReset(eFltType))
4769*53ee8cc1Swenshuai.xi     {
4770*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_ISRESET;
4771*53ee8cc1Swenshuai.xi     }
4772*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_Empty(eFltType))
4773*53ee8cc1Swenshuai.xi     {
4774*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_EMPTY;
4775*53ee8cc1Swenshuai.xi     }
4776*53ee8cc1Swenshuai.xi     if (HAL_TSP_FIFO_Overflow(eFltType))
4777*53ee8cc1Swenshuai.xi     {
4778*53ee8cc1Swenshuai.xi         u32Status |= E_TSP_FIFO_STATUS_OVERFLOW;
4779*53ee8cc1Swenshuai.xi     }
4780*53ee8cc1Swenshuai.xi 
4781*53ee8cc1Swenshuai.xi     u32Status |= ((HAL_TSP_FIFO_Level(eFltType)<<TSP_FIFO_STATUS_LEVEL_SHFT)&E_TSP_FIFO_STATUS_LEVEL);
4782*53ee8cc1Swenshuai.xi 
4783*53ee8cc1Swenshuai.xi     return u32Status;
4784*53ee8cc1Swenshuai.xi }
4785*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)4786*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)
4787*53ee8cc1Swenshuai.xi {
4788*53ee8cc1Swenshuai.xi     switch (eFltType)
4789*53ee8cc1Swenshuai.xi     {
4790*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO :
4791*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_LEVEL)  >> TSP_VFIFO_LEVEL_SHFT;
4792*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3D :
4793*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_LEVEL)  >> TSP_VFIFO3D_LEVEL_SHFT;
4794*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO3 :
4795*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_4C) & CFG3_4C_TSP_VFIFO3_LEVEL)  >> CFG3_4C_TSP_VFIFO3_LEVEL_SHFT;
4796*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_VIDEO4 :
4797*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_4D) & CFG3_4D_TSP_VFIFO4_LEVEL)  >> CFG3_4D_TSP_VFIFO4_LEVEL_SHFT;
4798*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO :
4799*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_LEVEL)  >> TSP_AFIFO_LEVEL_SHFT;
4800*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO2 :
4801*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_LEVEL)  >> TSP_AFIFOB_LEVEL_SHFT;
4802*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO3 :
4803*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_LEVEL)  >> TSP_AFIFOC_LEVEL_SHFT;
4804*53ee8cc1Swenshuai.xi     case E_TSP_DST_FIFO_AUDIO4:
4805*53ee8cc1Swenshuai.xi         return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_LEVEL)  >> TSP_AFIFOD_LEVEL_SHFT;
4806*53ee8cc1Swenshuai.xi     default :
4807*53ee8cc1Swenshuai.xi         return 0;
4808*53ee8cc1Swenshuai.xi     }
4809*53ee8cc1Swenshuai.xi }
4810*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)4811*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)
4812*53ee8cc1Swenshuai.xi {
4813*53ee8cc1Swenshuai.xi     switch (eFltType)
4814*53ee8cc1Swenshuai.xi     {
4815*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4816*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_FULL)  >> TSP_VFIFO_FULL_SHFT;
4817*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
4818*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_FULL)  >> TSP_VFIFO3D_FULL_SHFT;
4819*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
4820*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_4C) & CFG3_4C_TSP_VFIFO3_FULL)  >> CFG3_4C_TSP_VFIFO3_FULL_SHFT;
4821*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4 :
4822*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_4C) & CFG3_4D_TSP_VFIFO4_FULL)  >> CFG3_4D_TSP_VFIFO4_FULL_SHFT;
4823*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4824*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_FULL)  >> TSP_AFIFO_FULL_SHFT;
4825*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4826*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_FULL)  >> TSP_AFIFOB_FULL_SHFT;
4827*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4828*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_FULL)  >> TSP_AFIFOC_FULL_SHFT;
4829*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4830*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_FULL)  >> TSP_AFIFOD_FULL_SHFT;
4831*53ee8cc1Swenshuai.xi         default :
4832*53ee8cc1Swenshuai.xi             return FALSE;
4833*53ee8cc1Swenshuai.xi     }
4834*53ee8cc1Swenshuai.xi }
4835*53ee8cc1Swenshuai.xi 
HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)4836*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)
4837*53ee8cc1Swenshuai.xi {
4838*53ee8cc1Swenshuai.xi     switch (eFltType)
4839*53ee8cc1Swenshuai.xi     {
4840*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
4841*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_EMPTY)  >> TSP_VFIFO_EMPTY_SHFT;
4842*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
4843*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_EMPTY)  >> TSP_VFIFO3D_EMPTY_SHFT;
4844*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
4845*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_4C) & CFG3_4C_TSP_VFIFO3_EMPTY)  >> CFG3_4C_TSP_VFIFO3_EMPTY_SHFT;
4846*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4 :
4847*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_4D) & CFG3_4D_TSP_VFIFO4_EMPTY)  >> CFG3_4D_TSP_VFIFO4_EMPTY_SHFT;
4848*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
4849*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_EMPTY)  >> TSP_AFIFO_EMPTY_SHFT;
4850*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
4851*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_EMPTY)  >> TSP_AFIFOB_EMPTY_SHFT;
4852*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
4853*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOC_EMPTY)  >> TSP_AFIFOC_EMPTY_SHFT;
4854*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
4855*53ee8cc1Swenshuai.xi             return (REG16_R(&_RegCtrl3->CFG3_33) & TSP_AFIFOD_EMPTY)  >> TSP_AFIFOD_EMPTY_SHFT;
4856*53ee8cc1Swenshuai.xi         default :
4857*53ee8cc1Swenshuai.xi             return FALSE;
4858*53ee8cc1Swenshuai.xi     }
4859*53ee8cc1Swenshuai.xi }
4860*53ee8cc1Swenshuai.xi 
_HAL_TSP_VQ_TxConfig(MS_U32 vqId)4861*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_TSP_VQ_TxConfig(MS_U32 vqId)
4862*53ee8cc1Swenshuai.xi {
4863*53ee8cc1Swenshuai.xi     // reg_vq_wr_threshold = 0x8
4864*53ee8cc1Swenshuai.xi     // reg_vq_forcefire_cnt_1k= 0xC
4865*53ee8cc1Swenshuai.xi 
4866*53ee8cc1Swenshuai.xi     switch(vqId)
4867*53ee8cc1Swenshuai.xi     {
4868*53ee8cc1Swenshuai.xi         case 0:
4869*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));
4870*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));
4871*53ee8cc1Swenshuai.xi             break;
4872*53ee8cc1Swenshuai.xi         case 1:
4873*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));
4874*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));
4875*53ee8cc1Swenshuai.xi             break;
4876*53ee8cc1Swenshuai.xi         case 2:
4877*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));
4878*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));
4879*53ee8cc1Swenshuai.xi             break;
4880*53ee8cc1Swenshuai.xi         case 3:
4881*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));
4882*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));
4883*53ee8cc1Swenshuai.xi             break;
4884*53ee8cc1Swenshuai.xi         default:
4885*53ee8cc1Swenshuai.xi             return FALSE;
4886*53ee8cc1Swenshuai.xi     }
4887*53ee8cc1Swenshuai.xi     return TRUE;
4888*53ee8cc1Swenshuai.xi }
4889*53ee8cc1Swenshuai.xi 
HAL_TSP_SetVQ(MS_PHYADDR u32BaseAddr,MS_U32 u32BufLen)4890*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetVQ( MS_PHYADDR u32BaseAddr, MS_U32 u32BufLen)
4891*53ee8cc1Swenshuai.xi {
4892*53ee8cc1Swenshuai.xi     MS_U32 vqId = 0;
4893*53ee8cc1Swenshuai.xi     MS_U32 u32VQ_PktNum = 0;
4894*53ee8cc1Swenshuai.xi     MS_U32 u32Addr = 0;
4895*53ee8cc1Swenshuai.xi     MS_U32 u32OneBufSize = 0;
4896*53ee8cc1Swenshuai.xi 
4897*53ee8cc1Swenshuai.xi     // Check MIU select
4898*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel = 0;
4899*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, u32Addr, u32BaseAddr);
4900*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));
4901*53ee8cc1Swenshuai.xi 
4902*53ee8cc1Swenshuai.xi     u32OneBufSize = ((u32BufLen >> MIU_BUS) / VQ_NUM) << MIU_BUS; //miu alignment
4903*53ee8cc1Swenshuai.xi     u32VQ_PktNum = u32OneBufSize / VQ_PACKET_UNIT_LEN;
4904*53ee8cc1Swenshuai.xi 
4905*53ee8cc1Swenshuai.xi     for(vqId = 0; vqId < VQ_NUM; vqId ++)
4906*53ee8cc1Swenshuai.xi     {
4907*53ee8cc1Swenshuai.xi         if(TRUE != _HAL_TSP_VQ_TxConfig(vqId))
4908*53ee8cc1Swenshuai.xi         {
4909*53ee8cc1Swenshuai.xi             return FALSE;
4910*53ee8cc1Swenshuai.xi         }
4911*53ee8cc1Swenshuai.xi 
4912*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
4913*53ee8cc1Swenshuai.xi         if (TRUE != HAL_TSP_VQ_Buffer(vqId, u32Addr, u32VQ_PktNum))
4914*53ee8cc1Swenshuai.xi         {
4915*53ee8cc1Swenshuai.xi             return FALSE;
4916*53ee8cc1Swenshuai.xi         }
4917*53ee8cc1Swenshuai.xi         u32Addr += u32OneBufSize;
4918*53ee8cc1Swenshuai.xi     }
4919*53ee8cc1Swenshuai.xi 
4920*53ee8cc1Swenshuai.xi     HAL_TSP_VQ_Enable(TRUE);
4921*53ee8cc1Swenshuai.xi     return TRUE;
4922*53ee8cc1Swenshuai.xi 
4923*53ee8cc1Swenshuai.xi }
4924*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Buffer(MS_U32 vqId,MS_PHYADDR u32BaseAddr,MS_U32 u32VQ_PktNum)4925*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Buffer(MS_U32 vqId, MS_PHYADDR u32BaseAddr, MS_U32 u32VQ_PktNum)
4926*53ee8cc1Swenshuai.xi {
4927*53ee8cc1Swenshuai.xi     switch(vqId)
4928*53ee8cc1Swenshuai.xi     {
4929*53ee8cc1Swenshuai.xi         case 0:
4930*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ0_BASE, (u32BaseAddr >> MIU_BUS));
4931*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ0_SIZE, u32VQ_PktNum);
4932*53ee8cc1Swenshuai.xi             break;
4933*53ee8cc1Swenshuai.xi         case 1:
4934*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ1_Base, (u32BaseAddr >> MIU_BUS));
4935*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ1_Size,  u32VQ_PktNum);
4936*53ee8cc1Swenshuai.xi             break;
4937*53ee8cc1Swenshuai.xi         case 2:
4938*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ2_Base, (u32BaseAddr >> MIU_BUS));
4939*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ2_Size, u32VQ_PktNum);
4940*53ee8cc1Swenshuai.xi             break;
4941*53ee8cc1Swenshuai.xi         case 3:
4942*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->VQ3_Base, (u32BaseAddr >> MIU_BUS));
4943*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->VQ3_Size, u32VQ_PktNum);
4944*53ee8cc1Swenshuai.xi             break;
4945*53ee8cc1Swenshuai.xi         default:
4946*53ee8cc1Swenshuai.xi             return FALSE;
4947*53ee8cc1Swenshuai.xi     }
4948*53ee8cc1Swenshuai.xi     return TRUE;
4949*53ee8cc1Swenshuai.xi }
4950*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)4951*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)
4952*53ee8cc1Swenshuai.xi {
4953*53ee8cc1Swenshuai.xi     if(bDis == TRUE)
4954*53ee8cc1Swenshuai.xi     {
4955*53ee8cc1Swenshuai.xi         switch(vqId)
4956*53ee8cc1Swenshuai.xi         {
4957*53ee8cc1Swenshuai.xi             case 0:
4958*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
4959*53ee8cc1Swenshuai.xi                 break;
4960*53ee8cc1Swenshuai.xi             case 1:
4961*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
4962*53ee8cc1Swenshuai.xi                 break;
4963*53ee8cc1Swenshuai.xi             case 2:
4964*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
4965*53ee8cc1Swenshuai.xi                 break;
4966*53ee8cc1Swenshuai.xi             case 3:
4967*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160E, TSP_VQTX3_BLOCK_DIS);
4968*53ee8cc1Swenshuai.xi                 break;
4969*53ee8cc1Swenshuai.xi             default:
4970*53ee8cc1Swenshuai.xi                 return FALSE;
4971*53ee8cc1Swenshuai.xi         }
4972*53ee8cc1Swenshuai.xi     }
4973*53ee8cc1Swenshuai.xi     else
4974*53ee8cc1Swenshuai.xi     {
4975*53ee8cc1Swenshuai.xi         switch(vqId)
4976*53ee8cc1Swenshuai.xi         {
4977*53ee8cc1Swenshuai.xi             case 0:
4978*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
4979*53ee8cc1Swenshuai.xi                 break;
4980*53ee8cc1Swenshuai.xi             case 1:
4981*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
4982*53ee8cc1Swenshuai.xi                 break;
4983*53ee8cc1Swenshuai.xi             case 2:
4984*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
4985*53ee8cc1Swenshuai.xi                 break;
4986*53ee8cc1Swenshuai.xi             case 3:
4987*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX3_BLOCK_DIS);
4988*53ee8cc1Swenshuai.xi                 break;
4989*53ee8cc1Swenshuai.xi             default:
4990*53ee8cc1Swenshuai.xi                 return FALSE;
4991*53ee8cc1Swenshuai.xi         }
4992*53ee8cc1Swenshuai.xi     }
4993*53ee8cc1Swenshuai.xi 
4994*53ee8cc1Swenshuai.xi     return TRUE;
4995*53ee8cc1Swenshuai.xi }
4996*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_Enable(MS_BOOL bEn)4997*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Enable(MS_BOOL bEn)
4998*53ee8cc1Swenshuai.xi {
4999*53ee8cc1Swenshuai.xi     if (bEn)
5000*53ee8cc1Swenshuai.xi     {
5001*53ee8cc1Swenshuai.xi           REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
5002*53ee8cc1Swenshuai.xi     }
5003*53ee8cc1Swenshuai.xi     else
5004*53ee8cc1Swenshuai.xi     {
5005*53ee8cc1Swenshuai.xi           REG16_CLR(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
5006*53ee8cc1Swenshuai.xi     }
5007*53ee8cc1Swenshuai.xi }
HAL_TSP_VQ_Reset(MS_U32 vqId,MS_BOOL bEn)5008*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Reset(MS_U32 vqId, MS_BOOL bEn)
5009*53ee8cc1Swenshuai.xi {
5010*53ee8cc1Swenshuai.xi     if(bEn)
5011*53ee8cc1Swenshuai.xi     {
5012*53ee8cc1Swenshuai.xi         switch(vqId)
5013*53ee8cc1Swenshuai.xi         {
5014*53ee8cc1Swenshuai.xi             case 0:
5015*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
5016*53ee8cc1Swenshuai.xi                 break;
5017*53ee8cc1Swenshuai.xi             case 1:
5018*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
5019*53ee8cc1Swenshuai.xi                 break;
5020*53ee8cc1Swenshuai.xi             case 2:
5021*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
5022*53ee8cc1Swenshuai.xi                 break;
5023*53ee8cc1Swenshuai.xi           case 3:
5024*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_RESET);
5025*53ee8cc1Swenshuai.xi                 break;
5026*53ee8cc1Swenshuai.xi             default:
5027*53ee8cc1Swenshuai.xi                 break;
5028*53ee8cc1Swenshuai.xi         }
5029*53ee8cc1Swenshuai.xi     }
5030*53ee8cc1Swenshuai.xi     else
5031*53ee8cc1Swenshuai.xi     {
5032*53ee8cc1Swenshuai.xi         switch(vqId)
5033*53ee8cc1Swenshuai.xi         {
5034*53ee8cc1Swenshuai.xi             case 0:
5035*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
5036*53ee8cc1Swenshuai.xi                 break;
5037*53ee8cc1Swenshuai.xi             case 1:
5038*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
5039*53ee8cc1Swenshuai.xi                 break;
5040*53ee8cc1Swenshuai.xi             case 2:
5041*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
5042*53ee8cc1Swenshuai.xi                 break;
5043*53ee8cc1Swenshuai.xi             case 3:
5044*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_RESET);
5045*53ee8cc1Swenshuai.xi                 break;
5046*53ee8cc1Swenshuai.xi             default:
5047*53ee8cc1Swenshuai.xi                 break;
5048*53ee8cc1Swenshuai.xi         }
5049*53ee8cc1Swenshuai.xi     }
5050*53ee8cc1Swenshuai.xi }
5051*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId,MS_BOOL bEn)5052*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId, MS_BOOL bEn)
5053*53ee8cc1Swenshuai.xi {
5054*53ee8cc1Swenshuai.xi     if(bEn)
5055*53ee8cc1Swenshuai.xi     {
5056*53ee8cc1Swenshuai.xi         switch(vqId)
5057*53ee8cc1Swenshuai.xi         {
5058*53ee8cc1Swenshuai.xi             case 0:
5059*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
5060*53ee8cc1Swenshuai.xi                 break;
5061*53ee8cc1Swenshuai.xi             case 1:
5062*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
5063*53ee8cc1Swenshuai.xi                 break;
5064*53ee8cc1Swenshuai.xi             case 2:
5065*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
5066*53ee8cc1Swenshuai.xi                 break;
5067*53ee8cc1Swenshuai.xi             case 3:
5068*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_OVF_INT_EN);
5069*53ee8cc1Swenshuai.xi                 break;
5070*53ee8cc1Swenshuai.xi             default:
5071*53ee8cc1Swenshuai.xi                 break;
5072*53ee8cc1Swenshuai.xi         }
5073*53ee8cc1Swenshuai.xi     }
5074*53ee8cc1Swenshuai.xi     else
5075*53ee8cc1Swenshuai.xi     {
5076*53ee8cc1Swenshuai.xi         switch(vqId)
5077*53ee8cc1Swenshuai.xi         {
5078*53ee8cc1Swenshuai.xi             case 0:
5079*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
5080*53ee8cc1Swenshuai.xi                 break;
5081*53ee8cc1Swenshuai.xi             case 1:
5082*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
5083*53ee8cc1Swenshuai.xi                 break;
5084*53ee8cc1Swenshuai.xi             case 2:
5085*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
5086*53ee8cc1Swenshuai.xi                 break;
5087*53ee8cc1Swenshuai.xi             case 3:
5088*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_OVF_INT_EN);
5089*53ee8cc1Swenshuai.xi                 break;
5090*53ee8cc1Swenshuai.xi             default:
5091*53ee8cc1Swenshuai.xi                 break;
5092*53ee8cc1Swenshuai.xi         }
5093*53ee8cc1Swenshuai.xi     }
5094*53ee8cc1Swenshuai.xi }
5095*53ee8cc1Swenshuai.xi 
HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId,MS_BOOL bEn)5096*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId, MS_BOOL bEn)
5097*53ee8cc1Swenshuai.xi {
5098*53ee8cc1Swenshuai.xi     if(bEn)
5099*53ee8cc1Swenshuai.xi     {
5100*53ee8cc1Swenshuai.xi         switch(vqId)
5101*53ee8cc1Swenshuai.xi         {
5102*53ee8cc1Swenshuai.xi             case 0:
5103*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
5104*53ee8cc1Swenshuai.xi                 break;
5105*53ee8cc1Swenshuai.xi             case 1:
5106*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
5107*53ee8cc1Swenshuai.xi                 break;
5108*53ee8cc1Swenshuai.xi             case 2:
5109*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
5110*53ee8cc1Swenshuai.xi                 break;
5111*53ee8cc1Swenshuai.xi             case 3:
5112*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->VQ3_Config, TSP_VQ3_CLR_OVF_INT);
5113*53ee8cc1Swenshuai.xi                 break;
5114*53ee8cc1Swenshuai.xi             default:
5115*53ee8cc1Swenshuai.xi                 break;
5116*53ee8cc1Swenshuai.xi         }
5117*53ee8cc1Swenshuai.xi     }
5118*53ee8cc1Swenshuai.xi     else
5119*53ee8cc1Swenshuai.xi     {
5120*53ee8cc1Swenshuai.xi         switch(vqId)
5121*53ee8cc1Swenshuai.xi         {
5122*53ee8cc1Swenshuai.xi             case 0:
5123*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
5124*53ee8cc1Swenshuai.xi                 break;
5125*53ee8cc1Swenshuai.xi             case 1:
5126*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
5127*53ee8cc1Swenshuai.xi                 break;
5128*53ee8cc1Swenshuai.xi             case 2:
5129*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
5130*53ee8cc1Swenshuai.xi                 break;
5131*53ee8cc1Swenshuai.xi             case 3:
5132*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->VQ3_Config, TSP_VQ3_CLR_OVF_INT);
5133*53ee8cc1Swenshuai.xi                 break;
5134*53ee8cc1Swenshuai.xi             default:
5135*53ee8cc1Swenshuai.xi                 break;
5136*53ee8cc1Swenshuai.xi         }
5137*53ee8cc1Swenshuai.xi     }
5138*53ee8cc1Swenshuai.xi }
5139*53ee8cc1Swenshuai.xi 
HAL_PVR_Init(MS_U32 u32PVREng,MS_U32 pktDmxId)5140*53ee8cc1Swenshuai.xi void HAL_PVR_Init(MS_U32 u32PVREng, MS_U32 pktDmxId)
5141*53ee8cc1Swenshuai.xi {
5142*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5143*53ee8cc1Swenshuai.xi     {
5144*53ee8cc1Swenshuai.xi         case 0:
5145*53ee8cc1Swenshuai.xi             // PVR 1
5146*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
5147*53ee8cc1Swenshuai.xi             REG16_W(&(_RegCtrl->FIFO_Src), (REG16_R(&(_RegCtrl->FIFO_Src)) & ~TSP_PVR1_SRC_MASK) | (((MS_U16)pktDmxId) << TSP_PVR1_SRC_SHIFT));
5148*53ee8cc1Swenshuai.xi             break;
5149*53ee8cc1Swenshuai.xi         case 1:
5150*53ee8cc1Swenshuai.xi             // PVR 2
5151*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
5152*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));
5153*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));
5154*53ee8cc1Swenshuai.xi             break;
5155*53ee8cc1Swenshuai.xi         case 2:
5156*53ee8cc1Swenshuai.xi             // PVR 3
5157*53ee8cc1Swenshuai.xi             REG16_MSK_W(&(_RegCtrl2->CFG_15), CFG_15_PVR3_SRC, pktDmxId << CFG_15_PVR3_SRC_SHIFT);
5158*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_REG_PINGPONG_EN);
5159*53ee8cc1Swenshuai.xi             break;
5160*53ee8cc1Swenshuai.xi         case 3:
5161*53ee8cc1Swenshuai.xi             // PVR 3
5162*53ee8cc1Swenshuai.xi             REG16_MSK_W(&(_RegCtrl2->CFG_15), CFG_15_PVR4_SRC, pktDmxId << CFG_15_PVR4_SRC_SHIFT);
5163*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_REG_PINGPONG_EN);
5164*53ee8cc1Swenshuai.xi             break;
5165*53ee8cc1Swenshuai.xi         default:
5166*53ee8cc1Swenshuai.xi             break;
5167*53ee8cc1Swenshuai.xi     }
5168*53ee8cc1Swenshuai.xi }
5169*53ee8cc1Swenshuai.xi 
HAL_PVR_Exit(MS_U32 u32PVREng)5170*53ee8cc1Swenshuai.xi void HAL_PVR_Exit(MS_U32 u32PVREng)
5171*53ee8cc1Swenshuai.xi {
5172*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5173*53ee8cc1Swenshuai.xi     {
5174*53ee8cc1Swenshuai.xi         case 0:
5175*53ee8cc1Swenshuai.xi             //reset pvr control registers
5176*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
5177*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR1_SRC_MASK);
5178*53ee8cc1Swenshuai.xi 
5179*53ee8cc1Swenshuai.xi             //reset write address
5180*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
5181*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
5182*53ee8cc1Swenshuai.xi             break;
5183*53ee8cc1Swenshuai.xi         case 1:
5184*53ee8cc1Swenshuai.xi             //reset pvr control registers
5185*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
5186*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR2_SRC_MASK_L);
5187*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->PCR_Cfg), TSP_PVR2_SRC_MASK_H);
5188*53ee8cc1Swenshuai.xi 
5189*53ee8cc1Swenshuai.xi             //reset write address
5190*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
5191*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
5192*53ee8cc1Swenshuai.xi             break;
5193*53ee8cc1Swenshuai.xi         case 2:
5194*53ee8cc1Swenshuai.xi             //reset pvr control registers
5195*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_15), CFG_15_PVR3_SRC);
5196*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_REG_PINGPONG_EN);
5197*53ee8cc1Swenshuai.xi 
5198*53ee8cc1Swenshuai.xi             //reset write address
5199*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
5200*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
5201*53ee8cc1Swenshuai.xi             break;
5202*53ee8cc1Swenshuai.xi         case 3:
5203*53ee8cc1Swenshuai.xi             //reset pvr control registers
5204*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_15), CFG_15_PVR4_SRC);
5205*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_REG_PINGPONG_EN);
5206*53ee8cc1Swenshuai.xi 
5207*53ee8cc1Swenshuai.xi             //reset write address
5208*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
5209*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
5210*53ee8cc1Swenshuai.xi             break;
5211*53ee8cc1Swenshuai.xi         default:
5212*53ee8cc1Swenshuai.xi             break;
5213*53ee8cc1Swenshuai.xi     }
5214*53ee8cc1Swenshuai.xi 
5215*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32PVREng].bPA2KSEG1_Mapping== TRUE)
5216*53ee8cc1Swenshuai.xi     {
5217*53ee8cc1Swenshuai.xi         _stPvrBuf[u32PVREng].bOverWrite = FALSE;
5218*53ee8cc1Swenshuai.xi     }
5219*53ee8cc1Swenshuai.xi 
5220*53ee8cc1Swenshuai.xi     //reset time-stamp
5221*53ee8cc1Swenshuai.xi     HAL_PVR_SetPVRTimeStamp(u32PVREng,0);
5222*53ee8cc1Swenshuai.xi 
5223*53ee8cc1Swenshuai.xi }
5224*53ee8cc1Swenshuai.xi 
HAL_PVR_Start(MS_U32 u32PVREng)5225*53ee8cc1Swenshuai.xi void HAL_PVR_Start(MS_U32 u32PVREng)
5226*53ee8cc1Swenshuai.xi {
5227*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5228*53ee8cc1Swenshuai.xi     {
5229*53ee8cc1Swenshuai.xi         case 0:
5230*53ee8cc1Swenshuai.xi             //reset write address
5231*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
5232*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
5233*53ee8cc1Swenshuai.xi 
5234*53ee8cc1Swenshuai.xi             //enable string to miu
5235*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
5236*53ee8cc1Swenshuai.xi             break;
5237*53ee8cc1Swenshuai.xi         case 1:
5238*53ee8cc1Swenshuai.xi             //reset write address
5239*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
5240*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
5241*53ee8cc1Swenshuai.xi 
5242*53ee8cc1Swenshuai.xi             //enable string to miu
5243*53ee8cc1Swenshuai.xi             REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
5244*53ee8cc1Swenshuai.xi             break;
5245*53ee8cc1Swenshuai.xi         case 2:
5246*53ee8cc1Swenshuai.xi             //reset write address
5247*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
5248*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_RST_WADR);
5249*53ee8cc1Swenshuai.xi 
5250*53ee8cc1Swenshuai.xi             //enable string to miu
5251*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_EN);
5252*53ee8cc1Swenshuai.xi             break;
5253*53ee8cc1Swenshuai.xi         case 3:
5254*53ee8cc1Swenshuai.xi             //reset write address
5255*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
5256*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_RST_WADR);
5257*53ee8cc1Swenshuai.xi 
5258*53ee8cc1Swenshuai.xi             //enable string to miu
5259*53ee8cc1Swenshuai.xi             REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_EN);
5260*53ee8cc1Swenshuai.xi             break;
5261*53ee8cc1Swenshuai.xi         default:
5262*53ee8cc1Swenshuai.xi             break;
5263*53ee8cc1Swenshuai.xi     }
5264*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32PVREng].bPA2KSEG1_Mapping== TRUE)
5265*53ee8cc1Swenshuai.xi     {
5266*53ee8cc1Swenshuai.xi         if((E_TSP_PVR_PVRENG_START <= u32PVREng) && (E_TSP_PVR_PVRENG_END > u32PVREng)) // PVR Eng number check
5267*53ee8cc1Swenshuai.xi         {
5268*53ee8cc1Swenshuai.xi             _stPvrBuf[u32PVREng].bOverWrite = FALSE; // Set PVR buffer to non-OverWrite state
5269*53ee8cc1Swenshuai.xi         }
5270*53ee8cc1Swenshuai.xi     }
5271*53ee8cc1Swenshuai.xi }
5272*53ee8cc1Swenshuai.xi 
HAL_PVR_Stop(MS_U32 u32PVREng)5273*53ee8cc1Swenshuai.xi void HAL_PVR_Stop(MS_U32 u32PVREng)
5274*53ee8cc1Swenshuai.xi {
5275*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5276*53ee8cc1Swenshuai.xi     {
5277*53ee8cc1Swenshuai.xi         case 0:
5278*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
5279*53ee8cc1Swenshuai.xi             break;
5280*53ee8cc1Swenshuai.xi         case 1:
5281*53ee8cc1Swenshuai.xi             REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
5282*53ee8cc1Swenshuai.xi             break;
5283*53ee8cc1Swenshuai.xi         case 2:
5284*53ee8cc1Swenshuai.xi             //clear string to miu
5285*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_EN);
5286*53ee8cc1Swenshuai.xi             break;
5287*53ee8cc1Swenshuai.xi         case 3:
5288*53ee8cc1Swenshuai.xi             //clear string to miu
5289*53ee8cc1Swenshuai.xi             REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_EN);
5290*53ee8cc1Swenshuai.xi             break;
5291*53ee8cc1Swenshuai.xi         default:
5292*53ee8cc1Swenshuai.xi             break;
5293*53ee8cc1Swenshuai.xi     }
5294*53ee8cc1Swenshuai.xi }
5295*53ee8cc1Swenshuai.xi 
HAL_PVR_Pause(MS_U32 u32PVREng,MS_BOOL bPause)5296*53ee8cc1Swenshuai.xi void HAL_PVR_Pause(MS_U32 u32PVREng , MS_BOOL bPause)
5297*53ee8cc1Swenshuai.xi {
5298*53ee8cc1Swenshuai.xi     if(bPause)
5299*53ee8cc1Swenshuai.xi     {
5300*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5301*53ee8cc1Swenshuai.xi         {
5302*53ee8cc1Swenshuai.xi             case 0:
5303*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
5304*53ee8cc1Swenshuai.xi                 break;
5305*53ee8cc1Swenshuai.xi             case 1:
5306*53ee8cc1Swenshuai.xi                 REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
5307*53ee8cc1Swenshuai.xi                 break;
5308*53ee8cc1Swenshuai.xi             case 2:
5309*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_PAUSE);
5310*53ee8cc1Swenshuai.xi                 break;
5311*53ee8cc1Swenshuai.xi             case 3:
5312*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_PAUSE);
5313*53ee8cc1Swenshuai.xi                 break;
5314*53ee8cc1Swenshuai.xi             default:
5315*53ee8cc1Swenshuai.xi                 break;
5316*53ee8cc1Swenshuai.xi         }
5317*53ee8cc1Swenshuai.xi     }
5318*53ee8cc1Swenshuai.xi     else
5319*53ee8cc1Swenshuai.xi     {
5320*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5321*53ee8cc1Swenshuai.xi         {
5322*53ee8cc1Swenshuai.xi             case 0:
5323*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
5324*53ee8cc1Swenshuai.xi                 break;
5325*53ee8cc1Swenshuai.xi             case 1:
5326*53ee8cc1Swenshuai.xi                 REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
5327*53ee8cc1Swenshuai.xi                 break;
5328*53ee8cc1Swenshuai.xi             case 2:
5329*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PVR3_STR2MI_PAUSE);
5330*53ee8cc1Swenshuai.xi                 break;
5331*53ee8cc1Swenshuai.xi             case 3:
5332*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PVR4_STR2MI_PAUSE);
5333*53ee8cc1Swenshuai.xi                 break;
5334*53ee8cc1Swenshuai.xi             default:
5335*53ee8cc1Swenshuai.xi                 break;
5336*53ee8cc1Swenshuai.xi         }
5337*53ee8cc1Swenshuai.xi     }
5338*53ee8cc1Swenshuai.xi }
5339*53ee8cc1Swenshuai.xi 
HAL_PVR_RecPid(MS_U32 u32PVREng,MS_BOOL bSet)5340*53ee8cc1Swenshuai.xi void HAL_PVR_RecPid(MS_U32 u32PVREng , MS_BOOL bSet)
5341*53ee8cc1Swenshuai.xi {
5342*53ee8cc1Swenshuai.xi     if(bSet)
5343*53ee8cc1Swenshuai.xi     {
5344*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5345*53ee8cc1Swenshuai.xi         {
5346*53ee8cc1Swenshuai.xi             case 0:
5347*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
5348*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
5349*53ee8cc1Swenshuai.xi                 break;
5350*53ee8cc1Swenshuai.xi             case 1:
5351*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
5352*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
5353*53ee8cc1Swenshuai.xi                 break;
5354*53ee8cc1Swenshuai.xi             case 2:
5355*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_PID_BYPASS3_REC);
5356*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_REC_ALL3);
5357*53ee8cc1Swenshuai.xi                 break;
5358*53ee8cc1Swenshuai.xi             case 3:
5359*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_PID_BYPASS4_REC);
5360*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_REC_ALL4);
5361*53ee8cc1Swenshuai.xi                 break;
5362*53ee8cc1Swenshuai.xi             default:
5363*53ee8cc1Swenshuai.xi                 break;
5364*53ee8cc1Swenshuai.xi         }
5365*53ee8cc1Swenshuai.xi     }
5366*53ee8cc1Swenshuai.xi     else
5367*53ee8cc1Swenshuai.xi     {
5368*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5369*53ee8cc1Swenshuai.xi         {
5370*53ee8cc1Swenshuai.xi             case 0:
5371*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
5372*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
5373*53ee8cc1Swenshuai.xi                 break;
5374*53ee8cc1Swenshuai.xi             case 1:
5375*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
5376*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
5377*53ee8cc1Swenshuai.xi                 break;
5378*53ee8cc1Swenshuai.xi             case 2:
5379*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_16), CFG_16_PID_BYPASS3_REC);
5380*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_16), CFG_16_REC_ALL3);
5381*53ee8cc1Swenshuai.xi                 break;
5382*53ee8cc1Swenshuai.xi             case 3:
5383*53ee8cc1Swenshuai.xi                 REG16_CLR(&(_RegCtrl2->CFG_23), CFG_23_PID_BYPASS4_REC);
5384*53ee8cc1Swenshuai.xi                 REG16_SET(&(_RegCtrl2->CFG_23), CFG_23_REC_ALL4);
5385*53ee8cc1Swenshuai.xi                 break;
5386*53ee8cc1Swenshuai.xi             default:
5387*53ee8cc1Swenshuai.xi                 break;
5388*53ee8cc1Swenshuai.xi         }
5389*53ee8cc1Swenshuai.xi     }
5390*53ee8cc1Swenshuai.xi }
5391*53ee8cc1Swenshuai.xi 
HAL_PVR_RecNull(MS_BOOL bSet)5392*53ee8cc1Swenshuai.xi void HAL_PVR_RecNull(MS_BOOL bSet)
5393*53ee8cc1Swenshuai.xi {
5394*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
5395*53ee8cc1Swenshuai.xi     {
5396*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
5397*53ee8cc1Swenshuai.xi     }
5398*53ee8cc1Swenshuai.xi     else
5399*53ee8cc1Swenshuai.xi     {
5400*53ee8cc1Swenshuai.xi         REG16_CLR(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
5401*53ee8cc1Swenshuai.xi     }
5402*53ee8cc1Swenshuai.xi }
5403*53ee8cc1Swenshuai.xi 
HAL_PVR_SetBuf(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32BufSize0,MS_U32 u32StartAddr1,MS_U32 u32BufSize1)5404*53ee8cc1Swenshuai.xi void HAL_PVR_SetBuf(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32BufSize0, MS_U32 u32StartAddr1, MS_U32 u32BufSize1)
5405*53ee8cc1Swenshuai.xi {
5406*53ee8cc1Swenshuai.xi     // Check MIU select
5407*53ee8cc1Swenshuai.xi     MS_U8 u8MiuSel;
5408*53ee8cc1Swenshuai.xi     MS_PHY phyMiuOffsetPvrBuf0, phyMiuOffsetPvrBuf1;
5409*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetPvrBuf0, u32StartAddr0);
5410*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetPvrBuf1, u32StartAddr1);
5411*53ee8cc1Swenshuai.xi 
5412*53ee8cc1Swenshuai.xi     MS_U32 u32EndAddr0 = phyMiuOffsetPvrBuf0 + u32BufSize0;
5413*53ee8cc1Swenshuai.xi     MS_U32 u32EndAddr1 = phyMiuOffsetPvrBuf1 + u32BufSize1;
5414*53ee8cc1Swenshuai.xi     //MS_U32  u32Temp;
5415*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5416*53ee8cc1Swenshuai.xi     {
5417*53ee8cc1Swenshuai.xi         case 0:
5418*53ee8cc1Swenshuai.xi             // Select MIU
5419*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));
5420*53ee8cc1Swenshuai.xi 
5421*53ee8cc1Swenshuai.xi             //head1
5422*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsRec_Head, (phyMiuOffsetPvrBuf0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5423*53ee8cc1Swenshuai.xi             //end1
5424*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5425*53ee8cc1Swenshuai.xi             //mid1
5426*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (phyMiuOffsetPvrBuf0 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5427*53ee8cc1Swenshuai.xi 
5428*53ee8cc1Swenshuai.xi             //head2
5429*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2pvr1, (phyMiuOffsetPvrBuf1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
5430*53ee8cc1Swenshuai.xi             //end2
5431*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
5432*53ee8cc1Swenshuai.xi             //mid2
5433*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (phyMiuOffsetPvrBuf1>>MIU_BUS) & TSP_HW_PVR1_BUF_MID2_MASK);
5434*53ee8cc1Swenshuai.xi             break;
5435*53ee8cc1Swenshuai.xi         case 1:
5436*53ee8cc1Swenshuai.xi             // Select MIU
5437*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));
5438*53ee8cc1Swenshuai.xi 
5439*53ee8cc1Swenshuai.xi             //head1
5440*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (phyMiuOffsetPvrBuf0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5441*53ee8cc1Swenshuai.xi             //end1
5442*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5443*53ee8cc1Swenshuai.xi             //mid1
5444*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (phyMiuOffsetPvrBuf0 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5445*53ee8cc1Swenshuai.xi 
5446*53ee8cc1Swenshuai.xi             //head2
5447*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (phyMiuOffsetPvrBuf1 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5448*53ee8cc1Swenshuai.xi             //end2
5449*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5450*53ee8cc1Swenshuai.xi             //mid2
5451*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (phyMiuOffsetPvrBuf1 >>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5452*53ee8cc1Swenshuai.xi             break;
5453*53ee8cc1Swenshuai.xi         case 2:
5454*53ee8cc1Swenshuai.xi             // Select MIU
5455*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));
5456*53ee8cc1Swenshuai.xi 
5457*53ee8cc1Swenshuai.xi             //head1
5458*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_17_18), (phyMiuOffsetPvrBuf0 >> MIU_BUS) & CFG_17_18_PVR3_STR2MI_HEAD);
5459*53ee8cc1Swenshuai.xi             //end1
5460*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1B_1C), (u32EndAddr0 >> MIU_BUS) & CFG_1B_1C_PVR3_STR2MI_TAIL);
5461*53ee8cc1Swenshuai.xi             //mid1
5462*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_19_1A), (phyMiuOffsetPvrBuf0 >> MIU_BUS) & CFG_19_1A_PVR3_STR2MI_MID);
5463*53ee8cc1Swenshuai.xi 
5464*53ee8cc1Swenshuai.xi             //head2
5465*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1D_1E), (phyMiuOffsetPvrBuf1 >> MIU_BUS) & CFG_1D_1E_PVR3_STR2MI_HEAD2);
5466*53ee8cc1Swenshuai.xi             //end2
5467*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_21_22), (u32EndAddr1 >> MIU_BUS) & CFG_21_22_PVR3_STR2MI_TAIL2);
5468*53ee8cc1Swenshuai.xi             //mid2
5469*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1F_20), (phyMiuOffsetPvrBuf1 >> MIU_BUS) & CFG_1F_20_PVR3_STR2MI_MID2);
5470*53ee8cc1Swenshuai.xi             break;
5471*53ee8cc1Swenshuai.xi         case 3:
5472*53ee8cc1Swenshuai.xi             // Select MIU
5473*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));
5474*53ee8cc1Swenshuai.xi 
5475*53ee8cc1Swenshuai.xi             //head1
5476*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_24_25), (phyMiuOffsetPvrBuf0>>MIU_BUS) & CFG_24_25_PVR4_STR2MI_HEAD);
5477*53ee8cc1Swenshuai.xi             //end1
5478*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_28_29), (u32EndAddr0>>MIU_BUS) & CFG_28_29_PVR4_STR2MI_TAIL);
5479*53ee8cc1Swenshuai.xi             //mid1
5480*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_26_27), (phyMiuOffsetPvrBuf0>>MIU_BUS) & CFG_26_27_PVR4_STR2MI_MID);
5481*53ee8cc1Swenshuai.xi 
5482*53ee8cc1Swenshuai.xi             //head2
5483*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2A_2B), (phyMiuOffsetPvrBuf1>>MIU_BUS) & CFG_2A_2B_PVR4_STR2MI_HEAD2);
5484*53ee8cc1Swenshuai.xi             //end2
5485*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2E_2F), (u32EndAddr1>>MIU_BUS) & CFG_2E_2F_PVR4_STR2MI_TAIL2);
5486*53ee8cc1Swenshuai.xi             //mid2
5487*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2C_2D), (phyMiuOffsetPvrBuf1>>MIU_BUS) & CFG_2C_2D_PVR4_STR2MI_MID2);
5488*53ee8cc1Swenshuai.xi             break;
5489*53ee8cc1Swenshuai.xi 
5490*53ee8cc1Swenshuai.xi         default:
5491*53ee8cc1Swenshuai.xi             break;
5492*53ee8cc1Swenshuai.xi     }
5493*53ee8cc1Swenshuai.xi }
5494*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32StartAddr1)5495*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32StartAddr1)
5496*53ee8cc1Swenshuai.xi {
5497*53ee8cc1Swenshuai.xi     //MS_U32  u32Temp;
5498*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5499*53ee8cc1Swenshuai.xi     {
5500*53ee8cc1Swenshuai.xi         case 0:
5501*53ee8cc1Swenshuai.xi             //head1
5502*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->TsRec_Head, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5503*53ee8cc1Swenshuai.xi 
5504*53ee8cc1Swenshuai.xi             //head2
5505*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2pvr1, (u32StartAddr1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
5506*53ee8cc1Swenshuai.xi             break;
5507*53ee8cc1Swenshuai.xi         case 1:
5508*53ee8cc1Swenshuai.xi             //head1
5509*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5510*53ee8cc1Swenshuai.xi 
5511*53ee8cc1Swenshuai.xi             //head2
5512*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (u32StartAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5513*53ee8cc1Swenshuai.xi 
5514*53ee8cc1Swenshuai.xi             break;
5515*53ee8cc1Swenshuai.xi         case 2:
5516*53ee8cc1Swenshuai.xi             //head1
5517*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_17_18), (u32StartAddr0>>MIU_BUS) & CFG_17_18_PVR3_STR2MI_HEAD);
5518*53ee8cc1Swenshuai.xi 
5519*53ee8cc1Swenshuai.xi             //head2
5520*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1D_1E), (u32StartAddr1>>MIU_BUS) & CFG_1D_1E_PVR3_STR2MI_HEAD2);
5521*53ee8cc1Swenshuai.xi             break;
5522*53ee8cc1Swenshuai.xi         case 3:
5523*53ee8cc1Swenshuai.xi             //head1
5524*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_24_25), (u32StartAddr0>>MIU_BUS) & CFG_24_25_PVR4_STR2MI_HEAD);
5525*53ee8cc1Swenshuai.xi 
5526*53ee8cc1Swenshuai.xi             //head2
5527*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2A_2B), (u32StartAddr1>>MIU_BUS) & CFG_2A_2B_PVR4_STR2MI_HEAD2);
5528*53ee8cc1Swenshuai.xi             break;
5529*53ee8cc1Swenshuai.xi         default:
5530*53ee8cc1Swenshuai.xi             break;
5531*53ee8cc1Swenshuai.xi     }
5532*53ee8cc1Swenshuai.xi 
5533*53ee8cc1Swenshuai.xi     MS_VIRT virtStart = MsOS_PA2KSEG1(u32StartAddr0);
5534*53ee8cc1Swenshuai.xi     //PA2KSEG1 mapping detection, 0 : not mapping.
5535*53ee8cc1Swenshuai.xi     if(0 == virtStart)
5536*53ee8cc1Swenshuai.xi     {
5537*53ee8cc1Swenshuai.xi         HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_INFO, E_HAL_TSP_DBG_MODEL_ALL, printf("[PA2KSEG1_Mapping][%s][%d] PA2KSEG1_Mapping fail !!\n",__FUNCTION__,__LINE__));
5538*53ee8cc1Swenshuai.xi         _stPvrBuf[u32PVREng].bPA2KSEG1_Mapping= FALSE;
5539*53ee8cc1Swenshuai.xi     }
5540*53ee8cc1Swenshuai.xi     else
5541*53ee8cc1Swenshuai.xi     {
5542*53ee8cc1Swenshuai.xi         if((E_TSP_PVR_PVRENG_START <= u32PVREng) && (E_TSP_PVR_PVRENG_END > u32PVREng)) // PVR Eng number check
5543*53ee8cc1Swenshuai.xi         {
5544*53ee8cc1Swenshuai.xi             _stPvrBuf[u32PVREng].u32Start = u32StartAddr0;
5545*53ee8cc1Swenshuai.xi 
5546*53ee8cc1Swenshuai.xi             if( (!_stPvrBuf[u32PVREng].bOverWrite) && (_stPvrBuf[u32PVREng].u32Start!= 0) )
5547*53ee8cc1Swenshuai.xi             {
5548*53ee8cc1Swenshuai.xi                 *((MS_U64*)(MsOS_PA2KSEG1(_stPvrBuf[u32PVREng].u32Start)))= PVR_NON_OVERWRITE;
5549*53ee8cc1Swenshuai.xi             }
5550*53ee8cc1Swenshuai.xi         }
5551*53ee8cc1Swenshuai.xi         _stPvrBuf[u32PVREng].bPA2KSEG1_Mapping= TRUE;
5552*53ee8cc1Swenshuai.xi     }
5553*53ee8cc1Swenshuai.xi }
5554*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng,MS_U32 u32MidAddr0,MS_U32 u32MidAddr1)5555*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng , MS_U32 u32MidAddr0, MS_U32 u32MidAddr1)
5556*53ee8cc1Swenshuai.xi {
5557*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5558*53ee8cc1Swenshuai.xi     {
5559*53ee8cc1Swenshuai.xi         case 0:
5560*53ee8cc1Swenshuai.xi             //mid1
5561*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
5562*53ee8cc1Swenshuai.xi 
5563*53ee8cc1Swenshuai.xi             //mid2
5564*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (u32MidAddr1>>4) & TSP_HW_PVR1_BUF_MID2_MASK);
5565*53ee8cc1Swenshuai.xi             break;
5566*53ee8cc1Swenshuai.xi         case 1:
5567*53ee8cc1Swenshuai.xi             //mid1
5568*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
5569*53ee8cc1Swenshuai.xi 
5570*53ee8cc1Swenshuai.xi             //mid2
5571*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (u32MidAddr1>>4) & TSP_STR2MI2_ADDR_MASK);
5572*53ee8cc1Swenshuai.xi             break;
5573*53ee8cc1Swenshuai.xi         case 2:
5574*53ee8cc1Swenshuai.xi             //mid1
5575*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_19_1A), (u32MidAddr0>>4) & CFG_19_1A_PVR3_STR2MI_MID);
5576*53ee8cc1Swenshuai.xi 
5577*53ee8cc1Swenshuai.xi             //mid2
5578*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1F_20), (u32MidAddr1>>4) & CFG_1F_20_PVR3_STR2MI_MID2);
5579*53ee8cc1Swenshuai.xi             break;
5580*53ee8cc1Swenshuai.xi         case 3:
5581*53ee8cc1Swenshuai.xi             //mid1
5582*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_26_27), (u32MidAddr0>>4) & CFG_26_27_PVR4_STR2MI_MID);
5583*53ee8cc1Swenshuai.xi 
5584*53ee8cc1Swenshuai.xi             //mid2
5585*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2C_2D), (u32MidAddr1>>4) & CFG_2C_2D_PVR4_STR2MI_MID2);
5586*53ee8cc1Swenshuai.xi             break;
5587*53ee8cc1Swenshuai.xi         default:
5588*53ee8cc1Swenshuai.xi             break;
5589*53ee8cc1Swenshuai.xi     }
5590*53ee8cc1Swenshuai.xi }
5591*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng,MS_U32 u32EndAddr0,MS_U32 u32EndAddr1)5592*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng , MS_U32 u32EndAddr0, MS_U32 u32EndAddr1)
5593*53ee8cc1Swenshuai.xi {
5594*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5595*53ee8cc1Swenshuai.xi     {
5596*53ee8cc1Swenshuai.xi         case 0:
5597*53ee8cc1Swenshuai.xi             //end1
5598*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5599*53ee8cc1Swenshuai.xi 
5600*53ee8cc1Swenshuai.xi             //end2
5601*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
5602*53ee8cc1Swenshuai.xi             break;
5603*53ee8cc1Swenshuai.xi         case 1:
5604*53ee8cc1Swenshuai.xi             //end1
5605*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5606*53ee8cc1Swenshuai.xi 
5607*53ee8cc1Swenshuai.xi             //end2
5608*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
5609*53ee8cc1Swenshuai.xi             break;
5610*53ee8cc1Swenshuai.xi         case 2:
5611*53ee8cc1Swenshuai.xi             //end1
5612*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_1B_1C), (u32EndAddr0>>MIU_BUS) & CFG_1B_1C_PVR3_STR2MI_TAIL);
5613*53ee8cc1Swenshuai.xi 
5614*53ee8cc1Swenshuai.xi             //end2
5615*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_21_22), (u32EndAddr1>>MIU_BUS) & CFG_21_22_PVR3_STR2MI_TAIL2);
5616*53ee8cc1Swenshuai.xi             break;
5617*53ee8cc1Swenshuai.xi         case 3:
5618*53ee8cc1Swenshuai.xi             //end1
5619*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_28_29), (u32EndAddr0>>MIU_BUS) & CFG_28_29_PVR4_STR2MI_TAIL);
5620*53ee8cc1Swenshuai.xi 
5621*53ee8cc1Swenshuai.xi             //end2
5622*53ee8cc1Swenshuai.xi             REG32_W(&(_RegCtrl2->CFG_2E_2F), (u32EndAddr1>>MIU_BUS) & CFG_2E_2F_PVR4_STR2MI_TAIL2);
5623*53ee8cc1Swenshuai.xi             break;
5624*53ee8cc1Swenshuai.xi         default:
5625*53ee8cc1Swenshuai.xi             break;
5626*53ee8cc1Swenshuai.xi     }
5627*53ee8cc1Swenshuai.xi     if(_stPvrBuf[u32PVREng].bPA2KSEG1_Mapping == TRUE)
5628*53ee8cc1Swenshuai.xi     {
5629*53ee8cc1Swenshuai.xi         if((E_TSP_PVR_PVRENG_START <= u32PVREng) && (E_TSP_PVR_PVRENG_END > u32PVREng)) // PVR Eng number check
5630*53ee8cc1Swenshuai.xi         {
5631*53ee8cc1Swenshuai.xi             _stPvrBuf[u32PVREng].u32End = u32EndAddr1;
5632*53ee8cc1Swenshuai.xi         }
5633*53ee8cc1Swenshuai.xi     }
5634*53ee8cc1Swenshuai.xi }
5635*53ee8cc1Swenshuai.xi 
HAL_PVR_GetWritePtr(MS_U32 u32PVREng)5636*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetWritePtr(MS_U32 u32PVREng)
5637*53ee8cc1Swenshuai.xi {
5638*53ee8cc1Swenshuai.xi     MS_U32 WritePtr;
5639*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5640*53ee8cc1Swenshuai.xi     {
5641*53ee8cc1Swenshuai.xi         case 0:
5642*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&_RegCtrl->TsRec_Mid_PVR1_WPTR) << MIU_BUS;
5643*53ee8cc1Swenshuai.xi             break;
5644*53ee8cc1Swenshuai.xi         case 1:
5645*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&_RegCtrl->Str2mi_mid1_wptr_pvr2) << MIU_BUS;
5646*53ee8cc1Swenshuai.xi             break;
5647*53ee8cc1Swenshuai.xi         case 2:
5648*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&(_RegCtrl2->CFG_66_67)) << MIU_BUS;
5649*53ee8cc1Swenshuai.xi             break;
5650*53ee8cc1Swenshuai.xi         case 3:
5651*53ee8cc1Swenshuai.xi             WritePtr = REG32_R(&(_RegCtrl2->CFG_68_69)) << MIU_BUS;
5652*53ee8cc1Swenshuai.xi             break;
5653*53ee8cc1Swenshuai.xi         default:
5654*53ee8cc1Swenshuai.xi             WritePtr = 0;
5655*53ee8cc1Swenshuai.xi             break;
5656*53ee8cc1Swenshuai.xi     }
5657*53ee8cc1Swenshuai.xi     return _Adjust_PVR_WritePtr(u32PVREng, WritePtr);
5658*53ee8cc1Swenshuai.xi }
5659*53ee8cc1Swenshuai.xi 
5660*53ee8cc1Swenshuai.xi 
HAL_PVR_GetEngSrc(MS_U32 u32EngDst,TSP_SRC_SEQ * eSrc)5661*53ee8cc1Swenshuai.xi void HAL_PVR_GetEngSrc(MS_U32 u32EngDst, TSP_SRC_SEQ *eSrc)
5662*53ee8cc1Swenshuai.xi {
5663*53ee8cc1Swenshuai.xi     MS_U16 u16Value = 0;
5664*53ee8cc1Swenshuai.xi 
5665*53ee8cc1Swenshuai.xi     switch(u32EngDst)
5666*53ee8cc1Swenshuai.xi     {
5667*53ee8cc1Swenshuai.xi         case 0:
5668*53ee8cc1Swenshuai.xi             // PVR 1
5669*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR1_SRC_MASK) >> TSP_PVR1_SRC_SHIFT);
5670*53ee8cc1Swenshuai.xi             break;
5671*53ee8cc1Swenshuai.xi         case 1:
5672*53ee8cc1Swenshuai.xi             // PVR 2
5673*53ee8cc1Swenshuai.xi             u16Value = (REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR2_SRC_MASK_L) >> TSP_PVR2_SRC_SHIFT_L;
5674*53ee8cc1Swenshuai.xi             u16Value |= ((REG16_R(&(_RegCtrl->PCR_Cfg)) & TSP_PVR2_SRC_MASK_H) << 1);
5675*53ee8cc1Swenshuai.xi             *eSrc = (TSP_SRC_SEQ)u16Value;
5676*53ee8cc1Swenshuai.xi             break;
5677*53ee8cc1Swenshuai.xi         case 2:
5678*53ee8cc1Swenshuai.xi             // PVR 3
5679*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl2->CFG_15 )) & CFG_15_PVR3_SRC)   >> CFG_15_PVR3_SRC_SHIFT);
5680*53ee8cc1Swenshuai.xi             break;
5681*53ee8cc1Swenshuai.xi         case 3:
5682*53ee8cc1Swenshuai.xi             // PVR 4
5683*53ee8cc1Swenshuai.xi             *eSrc = ((REG16_R(&(_RegCtrl2->CFG_15 )) & CFG_15_PVR4_SRC)   >> CFG_15_PVR4_SRC_SHIFT);
5684*53ee8cc1Swenshuai.xi             break;
5685*53ee8cc1Swenshuai.xi         default:
5686*53ee8cc1Swenshuai.xi             break;
5687*53ee8cc1Swenshuai.xi     }
5688*53ee8cc1Swenshuai.xi }
5689*53ee8cc1Swenshuai.xi 
5690*53ee8cc1Swenshuai.xi 
5691*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)5692*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)
5693*53ee8cc1Swenshuai.xi {
5694*53ee8cc1Swenshuai.xi     switch (u32FileEng)
5695*53ee8cc1Swenshuai.xi     {
5696*53ee8cc1Swenshuai.xi         case 0: //File in Eng 0
5697*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF1;
5698*53ee8cc1Swenshuai.xi         case 1: //File in Eng 1
5699*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF3;
5700*53ee8cc1Swenshuai.xi         case 2: //File in Eng 2
5701*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF0;
5702*53ee8cc1Swenshuai.xi         case 3: //File in Eng 3
5703*53ee8cc1Swenshuai.xi             return E_FILEENG_TSIF2;
5704*53ee8cc1Swenshuai.xi         default:
5705*53ee8cc1Swenshuai.xi             return E_FILEENG_INVALID;
5706*53ee8cc1Swenshuai.xi     }
5707*53ee8cc1Swenshuai.xi }
5708*53ee8cc1Swenshuai.xi 
5709*53ee8cc1Swenshuai.xi // @NOTE for backward competible when calling flowset pvr
5710*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)5711*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)
5712*53ee8cc1Swenshuai.xi {
5713*53ee8cc1Swenshuai.xi     switch(u32Eng)
5714*53ee8cc1Swenshuai.xi     {
5715*53ee8cc1Swenshuai.xi         case 0:
5716*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
5717*53ee8cc1Swenshuai.xi         case 1:
5718*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
5719*53ee8cc1Swenshuai.xi         case 2:
5720*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
5721*53ee8cc1Swenshuai.xi         case 3:
5722*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
5723*53ee8cc1Swenshuai.xi         default:
5724*53ee8cc1Swenshuai.xi             return E_TSP_SRC_INVALID;
5725*53ee8cc1Swenshuai.xi     }
5726*53ee8cc1Swenshuai.xi }
5727*53ee8cc1Swenshuai.xi 
5728*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF,MS_BOOL bFileIn)5729*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF, MS_BOOL bFileIn)
5730*53ee8cc1Swenshuai.xi {
5731*53ee8cc1Swenshuai.xi     MS_U32  u32PhyTSIF = 0;
5732*53ee8cc1Swenshuai.xi     switch (eTSIF)
5733*53ee8cc1Swenshuai.xi     {
5734*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_0:
5735*53ee8cc1Swenshuai.xi             if(bFileIn)
5736*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF1; // @NOTE tsif1 is used for playback0 file-in
5737*53ee8cc1Swenshuai.xi             else
5738*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF0;
5739*53ee8cc1Swenshuai.xi             break;
5740*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_1:
5741*53ee8cc1Swenshuai.xi             if(bFileIn)
5742*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF3; // @NOTE tsif3 is used for playback0 file-in
5743*53ee8cc1Swenshuai.xi             else
5744*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF2;
5745*53ee8cc1Swenshuai.xi             break;
5746*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_2:
5747*53ee8cc1Swenshuai.xi             if(bFileIn)
5748*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF0;
5749*53ee8cc1Swenshuai.xi             else
5750*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF3;
5751*53ee8cc1Swenshuai.xi             break;
5752*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_3:
5753*53ee8cc1Swenshuai.xi             if(bFileIn)
5754*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF2;
5755*53ee8cc1Swenshuai.xi             else
5756*53ee8cc1Swenshuai.xi                 u32PhyTSIF = TSP_TSIF1;
5757*53ee8cc1Swenshuai.xi             break;
5758*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR0:
5759*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF2;
5760*53ee8cc1Swenshuai.xi             break;
5761*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR1:
5762*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF3;
5763*53ee8cc1Swenshuai.xi             break;
5764*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR2:
5765*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF2;
5766*53ee8cc1Swenshuai.xi             break;
5767*53ee8cc1Swenshuai.xi         case E_TSP_HAL_TSIF_PVR3:
5768*53ee8cc1Swenshuai.xi             u32PhyTSIF = TSP_TSIF3;
5769*53ee8cc1Swenshuai.xi             break;
5770*53ee8cc1Swenshuai.xi        default:
5771*53ee8cc1Swenshuai.xi             printf("[PVR ERROR][%s][%d] mapping TSIF error\n",__FUNCTION__,__LINE__);
5772*53ee8cc1Swenshuai.xi             break;
5773*53ee8cc1Swenshuai.xi     }
5774*53ee8cc1Swenshuai.xi 
5775*53ee8cc1Swenshuai.xi     return u32PhyTSIF;
5776*53ee8cc1Swenshuai.xi }
5777*53ee8cc1Swenshuai.xi 
5778*53ee8cc1Swenshuai.xi 
5779*53ee8cc1Swenshuai.xi //   kaiser Only!!!
HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)5780*53ee8cc1Swenshuai.xi TSP_PIDFLT_SRC HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)
5781*53ee8cc1Swenshuai.xi {
5782*53ee8cc1Swenshuai.xi     // @NOTE we map hw pkt dmx setting to api layer flow at this function
5783*53ee8cc1Swenshuai.xi 
5784*53ee8cc1Swenshuai.xi     TSP_PIDFLT_SRC ePidFltSrc = E_TSP_PIDFLT_INVALID;
5785*53ee8cc1Swenshuai.xi 
5786*53ee8cc1Swenshuai.xi     switch (eSrc)
5787*53ee8cc1Swenshuai.xi     {
5788*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
5789*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_LIVE0;
5790*53ee8cc1Swenshuai.xi             break;
5791*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
5792*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_FILE0;
5793*53ee8cc1Swenshuai.xi             break;
5794*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
5795*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_LIVE1;
5796*53ee8cc1Swenshuai.xi             break;
5797*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
5798*53ee8cc1Swenshuai.xi             ePidFltSrc = E_TSP_PIDFLT_FILE1;
5799*53ee8cc1Swenshuai.xi             break;
5800*53ee8cc1Swenshuai.xi         default:
5801*53ee8cc1Swenshuai.xi             // @TODO add assert
5802*53ee8cc1Swenshuai.xi             printf ("[TSP_ERR][%s][%d] Wrong Engine Source!!\n", __FUNCTION__,__LINE__);
5803*53ee8cc1Swenshuai.xi             break;
5804*53ee8cc1Swenshuai.xi     }
5805*53ee8cc1Swenshuai.xi 
5806*53ee8cc1Swenshuai.xi     return ePidFltSrc;
5807*53ee8cc1Swenshuai.xi }
5808*53ee8cc1Swenshuai.xi 
HAL_TSP_GetDefaultFileinEng(void)5809*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_GetDefaultFileinEng(void)
5810*53ee8cc1Swenshuai.xi {
5811*53ee8cc1Swenshuai.xi     return E_FILEENG_TSIF1;
5812*53ee8cc1Swenshuai.xi }
5813*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType,MS_U32 u32Eng)5814*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType, MS_U32 u32Eng)
5815*53ee8cc1Swenshuai.xi {
5816*53ee8cc1Swenshuai.xi     if(eDstType == E_TSP_PIDFLT_DST_VIDEO)
5817*53ee8cc1Swenshuai.xi     {
5818*53ee8cc1Swenshuai.xi         switch(u32Eng)
5819*53ee8cc1Swenshuai.xi         {
5820*53ee8cc1Swenshuai.xi             case 0:
5821*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO;
5822*53ee8cc1Swenshuai.xi             case 1:
5823*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO3D;
5824*53ee8cc1Swenshuai.xi             case 2:
5825*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO3;
5826*53ee8cc1Swenshuai.xi             case 3:
5827*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_VFIFO4;
5828*53ee8cc1Swenshuai.xi             default:
5829*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping Vfifo eng error\n", __FUNCTION__, __LINE__);
5830*53ee8cc1Swenshuai.xi                 return 0;
5831*53ee8cc1Swenshuai.xi         }
5832*53ee8cc1Swenshuai.xi     }
5833*53ee8cc1Swenshuai.xi     else if(eDstType == E_TSP_PIDFLT_DST_AUDIO)
5834*53ee8cc1Swenshuai.xi     {
5835*53ee8cc1Swenshuai.xi         switch(u32Eng)
5836*53ee8cc1Swenshuai.xi         {
5837*53ee8cc1Swenshuai.xi             case 0:
5838*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO;
5839*53ee8cc1Swenshuai.xi             case 1:
5840*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO2;
5841*53ee8cc1Swenshuai.xi             case 2:
5842*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO3;
5843*53ee8cc1Swenshuai.xi             case 3:
5844*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_AFIFO4;
5845*53ee8cc1Swenshuai.xi             default:
5846*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping Afifo eng error\n", __FUNCTION__, __LINE__);
5847*53ee8cc1Swenshuai.xi                 return 0;
5848*53ee8cc1Swenshuai.xi         }
5849*53ee8cc1Swenshuai.xi     }
5850*53ee8cc1Swenshuai.xi     else if(eDstType == E_TSP_PIDFLT_DST_PVR)
5851*53ee8cc1Swenshuai.xi     {
5852*53ee8cc1Swenshuai.xi         switch(u32Eng)
5853*53ee8cc1Swenshuai.xi         {
5854*53ee8cc1Swenshuai.xi             case 0:
5855*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR1;
5856*53ee8cc1Swenshuai.xi             case 1:
5857*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR2;
5858*53ee8cc1Swenshuai.xi             case 2:
5859*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR3;
5860*53ee8cc1Swenshuai.xi             case 3:
5861*53ee8cc1Swenshuai.xi                 return TSP_PIDFLT_OUT_PVR4;
5862*53ee8cc1Swenshuai.xi             default:
5863*53ee8cc1Swenshuai.xi                 printf("[TSP ERROR][%s][%d] mapping PVR eng error\n",__FUNCTION__,__LINE__);
5864*53ee8cc1Swenshuai.xi                 return 0;
5865*53ee8cc1Swenshuai.xi         }
5866*53ee8cc1Swenshuai.xi     }
5867*53ee8cc1Swenshuai.xi     else
5868*53ee8cc1Swenshuai.xi     {
5869*53ee8cc1Swenshuai.xi         printf("[TSP ERROR][%s][%d] pid filter destination type error\n", __FUNCTION__, __LINE__);
5870*53ee8cc1Swenshuai.xi         return 0;
5871*53ee8cc1Swenshuai.xi     }
5872*53ee8cc1Swenshuai.xi }
5873*53ee8cc1Swenshuai.xi 
HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)5874*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)
5875*53ee8cc1Swenshuai.xi {
5876*53ee8cc1Swenshuai.xi     MS_U32  u32Fq = 0;
5877*53ee8cc1Swenshuai.xi 
5878*53ee8cc1Swenshuai.xi     switch (u32Tsif)
5879*53ee8cc1Swenshuai.xi     {
5880*53ee8cc1Swenshuai.xi         case 0:
5881*53ee8cc1Swenshuai.xi             u32Fq = 0;
5882*53ee8cc1Swenshuai.xi             break;
5883*53ee8cc1Swenshuai.xi         case 1:
5884*53ee8cc1Swenshuai.xi             u32Fq = 2;
5885*53ee8cc1Swenshuai.xi             break;
5886*53ee8cc1Swenshuai.xi         case 2:
5887*53ee8cc1Swenshuai.xi             u32Fq = 3;
5888*53ee8cc1Swenshuai.xi             break;
5889*53ee8cc1Swenshuai.xi         case 3:
5890*53ee8cc1Swenshuai.xi             u32Fq = 1;
5891*53ee8cc1Swenshuai.xi             break;
5892*53ee8cc1Swenshuai.xi        default:
5893*53ee8cc1Swenshuai.xi             printf("[PVR ERROR][%s][%d] mapping TSIF:%u error\n",__FUNCTION__,__LINE__,(unsigned int)u32Tsif);
5894*53ee8cc1Swenshuai.xi             break;
5895*53ee8cc1Swenshuai.xi     }
5896*53ee8cc1Swenshuai.xi 
5897*53ee8cc1Swenshuai.xi     return u32Fq;
5898*53ee8cc1Swenshuai.xi }
5899*53ee8cc1Swenshuai.xi 
HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)5900*53ee8cc1Swenshuai.xi TSP_TS_PAD HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)
5901*53ee8cc1Swenshuai.xi {
5902*53ee8cc1Swenshuai.xi     switch(u8Pad3WireId)
5903*53ee8cc1Swenshuai.xi     {
5904*53ee8cc1Swenshuai.xi         case 3:
5905*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT3;
5906*53ee8cc1Swenshuai.xi         case 4:
5907*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT4;
5908*53ee8cc1Swenshuai.xi         case 5:
5909*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT5;
5910*53ee8cc1Swenshuai.xi         case 6:
5911*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_EXT6;
5912*53ee8cc1Swenshuai.xi         default:
5913*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));
5914*53ee8cc1Swenshuai.xi             return E_TSP_TS_PAD_INVALID;
5915*53ee8cc1Swenshuai.xi     }
5916*53ee8cc1Swenshuai.xi }
5917*53ee8cc1Swenshuai.xi 
HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng,MS_BOOL bSet)5918*53ee8cc1Swenshuai.xi void HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng , MS_BOOL bSet)
5919*53ee8cc1Swenshuai.xi {
5920*53ee8cc1Swenshuai.xi     if(bSet)
5921*53ee8cc1Swenshuai.xi     {
5922*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5923*53ee8cc1Swenshuai.xi         {
5924*53ee8cc1Swenshuai.xi             case 0:
5925*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->reg160C, TSP_RECORD192_EN);
5926*53ee8cc1Swenshuai.xi                 break;
5927*53ee8cc1Swenshuai.xi             case 1:
5928*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
5929*53ee8cc1Swenshuai.xi                 break;
5930*53ee8cc1Swenshuai.xi             case 2:
5931*53ee8cc1Swenshuai.xi                 REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_PKT192_EN);
5932*53ee8cc1Swenshuai.xi                 break;
5933*53ee8cc1Swenshuai.xi             case 3:
5934*53ee8cc1Swenshuai.xi                 REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_PKT192_EN);
5935*53ee8cc1Swenshuai.xi                 break;
5936*53ee8cc1Swenshuai.xi             default:
5937*53ee8cc1Swenshuai.xi                 break;
5938*53ee8cc1Swenshuai.xi         }
5939*53ee8cc1Swenshuai.xi     }
5940*53ee8cc1Swenshuai.xi     else
5941*53ee8cc1Swenshuai.xi     {
5942*53ee8cc1Swenshuai.xi         switch(u32PVREng)
5943*53ee8cc1Swenshuai.xi         {
5944*53ee8cc1Swenshuai.xi             case 0:
5945*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->reg160C, TSP_RECORD192_EN);
5946*53ee8cc1Swenshuai.xi                 break;
5947*53ee8cc1Swenshuai.xi             case 1:
5948*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
5949*53ee8cc1Swenshuai.xi                 break;
5950*53ee8cc1Swenshuai.xi             case 2:
5951*53ee8cc1Swenshuai.xi                 REG16_CLR((&_RegCtrl2->CFG_16), CFG_16_PVR3_PKT192_EN);
5952*53ee8cc1Swenshuai.xi                 break;
5953*53ee8cc1Swenshuai.xi             case 3:
5954*53ee8cc1Swenshuai.xi                 REG16_CLR((&_RegCtrl2->CFG_23), CFG_23_PVR4_PKT192_EN);
5955*53ee8cc1Swenshuai.xi                 break;
5956*53ee8cc1Swenshuai.xi             default:
5957*53ee8cc1Swenshuai.xi                 break;
5958*53ee8cc1Swenshuai.xi         }
5959*53ee8cc1Swenshuai.xi     }
5960*53ee8cc1Swenshuai.xi }
5961*53ee8cc1Swenshuai.xi 
HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)5962*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)
5963*53ee8cc1Swenshuai.xi {
5964*53ee8cc1Swenshuai.xi     MS_U32 u32lpcr = 0;
5965*53ee8cc1Swenshuai.xi     switch(u32PVREng)
5966*53ee8cc1Swenshuai.xi     {
5967*53ee8cc1Swenshuai.xi         case 0:
5968*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
5969*53ee8cc1Swenshuai.xi 
5970*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R(&_RegCtrl->PVR1_LPcr1);
5971*53ee8cc1Swenshuai.xi 
5972*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
5973*53ee8cc1Swenshuai.xi 
5974*53ee8cc1Swenshuai.xi             return u32lpcr;
5975*53ee8cc1Swenshuai.xi         case 1:
5976*53ee8cc1Swenshuai.xi             REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
5977*53ee8cc1Swenshuai.xi 
5978*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R(&_RegCtrl->PVR2_LPCR1);
5979*53ee8cc1Swenshuai.xi 
5980*53ee8cc1Swenshuai.xi             REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
5981*53ee8cc1Swenshuai.xi             return u32lpcr;
5982*53ee8cc1Swenshuai.xi         case 2:
5983*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
5984*53ee8cc1Swenshuai.xi 
5985*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R((&_RegCtrl2->CFG_62_63));
5986*53ee8cc1Swenshuai.xi 
5987*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_16), CFG_16_PVR3_LPCR1_RLD);
5988*53ee8cc1Swenshuai.xi             return u32lpcr;
5989*53ee8cc1Swenshuai.xi         case 3:
5990*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
5991*53ee8cc1Swenshuai.xi 
5992*53ee8cc1Swenshuai.xi             u32lpcr = REG32_R((&_RegCtrl2->CFG_64_65));
5993*53ee8cc1Swenshuai.xi 
5994*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_23), CFG_23_PVR4_LPCR1_RLD);
5995*53ee8cc1Swenshuai.xi             return u32lpcr;
5996*53ee8cc1Swenshuai.xi         default:
5997*53ee8cc1Swenshuai.xi             break;
5998*53ee8cc1Swenshuai.xi     }
5999*53ee8cc1Swenshuai.xi     return 0;
6000*53ee8cc1Swenshuai.xi }
6001*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng,MS_U32 u32Stamp)6002*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng , MS_U32 u32Stamp)
6003*53ee8cc1Swenshuai.xi {
6004*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6005*53ee8cc1Swenshuai.xi     {
6006*53ee8cc1Swenshuai.xi         case 0:
6007*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
6008*53ee8cc1Swenshuai.xi 
6009*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PVR1_LPcr1, u32Stamp);
6010*53ee8cc1Swenshuai.xi 
6011*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
6012*53ee8cc1Swenshuai.xi             break;
6013*53ee8cc1Swenshuai.xi         case 1:
6014*53ee8cc1Swenshuai.xi             REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
6015*53ee8cc1Swenshuai.xi 
6016*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->PVR2_LPCR1, u32Stamp);
6017*53ee8cc1Swenshuai.xi 
6018*53ee8cc1Swenshuai.xi             REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
6019*53ee8cc1Swenshuai.xi             break;
6020*53ee8cc1Swenshuai.xi         case 2:
6021*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_LPCR1_WLD);
6022*53ee8cc1Swenshuai.xi 
6023*53ee8cc1Swenshuai.xi             REG32_W((&_RegCtrl2->CFG_62_63), u32Stamp);
6024*53ee8cc1Swenshuai.xi 
6025*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_LPCR1_WLD);
6026*53ee8cc1Swenshuai.xi             break;
6027*53ee8cc1Swenshuai.xi         case 3:
6028*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_LPCR1_WLD);
6029*53ee8cc1Swenshuai.xi 
6030*53ee8cc1Swenshuai.xi             REG32_W((&_RegCtrl2->CFG_64_65), u32Stamp);
6031*53ee8cc1Swenshuai.xi 
6032*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_LPCR1_WLD);
6033*53ee8cc1Swenshuai.xi             break;
6034*53ee8cc1Swenshuai.xi         default:
6035*53ee8cc1Swenshuai.xi             break;
6036*53ee8cc1Swenshuai.xi     }
6037*53ee8cc1Swenshuai.xi }
6038*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng,MS_U32 u32Stamp)6039*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng , MS_U32 u32Stamp)
6040*53ee8cc1Swenshuai.xi {
6041*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6042*53ee8cc1Swenshuai.xi     {
6043*53ee8cc1Swenshuai.xi         case 0:
6044*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
6045*53ee8cc1Swenshuai.xi 
6046*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_56_57, u32Stamp);
6047*53ee8cc1Swenshuai.xi 
6048*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
6049*53ee8cc1Swenshuai.xi             break;
6050*53ee8cc1Swenshuai.xi         case 1:
6051*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
6052*53ee8cc1Swenshuai.xi 
6053*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_58_59, u32Stamp);
6054*53ee8cc1Swenshuai.xi 
6055*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
6056*53ee8cc1Swenshuai.xi             break;
6057*53ee8cc1Swenshuai.xi         case 2:
6058*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD2);
6059*53ee8cc1Swenshuai.xi 
6060*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_5A_5B, u32Stamp);
6061*53ee8cc1Swenshuai.xi 
6062*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD2);
6063*53ee8cc1Swenshuai.xi             break;
6064*53ee8cc1Swenshuai.xi         case 3:
6065*53ee8cc1Swenshuai.xi             REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD3);
6066*53ee8cc1Swenshuai.xi 
6067*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl2->CFG_5C_5D, u32Stamp);
6068*53ee8cc1Swenshuai.xi 
6069*53ee8cc1Swenshuai.xi             REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD3);
6070*53ee8cc1Swenshuai.xi             break;
6071*53ee8cc1Swenshuai.xi         default:
6072*53ee8cc1Swenshuai.xi             break;
6073*53ee8cc1Swenshuai.xi     }
6074*53ee8cc1Swenshuai.xi }
6075*53ee8cc1Swenshuai.xi 
HAL_PVR_Alignment_Enable(MS_U32 u32PVREng,MS_BOOL bEnable)6076*53ee8cc1Swenshuai.xi void HAL_PVR_Alignment_Enable(MS_U32 u32PVREng, MS_BOOL bEnable)
6077*53ee8cc1Swenshuai.xi {
6078*53ee8cc1Swenshuai.xi     if(bEnable)
6079*53ee8cc1Swenshuai.xi     {
6080*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6081*53ee8cc1Swenshuai.xi         {
6082*53ee8cc1Swenshuai.xi             case 0:
6083*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
6084*53ee8cc1Swenshuai.xi                 break;
6085*53ee8cc1Swenshuai.xi             case 1:
6086*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
6087*53ee8cc1Swenshuai.xi                 break;
6088*53ee8cc1Swenshuai.xi             case 2:
6089*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_PVR_ALIGN_EN);
6090*53ee8cc1Swenshuai.xi                 break;
6091*53ee8cc1Swenshuai.xi             case 3:
6092*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_PVR_ALIGN_EN);
6093*53ee8cc1Swenshuai.xi                 break;
6094*53ee8cc1Swenshuai.xi             default:
6095*53ee8cc1Swenshuai.xi                 break;
6096*53ee8cc1Swenshuai.xi         }
6097*53ee8cc1Swenshuai.xi     }
6098*53ee8cc1Swenshuai.xi     else
6099*53ee8cc1Swenshuai.xi     {
6100*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6101*53ee8cc1Swenshuai.xi         {
6102*53ee8cc1Swenshuai.xi             case 0:
6103*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
6104*53ee8cc1Swenshuai.xi                 break;
6105*53ee8cc1Swenshuai.xi             case 1:
6106*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
6107*53ee8cc1Swenshuai.xi                 break;
6108*53ee8cc1Swenshuai.xi             case 2:
6109*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_PVR_ALIGN_EN);
6110*53ee8cc1Swenshuai.xi                 break;
6111*53ee8cc1Swenshuai.xi             case 3:
6112*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_PVR_ALIGN_EN);
6113*53ee8cc1Swenshuai.xi                 break;
6114*53ee8cc1Swenshuai.xi             default:
6115*53ee8cc1Swenshuai.xi                 break;
6116*53ee8cc1Swenshuai.xi         }
6117*53ee8cc1Swenshuai.xi     }
6118*53ee8cc1Swenshuai.xi }
6119*53ee8cc1Swenshuai.xi 
HAL_PVR_FlushData(MS_U32 u32PVREng)6120*53ee8cc1Swenshuai.xi void HAL_PVR_FlushData(MS_U32 u32PVREng)
6121*53ee8cc1Swenshuai.xi {
6122*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6123*53ee8cc1Swenshuai.xi     {
6124*53ee8cc1Swenshuai.xi         case 0:
6125*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
6126*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
6127*53ee8cc1Swenshuai.xi             break;
6128*53ee8cc1Swenshuai.xi         case 1:
6129*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
6130*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
6131*53ee8cc1Swenshuai.xi             break;
6132*53ee8cc1Swenshuai.xi         case 2:
6133*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR2_DATA);
6134*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR2_DATA);
6135*53ee8cc1Swenshuai.xi             break;
6136*53ee8cc1Swenshuai.xi         case 3:
6137*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR3_DATA);
6138*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR3_DATA);
6139*53ee8cc1Swenshuai.xi             break;
6140*53ee8cc1Swenshuai.xi         default:
6141*53ee8cc1Swenshuai.xi             break;
6142*53ee8cc1Swenshuai.xi     }
6143*53ee8cc1Swenshuai.xi }
6144*53ee8cc1Swenshuai.xi 
HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)6145*53ee8cc1Swenshuai.xi void HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)
6146*53ee8cc1Swenshuai.xi {
6147*53ee8cc1Swenshuai.xi     if(bSkip)
6148*53ee8cc1Swenshuai.xi     {
6149*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6150*53ee8cc1Swenshuai.xi         {
6151*53ee8cc1Swenshuai.xi             case 0:
6152*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
6153*53ee8cc1Swenshuai.xi                 break;
6154*53ee8cc1Swenshuai.xi             case 1:
6155*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
6156*53ee8cc1Swenshuai.xi                 break;
6157*53ee8cc1Swenshuai.xi             case 2:
6158*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR3_EN);
6159*53ee8cc1Swenshuai.xi                 break;
6160*53ee8cc1Swenshuai.xi             case 3:
6161*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR4_EN);
6162*53ee8cc1Swenshuai.xi                 break;
6163*53ee8cc1Swenshuai.xi             default:
6164*53ee8cc1Swenshuai.xi                 break;
6165*53ee8cc1Swenshuai.xi         }
6166*53ee8cc1Swenshuai.xi     }
6167*53ee8cc1Swenshuai.xi     else
6168*53ee8cc1Swenshuai.xi     {
6169*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6170*53ee8cc1Swenshuai.xi         {
6171*53ee8cc1Swenshuai.xi             case 0:
6172*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
6173*53ee8cc1Swenshuai.xi                 break;
6174*53ee8cc1Swenshuai.xi             case 1:
6175*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
6176*53ee8cc1Swenshuai.xi                 break;
6177*53ee8cc1Swenshuai.xi             case 2:
6178*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR3_EN);
6179*53ee8cc1Swenshuai.xi                 break;
6180*53ee8cc1Swenshuai.xi             case 3:
6181*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR4_EN);
6182*53ee8cc1Swenshuai.xi                 break;
6183*53ee8cc1Swenshuai.xi             default:
6184*53ee8cc1Swenshuai.xi                 break;
6185*53ee8cc1Swenshuai.xi         }
6186*53ee8cc1Swenshuai.xi     }
6187*53ee8cc1Swenshuai.xi }
6188*53ee8cc1Swenshuai.xi 
6189*53ee8cc1Swenshuai.xi 
HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)6190*53ee8cc1Swenshuai.xi void HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)
6191*53ee8cc1Swenshuai.xi {
6192*53ee8cc1Swenshuai.xi     if(bDisable)
6193*53ee8cc1Swenshuai.xi     {
6194*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6195*53ee8cc1Swenshuai.xi         {
6196*53ee8cc1Swenshuai.xi             case 0:
6197*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
6198*53ee8cc1Swenshuai.xi                 break;
6199*53ee8cc1Swenshuai.xi             case 1:
6200*53ee8cc1Swenshuai.xi                 REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
6201*53ee8cc1Swenshuai.xi                 break;
6202*53ee8cc1Swenshuai.xi             case 2:
6203*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PVR3_BLOCK_DIS);
6204*53ee8cc1Swenshuai.xi                 break;
6205*53ee8cc1Swenshuai.xi             case 3:
6206*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PVR4_BLOCK_DIS);
6207*53ee8cc1Swenshuai.xi                 break;
6208*53ee8cc1Swenshuai.xi             default:
6209*53ee8cc1Swenshuai.xi                 break;
6210*53ee8cc1Swenshuai.xi         }
6211*53ee8cc1Swenshuai.xi     }
6212*53ee8cc1Swenshuai.xi     else
6213*53ee8cc1Swenshuai.xi     {
6214*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6215*53ee8cc1Swenshuai.xi         {
6216*53ee8cc1Swenshuai.xi             case 0:
6217*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
6218*53ee8cc1Swenshuai.xi                 break;
6219*53ee8cc1Swenshuai.xi             case 1:
6220*53ee8cc1Swenshuai.xi                 REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
6221*53ee8cc1Swenshuai.xi                 break;
6222*53ee8cc1Swenshuai.xi             case 2:
6223*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_16, CFG_16_PVR3_BLOCK_DIS);
6224*53ee8cc1Swenshuai.xi                 break;
6225*53ee8cc1Swenshuai.xi             case 3:
6226*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl2->CFG_23, CFG_23_PVR4_BLOCK_DIS);
6227*53ee8cc1Swenshuai.xi                 break;
6228*53ee8cc1Swenshuai.xi             default:
6229*53ee8cc1Swenshuai.xi                 break;
6230*53ee8cc1Swenshuai.xi         }
6231*53ee8cc1Swenshuai.xi 
6232*53ee8cc1Swenshuai.xi     }
6233*53ee8cc1Swenshuai.xi }
6234*53ee8cc1Swenshuai.xi 
HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)6235*53ee8cc1Swenshuai.xi void HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)
6236*53ee8cc1Swenshuai.xi {
6237*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6238*53ee8cc1Swenshuai.xi     {
6239*53ee8cc1Swenshuai.xi         case 0:
6240*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl->reg15b8, TSP_BURST_LEN_MASK, (u16BurstMode << TSP_BURST_LEN_SHIFT));
6241*53ee8cc1Swenshuai.xi             break;
6242*53ee8cc1Swenshuai.xi         case 1:
6243*53ee8cc1Swenshuai.xi             REG32_MSK_W(&_RegCtrl->PVR2_Config, TSP_PVR2_BURST_LEN_MASK, (u16BurstMode << TSP_PVR2_BURST_LEN_SHIFT));
6244*53ee8cc1Swenshuai.xi             break;
6245*53ee8cc1Swenshuai.xi         case 2:
6246*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_16, CFG_16_PVR3_BURST_LEN_MASK, (u16BurstMode << CFG_16_PVR3_BURST_LEN_SHIFT));
6247*53ee8cc1Swenshuai.xi             break;
6248*53ee8cc1Swenshuai.xi         case 3:
6249*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_23, CFG_23_PVR4_BURST_LEN_MASK, (u16BurstMode << CFG_23_PVR4_BURST_LEN_SHIFT));
6250*53ee8cc1Swenshuai.xi             break;
6251*53ee8cc1Swenshuai.xi         default:
6252*53ee8cc1Swenshuai.xi             break;
6253*53ee8cc1Swenshuai.xi     }
6254*53ee8cc1Swenshuai.xi }
6255*53ee8cc1Swenshuai.xi 
HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng,MS_BOOL bLocal_Stream)6256*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng, MS_BOOL bLocal_Stream)
6257*53ee8cc1Swenshuai.xi {
6258*53ee8cc1Swenshuai.xi     if (u32PVREng>=TSP_PVRENG_NUM)
6259*53ee8cc1Swenshuai.xi     {
6260*53ee8cc1Swenshuai.xi         return;
6261*53ee8cc1Swenshuai.xi     }
6262*53ee8cc1Swenshuai.xi 
6263*53ee8cc1Swenshuai.xi     if (bLocal_Stream) //Stream
6264*53ee8cc1Swenshuai.xi     {
6265*53ee8cc1Swenshuai.xi         REG16_SET((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
6266*53ee8cc1Swenshuai.xi     }
6267*53ee8cc1Swenshuai.xi     else //local
6268*53ee8cc1Swenshuai.xi     {
6269*53ee8cc1Swenshuai.xi         REG16_CLR((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
6270*53ee8cc1Swenshuai.xi     }
6271*53ee8cc1Swenshuai.xi }
6272*53ee8cc1Swenshuai.xi 
HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)6273*53ee8cc1Swenshuai.xi void HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)
6274*53ee8cc1Swenshuai.xi {
6275*53ee8cc1Swenshuai.xi     if(bEnable)
6276*53ee8cc1Swenshuai.xi     {
6277*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6278*53ee8cc1Swenshuai.xi         {
6279*53ee8cc1Swenshuai.xi             case 0:
6280*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
6281*53ee8cc1Swenshuai.xi                 break;
6282*53ee8cc1Swenshuai.xi             case 1:
6283*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
6284*53ee8cc1Swenshuai.xi                 break;
6285*53ee8cc1Swenshuai.xi             case 2:
6286*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL3);
6287*53ee8cc1Swenshuai.xi                 break;
6288*53ee8cc1Swenshuai.xi             case 3:
6289*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL4);
6290*53ee8cc1Swenshuai.xi                 break;
6291*53ee8cc1Swenshuai.xi             default:
6292*53ee8cc1Swenshuai.xi                 break;
6293*53ee8cc1Swenshuai.xi         }
6294*53ee8cc1Swenshuai.xi     }
6295*53ee8cc1Swenshuai.xi     else
6296*53ee8cc1Swenshuai.xi     {
6297*53ee8cc1Swenshuai.xi         switch(u32PVREng)
6298*53ee8cc1Swenshuai.xi         {
6299*53ee8cc1Swenshuai.xi             case 0:
6300*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
6301*53ee8cc1Swenshuai.xi                 break;
6302*53ee8cc1Swenshuai.xi             case 1:
6303*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
6304*53ee8cc1Swenshuai.xi                 break;
6305*53ee8cc1Swenshuai.xi             case 2:
6306*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL3);
6307*53ee8cc1Swenshuai.xi                 break;
6308*53ee8cc1Swenshuai.xi             case 3:
6309*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL4);
6310*53ee8cc1Swenshuai.xi                 break;
6311*53ee8cc1Swenshuai.xi             default:
6312*53ee8cc1Swenshuai.xi                 break;
6313*53ee8cc1Swenshuai.xi         }
6314*53ee8cc1Swenshuai.xi     }
6315*53ee8cc1Swenshuai.xi }
6316*53ee8cc1Swenshuai.xi 
HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)6317*53ee8cc1Swenshuai.xi void HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)
6318*53ee8cc1Swenshuai.xi {
6319*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6320*53ee8cc1Swenshuai.xi     {
6321*53ee8cc1Swenshuai.xi         case 0:
6322*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_44_45, u32PauseTime);
6323*53ee8cc1Swenshuai.xi             break;
6324*53ee8cc1Swenshuai.xi         case 1:
6325*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_46_47, u32PauseTime);
6326*53ee8cc1Swenshuai.xi             break;
6327*53ee8cc1Swenshuai.xi         case 2:
6328*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_48_49, u32PauseTime);
6329*53ee8cc1Swenshuai.xi             break;
6330*53ee8cc1Swenshuai.xi         case 3:
6331*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_4A_4B, u32PauseTime);
6332*53ee8cc1Swenshuai.xi             break;
6333*53ee8cc1Swenshuai.xi         default:
6334*53ee8cc1Swenshuai.xi             break;
6335*53ee8cc1Swenshuai.xi     }
6336*53ee8cc1Swenshuai.xi }
6337*53ee8cc1Swenshuai.xi 
HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId,MS_BOOL bEnable)6338*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId, MS_BOOL bEnable)
6339*53ee8cc1Swenshuai.xi {
6340*53ee8cc1Swenshuai.xi     if (bEnable)
6341*53ee8cc1Swenshuai.xi     {
6342*53ee8cc1Swenshuai.xi         REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
6343*53ee8cc1Swenshuai.xi     }
6344*53ee8cc1Swenshuai.xi     else
6345*53ee8cc1Swenshuai.xi     {
6346*53ee8cc1Swenshuai.xi         REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
6347*53ee8cc1Swenshuai.xi     }
6348*53ee8cc1Swenshuai.xi }
6349*53ee8cc1Swenshuai.xi 
HAL_PVR_MOBF_Enable(MS_U32 u32PVREng,MS_BOOL bEnable,MS_U32 u32Key)6350*53ee8cc1Swenshuai.xi void HAL_PVR_MOBF_Enable(MS_U32 u32PVREng, MS_BOOL bEnable, MS_U32 u32Key)
6351*53ee8cc1Swenshuai.xi {
6352*53ee8cc1Swenshuai.xi     switch(u32PVREng)
6353*53ee8cc1Swenshuai.xi     {
6354*53ee8cc1Swenshuai.xi         case 0:
6355*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->MOBF_PVR1_Index[0], (u32Key & TSP_MOBF_PVR1_INDEX_MASK));
6356*53ee8cc1Swenshuai.xi             break;
6357*53ee8cc1Swenshuai.xi         case 1:
6358*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl->MOBF_PVR2_Index[0], (u32Key & TSP_MOBF_PVR2_INDEX_MASK));
6359*53ee8cc1Swenshuai.xi             break;
6360*53ee8cc1Swenshuai.xi         case 2:
6361*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_78_7B[0], (u32Key & CFG_78_PVR3_INDEX));
6362*53ee8cc1Swenshuai.xi             break;
6363*53ee8cc1Swenshuai.xi         case 3:
6364*53ee8cc1Swenshuai.xi             REG16_W(&_RegCtrl2->CFG_78_7B[2], (u32Key & CFG_78_PVR3_INDEX));
6365*53ee8cc1Swenshuai.xi             break;
6366*53ee8cc1Swenshuai.xi         default:
6367*53ee8cc1Swenshuai.xi             break;
6368*53ee8cc1Swenshuai.xi     }
6369*53ee8cc1Swenshuai.xi }
6370*53ee8cc1Swenshuai.xi 
6371*53ee8cc1Swenshuai.xi /*
6372*53ee8cc1Swenshuai.xi void HAL_PVR_SetTSIF(MS_U32 u32PVREng , MS_BOOL bPara, MS_BOOL bExtSync, MS_BOOL bDataSWP)
6373*53ee8cc1Swenshuai.xi {
6374*53ee8cc1Swenshuai.xi     if (bPara)
6375*53ee8cc1Swenshuai.xi     {
6376*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
6377*53ee8cc1Swenshuai.xi     }
6378*53ee8cc1Swenshuai.xi     else
6379*53ee8cc1Swenshuai.xi     {
6380*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
6381*53ee8cc1Swenshuai.xi     }
6382*53ee8cc1Swenshuai.xi 
6383*53ee8cc1Swenshuai.xi     if (bExtSync)
6384*53ee8cc1Swenshuai.xi     {
6385*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
6386*53ee8cc1Swenshuai.xi     }
6387*53ee8cc1Swenshuai.xi     else
6388*53ee8cc1Swenshuai.xi     {
6389*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
6390*53ee8cc1Swenshuai.xi     }
6391*53ee8cc1Swenshuai.xi 
6392*53ee8cc1Swenshuai.xi     if (bDataSWP)
6393*53ee8cc1Swenshuai.xi     {
6394*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6395*53ee8cc1Swenshuai.xi     }
6396*53ee8cc1Swenshuai.xi     else
6397*53ee8cc1Swenshuai.xi     {
6398*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6399*53ee8cc1Swenshuai.xi     }
6400*53ee8cc1Swenshuai.xi }
6401*53ee8cc1Swenshuai.xi 
6402*53ee8cc1Swenshuai.xi void HAL_PVR_RecAtSync_Dis(MS_U32 u32PVREng, MS_BOOL bDis)
6403*53ee8cc1Swenshuai.xi {
6404*53ee8cc1Swenshuai.xi     if(bDis)
6405*53ee8cc1Swenshuai.xi     {
6406*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
6407*53ee8cc1Swenshuai.xi     }
6408*53ee8cc1Swenshuai.xi     else
6409*53ee8cc1Swenshuai.xi     {
6410*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
6411*53ee8cc1Swenshuai.xi     }
6412*53ee8cc1Swenshuai.xi }
6413*53ee8cc1Swenshuai.xi 
6414*53ee8cc1Swenshuai.xi void HAL_PVR_SetDataSwap(MS_U32 u32PVREng, MS_BOOL bEn)
6415*53ee8cc1Swenshuai.xi {
6416*53ee8cc1Swenshuai.xi     if(bEn)
6417*53ee8cc1Swenshuai.xi     {
6418*53ee8cc1Swenshuai.xi         REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6419*53ee8cc1Swenshuai.xi     }
6420*53ee8cc1Swenshuai.xi     else
6421*53ee8cc1Swenshuai.xi     {
6422*53ee8cc1Swenshuai.xi         REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
6423*53ee8cc1Swenshuai.xi     }
6424*53ee8cc1Swenshuai.xi }
6425*53ee8cc1Swenshuai.xi */
6426*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)6427*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)
6428*53ee8cc1Swenshuai.xi {
6429*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6430*53ee8cc1Swenshuai.xi 
6431*53ee8cc1Swenshuai.xi //reserved
6432*53ee8cc1Swenshuai.xi     switch (u32Type)
6433*53ee8cc1Swenshuai.xi     {
6434*53ee8cc1Swenshuai.xi 
6435*53ee8cc1Swenshuai.xi     case INFO_FW_VERSION:
6436*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
6437*53ee8cc1Swenshuai.xi     break;
6438*53ee8cc1Swenshuai.xi     case INFO_FW_DATE:
6439*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_DATE);
6440*53ee8cc1Swenshuai.xi         break;
6441*53ee8cc1Swenshuai.xi     default:
6442*53ee8cc1Swenshuai.xi         REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
6443*53ee8cc1Swenshuai.xi         break;
6444*53ee8cc1Swenshuai.xi 
6445*53ee8cc1Swenshuai.xi     }
6446*53ee8cc1Swenshuai.xi 
6447*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_INFO);
6448*53ee8cc1Swenshuai.xi 
6449*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6450*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6451*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6452*53ee8cc1Swenshuai.xi 
6453*53ee8cc1Swenshuai.xi     return u32Data;
6454*53ee8cc1Swenshuai.xi }
6455*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_BufRst(MS_U32 u32Value)6456*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value)
6457*53ee8cc1Swenshuai.xi {
6458*53ee8cc1Swenshuai.xi  //   MS_U32              u32Data;
6459*53ee8cc1Swenshuai.xi 
6460*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0 , u32Value);
6461*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd   , TSP_MCU_CMD_BUFRST);
6462*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6463*53ee8cc1Swenshuai.xi 
6464*53ee8cc1Swenshuai.xi     return TRUE;
6465*53ee8cc1Swenshuai.xi }
6466*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Read(MS_U32 u32Addr)6467*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Read(MS_U32 u32Addr)
6468*53ee8cc1Swenshuai.xi {
6469*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6470*53ee8cc1Swenshuai.xi 
6471*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
6472*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_READ);
6473*53ee8cc1Swenshuai.xi 
6474*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6475*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6476*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6477*53ee8cc1Swenshuai.xi 
6478*53ee8cc1Swenshuai.xi     return u32Data;
6479*53ee8cc1Swenshuai.xi }
6480*53ee8cc1Swenshuai.xi 
6481*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Write(MS_U32 u32Addr,MS_U32 u32Value)6482*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Write(MS_U32 u32Addr, MS_U32 u32Value)
6483*53ee8cc1Swenshuai.xi {
6484*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6485*53ee8cc1Swenshuai.xi 
6486*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
6487*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, u32Value);
6488*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_WRITE);
6489*53ee8cc1Swenshuai.xi 
6490*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6491*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6492*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6493*53ee8cc1Swenshuai.xi 
6494*53ee8cc1Swenshuai.xi     return TRUE;
6495*53ee8cc1Swenshuai.xi }
6496*53ee8cc1Swenshuai.xi 
6497*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Alive(void)6498*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Alive(void)
6499*53ee8cc1Swenshuai.xi {
6500*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6501*53ee8cc1Swenshuai.xi 
6502*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, 0);
6503*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_ALIVE);  //@TODO check FW HCMD
6504*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6505*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6506*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6507*53ee8cc1Swenshuai.xi 
6508*53ee8cc1Swenshuai.xi     return (u32Data == TSP_MCU_DATA_ALIVE)? TRUE : FALSE;
6509*53ee8cc1Swenshuai.xi }
6510*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_SET(MS_U32 mcu_cmd,MS_U32 mcu_data0,MS_U32 mcu_data1)6511*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SET(MS_U32 mcu_cmd, MS_U32 mcu_data0, MS_U32 mcu_data1)
6512*53ee8cc1Swenshuai.xi {
6513*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, mcu_data0);
6514*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1, mcu_data1);
6515*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd,   mcu_cmd);
6516*53ee8cc1Swenshuai.xi }
6517*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_GET(MS_U32 * pmcu_cmd,MS_U32 * pmcu_data0,MS_U32 * pmcu_data1)6518*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_GET(MS_U32* pmcu_cmd, MS_U32* pmcu_data0, MS_U32* pmcu_data1)
6519*53ee8cc1Swenshuai.xi {
6520*53ee8cc1Swenshuai.xi     *pmcu_cmd   = REG32_R(&_RegCtrl->MCU_Cmd);
6521*53ee8cc1Swenshuai.xi     *pmcu_data0 = REG32_R(&_RegCtrl->MCU_Data0);
6522*53ee8cc1Swenshuai.xi     *pmcu_data1 = REG32_R(&_RegCtrl->MCU_Data1);
6523*53ee8cc1Swenshuai.xi }
6524*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId,MS_BOOL bDis)6525*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId ,MS_BOOL bDis)
6526*53ee8cc1Swenshuai.xi {
6527*53ee8cc1Swenshuai.xi     MS_U32              u32Data = bDis ;
6528*53ee8cc1Swenshuai.xi 
6529*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, FltId);
6530*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data1,u32Data);
6531*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SECRDYINT_DISABLE); // @TODO add HCMD list here
6532*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6533*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6534*53ee8cc1Swenshuai.xi 
6535*53ee8cc1Swenshuai.xi     return ;
6536*53ee8cc1Swenshuai.xi }
6537*53ee8cc1Swenshuai.xi 
HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)6538*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)
6539*53ee8cc1Swenshuai.xi {
6540*53ee8cc1Swenshuai.xi     MS_U32              u32Data;
6541*53ee8cc1Swenshuai.xi 
6542*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Data0, u32Enable);
6543*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_DBG);
6544*53ee8cc1Swenshuai.xi 
6545*53ee8cc1Swenshuai.xi     _delay(10); // supposed TSP is able to respond in 10us
6546*53ee8cc1Swenshuai.xi     u32Data = REG32_R(&_RegCtrl->MCU_Data1);
6547*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
6548*53ee8cc1Swenshuai.xi 
6549*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->MCU_Data1);
6550*53ee8cc1Swenshuai.xi }
6551*53ee8cc1Swenshuai.xi 
HAL_TSP_GetDBGStatus(MS_U16 u16Sel)6552*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_GetDBGStatus(MS_U16 u16Sel)
6553*53ee8cc1Swenshuai.xi {
6554*53ee8cc1Swenshuai.xi     REG16_CLR(&_RegCtrl->DBG_SEL, TSP_DBG_SEL_MASK);
6555*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->DBG_SEL, ((u16Sel << TSP_DBG_SEL_SHIFT) & TSP_DBG_SEL_MASK));
6556*53ee8cc1Swenshuai.xi 
6557*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->TSP_Debug);
6558*53ee8cc1Swenshuai.xi }
6559*53ee8cc1Swenshuai.xi 
6560*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_Enable(MS_U32 u32Mask)6561*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Enable(MS_U32 u32Mask)
6562*53ee8cc1Swenshuai.xi {
6563*53ee8cc1Swenshuai.xi     // u32Mask [0:7] for bank 0x15 7e bit[0:7]
6564*53ee8cc1Swenshuai.xi         /*
6565*53ee8cc1Swenshuai.xi             7: audio/video packet error
6566*53ee8cc1Swenshuai.xi             6: DMA read done
6567*53ee8cc1Swenshuai.xi             5: HK_INT_FORCE.            // it's trigure bit is at bank 15 44 bit[15]
6568*53ee8cc1Swenshuai.xi             4: TSP_FILE_RP meets TSP_FILE_TAIL.
6569*53ee8cc1Swenshuai.xi             3: TSP_FILE_RP meets TSP_FILE_MID.
6570*53ee8cc1Swenshuai.xi             2: HK_INT_FORCE.            // it's trigure bit is at bank 15 39 bit[15]
6571*53ee8cc1Swenshuai.xi             1: STR2MI_WADR meets STR2MI_MID.
6572*53ee8cc1Swenshuai.xi             0: STR2MI_WADR meets STR2MI_TAIL."
6573*53ee8cc1Swenshuai.xi         */
6574*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt_Stat, (TSP_HWINT_EN_MASK & u32Mask) | TSP_HWINT_STATUS_MASK);
6575*53ee8cc1Swenshuai.xi 
6576*53ee8cc1Swenshuai.xi     // u32Mask [8:15] for bank 0x16 6c bit[0:7]
6577*53ee8cc1Swenshuai.xi         /*
6578*53ee8cc1Swenshuai.xi             [7] : PVR2 meet_tail  or PVR2_meet_mid
6579*53ee8cc1Swenshuai.xi             [6] : vq0, vq1, vq2, vq3 overflow interrupt
6580*53ee8cc1Swenshuai.xi             [5] : all DMA write address not in the protect zone interrupt
6581*53ee8cc1Swenshuai.xi             [4] : PVR_cb meet the mid or PVR_cb meet the tail
6582*53ee8cc1Swenshuai.xi             [3] : pcr filter 0 update finish
6583*53ee8cc1Swenshuai.xi             [2] : pcr filter 1 update finish
6584*53ee8cc1Swenshuai.xi             [1] : OTV HW interrupt
6585*53ee8cc1Swenshuai.xi             [0] : reserved
6586*53ee8cc1Swenshuai.xi         */
6587*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt2_Stat, (TSP_HWINT2_EN_MASK & (u32Mask >> 8)) | TSP_HWINT2_STATUS_MASK);
6588*53ee8cc1Swenshuai.xi 
6589*53ee8cc1Swenshuai.xi      // u32Mask [16:23] for bank 0x16 6f bit[0:7]
6590*53ee8cc1Swenshuai.xi         /*
6591*53ee8cc1Swenshuai.xi             [7:2] : reserved
6592*53ee8cc1Swenshuai.xi             [1] : pcr filter 3 update finish
6593*53ee8cc1Swenshuai.xi             [0] : pcr filter 2 update finish
6594*53ee8cc1Swenshuai.xi         */
6595*53ee8cc1Swenshuai.xi     REG16_SET(&_RegCtrl->HwInt3_Stat, (TSP_HWINT3_EN_MASK & (u32Mask >> 16)) | TSP_HWINT3_STATUS_MASK);
6596*53ee8cc1Swenshuai.xi }
6597*53ee8cc1Swenshuai.xi 
6598*53ee8cc1Swenshuai.xi 
6599*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_Disable(MS_U32 u32Mask)6600*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Disable(MS_U32 u32Mask)
6601*53ee8cc1Swenshuai.xi {
6602*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt_Stat, TSP_HWINT_EN_MASK & u32Mask);
6603*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt2_Stat, TSP_HWINT2_EN_MASK & (u32Mask >> 8));
6604*53ee8cc1Swenshuai.xi 
6605*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt_Stat,
6606*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->HwInt_Stat) & ~(TSP_HWINT_EN_MASK & (u32Mask))) |
6607*53ee8cc1Swenshuai.xi         TSP_HWINT_STATUS_MASK);
6608*53ee8cc1Swenshuai.xi 
6609*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt2_Stat,
6610*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->HwInt2_Stat) & ~(TSP_HWINT2_EN_MASK & (u32Mask >> 8))) |
6611*53ee8cc1Swenshuai.xi         TSP_HWINT2_STATUS_MASK);
6612*53ee8cc1Swenshuai.xi 
6613*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt3_Stat,
6614*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->HwInt3_Stat) & ~(TSP_HWINT3_EN_MASK & (u32Mask >> 16))) |
6615*53ee8cc1Swenshuai.xi         TSP_HWINT3_STATUS_MASK);
6616*53ee8cc1Swenshuai.xi }
6617*53ee8cc1Swenshuai.xi 
6618*53ee8cc1Swenshuai.xi 
6619*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_ClrHW(MS_U32 u32Mask)6620*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrHW(MS_U32 u32Mask)
6621*53ee8cc1Swenshuai.xi {
6622*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt_Stat, (u32Mask & 0x00FF) << 8);
6623*53ee8cc1Swenshuai.xi     //REG16_CLR(&_RegCtrl->HwInt2_Stat, u32Mask & 0xFF00);
6624*53ee8cc1Swenshuai.xi 
6625*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt_Stat,
6626*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->HwInt_Stat) & (~TSP_HWINT_STATUS_MASK)) |
6627*53ee8cc1Swenshuai.xi         (((~u32Mask) << TSP_HWINT_STATUS_SHIFT) & TSP_HWINT_STATUS_MASK) );
6628*53ee8cc1Swenshuai.xi 
6629*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt2_Stat,
6630*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->HwInt2_Stat) & (~TSP_HWINT2_STATUS_MASK)) |
6631*53ee8cc1Swenshuai.xi         (((~(u32Mask >> 8))<< TSP_HWINT2_STATUS_SHIFT) & TSP_HWINT2_STATUS_MASK) );
6632*53ee8cc1Swenshuai.xi 
6633*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->HwInt3_Stat,
6634*53ee8cc1Swenshuai.xi     (REG16_R(&_RegCtrl->HwInt3_Stat) & (~TSP_HWINT3_STATUS_MASK)) |
6635*53ee8cc1Swenshuai.xi         (((~(u32Mask >> 16))<< TSP_HWINT3_STATUS_SHIFT) & TSP_HWINT3_STATUS_MASK) );
6636*53ee8cc1Swenshuai.xi }
6637*53ee8cc1Swenshuai.xi 
6638*53ee8cc1Swenshuai.xi // [ToDo...]
HAL_TSP_INT_GetHW(void)6639*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetHW(void)
6640*53ee8cc1Swenshuai.xi {
6641*53ee8cc1Swenshuai.xi     MS_U32              status;
6642*53ee8cc1Swenshuai.xi 
6643*53ee8cc1Swenshuai.xi     status = (MS_U32)(((REG16_R(&_RegCtrl->HwInt3_Stat) & TSP_HWINT3_STATUS_MASK) >> TSP_HWINT3_STATUS_SHIFT) << 16);
6644*53ee8cc1Swenshuai.xi 
6645*53ee8cc1Swenshuai.xi     status |= ((MS_U32)(((REG16_R(&_RegCtrl->HwInt2_Stat) & TSP_HWINT2_STATUS_MASK) >> TSP_HWINT2_STATUS_SHIFT) << 8));
6646*53ee8cc1Swenshuai.xi 
6647*53ee8cc1Swenshuai.xi     status |= ((MS_U32)((REG16_R(&_RegCtrl->HwInt_Stat) & TSP_HWINT_STATUS_MASK) >> TSP_HWINT_STATUS_SHIFT));
6648*53ee8cc1Swenshuai.xi 
6649*53ee8cc1Swenshuai.xi     return (status & 0x00FFFFFF);
6650*53ee8cc1Swenshuai.xi }
6651*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_ClrSW(void)6652*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrSW(void)
6653*53ee8cc1Swenshuai.xi {
6654*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->SwInt_Stat, 0);
6655*53ee8cc1Swenshuai.xi }
6656*53ee8cc1Swenshuai.xi 
HAL_TSP_INT_GetSW(void)6657*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetSW(void)
6658*53ee8cc1Swenshuai.xi {
6659*53ee8cc1Swenshuai.xi     return REG32_R(&_RegCtrl->SwInt_Stat);
6660*53ee8cc1Swenshuai.xi }
6661*53ee8cc1Swenshuai.xi 
HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx,MS_U32 inputSrc)6662*53ee8cc1Swenshuai.xi void HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx, MS_U32 inputSrc)
6663*53ee8cc1Swenshuai.xi {
6664*53ee8cc1Swenshuai.xi     switch (bufIdx)
6665*53ee8cc1Swenshuai.xi     {
6666*53ee8cc1Swenshuai.xi         case 0:
6667*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF0_SRC, inputSrc<<(bufIdx * 2));
6668*53ee8cc1Swenshuai.xi              break;
6669*53ee8cc1Swenshuai.xi         case 1:
6670*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF1_SRC, inputSrc<<(bufIdx * 2));
6671*53ee8cc1Swenshuai.xi             break;
6672*53ee8cc1Swenshuai.xi         case 2:
6673*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF2_SRC, inputSrc<<(bufIdx * 2));
6674*53ee8cc1Swenshuai.xi             break;
6675*53ee8cc1Swenshuai.xi         case 3:
6676*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF3_SRC, inputSrc<<(bufIdx * 2));
6677*53ee8cc1Swenshuai.xi             break;
6678*53ee8cc1Swenshuai.xi         default:
6679*53ee8cc1Swenshuai.xi             break;
6680*53ee8cc1Swenshuai.xi     }
6681*53ee8cc1Swenshuai.xi }
6682*53ee8cc1Swenshuai.xi 
HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)6683*53ee8cc1Swenshuai.xi void HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)
6684*53ee8cc1Swenshuai.xi {
6685*53ee8cc1Swenshuai.xi     if (bByPassEn)
6686*53ee8cc1Swenshuai.xi     {
6687*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);
6688*53ee8cc1Swenshuai.xi     }
6689*53ee8cc1Swenshuai.xi     else
6690*53ee8cc1Swenshuai.xi     {
6691*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);
6692*53ee8cc1Swenshuai.xi     }
6693*53ee8cc1Swenshuai.xi }
6694*53ee8cc1Swenshuai.xi 
6695*53ee8cc1Swenshuai.xi //@TODO
6696*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_FileIn_SPDConfig(MS_U32 tsif,MS_BOOL CTR_mode)6697*53ee8cc1Swenshuai.xi void HAL_TSP_FileIn_SPDConfig(MS_U32 tsif, MS_BOOL CTR_mode)
6698*53ee8cc1Swenshuai.xi {
6699*53ee8cc1Swenshuai.xi     if(CTR_mode == TRUE)
6700*53ee8cc1Swenshuai.xi     {
6701*53ee8cc1Swenshuai.xi         printf("SPD CTR mode = %p\n",&(_RegCtrl7[tsif].CFG7_05));
6702*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_CTR_MODE_SPD_FILEIN); //set CTR mode enable
6703*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[0]), 0x0000);                  //set counter IV
6704*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[1]), 0x0000);
6705*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[2]), 0x0000);
6706*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[3]), 0x0000);
6707*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl7[tsif].CFG7_04), CFG7_04_CTR_IV_SPD_MAX_1K);     //set counter IV max vld
6708*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_LOAD_INIT_CNT_SPD);   //load counter IV
6709*53ee8cc1Swenshuai.xi     }
6710*53ee8cc1Swenshuai.xi 
6711*53ee8cc1Swenshuai.xi     switch(tsif)
6712*53ee8cc1Swenshuai.xi     {
6713*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);
6714*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6715*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6716*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6717*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6718*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6719*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6720*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6721*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6722*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY0);
6723*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF0_BYPASS);//bypass SPD
6724*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET); //TSIF SPD reset
6725*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET);
6726*53ee8cc1Swenshuai.xi                 break;
6727*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);
6728*53ee8cc1Swenshuai.xi                 /*
6729*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x2222);             //file-in SPD key
6730*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x2222);
6731*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x2222);
6732*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x2222);
6733*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x3333);
6734*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x3333);
6735*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x3333);
6736*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x3333);
6737*53ee8cc1Swenshuai.xi                 */
6738*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6739*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6740*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6741*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6742*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6743*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6744*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6745*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6746*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY1);
6747*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF1_BYPASS);//bypass SPD
6748*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET); //TSIF SPD reset
6749*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET);
6750*53ee8cc1Swenshuai.xi                 break;
6751*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);
6752*53ee8cc1Swenshuai.xi                 /*
6753*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x4444);             //file-in SPD key
6754*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x4444);
6755*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x4444);
6756*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x4444);
6757*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x5555);
6758*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x5555);
6759*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x5555);
6760*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x5555);
6761*53ee8cc1Swenshuai.xi                 */
6762*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6763*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6764*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6765*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6766*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6767*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6768*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6769*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6770*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY2);
6771*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF2_BYPASS);//bypass SPD
6772*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET); //TSIF SPD reset
6773*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET);
6774*53ee8cc1Swenshuai.xi                 break;
6775*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);
6776*53ee8cc1Swenshuai.xi                 /*
6777*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x6666);             //file-in SPD key
6778*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x6666);
6779*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x6666);
6780*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x6666);
6781*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x7777);
6782*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x7777);
6783*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x7777);
6784*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x7777);
6785*53ee8cc1Swenshuai.xi                 */
6786*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000);             //file-in SPD key
6787*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
6788*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
6789*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
6790*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
6791*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
6792*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
6793*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
6794*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY3);
6795*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF3_BYPASS);//bypass SPD
6796*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF3_SPD_RESET); //TSIF SPD reset
6797*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF3_SPD_RESET);
6798*53ee8cc1Swenshuai.xi                 break;
6799*53ee8cc1Swenshuai.xi         default:printf("Not Support !!\n");
6800*53ee8cc1Swenshuai.xi                 break;
6801*53ee8cc1Swenshuai.xi     }
6802*53ee8cc1Swenshuai.xi }
6803*53ee8cc1Swenshuai.xi #endif
6804*53ee8cc1Swenshuai.xi 
6805*53ee8cc1Swenshuai.xi // for TSO
HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId,MS_U32 u32TSOEng,MS_BOOL bEn)6806*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId, MS_U32 u32TSOEng, MS_BOOL bEn)
6807*53ee8cc1Swenshuai.xi {
6808*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
6809*53ee8cc1Swenshuai.xi     if(bEn)
6810*53ee8cc1Swenshuai.xi     {
6811*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_TSOFLT_MASK) | (((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK));
6812*53ee8cc1Swenshuai.xi     }
6813*53ee8cc1Swenshuai.xi     else
6814*53ee8cc1Swenshuai.xi     {
6815*53ee8cc1Swenshuai.xi         TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~(((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK)));
6816*53ee8cc1Swenshuai.xi     }
6817*53ee8cc1Swenshuai.xi }
6818*53ee8cc1Swenshuai.xi 
HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap,MS_U32 * pu32CapInfo)6819*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap, MS_U32 *pu32CapInfo)
6820*53ee8cc1Swenshuai.xi {
6821*53ee8cc1Swenshuai.xi     switch (eCap)
6822*53ee8cc1Swenshuai.xi     {
6823*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PIDFLT_NUM :
6824*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PIDFLT_NUM;
6825*53ee8cc1Swenshuai.xi             break;
6826*53ee8cc1Swenshuai.xi 
6827*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECFLT_NUM :
6828*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECFLT_NUM;
6829*53ee8cc1Swenshuai.xi             break;
6830*53ee8cc1Swenshuai.xi 
6831*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECBUF_NUM :
6832*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_NUM;
6833*53ee8cc1Swenshuai.xi             break;
6834*53ee8cc1Swenshuai.xi 
6835*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECENG_NUM :
6836*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECENG_NUM;
6837*53ee8cc1Swenshuai.xi             break;
6838*53ee8cc1Swenshuai.xi 
6839*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECFLT_NUM :
6840*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_NUM;
6841*53ee8cc1Swenshuai.xi             break;
6842*53ee8cc1Swenshuai.xi 
6843*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_TSIF_NUM :
6844*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSIF_NUM;
6845*53ee8cc1Swenshuai.xi             break;
6846*53ee8cc1Swenshuai.xi 
6847*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_DEMOD_NUM :
6848*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_DEMOD_NUM;
6849*53ee8cc1Swenshuai.xi             break;
6850*53ee8cc1Swenshuai.xi 
6851*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_TSPAD_NUM :
6852*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSPAD_NUM;
6853*53ee8cc1Swenshuai.xi             break;
6854*53ee8cc1Swenshuai.xi 
6855*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_NUM :
6856*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_NUM;
6857*53ee8cc1Swenshuai.xi             break;
6858*53ee8cc1Swenshuai.xi 
6859*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_CAFLT_NUM :
6860*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAFLT_NUM;
6861*53ee8cc1Swenshuai.xi             break;
6862*53ee8cc1Swenshuai.xi 
6863*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_CAKEY_NUM :
6864*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAKEY_NUM;
6865*53ee8cc1Swenshuai.xi             break;
6866*53ee8cc1Swenshuai.xi 
6867*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_SECBUF_ALIGN :
6868*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_ALIGN;
6869*53ee8cc1Swenshuai.xi             break;
6870*53ee8cc1Swenshuai.xi 
6871*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PVR_ALIGN:
6872*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PVR_ALIGN;
6873*53ee8cc1Swenshuai.xi             break;
6874*53ee8cc1Swenshuai.xi 
6875*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_FW_ALIGN :
6876*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_ALIGN;
6877*53ee8cc1Swenshuai.xi             break;
6878*53ee8cc1Swenshuai.xi 
6879*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_ALIGN :
6880*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_ALIGN;
6881*53ee8cc1Swenshuai.xi             break;
6882*53ee8cc1Swenshuai.xi 
6883*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VQ_PITCH :
6884*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_PITCH;
6885*53ee8cc1Swenshuai.xi             break;
6886*53ee8cc1Swenshuai.xi 
6887*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_MMFI_AUDIO_FILTER_NUM:
6888*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_AUDIO_FILTER_NUM;
6889*53ee8cc1Swenshuai.xi             break;
6890*53ee8cc1Swenshuai.xi 
6891*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_MMFI_V3D_FILTER_NUM:
6892*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_V3D_FILTER_NUM;
6893*53ee8cc1Swenshuai.xi             break;
6894*53ee8cc1Swenshuai.xi 
6895*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_HW_TYPE:
6896*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HW_TYPE;
6897*53ee8cc1Swenshuai.xi             break;
6898*53ee8cc1Swenshuai.xi 
6899*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_RECFLT_IDX :
6900*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_IDX;
6901*53ee8cc1Swenshuai.xi             break;
6902*53ee8cc1Swenshuai.xi 
6903*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_PCRFLT_START_IDX :
6904*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PCRFLT_START_IDX;
6905*53ee8cc1Swenshuai.xi             break;
6906*53ee8cc1Swenshuai.xi 
6907*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_VFIFO_NUM:
6908*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VFIFO_NUM;
6909*53ee8cc1Swenshuai.xi             break;
6910*53ee8cc1Swenshuai.xi 
6911*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_AFIFO_NUM:
6912*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_AFIFO_NUM;
6913*53ee8cc1Swenshuai.xi             break;
6914*53ee8cc1Swenshuai.xi 
6915*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_TYPE_HWPCR_SUPPORT:
6916*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HWPCR_SUPPORT;
6917*53ee8cc1Swenshuai.xi             break;
6918*53ee8cc1Swenshuai.xi 
6919*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FIQ_NUM:
6920*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FIQ_NUM;
6921*53ee8cc1Swenshuai.xi             break;
6922*53ee8cc1Swenshuai.xi 
6923*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FW_BUF_SIZE:
6924*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_BUF_SIZE;
6925*53ee8cc1Swenshuai.xi             break;
6926*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_FW_BUF_RANGE:
6927*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_FW_BUF_LOW_BUD;
6928*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_FW_BUF_UP_BUD;
6929*53ee8cc1Swenshuai.xi             break;
6930*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_VQ_BUF_RANGE:
6931*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_VQ_BUF_LOW_BUD;
6932*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_VQ_BUF_UP_BUD;
6933*53ee8cc1Swenshuai.xi             break;
6934*53ee8cc1Swenshuai.xi         case E_TSP_HAL_CAP_SEC_BUF_RANGE:
6935*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = TSP_SEC_BUF_LOW_BUD;
6936*53ee8cc1Swenshuai.xi             *(pu32CapInfo + 1) = TSP_SEC_BUF_UP_BUD;
6937*53ee8cc1Swenshuai.xi             break;
6938*53ee8cc1Swenshuai.xi         default:
6939*53ee8cc1Swenshuai.xi             *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_NULL;
6940*53ee8cc1Swenshuai.xi             return FALSE;
6941*53ee8cc1Swenshuai.xi     }
6942*53ee8cc1Swenshuai.xi 
6943*53ee8cc1Swenshuai.xi     return TRUE;
6944*53ee8cc1Swenshuai.xi }
6945*53ee8cc1Swenshuai.xi 
HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)6946*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)
6947*53ee8cc1Swenshuai.xi {
6948*53ee8cc1Swenshuai.xi     if(bEnable)
6949*53ee8cc1Swenshuai.xi     {
6950*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
6951*53ee8cc1Swenshuai.xi     }
6952*53ee8cc1Swenshuai.xi     else
6953*53ee8cc1Swenshuai.xi     {
6954*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
6955*53ee8cc1Swenshuai.xi     }
6956*53ee8cc1Swenshuai.xi }
6957*53ee8cc1Swenshuai.xi 
HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType,MS_BOOL bEnable)6958*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType, MS_BOOL bEnable)
6959*53ee8cc1Swenshuai.xi {
6960*53ee8cc1Swenshuai.xi     if(bEnable)
6961*53ee8cc1Swenshuai.xi     {
6962*53ee8cc1Swenshuai.xi         switch (eHalPktType)
6963*53ee8cc1Swenshuai.xi        {
6964*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
6965*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
6966*53ee8cc1Swenshuai.xi               break;
6967*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
6968*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
6969*53ee8cc1Swenshuai.xi               break;
6970*53ee8cc1Swenshuai.xi           default:
6971*53ee8cc1Swenshuai.xi               break;
6972*53ee8cc1Swenshuai.xi         }
6973*53ee8cc1Swenshuai.xi     }
6974*53ee8cc1Swenshuai.xi     else
6975*53ee8cc1Swenshuai.xi     {
6976*53ee8cc1Swenshuai.xi        switch (eHalPktType)
6977*53ee8cc1Swenshuai.xi        {
6978*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
6979*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
6980*53ee8cc1Swenshuai.xi               break;
6981*53ee8cc1Swenshuai.xi           case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
6982*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
6983*53ee8cc1Swenshuai.xi               break;
6984*53ee8cc1Swenshuai.xi           default:
6985*53ee8cc1Swenshuai.xi               break;
6986*53ee8cc1Swenshuai.xi         }
6987*53ee8cc1Swenshuai.xi     }
6988*53ee8cc1Swenshuai.xi }
6989*53ee8cc1Swenshuai.xi 
HAL_TSP_TEI_SKIP(MS_U32 tsIf,MS_BOOL bEnable)6990*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_SKIP(MS_U32 tsIf, MS_BOOL bEnable)
6991*53ee8cc1Swenshuai.xi {
6992*53ee8cc1Swenshuai.xi     if(bEnable)
6993*53ee8cc1Swenshuai.xi     {
6994*53ee8cc1Swenshuai.xi         switch (tsIf)
6995*53ee8cc1Swenshuai.xi        {
6996*53ee8cc1Swenshuai.xi           case 0:
6997*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
6998*53ee8cc1Swenshuai.xi               break;
6999*53ee8cc1Swenshuai.xi           case 1:
7000*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
7001*53ee8cc1Swenshuai.xi               break;
7002*53ee8cc1Swenshuai.xi           case 2:
7003*53ee8cc1Swenshuai.xi               REG32_SET(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
7004*53ee8cc1Swenshuai.xi               break;
7005*53ee8cc1Swenshuai.xi           case 3:
7006*53ee8cc1Swenshuai.xi               REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID3);
7007*53ee8cc1Swenshuai.xi               break;
7008*53ee8cc1Swenshuai.xi           default:
7009*53ee8cc1Swenshuai.xi               break;
7010*53ee8cc1Swenshuai.xi         }
7011*53ee8cc1Swenshuai.xi     }
7012*53ee8cc1Swenshuai.xi     else
7013*53ee8cc1Swenshuai.xi     {
7014*53ee8cc1Swenshuai.xi        switch (tsIf)
7015*53ee8cc1Swenshuai.xi        {
7016*53ee8cc1Swenshuai.xi           case 0:
7017*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
7018*53ee8cc1Swenshuai.xi               break;
7019*53ee8cc1Swenshuai.xi           case 1:
7020*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
7021*53ee8cc1Swenshuai.xi               break;
7022*53ee8cc1Swenshuai.xi           case 2:
7023*53ee8cc1Swenshuai.xi               REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
7024*53ee8cc1Swenshuai.xi               break;
7025*53ee8cc1Swenshuai.xi           case 3:
7026*53ee8cc1Swenshuai.xi               REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID3);
7027*53ee8cc1Swenshuai.xi               break;
7028*53ee8cc1Swenshuai.xi           default:
7029*53ee8cc1Swenshuai.xi               break;
7030*53ee8cc1Swenshuai.xi         }
7031*53ee8cc1Swenshuai.xi     }
7032*53ee8cc1Swenshuai.xi 
7033*53ee8cc1Swenshuai.xi }
7034*53ee8cc1Swenshuai.xi 
HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)7035*53ee8cc1Swenshuai.xi void HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)
7036*53ee8cc1Swenshuai.xi {
7037*53ee8cc1Swenshuai.xi     switch (eFltType)
7038*53ee8cc1Swenshuai.xi     {
7039*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
7040*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
7041*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
7042*53ee8cc1Swenshuai.xi             break;
7043*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
7044*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
7045*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
7046*53ee8cc1Swenshuai.xi             break;
7047*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
7048*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
7049*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
7050*53ee8cc1Swenshuai.xi             break;
7051*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
7052*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
7053*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
7054*53ee8cc1Swenshuai.xi             break;
7055*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
7056*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
7057*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
7058*53ee8cc1Swenshuai.xi             break;
7059*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
7060*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
7061*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
7062*53ee8cc1Swenshuai.xi             break;
7063*53ee8cc1Swenshuai.xi         default :
7064*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] Clear AVPktNum Error\n",__FILE__,__FUNCTION__,__LINE__);
7065*53ee8cc1Swenshuai.xi             break;
7066*53ee8cc1Swenshuai.xi     }
7067*53ee8cc1Swenshuai.xi }
7068*53ee8cc1Swenshuai.xi 
_HAL_TSP_MIU_OFFSET(MS_PHY Phyaddr)7069*53ee8cc1Swenshuai.xi static MS_PHY _HAL_TSP_MIU_OFFSET(MS_PHY Phyaddr)
7070*53ee8cc1Swenshuai.xi {
7071*53ee8cc1Swenshuai.xi #ifdef HAL_MIU2_BASE
7072*53ee8cc1Swenshuai.xi     if(Phyaddr >= (MS_PHY)HAL_MIU2_BASE)
7073*53ee8cc1Swenshuai.xi         return (MS_PHY)HAL_MIU2_BASE;
7074*53ee8cc1Swenshuai.xi     else
7075*53ee8cc1Swenshuai.xi #endif  //HAL_MIU2_BUS_BASE
7076*53ee8cc1Swenshuai.xi 
7077*53ee8cc1Swenshuai.xi #ifdef HAL_MIU1_BASE
7078*53ee8cc1Swenshuai.xi     if(Phyaddr >= (MS_PHY)HAL_MIU1_BASE)
7079*53ee8cc1Swenshuai.xi         return (MS_PHY)HAL_MIU1_BASE;
7080*53ee8cc1Swenshuai.xi     else
7081*53ee8cc1Swenshuai.xi #endif //HAL_MIU1_BUS_BASE
7082*53ee8cc1Swenshuai.xi         return (MS_PHY)HAL_MIU0_BASE;
7083*53ee8cc1Swenshuai.xi }
7084*53ee8cc1Swenshuai.xi 
HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)7085*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)
7086*53ee8cc1Swenshuai.xi {
7087*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7088*53ee8cc1Swenshuai.xi     {
7089*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
7090*53ee8cc1Swenshuai.xi     }
7091*53ee8cc1Swenshuai.xi     else
7092*53ee8cc1Swenshuai.xi     {
7093*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
7094*53ee8cc1Swenshuai.xi     }
7095*53ee8cc1Swenshuai.xi }
7096*53ee8cc1Swenshuai.xi 
HAL_TSP_OR_Address_Protect(MS_PHY u32AddrH,MS_PHY u32AddrL)7097*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect(MS_PHY u32AddrH, MS_PHY u32AddrL)
7098*53ee8cc1Swenshuai.xi {
7099*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
7100*53ee8cc1Swenshuai.xi 
7101*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->ORZ_DMAW_LBND,(MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_ORZ_DMAW_LBND_MASK));
7102*53ee8cc1Swenshuai.xi     REG32_W(&_RegCtrl->ORZ_DMAW_UBND,(MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_ORZ_DMAW_UBND_MASK));
7103*53ee8cc1Swenshuai.xi }
7104*53ee8cc1Swenshuai.xi 
HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)7105*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)
7106*53ee8cc1Swenshuai.xi {
7107*53ee8cc1Swenshuai.xi 
7108*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7109*53ee8cc1Swenshuai.xi     {
7110*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
7111*53ee8cc1Swenshuai.xi     }
7112*53ee8cc1Swenshuai.xi     else
7113*53ee8cc1Swenshuai.xi     {
7114*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
7115*53ee8cc1Swenshuai.xi     }
7116*53ee8cc1Swenshuai.xi }
7117*53ee8cc1Swenshuai.xi 
HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID,MS_PHY u32AddrH,MS_PHY u32AddrL)7118*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID, MS_PHY u32AddrH, MS_PHY u32AddrL)
7119*53ee8cc1Swenshuai.xi {
7120*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
7121*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_DMAW_BND_MASK);
7122*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_DMAW_BND_MASK);
7123*53ee8cc1Swenshuai.xi 
7124*53ee8cc1Swenshuai.xi     switch(u8SecID)
7125*53ee8cc1Swenshuai.xi     {
7126*53ee8cc1Swenshuai.xi         case 0:
7127*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND0,u32LBnd);
7128*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND0,u32UBnd);
7129*53ee8cc1Swenshuai.xi             break;
7130*53ee8cc1Swenshuai.xi         case 1:
7131*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND1,u32LBnd);
7132*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND1,u32UBnd);
7133*53ee8cc1Swenshuai.xi             break;
7134*53ee8cc1Swenshuai.xi         default:
7135*53ee8cc1Swenshuai.xi             break;
7136*53ee8cc1Swenshuai.xi     }
7137*53ee8cc1Swenshuai.xi }
7138*53ee8cc1Swenshuai.xi 
HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)7139*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)
7140*53ee8cc1Swenshuai.xi {
7141*53ee8cc1Swenshuai.xi     if(bEnable)
7142*53ee8cc1Swenshuai.xi     {
7143*53ee8cc1Swenshuai.xi         switch(u32PVREng)
7144*53ee8cc1Swenshuai.xi         {
7145*53ee8cc1Swenshuai.xi             case 0:
7146*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
7147*53ee8cc1Swenshuai.xi                 break;
7148*53ee8cc1Swenshuai.xi             case 1:
7149*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
7150*53ee8cc1Swenshuai.xi                 break;
7151*53ee8cc1Swenshuai.xi             case 2:
7152*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR3_DMAW_PROTECT_EN);
7153*53ee8cc1Swenshuai.xi                 break;
7154*53ee8cc1Swenshuai.xi             case 3:
7155*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR4_DMAW_PROTECT_EN);
7156*53ee8cc1Swenshuai.xi                 break;
7157*53ee8cc1Swenshuai.xi             default:
7158*53ee8cc1Swenshuai.xi                 break;
7159*53ee8cc1Swenshuai.xi         }
7160*53ee8cc1Swenshuai.xi     }
7161*53ee8cc1Swenshuai.xi     else
7162*53ee8cc1Swenshuai.xi     {
7163*53ee8cc1Swenshuai.xi         switch(u32PVREng)
7164*53ee8cc1Swenshuai.xi         {
7165*53ee8cc1Swenshuai.xi             case 0:
7166*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
7167*53ee8cc1Swenshuai.xi                 break;
7168*53ee8cc1Swenshuai.xi             case 1:
7169*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
7170*53ee8cc1Swenshuai.xi                 break;
7171*53ee8cc1Swenshuai.xi             case 2:
7172*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR3_DMAW_PROTECT_EN);
7173*53ee8cc1Swenshuai.xi                 break;
7174*53ee8cc1Swenshuai.xi             case 3:
7175*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR4_DMAW_PROTECT_EN);
7176*53ee8cc1Swenshuai.xi                 break;
7177*53ee8cc1Swenshuai.xi             default:
7178*53ee8cc1Swenshuai.xi                 break;
7179*53ee8cc1Swenshuai.xi         }
7180*53ee8cc1Swenshuai.xi     }
7181*53ee8cc1Swenshuai.xi }
7182*53ee8cc1Swenshuai.xi 
HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32AddrH,MS_PHY u32AddrL)7183*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32AddrH, MS_PHY u32AddrL)
7184*53ee8cc1Swenshuai.xi {
7185*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
7186*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_PVR_MASK);
7187*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_PVR_MASK);
7188*53ee8cc1Swenshuai.xi 
7189*53ee8cc1Swenshuai.xi     switch(u32PVREng)
7190*53ee8cc1Swenshuai.xi     {
7191*53ee8cc1Swenshuai.xi         case 0:
7192*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND2, u32LBnd);
7193*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND2, u32UBnd);
7194*53ee8cc1Swenshuai.xi             break;
7195*53ee8cc1Swenshuai.xi         case 1:
7196*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND3, u32LBnd);
7197*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND3, u32UBnd);
7198*53ee8cc1Swenshuai.xi             break;
7199*53ee8cc1Swenshuai.xi         case 2:
7200*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_LBND4, u32LBnd);
7201*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->DMAW_UBND4, u32UBnd);
7202*53ee8cc1Swenshuai.xi             break;
7203*53ee8cc1Swenshuai.xi         case 3:
7204*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_12_13, u32LBnd);
7205*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl3->CFG3_14_15, u32UBnd);
7206*53ee8cc1Swenshuai.xi             break;
7207*53ee8cc1Swenshuai.xi         default:
7208*53ee8cc1Swenshuai.xi             break;
7209*53ee8cc1Swenshuai.xi     }
7210*53ee8cc1Swenshuai.xi }
7211*53ee8cc1Swenshuai.xi 
HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)7212*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)
7213*53ee8cc1Swenshuai.xi {
7214*53ee8cc1Swenshuai.xi     if(bEnable)
7215*53ee8cc1Swenshuai.xi     {
7216*53ee8cc1Swenshuai.xi         switch(eFileEng)
7217*53ee8cc1Swenshuai.xi         {
7218*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
7219*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
7220*53ee8cc1Swenshuai.xi                 break;
7221*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
7222*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
7223*53ee8cc1Swenshuai.xi                 break;
7224*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
7225*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
7226*53ee8cc1Swenshuai.xi                 break;
7227*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
7228*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN3_DMAR_PROTECT_EN);
7229*53ee8cc1Swenshuai.xi                 break;
7230*53ee8cc1Swenshuai.xi             default:
7231*53ee8cc1Swenshuai.xi                 break;
7232*53ee8cc1Swenshuai.xi         }
7233*53ee8cc1Swenshuai.xi     }
7234*53ee8cc1Swenshuai.xi     else
7235*53ee8cc1Swenshuai.xi     {
7236*53ee8cc1Swenshuai.xi         switch(eFileEng)
7237*53ee8cc1Swenshuai.xi         {
7238*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF0:
7239*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
7240*53ee8cc1Swenshuai.xi                 break;
7241*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF1:
7242*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
7243*53ee8cc1Swenshuai.xi                 break;
7244*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF2:
7245*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
7246*53ee8cc1Swenshuai.xi                 break;
7247*53ee8cc1Swenshuai.xi             case E_FILEENG_TSIF3:
7248*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN3_DMAR_PROTECT_EN);
7249*53ee8cc1Swenshuai.xi                 break;
7250*53ee8cc1Swenshuai.xi             default:
7251*53ee8cc1Swenshuai.xi                 break;
7252*53ee8cc1Swenshuai.xi         }
7253*53ee8cc1Swenshuai.xi     }
7254*53ee8cc1Swenshuai.xi }
7255*53ee8cc1Swenshuai.xi 
HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32AddrH,MS_PHY u32AddrL)7256*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32AddrH, MS_PHY u32AddrL)
7257*53ee8cc1Swenshuai.xi {
7258*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
7259*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
7260*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
7261*53ee8cc1Swenshuai.xi 
7262*53ee8cc1Swenshuai.xi     switch(eFileEng)
7263*53ee8cc1Swenshuai.xi     {
7264*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF0:
7265*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_30_31, u32LBnd);
7266*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_32_33, u32UBnd);
7267*53ee8cc1Swenshuai.xi             break;
7268*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF1:
7269*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_34_35, u32LBnd);
7270*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_36_37, u32UBnd);
7271*53ee8cc1Swenshuai.xi             break;
7272*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF2:
7273*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_38_39, u32LBnd);
7274*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_3A_3B, u32UBnd);
7275*53ee8cc1Swenshuai.xi             break;
7276*53ee8cc1Swenshuai.xi         case E_FILEENG_TSIF3:
7277*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_3C_3D, u32LBnd);
7278*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_3E_3F, u32UBnd);
7279*53ee8cc1Swenshuai.xi             break;
7280*53ee8cc1Swenshuai.xi         default:
7281*53ee8cc1Swenshuai.xi             break;
7282*53ee8cc1Swenshuai.xi     }
7283*53ee8cc1Swenshuai.xi }
7284*53ee8cc1Swenshuai.xi 
HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)7285*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)
7286*53ee8cc1Swenshuai.xi {
7287*53ee8cc1Swenshuai.xi     if(bEnable)
7288*53ee8cc1Swenshuai.xi     {
7289*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
7290*53ee8cc1Swenshuai.xi         {
7291*53ee8cc1Swenshuai.xi             case 0:
7292*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
7293*53ee8cc1Swenshuai.xi                 break;
7294*53ee8cc1Swenshuai.xi             case 1:
7295*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
7296*53ee8cc1Swenshuai.xi                 break;
7297*53ee8cc1Swenshuai.xi             default:
7298*53ee8cc1Swenshuai.xi                 break;
7299*53ee8cc1Swenshuai.xi         }
7300*53ee8cc1Swenshuai.xi     }
7301*53ee8cc1Swenshuai.xi     else
7302*53ee8cc1Swenshuai.xi     {
7303*53ee8cc1Swenshuai.xi         switch(u32MMFIEng)
7304*53ee8cc1Swenshuai.xi         {
7305*53ee8cc1Swenshuai.xi             case 0:
7306*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
7307*53ee8cc1Swenshuai.xi                 break;
7308*53ee8cc1Swenshuai.xi             case 1:
7309*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
7310*53ee8cc1Swenshuai.xi                 break;
7311*53ee8cc1Swenshuai.xi             default:
7312*53ee8cc1Swenshuai.xi                 break;
7313*53ee8cc1Swenshuai.xi         }
7314*53ee8cc1Swenshuai.xi     }
7315*53ee8cc1Swenshuai.xi }
7316*53ee8cc1Swenshuai.xi 
HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32AddrH,MS_PHY u32AddrL)7317*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32AddrH, MS_PHY u32AddrL)
7318*53ee8cc1Swenshuai.xi {
7319*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
7320*53ee8cc1Swenshuai.xi     MS_U32  u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
7321*53ee8cc1Swenshuai.xi     MS_U32  u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
7322*53ee8cc1Swenshuai.xi 
7323*53ee8cc1Swenshuai.xi     switch(u32MMFIEng)
7324*53ee8cc1Swenshuai.xi     {
7325*53ee8cc1Swenshuai.xi         case 0:
7326*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_48_49, u32LBnd);
7327*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_4A_4B, u32UBnd);
7328*53ee8cc1Swenshuai.xi             break;
7329*53ee8cc1Swenshuai.xi         case 1:
7330*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_4C_4D, u32LBnd);
7331*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl6->CFG6_4E_4F, u32UBnd);
7332*53ee8cc1Swenshuai.xi             break;
7333*53ee8cc1Swenshuai.xi         default:
7334*53ee8cc1Swenshuai.xi             break;
7335*53ee8cc1Swenshuai.xi     }
7336*53ee8cc1Swenshuai.xi }
7337*53ee8cc1Swenshuai.xi 
7338*53ee8cc1Swenshuai.xi 
HAL_TSP_SaveFltState(void)7339*53ee8cc1Swenshuai.xi void HAL_TSP_SaveFltState(void)
7340*53ee8cc1Swenshuai.xi {
7341*53ee8cc1Swenshuai.xi     MS_U32              u32Size;
7342*53ee8cc1Swenshuai.xi     TSP32 *             pRegEnd;
7343*53ee8cc1Swenshuai.xi     TSP32 *             pReg;
7344*53ee8cc1Swenshuai.xi     int                 i, j;
7345*53ee8cc1Swenshuai.xi 
7346*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_PIDFLT_NUM; i++)
7347*53ee8cc1Swenshuai.xi     {
7348*53ee8cc1Swenshuai.xi          _u32PidFltReg[i] = TSP32_IdrR(&(_REGPid0->Flt[i]));
7349*53ee8cc1Swenshuai.xi          _u32PidDstReg[i] = TSP32_IdrR(&(_REGPid1->Flt[i]));
7350*53ee8cc1Swenshuai.xi     }
7351*53ee8cc1Swenshuai.xi 
7352*53ee8cc1Swenshuai.xi     u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
7353*53ee8cc1Swenshuai.xi     for (i = 0; i < TSP_SECFLT_NUM; i++)
7354*53ee8cc1Swenshuai.xi     {
7355*53ee8cc1Swenshuai.xi          pReg = (TSP32*)&(_REGSec->Flt[i]);
7356*53ee8cc1Swenshuai.xi          pRegEnd = pReg + u32Size;
7357*53ee8cc1Swenshuai.xi          j = 0;
7358*53ee8cc1Swenshuai.xi          for ( ; pReg < pRegEnd; pReg++)
7359*53ee8cc1Swenshuai.xi          {
7360*53ee8cc1Swenshuai.xi              _u32SecReg[i*u32Size+j] = TSP32_IdrR(pReg);
7361*53ee8cc1Swenshuai.xi              j++;
7362*53ee8cc1Swenshuai.xi          }
7363*53ee8cc1Swenshuai.xi     }
7364*53ee8cc1Swenshuai.xi }
7365*53ee8cc1Swenshuai.xi 
HAL_TSP_CMD_Run(MS_U32 u32Cmd,MS_U32 u32Config0,MS_U32 u32Config1,MS_U32 * pData)7366*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1, MS_U32* pData)
7367*53ee8cc1Swenshuai.xi {
7368*53ee8cc1Swenshuai.xi     MS_U32 u32Data = 0;
7369*53ee8cc1Swenshuai.xi     MS_BOOL brtn = FALSE;
7370*53ee8cc1Swenshuai.xi 
7371*53ee8cc1Swenshuai.xi     //printf("\033[31m [%s] Mode = %lX , Config0 =%lX , Config1 = %lX \033[m\n",__FUNCTION__,u32Cmd,u32Config0,u32Config1);  // Eason test
7372*53ee8cc1Swenshuai.xi 
7373*53ee8cc1Swenshuai.xi     switch (u32Cmd)
7374*53ee8cc1Swenshuai.xi     {
7375*53ee8cc1Swenshuai.xi         case HAL_DMX_CMD_RUN_DISABLE_SEC_CC_CHECK:
7376*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Data1, u32Config0);
7377*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SEC_CC_CHECK_DISABLE);
7378*53ee8cc1Swenshuai.xi             _delay(10); // supposed TSP is able to respond in 10us
7379*53ee8cc1Swenshuai.xi             u32Data = REG32_R(&_RegCtrl->MCU_Data1);
7380*53ee8cc1Swenshuai.xi             REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
7381*53ee8cc1Swenshuai.xi             brtn = (u32Data == TSP_MCU_CMD_SEC_CC_CHECK_DISABLE)? TRUE : FALSE;
7382*53ee8cc1Swenshuai.xi             break;
7383*53ee8cc1Swenshuai.xi         default:
7384*53ee8cc1Swenshuai.xi             break;
7385*53ee8cc1Swenshuai.xi     }
7386*53ee8cc1Swenshuai.xi     return brtn;
7387*53ee8cc1Swenshuai.xi }
7388*53ee8cc1Swenshuai.xi 
HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng,MS_BOOL bEnable)7389*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_BOOL bEnable)
7390*53ee8cc1Swenshuai.xi {
7391*53ee8cc1Swenshuai.xi     printf("[%s] not support!!\n",__FUNCTION__);
7392*53ee8cc1Swenshuai.xi     return FALSE;
7393*53ee8cc1Swenshuai.xi }
7394*53ee8cc1Swenshuai.xi 
HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng,MS_U16 u16CaPvrMode,MS_BOOL bEnable)7395*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng, MS_U16 u16CaPvrMode, MS_BOOL bEnable)
7396*53ee8cc1Swenshuai.xi {
7397*53ee8cc1Swenshuai.xi     MS_U16 u16value = REG16_R(&_RegCtrl3->CFG3_38);
7398*53ee8cc1Swenshuai.xi 
7399*53ee8cc1Swenshuai.xi     switch(u32Eng)
7400*53ee8cc1Swenshuai.xi     {
7401*53ee8cc1Swenshuai.xi         case 0:
7402*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR1_SEL_MASK|HW4_CFG38_PKT192_SPS_EN1);
7403*53ee8cc1Swenshuai.xi             break;
7404*53ee8cc1Swenshuai.xi         case 1:
7405*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR2_SEL_MASK|HW4_CFG38_PKT192_SPS_EN2);
7406*53ee8cc1Swenshuai.xi             break;
7407*53ee8cc1Swenshuai.xi         case 2:
7408*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR3_SEL_MASK|HW4_CFG38_PKT192_SPS_EN3);
7409*53ee8cc1Swenshuai.xi             break;
7410*53ee8cc1Swenshuai.xi         case 3:
7411*53ee8cc1Swenshuai.xi             u16value &= ~(HW4_CFG38_CA_PVR4_SEL_MASK|HW4_CFG38_PKT192_SPS_EN4);
7412*53ee8cc1Swenshuai.xi             break;
7413*53ee8cc1Swenshuai.xi         default:
7414*53ee8cc1Swenshuai.xi             return FALSE;
7415*53ee8cc1Swenshuai.xi     }
7416*53ee8cc1Swenshuai.xi 
7417*53ee8cc1Swenshuai.xi     if(bEnable)
7418*53ee8cc1Swenshuai.xi     {
7419*53ee8cc1Swenshuai.xi         switch(u32Eng)
7420*53ee8cc1Swenshuai.xi         {
7421*53ee8cc1Swenshuai.xi             case 0:
7422*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR1_SEL_SHIFT);
7423*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN1;
7424*53ee8cc1Swenshuai.xi                 break;
7425*53ee8cc1Swenshuai.xi             case 1:
7426*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR2_SEL_SHIFT);
7427*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN2;
7428*53ee8cc1Swenshuai.xi                 break;
7429*53ee8cc1Swenshuai.xi             case 2:
7430*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR3_SEL_SHIFT);
7431*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN3;
7432*53ee8cc1Swenshuai.xi                 break;
7433*53ee8cc1Swenshuai.xi             case 3:
7434*53ee8cc1Swenshuai.xi                 u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR4_SEL_SHIFT);
7435*53ee8cc1Swenshuai.xi                 u16value |= HW4_CFG38_PKT192_SPS_EN4;
7436*53ee8cc1Swenshuai.xi                 break;
7437*53ee8cc1Swenshuai.xi         }
7438*53ee8cc1Swenshuai.xi     }
7439*53ee8cc1Swenshuai.xi 
7440*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl3->CFG3_38, u16value);
7441*53ee8cc1Swenshuai.xi 
7442*53ee8cc1Swenshuai.xi     return TRUE;
7443*53ee8cc1Swenshuai.xi 
7444*53ee8cc1Swenshuai.xi }
7445*53ee8cc1Swenshuai.xi 
7446*53ee8cc1Swenshuai.xi //@TODO
7447*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng,MS_BOOL CTR_mode)7448*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng, MS_BOOL CTR_mode)
7449*53ee8cc1Swenshuai.xi {
7450*53ee8cc1Swenshuai.xi     switch(u32Eng)
7451*53ee8cc1Swenshuai.xi     {
7452*53ee8cc1Swenshuai.xi         case 0: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN1);
7453*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR1_KEY);
7454*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7455*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7456*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7457*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7458*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7459*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7460*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7461*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7462*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY1);
7463*53ee8cc1Swenshuai.xi                 break;
7464*53ee8cc1Swenshuai.xi         case 1: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN2);
7465*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR2_KEY);
7466*53ee8cc1Swenshuai.xi                 /*
7467*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x2222);//PVR SPS key
7468*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x2222);
7469*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x2222);
7470*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x2222);
7471*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x3333);
7472*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x3333);
7473*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x3333);
7474*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x3333);
7475*53ee8cc1Swenshuai.xi                 */
7476*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7477*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7478*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7479*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7480*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7481*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7482*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7483*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7484*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY2);
7485*53ee8cc1Swenshuai.xi                 break;
7486*53ee8cc1Swenshuai.xi         case 2: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN3);
7487*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR3_KEY);
7488*53ee8cc1Swenshuai.xi                 /*
7489*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x4444);//PVR SPS key
7490*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x4444);
7491*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x4444);
7492*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x4444);
7493*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x5555);
7494*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x5555);
7495*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x5555);
7496*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x5555);
7497*53ee8cc1Swenshuai.xi                 */
7498*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7499*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7500*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7501*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7502*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7503*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7504*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7505*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7506*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY3);
7507*53ee8cc1Swenshuai.xi                 break;
7508*53ee8cc1Swenshuai.xi         case 3: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN4);
7509*53ee8cc1Swenshuai.xi                 REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR4_KEY);
7510*53ee8cc1Swenshuai.xi                 /*
7511*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x6666);//PVR SPS key
7512*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x6666);
7513*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x6666);
7514*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x6666);
7515*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x7777);
7516*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x7777);
7517*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x7777);
7518*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x7777);
7519*53ee8cc1Swenshuai.xi                 */
7520*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
7521*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
7522*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
7523*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
7524*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
7525*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
7526*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
7527*53ee8cc1Swenshuai.xi                 REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
7528*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY4);
7529*53ee8cc1Swenshuai.xi                 break;
7530*53ee8cc1Swenshuai.xi         default: printf("Not Support !!\n");
7531*53ee8cc1Swenshuai.xi                  break;
7532*53ee8cc1Swenshuai.xi     }
7533*53ee8cc1Swenshuai.xi 
7534*53ee8cc1Swenshuai.xi     if(CTR_mode == TRUE)
7535*53ee8cc1Swenshuai.xi     {
7536*53ee8cc1Swenshuai.xi         printf("SPS CTR mode = %p\n",&(_RegCtrl8[u32Eng].CFG8_05));
7537*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_CTR_MODE_SPS_PVR1);   //set CTR mode
7538*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[0]), 0x0000);                 //set counter IV
7539*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[1]), 0x0000);
7540*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[2]), 0x0000);
7541*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[3]), 0x0000);
7542*53ee8cc1Swenshuai.xi         REG16_W(&(_RegCtrl8[u32Eng].CFG8_04), CFG8_04_CTR_IV_SPS_MAX_1K);    //set counter IV max vld
7543*53ee8cc1Swenshuai.xi         REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_LOAD_INIT_CNT_SPS1);  //load counter IV
7544*53ee8cc1Swenshuai.xi     }
7545*53ee8cc1Swenshuai.xi }
7546*53ee8cc1Swenshuai.xi #endif
7547*53ee8cc1Swenshuai.xi 
7548*53ee8cc1Swenshuai.xi // u32GroupId: 0 -> filter0  ~ filter31
7549*53ee8cc1Swenshuai.xi // u32GroupId: 1 -> filter32 ~ filter63
7550*53ee8cc1Swenshuai.xi // u32GroupId: 2 -> filter64 ~ filter95
7551*53ee8cc1Swenshuai.xi // u32GroupId: 3 -> filter96 ~ filter127
7552*53ee8cc1Swenshuai.xi // u32GroupId: 4 -> filter128 ~ filter159
7553*53ee8cc1Swenshuai.xi // u32GroupId: 5 -> filter160 ~ filter191
7554*53ee8cc1Swenshuai.xi 
7555*53ee8cc1Swenshuai.xi 
HAL_DSCMB_GetStatus(MS_U32 u32PktDmx,MS_U32 u32GroupId,MS_U32 u32PidFltId,MS_U32 * pu32ScmbSts)7556*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_GetStatus(MS_U32 u32PktDmx, MS_U32 u32GroupId, MS_U32 u32PidFltId, MS_U32 *pu32ScmbSts)
7557*53ee8cc1Swenshuai.xi {
7558*53ee8cc1Swenshuai.xi     MS_U16              u16PktDmxSrc;
7559*53ee8cc1Swenshuai.xi     MS_U16              u16WordId;
7560*53ee8cc1Swenshuai.xi     MS_U32              u32PIDFltMask = u32PidFltId;
7561*53ee8cc1Swenshuai.xi 
7562*53ee8cc1Swenshuai.xi     if(u32PidFltId != 0xFFFFFFFF)
7563*53ee8cc1Swenshuai.xi     {
7564*53ee8cc1Swenshuai.xi         u32PIDFltMask = (1 << (u32PidFltId & 0x1F));
7565*53ee8cc1Swenshuai.xi     }
7566*53ee8cc1Swenshuai.xi 
7567*53ee8cc1Swenshuai.xi     u16PktDmxSrc = _CLR_(REG16_R(&_RegCtrl->reg15b8), TSP_MATCH_PID_SRC_MASK);
7568*53ee8cc1Swenshuai.xi 
7569*53ee8cc1Swenshuai.xi     switch(u32PktDmx)
7570*53ee8cc1Swenshuai.xi     {
7571*53ee8cc1Swenshuai.xi         case 0:
7572*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX0 << TSP_MATCH_PID_SRC_SHIFT);
7573*53ee8cc1Swenshuai.xi             break;
7574*53ee8cc1Swenshuai.xi         case 1:
7575*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX1 << TSP_MATCH_PID_SRC_SHIFT);
7576*53ee8cc1Swenshuai.xi             break;
7577*53ee8cc1Swenshuai.xi         case 2:
7578*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX2 << TSP_MATCH_PID_SRC_SHIFT);
7579*53ee8cc1Swenshuai.xi             break;
7580*53ee8cc1Swenshuai.xi         case 3:
7581*53ee8cc1Swenshuai.xi             u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX3 << TSP_MATCH_PID_SRC_SHIFT);
7582*53ee8cc1Swenshuai.xi             break;
7583*53ee8cc1Swenshuai.xi         default:
7584*53ee8cc1Swenshuai.xi             break;
7585*53ee8cc1Swenshuai.xi     }
7586*53ee8cc1Swenshuai.xi 
7587*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->reg15b8, u16PktDmxSrc);
7588*53ee8cc1Swenshuai.xi 
7589*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // Set 1 to load match_pid_num
7590*53ee8cc1Swenshuai.xi 
7591*53ee8cc1Swenshuai.xi     // get status
7592*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // freeze
7593*53ee8cc1Swenshuai.xi 
7594*53ee8cc1Swenshuai.xi     u16WordId =  _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_SEL_MASK);
7595*53ee8cc1Swenshuai.xi 
7596*53ee8cc1Swenshuai.xi     if (u32GroupId < 6)
7597*53ee8cc1Swenshuai.xi     {
7598*53ee8cc1Swenshuai.xi         u16WordId = _SET_(u16WordId, u32GroupId << TSP_MATCH_PID_SEL_SHIFT);
7599*53ee8cc1Swenshuai.xi         REG16_MSK_W(&_RegCtrl->PVRConfig,TSP_MATCH_PID_SEL_MASK,u16WordId);
7600*53ee8cc1Swenshuai.xi     }
7601*53ee8cc1Swenshuai.xi     else
7602*53ee8cc1Swenshuai.xi     {
7603*53ee8cc1Swenshuai.xi         printf("[TSP_ERR][%s][%d] Unsupported u32GroupId (%lu)!!!\n",__FUNCTION__, __LINE__, (long unsigned int)u32GroupId);
7604*53ee8cc1Swenshuai.xi     }
7605*53ee8cc1Swenshuai.xi 
7606*53ee8cc1Swenshuai.xi     *pu32ScmbSts = _AND_(REG32_R(&_RegCtrl->TsPidScmbStatTsin), u32PIDFltMask);
7607*53ee8cc1Swenshuai.xi 
7608*53ee8cc1Swenshuai.xi     REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // re-enable
7609*53ee8cc1Swenshuai.xi 
7610*53ee8cc1Swenshuai.xi     if(u32PIDFltMask != 0xFFFFFFFF)
7611*53ee8cc1Swenshuai.xi     {
7612*53ee8cc1Swenshuai.xi         *pu32ScmbSts = ((*pu32ScmbSts > 0) ? 1: 0);
7613*53ee8cc1Swenshuai.xi     }
7614*53ee8cc1Swenshuai.xi 
7615*53ee8cc1Swenshuai.xi     return TRUE;
7616*53ee8cc1Swenshuai.xi }
7617*53ee8cc1Swenshuai.xi 
7618*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
7619*53ee8cc1Swenshuai.xi // Merge Stream
7620*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path,MS_U8 u8Idx,MS_U8 * pu8SyncByte,MS_BOOL bSet)7621*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path, MS_U8 u8Idx, MS_U8 *pu8SyncByte, MS_BOOL bSet)
7622*53ee8cc1Swenshuai.xi {
7623*53ee8cc1Swenshuai.xi     REG16 *SynReg=0;
7624*53ee8cc1Swenshuai.xi     MS_U16 u16Mask = 0x00FF, u16Sync = 0, u16Shift = 0;
7625*53ee8cc1Swenshuai.xi 
7626*53ee8cc1Swenshuai.xi     switch(u8Path)
7627*53ee8cc1Swenshuai.xi     {
7628*53ee8cc1Swenshuai.xi         case TSP_TSIF0:
7629*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif0[u8Idx>>1]);
7630*53ee8cc1Swenshuai.xi             break;
7631*53ee8cc1Swenshuai.xi         case TSP_TSIF1:
7632*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif1[u8Idx>>1]);
7633*53ee8cc1Swenshuai.xi             break;
7634*53ee8cc1Swenshuai.xi         case TSP_TSIF2:
7635*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif2[u8Idx>>1]);
7636*53ee8cc1Swenshuai.xi             break;
7637*53ee8cc1Swenshuai.xi         case TSP_TSIF3:
7638*53ee8cc1Swenshuai.xi             SynReg = &(_RegCtrl6->SyncByte_tsif3[u8Idx>>1]);
7639*53ee8cc1Swenshuai.xi             break;
7640*53ee8cc1Swenshuai.xi         default:
7641*53ee8cc1Swenshuai.xi             return FALSE;
7642*53ee8cc1Swenshuai.xi     }
7643*53ee8cc1Swenshuai.xi 
7644*53ee8cc1Swenshuai.xi 
7645*53ee8cc1Swenshuai.xi     if(u8Idx & 0x1)
7646*53ee8cc1Swenshuai.xi     {
7647*53ee8cc1Swenshuai.xi         u16Shift = 8;
7648*53ee8cc1Swenshuai.xi     }
7649*53ee8cc1Swenshuai.xi 
7650*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
7651*53ee8cc1Swenshuai.xi     {
7652*53ee8cc1Swenshuai.xi         u16Sync = (MS_U16)(*pu8SyncByte & 0xFF);
7653*53ee8cc1Swenshuai.xi         REG16_W(SynReg,((REG16_R(SynReg) & ~(u16Mask << u16Shift)) | (u16Sync << u16Shift)));
7654*53ee8cc1Swenshuai.xi     }
7655*53ee8cc1Swenshuai.xi     else
7656*53ee8cc1Swenshuai.xi     {
7657*53ee8cc1Swenshuai.xi         u16Sync = (REG16_R(SynReg) & (u16Mask << u16Shift)) >> u16Shift;
7658*53ee8cc1Swenshuai.xi         *pu8SyncByte = (MS_U8)u16Sync;
7659*53ee8cc1Swenshuai.xi     }
7660*53ee8cc1Swenshuai.xi 
7661*53ee8cc1Swenshuai.xi     return TRUE;
7662*53ee8cc1Swenshuai.xi 
7663*53ee8cc1Swenshuai.xi }
7664*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path,MS_U8 u8Idx,MS_U8 * pu8SrcId,MS_BOOL bSet)7665*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path, MS_U8 u8Idx, MS_U8 *pu8SrcId, MS_BOOL bSet)
7666*53ee8cc1Swenshuai.xi {
7667*53ee8cc1Swenshuai.xi     REG16 *SrcIdReg =0;
7668*53ee8cc1Swenshuai.xi     MS_U16 u16SrcId = 0, u16Mask = 0x000F, u16Shift = 0;
7669*53ee8cc1Swenshuai.xi 
7670*53ee8cc1Swenshuai.xi     switch(u8Path)
7671*53ee8cc1Swenshuai.xi     {
7672*53ee8cc1Swenshuai.xi         case TSP_TSIF0:
7673*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif0[u8Idx>>2]);
7674*53ee8cc1Swenshuai.xi             break;
7675*53ee8cc1Swenshuai.xi         case TSP_TSIF1:
7676*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif1[u8Idx>>2]);
7677*53ee8cc1Swenshuai.xi             break;
7678*53ee8cc1Swenshuai.xi         case TSP_TSIF2:
7679*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif2[u8Idx>>2]);
7680*53ee8cc1Swenshuai.xi             break;
7681*53ee8cc1Swenshuai.xi         case TSP_TSIF3:
7682*53ee8cc1Swenshuai.xi             SrcIdReg = &(_RegCtrl6->SourceId_tsif3[u8Idx>>2]);
7683*53ee8cc1Swenshuai.xi             break;
7684*53ee8cc1Swenshuai.xi         default:
7685*53ee8cc1Swenshuai.xi             return FALSE;
7686*53ee8cc1Swenshuai.xi     }
7687*53ee8cc1Swenshuai.xi 
7688*53ee8cc1Swenshuai.xi     switch(u8Idx & 0x3)
7689*53ee8cc1Swenshuai.xi     {
7690*53ee8cc1Swenshuai.xi         case 0x1:
7691*53ee8cc1Swenshuai.xi             u16Shift = 4;
7692*53ee8cc1Swenshuai.xi             break;
7693*53ee8cc1Swenshuai.xi         case 0x2:
7694*53ee8cc1Swenshuai.xi             u16Shift = 8;
7695*53ee8cc1Swenshuai.xi             break;
7696*53ee8cc1Swenshuai.xi         case 0x3:
7697*53ee8cc1Swenshuai.xi             u16Shift = 12;
7698*53ee8cc1Swenshuai.xi             break;
7699*53ee8cc1Swenshuai.xi     }
7700*53ee8cc1Swenshuai.xi 
7701*53ee8cc1Swenshuai.xi     if(bSet == TRUE)
7702*53ee8cc1Swenshuai.xi     {
7703*53ee8cc1Swenshuai.xi         u16SrcId = (MS_U16)(*pu8SrcId & 0xFF);
7704*53ee8cc1Swenshuai.xi         REG16_W(SrcIdReg,((REG16_R(SrcIdReg) & ~(u16Mask << u16Shift)) | (u16SrcId << u16Shift)));
7705*53ee8cc1Swenshuai.xi     }
7706*53ee8cc1Swenshuai.xi     else
7707*53ee8cc1Swenshuai.xi     {
7708*53ee8cc1Swenshuai.xi         u16SrcId = (REG16_R(SrcIdReg) & (u16Mask << u16Shift)) >> u16Shift;
7709*53ee8cc1Swenshuai.xi         *pu8SrcId = (MS_U8)u16SrcId;
7710*53ee8cc1Swenshuai.xi     }
7711*53ee8cc1Swenshuai.xi 
7712*53ee8cc1Swenshuai.xi     return TRUE;
7713*53ee8cc1Swenshuai.xi }
7714*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path,MS_U8 u8PktHeaderLen)7715*53ee8cc1Swenshuai.xi static void HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path, MS_U8 u8PktHeaderLen)
7716*53ee8cc1Swenshuai.xi {
7717*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7718*53ee8cc1Swenshuai.xi 
7719*53ee8cc1Swenshuai.xi     REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_MXL_PKT_HEADER_MASK)) | ((u8PktHeaderLen << TSP_MXL_PKT_HEADER_SHIFT) & TSP_MXL_PKT_HEADER_MASK)));
7720*53ee8cc1Swenshuai.xi }
7721*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_PktMode(MS_U8 u8Path,TSP_HAL_PKT_MODE ePktMode)7722*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_PktMode(MS_U8 u8Path, TSP_HAL_PKT_MODE ePktMode)
7723*53ee8cc1Swenshuai.xi {
7724*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7725*53ee8cc1Swenshuai.xi 
7726*53ee8cc1Swenshuai.xi     switch(ePktMode)
7727*53ee8cc1Swenshuai.xi     {
7728*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_NORMAL:
7729*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_188Mode));
7730*53ee8cc1Swenshuai.xi             break;
7731*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_CI:
7732*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_CIMode));
7733*53ee8cc1Swenshuai.xi             break;
7734*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_OPEN_CABLE:
7735*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_OpenCableMode));
7736*53ee8cc1Swenshuai.xi             break;
7737*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_ATS:
7738*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_ATSMode));
7739*53ee8cc1Swenshuai.xi             break;
7740*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_192:
7741*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7742*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,4);
7743*53ee8cc1Swenshuai.xi             break;
7744*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_196:
7745*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7746*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,8);
7747*53ee8cc1Swenshuai.xi             break;
7748*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_MXL_200:
7749*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
7750*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,12);
7751*53ee8cc1Swenshuai.xi             break;
7752*53ee8cc1Swenshuai.xi         case E_TSP_HAL_PKT_MODE_ND:
7753*53ee8cc1Swenshuai.xi             REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_NagraDongleMode));
7754*53ee8cc1Swenshuai.xi             HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,1);
7755*53ee8cc1Swenshuai.xi             break;
7756*53ee8cc1Swenshuai.xi         default:
7757*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] Wrong PktConverter Packet Mode!!!\n",__FUNCTION__,__LINE__);
7758*53ee8cc1Swenshuai.xi             return FALSE;
7759*53ee8cc1Swenshuai.xi     }
7760*53ee8cc1Swenshuai.xi 
7761*53ee8cc1Swenshuai.xi     return TRUE;
7762*53ee8cc1Swenshuai.xi }
7763*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path,MS_BOOL bEnable)7764*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path, MS_BOOL bEnable)
7765*53ee8cc1Swenshuai.xi {
7766*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7767*53ee8cc1Swenshuai.xi 
7768*53ee8cc1Swenshuai.xi     if(bEnable)
7769*53ee8cc1Swenshuai.xi     {
7770*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _SET_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47)); // Set 1 to force sync byte be 0x47
7771*53ee8cc1Swenshuai.xi     }
7772*53ee8cc1Swenshuai.xi     else
7773*53ee8cc1Swenshuai.xi     {
7774*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47));
7775*53ee8cc1Swenshuai.xi     }
7776*53ee8cc1Swenshuai.xi }
7777*53ee8cc1Swenshuai.xi 
HAL_TSP_PktConverter_SrcIdFlt(MS_U8 u8Path,MS_BOOL bEnable)7778*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_SrcIdFlt(MS_U8 u8Path, MS_BOOL bEnable)
7779*53ee8cc1Swenshuai.xi {
7780*53ee8cc1Swenshuai.xi     REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
7781*53ee8cc1Swenshuai.xi 
7782*53ee8cc1Swenshuai.xi     if(bEnable)
7783*53ee8cc1Swenshuai.xi     {
7784*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
7785*53ee8cc1Swenshuai.xi     }
7786*53ee8cc1Swenshuai.xi     else
7787*53ee8cc1Swenshuai.xi     {
7788*53ee8cc1Swenshuai.xi         REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_SRC_ID_FLT_EN));
7789*53ee8cc1Swenshuai.xi     }
7790*53ee8cc1Swenshuai.xi }
7791*53ee8cc1Swenshuai.xi 
HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId,MS_U32 u32SrcId)7792*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId, MS_U32 u32SrcId)
7793*53ee8cc1Swenshuai.xi {
7794*53ee8cc1Swenshuai.xi     REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
7795*53ee8cc1Swenshuai.xi     TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcId << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
7796*53ee8cc1Swenshuai.xi }
7797*53ee8cc1Swenshuai.xi 
HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)7798*53ee8cc1Swenshuai.xi void HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)
7799*53ee8cc1Swenshuai.xi {
7800*53ee8cc1Swenshuai.xi     MS_U8   u8Id;
7801*53ee8cc1Swenshuai.xi     MS_U8   u8SyncByte;
7802*53ee8cc1Swenshuai.xi 
7803*53ee8cc1Swenshuai.xi     u8SyncByte = 0x47;
7804*53ee8cc1Swenshuai.xi     for(u8Id = 0; u8Id < TSP_MERGESTREAM_NUM; u8Id++,u8SyncByte++)
7805*53ee8cc1Swenshuai.xi     {
7806*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Id, &u8SyncByte, TRUE);
7807*53ee8cc1Swenshuai.xi         HAL_TSP_PktConverter_SetSrcId(u8Path, u8Id, &u8Id, TRUE);
7808*53ee8cc1Swenshuai.xi     }
7809*53ee8cc1Swenshuai.xi     HAL_TSP_PktConverter_PktMode(u8Path,E_TSP_HAL_PKT_MODE_NORMAL);
7810*53ee8cc1Swenshuai.xi }
7811*53ee8cc1Swenshuai.xi 
7812*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
7813*53ee8cc1Swenshuai.xi //  For Debug Table
7814*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
7815*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)7816*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)
7817*53ee8cc1Swenshuai.xi {
7818*53ee8cc1Swenshuai.xi     switch (eFlow)
7819*53ee8cc1Swenshuai.xi     {
7820*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE0:
7821*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX0;
7822*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE1:
7823*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
7824*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE2:
7825*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
7826*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_LIVE3:
7827*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX1;
7828*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE0:
7829*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX1;
7830*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE1:
7831*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX3;
7832*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE2:
7833*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX0;
7834*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_FILE3:
7835*53ee8cc1Swenshuai.xi             return E_TSP_SRC_PKTDMX2;
7836*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_MMFI0:
7837*53ee8cc1Swenshuai.xi             return E_TSP_SRC_MMFI0;
7838*53ee8cc1Swenshuai.xi         case E_TSP_HAL_FLOW_MMFI1:
7839*53ee8cc1Swenshuai.xi             return E_TSP_SRC_MMFI1;
7840*53ee8cc1Swenshuai.xi         default:
7841*53ee8cc1Swenshuai.xi             printf("[TSP_ERR][%s][%d] UnSupported Debug Flow : %d !!!\n",__FUNCTION__, __LINE__,eFlow);
7842*53ee8cc1Swenshuai.xi             return E_TSP_SRC_INVALID;
7843*53ee8cc1Swenshuai.xi     }
7844*53ee8cc1Swenshuai.xi }
7845*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)7846*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)
7847*53ee8cc1Swenshuai.xi {
7848*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
7849*53ee8cc1Swenshuai.xi 
7850*53ee8cc1Swenshuai.xi     switch(u32TsIf)
7851*53ee8cc1Swenshuai.xi     {
7852*53ee8cc1Swenshuai.xi         case 0:
7853*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
7854*53ee8cc1Swenshuai.xi             break;
7855*53ee8cc1Swenshuai.xi         case 1:
7856*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
7857*53ee8cc1Swenshuai.xi             break;
7858*53ee8cc1Swenshuai.xi         case 2:
7859*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
7860*53ee8cc1Swenshuai.xi             break;
7861*53ee8cc1Swenshuai.xi         case 3:
7862*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
7863*53ee8cc1Swenshuai.xi             break;
7864*53ee8cc1Swenshuai.xi         default:
7865*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7866*53ee8cc1Swenshuai.xi             break;
7867*53ee8cc1Swenshuai.xi     }
7868*53ee8cc1Swenshuai.xi 
7869*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_TSIF_SRC_SEL_MASK,(u16TSIF << CFG5_7F_TSIF_SRC_SEL_SHIFT));
7870*53ee8cc1Swenshuai.xi }
7871*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)7872*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
7873*53ee8cc1Swenshuai.xi {
7874*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
7875*53ee8cc1Swenshuai.xi     {
7876*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7877*53ee8cc1Swenshuai.xi         {
7878*53ee8cc1Swenshuai.xi             case 0:
7879*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
7880*53ee8cc1Swenshuai.xi                 break;
7881*53ee8cc1Swenshuai.xi             case 1:
7882*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
7883*53ee8cc1Swenshuai.xi                 break;
7884*53ee8cc1Swenshuai.xi             case 2:
7885*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
7886*53ee8cc1Swenshuai.xi                 break;
7887*53ee8cc1Swenshuai.xi             case 3:
7888*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_3_LOAD);
7889*53ee8cc1Swenshuai.xi                 break;
7890*53ee8cc1Swenshuai.xi             default:
7891*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7892*53ee8cc1Swenshuai.xi                 break;
7893*53ee8cc1Swenshuai.xi         }
7894*53ee8cc1Swenshuai.xi     }
7895*53ee8cc1Swenshuai.xi     else
7896*53ee8cc1Swenshuai.xi     {
7897*53ee8cc1Swenshuai.xi         switch(u32TsIf)
7898*53ee8cc1Swenshuai.xi         {
7899*53ee8cc1Swenshuai.xi             case 0:
7900*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
7901*53ee8cc1Swenshuai.xi                 break;
7902*53ee8cc1Swenshuai.xi             case 1:
7903*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
7904*53ee8cc1Swenshuai.xi                 break;
7905*53ee8cc1Swenshuai.xi             case 2:
7906*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
7907*53ee8cc1Swenshuai.xi                 break;
7908*53ee8cc1Swenshuai.xi             case 3:
7909*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_3_LOAD);
7910*53ee8cc1Swenshuai.xi                 break;
7911*53ee8cc1Swenshuai.xi             default:
7912*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
7913*53ee8cc1Swenshuai.xi                 break;
7914*53ee8cc1Swenshuai.xi         }
7915*53ee8cc1Swenshuai.xi     }
7916*53ee8cc1Swenshuai.xi 
7917*53ee8cc1Swenshuai.xi }
7918*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf,MS_BOOL bLock)7919*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf, MS_BOOL bLock)
7920*53ee8cc1Swenshuai.xi {
7921*53ee8cc1Swenshuai.xi     if(bLock)  // 188 mode
7922*53ee8cc1Swenshuai.xi     {
7923*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
7924*53ee8cc1Swenshuai.xi     }
7925*53ee8cc1Swenshuai.xi     else       // Non 188 mode
7926*53ee8cc1Swenshuai.xi     {
7927*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
7928*53ee8cc1Swenshuai.xi     }
7929*53ee8cc1Swenshuai.xi 
7930*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Locked_PKT_Cnt);
7931*53ee8cc1Swenshuai.xi }
7932*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)7933*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)
7934*53ee8cc1Swenshuai.xi {
7935*53ee8cc1Swenshuai.xi     switch (u32Tsif)
7936*53ee8cc1Swenshuai.xi     {
7937*53ee8cc1Swenshuai.xi         case 0 :
7938*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
7939*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
7940*53ee8cc1Swenshuai.xi             break;
7941*53ee8cc1Swenshuai.xi         case 1:
7942*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
7943*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
7944*53ee8cc1Swenshuai.xi             break;
7945*53ee8cc1Swenshuai.xi         case 2:
7946*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
7947*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
7948*53ee8cc1Swenshuai.xi             break;
7949*53ee8cc1Swenshuai.xi         case 3:
7950*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_3_CLR);
7951*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_3_CLR);
7952*53ee8cc1Swenshuai.xi             break;
7953*53ee8cc1Swenshuai.xi         default :
7954*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
7955*53ee8cc1Swenshuai.xi             break;
7956*53ee8cc1Swenshuai.xi     }
7957*53ee8cc1Swenshuai.xi }
7958*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)7959*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)
7960*53ee8cc1Swenshuai.xi {
7961*53ee8cc1Swenshuai.xi     switch (eClrSrc)
7962*53ee8cc1Swenshuai.xi     {
7963*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7964*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX0 << CFG5_7F_CLR_SRC_SHIFT);
7965*53ee8cc1Swenshuai.xi             break;
7966*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7967*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX1 << CFG5_7F_CLR_SRC_SHIFT);
7968*53ee8cc1Swenshuai.xi             break;
7969*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
7970*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX2 << CFG5_7F_CLR_SRC_SHIFT);
7971*53ee8cc1Swenshuai.xi             break;
7972*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
7973*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX3 << CFG5_7F_CLR_SRC_SHIFT);
7974*53ee8cc1Swenshuai.xi             break;
7975*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
7976*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI0 << CFG5_7F_CLR_SRC_SHIFT);
7977*53ee8cc1Swenshuai.xi             break;
7978*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
7979*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI1 << CFG5_7F_CLR_SRC_SHIFT);
7980*53ee8cc1Swenshuai.xi             break;
7981*53ee8cc1Swenshuai.xi         default:
7982*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported Clear Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,eClrSrc);
7983*53ee8cc1Swenshuai.xi             break;
7984*53ee8cc1Swenshuai.xi     }
7985*53ee8cc1Swenshuai.xi }
7986*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)7987*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType, TSP_SRC_SEQ ePktDmxId)
7988*53ee8cc1Swenshuai.xi {
7989*53ee8cc1Swenshuai.xi     MS_U16 u16AvSrc = 0;
7990*53ee8cc1Swenshuai.xi 
7991*53ee8cc1Swenshuai.xi     switch(ePktDmxId)
7992*53ee8cc1Swenshuai.xi     {
7993*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
7994*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX0;
7995*53ee8cc1Swenshuai.xi             break;
7996*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
7997*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX1;
7998*53ee8cc1Swenshuai.xi             break;
7999*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
8000*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX2;
8001*53ee8cc1Swenshuai.xi             break;
8002*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
8003*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_PKTDMX3;
8004*53ee8cc1Swenshuai.xi             break;
8005*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
8006*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_MMFI0;
8007*53ee8cc1Swenshuai.xi             break;
8008*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
8009*53ee8cc1Swenshuai.xi             u16AvSrc = AV_PKT_SRC_MMFI1;
8010*53ee8cc1Swenshuai.xi             break;
8011*53ee8cc1Swenshuai.xi         default:
8012*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Source : %d!\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
8013*53ee8cc1Swenshuai.xi             break;
8014*53ee8cc1Swenshuai.xi     }
8015*53ee8cc1Swenshuai.xi 
8016*53ee8cc1Swenshuai.xi     switch (eAvType)
8017*53ee8cc1Swenshuai.xi     {
8018*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8019*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_SRC_MASK, u16AvSrc << CFG5_7E_VID_SRC_SHIFT);
8020*53ee8cc1Swenshuai.xi             break;
8021*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
8022*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_3D_SRC_MASK, u16AvSrc << CFG5_7E_VID_3D_SRC_SHIFT);
8023*53ee8cc1Swenshuai.xi             break;
8024*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
8025*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_3_SRC_MASK, u16AvSrc << CFG5_7E_VID_3_SRC_SHIFT);
8026*53ee8cc1Swenshuai.xi             break;
8027*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4 :
8028*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_VID_4_SRC_MASK, u16AvSrc << CFG5_78_VID_4_SRC_SHIFT);
8029*53ee8cc1Swenshuai.xi             break;
8030*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8031*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDA_SRC_MASK, u16AvSrc << CFG5_7E_AUDA_SRC_SHIFT);
8032*53ee8cc1Swenshuai.xi             break;
8033*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8034*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDB_SRC_MASK, u16AvSrc << CFG5_7E_AUDB_SRC_SHIFT);
8035*53ee8cc1Swenshuai.xi             break;
8036*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
8037*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_AUDC_SRC_MASK, u16AvSrc << CFG5_78_AUDC_SRC_SHIFT);
8038*53ee8cc1Swenshuai.xi             break;
8039*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
8040*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78, CFG5_78_AUDD_SRC_MASK, u16AvSrc << CFG5_78_AUDD_SRC_SHIFT);
8041*53ee8cc1Swenshuai.xi             break;
8042*53ee8cc1Swenshuai.xi         default:
8043*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8044*53ee8cc1Swenshuai.xi             break;
8045*53ee8cc1Swenshuai.xi     }
8046*53ee8cc1Swenshuai.xi }
8047*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)8048*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType, MS_BOOL bEn)
8049*53ee8cc1Swenshuai.xi {
8050*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8051*53ee8cc1Swenshuai.xi     {
8052*53ee8cc1Swenshuai.xi         switch (eAvType)
8053*53ee8cc1Swenshuai.xi         {
8054*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
8055*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
8056*53ee8cc1Swenshuai.xi                 break;
8057*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
8058*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
8059*53ee8cc1Swenshuai.xi                 break;
8060*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3 :
8061*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_74,CFG5_74_V3_PKT_CNT_LOAD);
8062*53ee8cc1Swenshuai.xi                 break;
8063*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4 :
8064*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_75,CFG5_75_V4_PKT_CNT_LOAD);
8065*53ee8cc1Swenshuai.xi                 break;
8066*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
8067*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
8068*53ee8cc1Swenshuai.xi                 break;
8069*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
8070*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
8071*53ee8cc1Swenshuai.xi                 break;
8072*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
8073*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_ADC_PKT_CNT_LOAD);
8074*53ee8cc1Swenshuai.xi                 break;
8075*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
8076*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_ADD_PKT_CNT_LOAD);
8077*53ee8cc1Swenshuai.xi                 break;
8078*53ee8cc1Swenshuai.xi             default :
8079*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8080*53ee8cc1Swenshuai.xi                 break;
8081*53ee8cc1Swenshuai.xi         }
8082*53ee8cc1Swenshuai.xi     }
8083*53ee8cc1Swenshuai.xi     else
8084*53ee8cc1Swenshuai.xi     {
8085*53ee8cc1Swenshuai.xi         switch (eAvType)
8086*53ee8cc1Swenshuai.xi         {
8087*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
8088*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
8089*53ee8cc1Swenshuai.xi                 break;
8090*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
8091*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
8092*53ee8cc1Swenshuai.xi                 break;
8093*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3 :
8094*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_74,CFG5_74_V3_PKT_CNT_LOAD);
8095*53ee8cc1Swenshuai.xi                 break;
8096*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4 :
8097*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_75,CFG5_75_V4_PKT_CNT_LOAD);
8098*53ee8cc1Swenshuai.xi                 break;
8099*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
8100*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
8101*53ee8cc1Swenshuai.xi                 break;
8102*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
8103*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
8104*53ee8cc1Swenshuai.xi                 break;
8105*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
8106*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_ADC_PKT_CNT_LOAD);
8107*53ee8cc1Swenshuai.xi                 break;
8108*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
8109*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_ADD_PKT_CNT_LOAD);
8110*53ee8cc1Swenshuai.xi                 break;
8111*53ee8cc1Swenshuai.xi             default :
8112*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8113*53ee8cc1Swenshuai.xi                 break;
8114*53ee8cc1Swenshuai.xi         }
8115*53ee8cc1Swenshuai.xi     }
8116*53ee8cc1Swenshuai.xi }
8117*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)8118*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)
8119*53ee8cc1Swenshuai.xi {
8120*53ee8cc1Swenshuai.xi     switch (eAvType)
8121*53ee8cc1Swenshuai.xi     {
8122*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8123*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
8124*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
8125*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
8126*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
8127*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
8128*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
8129*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
8130*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt2);
8131*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
8132*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
8133*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt2);
8134*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8135*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
8136*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
8137*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8138*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
8139*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
8140*53ee8cc1Swenshuai.xi         default :
8141*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8142*53ee8cc1Swenshuai.xi             return 0;
8143*53ee8cc1Swenshuai.xi     }
8144*53ee8cc1Swenshuai.xi }
8145*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)8146*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)
8147*53ee8cc1Swenshuai.xi {
8148*53ee8cc1Swenshuai.xi     switch (eAvType)
8149*53ee8cc1Swenshuai.xi     {
8150*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8151*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
8152*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
8153*53ee8cc1Swenshuai.xi             break;
8154*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
8155*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
8156*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
8157*53ee8cc1Swenshuai.xi             break;
8158*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
8159*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_74,CFG5_74_V3_PKT_CNT_CLR);
8160*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_74,CFG5_74_V3_PKT_CNT_CLR);
8161*53ee8cc1Swenshuai.xi             break;
8162*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4 :
8163*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_75,CFG5_75_V4_PKT_CNT_CLR);
8164*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_75,CFG5_75_V4_PKT_CNT_CLR);
8165*53ee8cc1Swenshuai.xi             break;
8166*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8167*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
8168*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
8169*53ee8cc1Swenshuai.xi             break;
8170*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8171*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
8172*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
8173*53ee8cc1Swenshuai.xi             break;
8174*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
8175*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_ADC_PKT_CNT_CLR);
8176*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_ADC_PKT_CNT_CLR);
8177*53ee8cc1Swenshuai.xi             break;
8178*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
8179*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_ADD_PKT_CNT_CLR);
8180*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_ADD_PKT_CNT_CLR);
8181*53ee8cc1Swenshuai.xi             break;
8182*53ee8cc1Swenshuai.xi         default :
8183*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8184*53ee8cc1Swenshuai.xi             break;
8185*53ee8cc1Swenshuai.xi     }
8186*53ee8cc1Swenshuai.xi }
8187*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)8188*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)
8189*53ee8cc1Swenshuai.xi {
8190*53ee8cc1Swenshuai.xi     MS_U16 u16AvType = 0;
8191*53ee8cc1Swenshuai.xi 
8192*53ee8cc1Swenshuai.xi     switch(eAvType)
8193*53ee8cc1Swenshuai.xi     {
8194*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO:
8195*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V;
8196*53ee8cc1Swenshuai.xi             break;
8197*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D:
8198*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V3D;
8199*53ee8cc1Swenshuai.xi             break;
8200*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3:
8201*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V3;
8202*53ee8cc1Swenshuai.xi             break;
8203*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4:
8204*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_V4;
8205*53ee8cc1Swenshuai.xi             break;
8206*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO:
8207*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_A;
8208*53ee8cc1Swenshuai.xi             break;
8209*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2:
8210*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_AD;
8211*53ee8cc1Swenshuai.xi             break;
8212*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3:
8213*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_ADC;
8214*53ee8cc1Swenshuai.xi             break;
8215*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4:
8216*53ee8cc1Swenshuai.xi             u16AvType = DIS_DROP_CNT_ADD;
8217*53ee8cc1Swenshuai.xi             break;
8218*53ee8cc1Swenshuai.xi         default:
8219*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8220*53ee8cc1Swenshuai.xi             break;
8221*53ee8cc1Swenshuai.xi     }
8222*53ee8cc1Swenshuai.xi 
8223*53ee8cc1Swenshuai.xi     switch(ePktDmxId)
8224*53ee8cc1Swenshuai.xi     {
8225*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
8226*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL_SHIFT));
8227*53ee8cc1Swenshuai.xi             break;
8228*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
8229*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL1_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL1_SHIFT));
8230*53ee8cc1Swenshuai.xi             break;
8231*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
8232*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL2_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL2_SHIFT));
8233*53ee8cc1Swenshuai.xi             break;
8234*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
8235*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL3_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL3_SHIFT));
8236*53ee8cc1Swenshuai.xi             break;
8237*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
8238*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI0_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI0_SHIFT));
8239*53ee8cc1Swenshuai.xi             break;
8240*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
8241*53ee8cc1Swenshuai.xi             REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI1_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI1_SHIFT));
8242*53ee8cc1Swenshuai.xi             break;
8243*53ee8cc1Swenshuai.xi         default:
8244*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV FIFO Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
8245*53ee8cc1Swenshuai.xi             break;
8246*53ee8cc1Swenshuai.xi     }
8247*53ee8cc1Swenshuai.xi }
8248*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)8249*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)
8250*53ee8cc1Swenshuai.xi {
8251*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8252*53ee8cc1Swenshuai.xi     {
8253*53ee8cc1Swenshuai.xi         switch (eAvType)
8254*53ee8cc1Swenshuai.xi         {
8255*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
8256*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
8257*53ee8cc1Swenshuai.xi                 break;
8258*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
8259*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
8260*53ee8cc1Swenshuai.xi                 break;
8261*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3 :
8262*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_74,CFG5_74_DROP_PKT_CNT_V3_LOAD);
8263*53ee8cc1Swenshuai.xi                 break;
8264*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4 :
8265*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_75,CFG5_75_DROP_PKT_CNT_V4_LOAD);
8266*53ee8cc1Swenshuai.xi                 break;
8267*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
8268*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
8269*53ee8cc1Swenshuai.xi                 break;
8270*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
8271*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
8272*53ee8cc1Swenshuai.xi                 break;
8273*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
8274*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADC_LOAD);
8275*53ee8cc1Swenshuai.xi                 break;
8276*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
8277*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADD_LOAD);
8278*53ee8cc1Swenshuai.xi                 break;
8279*53ee8cc1Swenshuai.xi             default :
8280*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8281*53ee8cc1Swenshuai.xi                 break;
8282*53ee8cc1Swenshuai.xi         }
8283*53ee8cc1Swenshuai.xi     }
8284*53ee8cc1Swenshuai.xi     else
8285*53ee8cc1Swenshuai.xi     {
8286*53ee8cc1Swenshuai.xi         switch (eAvType)
8287*53ee8cc1Swenshuai.xi         {
8288*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
8289*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
8290*53ee8cc1Swenshuai.xi                 break;
8291*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
8292*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
8293*53ee8cc1Swenshuai.xi                 break;
8294*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3 :
8295*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_74,CFG5_74_DROP_PKT_CNT_V3_LOAD);
8296*53ee8cc1Swenshuai.xi                 break;
8297*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4 :
8298*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_75,CFG5_75_DROP_PKT_CNT_V4_LOAD);
8299*53ee8cc1Swenshuai.xi                 break;
8300*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
8301*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
8302*53ee8cc1Swenshuai.xi                 break;
8303*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
8304*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
8305*53ee8cc1Swenshuai.xi                 break;
8306*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
8307*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADC_LOAD);
8308*53ee8cc1Swenshuai.xi                 break;
8309*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
8310*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_ADD_LOAD);
8311*53ee8cc1Swenshuai.xi                 break;
8312*53ee8cc1Swenshuai.xi             default :
8313*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8314*53ee8cc1Swenshuai.xi                 break;
8315*53ee8cc1Swenshuai.xi         }
8316*53ee8cc1Swenshuai.xi     }
8317*53ee8cc1Swenshuai.xi }
8318*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)8319*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)
8320*53ee8cc1Swenshuai.xi {
8321*53ee8cc1Swenshuai.xi     if(bPayload)
8322*53ee8cc1Swenshuai.xi     {
8323*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
8324*53ee8cc1Swenshuai.xi     }
8325*53ee8cc1Swenshuai.xi     else
8326*53ee8cc1Swenshuai.xi     {
8327*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
8328*53ee8cc1Swenshuai.xi     }
8329*53ee8cc1Swenshuai.xi 
8330*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8331*53ee8cc1Swenshuai.xi     {
8332*53ee8cc1Swenshuai.xi         switch (eAvType)
8333*53ee8cc1Swenshuai.xi         {
8334*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
8335*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
8336*53ee8cc1Swenshuai.xi                 break;
8337*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
8338*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V3D_LOAD);
8339*53ee8cc1Swenshuai.xi                 break;
8340*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3 :
8341*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_74,CFG5_74_DIS_PKT_CNT_V3_LOAD);
8342*53ee8cc1Swenshuai.xi                 break;
8343*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4 :
8344*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_75,CFG5_75_DIS_PKT_CNT_V4_LOAD);
8345*53ee8cc1Swenshuai.xi                 break;
8346*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
8347*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
8348*53ee8cc1Swenshuai.xi                 break;
8349*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
8350*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
8351*53ee8cc1Swenshuai.xi                 break;
8352*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
8353*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADC_LOAD);
8354*53ee8cc1Swenshuai.xi                 break;
8355*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
8356*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADD_LOAD);
8357*53ee8cc1Swenshuai.xi                 break;
8358*53ee8cc1Swenshuai.xi             default :
8359*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8360*53ee8cc1Swenshuai.xi                 break;
8361*53ee8cc1Swenshuai.xi         }
8362*53ee8cc1Swenshuai.xi     }
8363*53ee8cc1Swenshuai.xi     else
8364*53ee8cc1Swenshuai.xi     {
8365*53ee8cc1Swenshuai.xi         switch (eAvType)
8366*53ee8cc1Swenshuai.xi         {
8367*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO :
8368*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
8369*53ee8cc1Swenshuai.xi                 break;
8370*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3D :
8371*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V3D_LOAD);
8372*53ee8cc1Swenshuai.xi                 break;
8373*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO3 :
8374*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_74,CFG5_74_DIS_PKT_CNT_V3_LOAD);
8375*53ee8cc1Swenshuai.xi                 break;
8376*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_VIDEO4 :
8377*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_75,CFG5_75_DIS_PKT_CNT_V4_LOAD);
8378*53ee8cc1Swenshuai.xi                 break;
8379*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO :
8380*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
8381*53ee8cc1Swenshuai.xi                 break;
8382*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO2 :
8383*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
8384*53ee8cc1Swenshuai.xi                 break;
8385*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO3 :
8386*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADC_LOAD);
8387*53ee8cc1Swenshuai.xi                 break;
8388*53ee8cc1Swenshuai.xi             case E_TSP_DST_FIFO_AUDIO4 :
8389*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_ADD_LOAD);
8390*53ee8cc1Swenshuai.xi                 break;
8391*53ee8cc1Swenshuai.xi             default :
8392*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8393*53ee8cc1Swenshuai.xi                 break;
8394*53ee8cc1Swenshuai.xi         }
8395*53ee8cc1Swenshuai.xi     }
8396*53ee8cc1Swenshuai.xi }
8397*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId,MS_BOOL bDrop)8398*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId, MS_BOOL bDrop)
8399*53ee8cc1Swenshuai.xi {
8400*53ee8cc1Swenshuai.xi     if(bDrop)
8401*53ee8cc1Swenshuai.xi     {
8402*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
8403*53ee8cc1Swenshuai.xi     }
8404*53ee8cc1Swenshuai.xi     else
8405*53ee8cc1Swenshuai.xi     {
8406*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
8407*53ee8cc1Swenshuai.xi     }
8408*53ee8cc1Swenshuai.xi 
8409*53ee8cc1Swenshuai.xi     switch (ePktDmxId)
8410*53ee8cc1Swenshuai.xi     {
8411*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX0:
8412*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_0);
8413*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX1:
8414*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_1);
8415*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX2:
8416*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_2);
8417*53ee8cc1Swenshuai.xi         case E_TSP_SRC_PKTDMX3:
8418*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_3);
8419*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI0:
8420*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->CFG5_0B);
8421*53ee8cc1Swenshuai.xi         case E_TSP_SRC_MMFI1:
8422*53ee8cc1Swenshuai.xi             return REG16_R(&_RegCtrl5->CFG5_0C);
8423*53ee8cc1Swenshuai.xi         default :
8424*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV FIFO Source : %d\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
8425*53ee8cc1Swenshuai.xi             return 0;
8426*53ee8cc1Swenshuai.xi     }
8427*53ee8cc1Swenshuai.xi }
8428*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)8429*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)
8430*53ee8cc1Swenshuai.xi {
8431*53ee8cc1Swenshuai.xi     switch (eAvType)
8432*53ee8cc1Swenshuai.xi     {
8433*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8434*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
8435*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
8436*53ee8cc1Swenshuai.xi             break;
8437*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
8438*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
8439*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
8440*53ee8cc1Swenshuai.xi             break;
8441*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3:
8442*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_74,CFG5_74_DROP_PKT_CNT_V3_CLR);
8443*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_74,CFG5_74_DROP_PKT_CNT_V3_CLR);
8444*53ee8cc1Swenshuai.xi             break;
8445*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4 :
8446*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_75,CFG5_75_DROP_PKT_CNT_V4_CLR);
8447*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_75,CFG5_75_DROP_PKT_CNT_V4_CLR);
8448*53ee8cc1Swenshuai.xi             break;
8449*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8450*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
8451*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
8452*53ee8cc1Swenshuai.xi             break;
8453*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8454*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
8455*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
8456*53ee8cc1Swenshuai.xi             break;
8457*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
8458*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADC_CLR);
8459*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADC_CLR);
8460*53ee8cc1Swenshuai.xi             break;
8461*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
8462*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADD_CLR);
8463*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_ADD_CLR);
8464*53ee8cc1Swenshuai.xi             break;
8465*53ee8cc1Swenshuai.xi         default :
8466*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8467*53ee8cc1Swenshuai.xi             break;
8468*53ee8cc1Swenshuai.xi     }
8469*53ee8cc1Swenshuai.xi }
8470*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)8471*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)
8472*53ee8cc1Swenshuai.xi {
8473*53ee8cc1Swenshuai.xi     switch (eAvType)
8474*53ee8cc1Swenshuai.xi     {
8475*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO :
8476*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
8477*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
8478*53ee8cc1Swenshuai.xi             break;
8479*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3D :
8480*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
8481*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
8482*53ee8cc1Swenshuai.xi             break;
8483*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO3 :
8484*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_74,CFG5_74_DIS_PKT_CNT_V3_CLR);
8485*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_74,CFG5_74_DIS_PKT_CNT_V3_CLR);
8486*53ee8cc1Swenshuai.xi             break;
8487*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_VIDEO4 :
8488*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_75,CFG5_75_DIS_PKT_CNT_V4_CLR);
8489*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_75,CFG5_75_DIS_PKT_CNT_V4_CLR);
8490*53ee8cc1Swenshuai.xi             break;
8491*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO :
8492*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
8493*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
8494*53ee8cc1Swenshuai.xi             break;
8495*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO2 :
8496*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
8497*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
8498*53ee8cc1Swenshuai.xi             break;
8499*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO3 :
8500*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
8501*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADC_CLR);
8502*53ee8cc1Swenshuai.xi             break;
8503*53ee8cc1Swenshuai.xi         case E_TSP_DST_FIFO_AUDIO4 :
8504*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
8505*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_ADD_CLR);
8506*53ee8cc1Swenshuai.xi             break;
8507*53ee8cc1Swenshuai.xi         default :
8508*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
8509*53ee8cc1Swenshuai.xi             break;
8510*53ee8cc1Swenshuai.xi     }
8511*53ee8cc1Swenshuai.xi }
8512*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)8513*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)
8514*53ee8cc1Swenshuai.xi {
8515*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
8516*53ee8cc1Swenshuai.xi 
8517*53ee8cc1Swenshuai.xi     switch(u32TsIf)
8518*53ee8cc1Swenshuai.xi     {
8519*53ee8cc1Swenshuai.xi         case 0:
8520*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
8521*53ee8cc1Swenshuai.xi             break;
8522*53ee8cc1Swenshuai.xi         case 1:
8523*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
8524*53ee8cc1Swenshuai.xi             break;
8525*53ee8cc1Swenshuai.xi         case 2:
8526*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
8527*53ee8cc1Swenshuai.xi             break;
8528*53ee8cc1Swenshuai.xi         case 3:
8529*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
8530*53ee8cc1Swenshuai.xi             break;
8531*53ee8cc1Swenshuai.xi         default:
8532*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8533*53ee8cc1Swenshuai.xi             break;
8534*53ee8cc1Swenshuai.xi     }
8535*53ee8cc1Swenshuai.xi 
8536*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_ERR_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_ERR_PKT_SRC_SEL_SHIFT));
8537*53ee8cc1Swenshuai.xi }
8538*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)8539*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
8540*53ee8cc1Swenshuai.xi {
8541*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8542*53ee8cc1Swenshuai.xi     {
8543*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8544*53ee8cc1Swenshuai.xi         {
8545*53ee8cc1Swenshuai.xi             case 0:
8546*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
8547*53ee8cc1Swenshuai.xi                 break;
8548*53ee8cc1Swenshuai.xi             case 1:
8549*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
8550*53ee8cc1Swenshuai.xi                 break;
8551*53ee8cc1Swenshuai.xi             case 2:
8552*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
8553*53ee8cc1Swenshuai.xi                 break;
8554*53ee8cc1Swenshuai.xi             case 3:
8555*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_3_LOAD);
8556*53ee8cc1Swenshuai.xi                 break;
8557*53ee8cc1Swenshuai.xi             default:
8558*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8559*53ee8cc1Swenshuai.xi                 break;
8560*53ee8cc1Swenshuai.xi         }
8561*53ee8cc1Swenshuai.xi     }
8562*53ee8cc1Swenshuai.xi     else
8563*53ee8cc1Swenshuai.xi     {
8564*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8565*53ee8cc1Swenshuai.xi         {
8566*53ee8cc1Swenshuai.xi             case 0:
8567*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
8568*53ee8cc1Swenshuai.xi                 break;
8569*53ee8cc1Swenshuai.xi             case 1:
8570*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
8571*53ee8cc1Swenshuai.xi                 break;
8572*53ee8cc1Swenshuai.xi             case 2:
8573*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
8574*53ee8cc1Swenshuai.xi                 break;
8575*53ee8cc1Swenshuai.xi             case 3:
8576*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_3_LOAD);
8577*53ee8cc1Swenshuai.xi                 break;
8578*53ee8cc1Swenshuai.xi             default:
8579*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8580*53ee8cc1Swenshuai.xi                 break;
8581*53ee8cc1Swenshuai.xi         }
8582*53ee8cc1Swenshuai.xi     }
8583*53ee8cc1Swenshuai.xi 
8584*53ee8cc1Swenshuai.xi }
8585*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Get(void)8586*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_ErrPktCnt_Get(void)
8587*53ee8cc1Swenshuai.xi {
8588*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Err_PKT_Cnt);
8589*53ee8cc1Swenshuai.xi }
8590*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)8591*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)
8592*53ee8cc1Swenshuai.xi {
8593*53ee8cc1Swenshuai.xi     switch (u32Tsif)
8594*53ee8cc1Swenshuai.xi     {
8595*53ee8cc1Swenshuai.xi         case 0 :
8596*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
8597*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
8598*53ee8cc1Swenshuai.xi             break;
8599*53ee8cc1Swenshuai.xi         case 1:
8600*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
8601*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
8602*53ee8cc1Swenshuai.xi             break;
8603*53ee8cc1Swenshuai.xi         case 2 :
8604*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
8605*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
8606*53ee8cc1Swenshuai.xi             break;
8607*53ee8cc1Swenshuai.xi         case 3 :
8608*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_3_CLR);
8609*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_3_CLR);
8610*53ee8cc1Swenshuai.xi             break;
8611*53ee8cc1Swenshuai.xi 
8612*53ee8cc1Swenshuai.xi         default :
8613*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
8614*53ee8cc1Swenshuai.xi             break;
8615*53ee8cc1Swenshuai.xi     }
8616*53ee8cc1Swenshuai.xi }
8617*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)8618*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)
8619*53ee8cc1Swenshuai.xi {
8620*53ee8cc1Swenshuai.xi     MS_U16 u16TSIF = 0;;
8621*53ee8cc1Swenshuai.xi 
8622*53ee8cc1Swenshuai.xi     switch(u32TsIf)
8623*53ee8cc1Swenshuai.xi     {
8624*53ee8cc1Swenshuai.xi         case 0:
8625*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF0;
8626*53ee8cc1Swenshuai.xi             break;
8627*53ee8cc1Swenshuai.xi         case 1:
8628*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF1;
8629*53ee8cc1Swenshuai.xi             break;
8630*53ee8cc1Swenshuai.xi         case 2:
8631*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF2;
8632*53ee8cc1Swenshuai.xi             break;
8633*53ee8cc1Swenshuai.xi         case 3:
8634*53ee8cc1Swenshuai.xi             u16TSIF = TSIF_SRC_SEL_TSIF3;
8635*53ee8cc1Swenshuai.xi             break;
8636*53ee8cc1Swenshuai.xi         default:
8637*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8638*53ee8cc1Swenshuai.xi             break;
8639*53ee8cc1Swenshuai.xi     }
8640*53ee8cc1Swenshuai.xi 
8641*53ee8cc1Swenshuai.xi     REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_INPUT_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_INPUT_PKT_SRC_SEL_SHIT));
8642*53ee8cc1Swenshuai.xi }
8643*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)8644*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
8645*53ee8cc1Swenshuai.xi {
8646*53ee8cc1Swenshuai.xi     if(bEn == TRUE)
8647*53ee8cc1Swenshuai.xi     {
8648*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8649*53ee8cc1Swenshuai.xi         {
8650*53ee8cc1Swenshuai.xi             case 0:
8651*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
8652*53ee8cc1Swenshuai.xi                 break;
8653*53ee8cc1Swenshuai.xi             case 1:
8654*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
8655*53ee8cc1Swenshuai.xi                 break;
8656*53ee8cc1Swenshuai.xi             case 2:
8657*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
8658*53ee8cc1Swenshuai.xi                 break;
8659*53ee8cc1Swenshuai.xi             case 3:
8660*53ee8cc1Swenshuai.xi                 REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_3_LOAD);
8661*53ee8cc1Swenshuai.xi                 break;
8662*53ee8cc1Swenshuai.xi             default:
8663*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8664*53ee8cc1Swenshuai.xi                 break;
8665*53ee8cc1Swenshuai.xi         }
8666*53ee8cc1Swenshuai.xi     }
8667*53ee8cc1Swenshuai.xi     else
8668*53ee8cc1Swenshuai.xi     {
8669*53ee8cc1Swenshuai.xi         switch(u32TsIf)
8670*53ee8cc1Swenshuai.xi         {
8671*53ee8cc1Swenshuai.xi             case 0:
8672*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
8673*53ee8cc1Swenshuai.xi                 break;
8674*53ee8cc1Swenshuai.xi             case 1:
8675*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
8676*53ee8cc1Swenshuai.xi                 break;
8677*53ee8cc1Swenshuai.xi             case 2:
8678*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
8679*53ee8cc1Swenshuai.xi                 break;
8680*53ee8cc1Swenshuai.xi             case 3:
8681*53ee8cc1Swenshuai.xi                 REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_3_LOAD);
8682*53ee8cc1Swenshuai.xi                 break;
8683*53ee8cc1Swenshuai.xi             default:
8684*53ee8cc1Swenshuai.xi                 printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
8685*53ee8cc1Swenshuai.xi                 break;
8686*53ee8cc1Swenshuai.xi         }
8687*53ee8cc1Swenshuai.xi     }
8688*53ee8cc1Swenshuai.xi }
8689*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Get(void)8690*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_InputPktCnt_Get(void)
8691*53ee8cc1Swenshuai.xi {
8692*53ee8cc1Swenshuai.xi     return REG16_R(&_RegCtrl5->Input_PKT_Cnt);
8693*53ee8cc1Swenshuai.xi }
8694*53ee8cc1Swenshuai.xi 
HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)8695*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)
8696*53ee8cc1Swenshuai.xi {
8697*53ee8cc1Swenshuai.xi     switch (u32Tsif)
8698*53ee8cc1Swenshuai.xi     {
8699*53ee8cc1Swenshuai.xi         case 0 :
8700*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
8701*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
8702*53ee8cc1Swenshuai.xi             break;
8703*53ee8cc1Swenshuai.xi         case 1:
8704*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
8705*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
8706*53ee8cc1Swenshuai.xi             break;
8707*53ee8cc1Swenshuai.xi         case 2 :
8708*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
8709*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
8710*53ee8cc1Swenshuai.xi             break;
8711*53ee8cc1Swenshuai.xi         case 3 :
8712*53ee8cc1Swenshuai.xi             REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_3_CLR);
8713*53ee8cc1Swenshuai.xi             REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_3_CLR);
8714*53ee8cc1Swenshuai.xi             break;
8715*53ee8cc1Swenshuai.xi 
8716*53ee8cc1Swenshuai.xi         default :
8717*53ee8cc1Swenshuai.xi             printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
8718*53ee8cc1Swenshuai.xi             break;
8719*53ee8cc1Swenshuai.xi     }
8720*53ee8cc1Swenshuai.xi 
8721*53ee8cc1Swenshuai.xi }
8722*53ee8cc1Swenshuai.xi 
HAL_TSP_Privilege_Enable(MS_BOOL bEnable)8723*53ee8cc1Swenshuai.xi void HAL_TSP_Privilege_Enable(MS_BOOL bEnable)
8724*53ee8cc1Swenshuai.xi {
8725*53ee8cc1Swenshuai.xi     if (bEnable)
8726*53ee8cc1Swenshuai.xi     {
8727*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_7C, CFG3_7C_PRIVILEGE_FLAG);
8728*53ee8cc1Swenshuai.xi     }
8729*53ee8cc1Swenshuai.xi     else
8730*53ee8cc1Swenshuai.xi     {
8731*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_7C, CFG3_7C_PRIVILEGE_FLAG);
8732*53ee8cc1Swenshuai.xi     }
8733*53ee8cc1Swenshuai.xi }
8734*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng,MS_U32 u32FQSrc)8735*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng, MS_U32 u32FQSrc)
8736*53ee8cc1Swenshuai.xi {
8737*53ee8cc1Swenshuai.xi     // not support
8738*53ee8cc1Swenshuai.xi     HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_INFO, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupport feature!\n",__FILE__,__FUNCTION__,__LINE__));
8739*53ee8cc1Swenshuai.xi     return FALSE;
8740*53ee8cc1Swenshuai.xi }
8741*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)8742*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)
8743*53ee8cc1Swenshuai.xi {
8744*53ee8cc1Swenshuai.xi     // not support
8745*53ee8cc1Swenshuai.xi     HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_INFO, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupport feature!\n",__FILE__,__FUNCTION__,__LINE__));
8746*53ee8cc1Swenshuai.xi     return 0xFF;
8747*53ee8cc1Swenshuai.xi }
8748*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng,MS_BOOL bFltNull)8749*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng, MS_BOOL bFltNull)
8750*53ee8cc1Swenshuai.xi {
8751*53ee8cc1Swenshuai.xi     if(bFltNull)
8752*53ee8cc1Swenshuai.xi     {
8753*53ee8cc1Swenshuai.xi         REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_FILTER_NULL_PKT);
8754*53ee8cc1Swenshuai.xi     }
8755*53ee8cc1Swenshuai.xi     else
8756*53ee8cc1Swenshuai.xi     {
8757*53ee8cc1Swenshuai.xi         REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_FILTER_NULL_PKT);
8758*53ee8cc1Swenshuai.xi     }
8759*53ee8cc1Swenshuai.xi 
8760*53ee8cc1Swenshuai.xi     return TRUE;
8761*53ee8cc1Swenshuai.xi }
8762*53ee8cc1Swenshuai.xi 
HAL_TSP_FQ_MMFI_MIU_Sel(TSP_HAL_MIU_SEL_TYPE eType,MS_U8 u8Eng,MS_PHY phyBufStart)8763*53ee8cc1Swenshuai.xi void HAL_TSP_FQ_MMFI_MIU_Sel(TSP_HAL_MIU_SEL_TYPE eType, MS_U8 u8Eng, MS_PHY phyBufStart)
8764*53ee8cc1Swenshuai.xi {
8765*53ee8cc1Swenshuai.xi     MS_U8   u8MiuSel = 0;
8766*53ee8cc1Swenshuai.xi     MS_PHY  phyMiuOffsetFileinAddr = 0;
8767*53ee8cc1Swenshuai.xi     MS_U8   u8Shift = u8Eng * TSP_MIU_SEL_BITS_LEN;
8768*53ee8cc1Swenshuai.xi 
8769*53ee8cc1Swenshuai.xi     _phy_to_miu_offset(u8MiuSel, phyMiuOffsetFileinAddr, phyBufStart);
8770*53ee8cc1Swenshuai.xi 
8771*53ee8cc1Swenshuai.xi     switch(eType)
8772*53ee8cc1Swenshuai.xi     {
8773*53ee8cc1Swenshuai.xi         case E_TSP_HAL_MIU_SEL_MMFI:
8774*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)));
8775*53ee8cc1Swenshuai.xi             break;
8776*53ee8cc1Swenshuai.xi         case E_TSP_HAL_MIU_SEL_FQ:
8777*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)));
8778*53ee8cc1Swenshuai.xi             break;
8779*53ee8cc1Swenshuai.xi         default:
8780*53ee8cc1Swenshuai.xi             break;
8781*53ee8cc1Swenshuai.xi     }
8782*53ee8cc1Swenshuai.xi }
8783