1*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2*53ee8cc1Swenshuai.xi //
3*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
4*53ee8cc1Swenshuai.xi // All rights reserved.
5*53ee8cc1Swenshuai.xi //
6*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
7*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
8*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
9*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
10*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
11*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
12*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
13*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
14*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
17*53ee8cc1Swenshuai.xi
18*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
19*53ee8cc1Swenshuai.xi // file halPVR.c
20*53ee8cc1Swenshuai.xi // @brief PVR HAL
21*53ee8cc1Swenshuai.xi // @author MStar Semiconductor,Inc.
22*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
23*53ee8cc1Swenshuai.xi #include "MsCommon.h"
24*53ee8cc1Swenshuai.xi #include "halCHIP.h"
25*53ee8cc1Swenshuai.xi #include "regTSP.h"
26*53ee8cc1Swenshuai.xi #include "halTSP.h"
27*53ee8cc1Swenshuai.xi #include "drvSYS.h"
28*53ee8cc1Swenshuai.xi
29*53ee8cc1Swenshuai.xi
30*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
31*53ee8cc1Swenshuai.xi // Driver Compiler Option
32*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
33*53ee8cc1Swenshuai.xi
34*53ee8cc1Swenshuai.xi
35*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
36*53ee8cc1Swenshuai.xi // TSP Hardware Abstraction Layer
37*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
38*53ee8cc1Swenshuai.xi MS_VIRT _u32RegBase = 0;
39*53ee8cc1Swenshuai.xi
40*53ee8cc1Swenshuai.xi static REG_Ctrl* _RegCtrl = NULL;
41*53ee8cc1Swenshuai.xi static REG_Ctrl2* _RegCtrl2 = NULL;
42*53ee8cc1Swenshuai.xi static REG_Ctrl3* _RegCtrl3 = NULL;
43*53ee8cc1Swenshuai.xi static REG_Ctrl4* _RegCtrl4 = NULL;
44*53ee8cc1Swenshuai.xi static REG_Ctrl5* _RegCtrl5 = NULL;
45*53ee8cc1Swenshuai.xi static REG_Ctrl6* _RegCtrl6 = NULL;
46*53ee8cc1Swenshuai.xi static REG_Ctrl7* _RegCtrl7 = NULL;
47*53ee8cc1Swenshuai.xi static REG_Ctrl8* _RegCtrl8 = NULL;
48*53ee8cc1Swenshuai.xi
49*53ee8cc1Swenshuai.xi
50*53ee8cc1Swenshuai.xi
51*53ee8cc1Swenshuai.xi // @F_TODO These parameters need to be combined with global variables in Utopia 2.0
52*53ee8cc1Swenshuai.xi static MS_U32 _u32PidFltReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
53*53ee8cc1Swenshuai.xi static MS_U32 _u32PidDstReg[(TSP_PIDFLT_NUM * sizeof(REG_PidFlt))];
54*53ee8cc1Swenshuai.xi static MS_U32 _u32SecReg[(TSP_SECFLT_NUM * ((sizeof(REG_SecFlt) - sizeof(((REG_SecFlt*)0)->_x50))/sizeof(TSP32)))];
55*53ee8cc1Swenshuai.xi
56*53ee8cc1Swenshuai.xi
57*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
58*53ee8cc1Swenshuai.xi // Local Functions
59*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
60*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value);
61*53ee8cc1Swenshuai.xi
_delay(MS_U32 usec)62*53ee8cc1Swenshuai.xi static void _delay(MS_U32 usec)
63*53ee8cc1Swenshuai.xi {
64*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs_Poll(usec);
65*53ee8cc1Swenshuai.xi }
66*53ee8cc1Swenshuai.xi
REG32_R(REG32 * reg)67*53ee8cc1Swenshuai.xi static MS_U32 REG32_R(REG32 *reg)
68*53ee8cc1Swenshuai.xi {
69*53ee8cc1Swenshuai.xi MS_U32 value = 0;
70*53ee8cc1Swenshuai.xi value = (reg)->low;
71*53ee8cc1Swenshuai.xi value |= (reg)->high << 16;
72*53ee8cc1Swenshuai.xi return value;
73*53ee8cc1Swenshuai.xi }
74*53ee8cc1Swenshuai.xi
75*53ee8cc1Swenshuai.xi
REG16_R(REG16 * reg)76*53ee8cc1Swenshuai.xi static MS_U16 REG16_R(REG16 *reg)
77*53ee8cc1Swenshuai.xi {
78*53ee8cc1Swenshuai.xi MS_U16 value = 0;
79*53ee8cc1Swenshuai.xi value = (reg)->data;
80*53ee8cc1Swenshuai.xi return value;
81*53ee8cc1Swenshuai.xi }
82*53ee8cc1Swenshuai.xi
83*53ee8cc1Swenshuai.xi static MS_BOOL _u32RegDump = 0;
84*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32 * reg, MS_U32 value );
85*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16 * reg, MS_U16 value);
86*53ee8cc1Swenshuai.xi
87*53ee8cc1Swenshuai.xi #if 0
88*53ee8cc1Swenshuai.xi #define REG32_W(reg, value); { (reg)->low = ((value) & 0x0000FFFF); \
89*53ee8cc1Swenshuai.xi (reg)->high = ((value) >> 16);\
90*53ee8cc1Swenshuai.xi if(_u32RegDump)\
91*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);\
92*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);}}
93*53ee8cc1Swenshuai.xi
94*53ee8cc1Swenshuai.xi #define REG16_W(reg, value); {(reg)->data = ((value) & 0x0000FFFF);\
95*53ee8cc1Swenshuai.xi if(_u32RegDump)\
96*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);}}
97*53ee8cc1Swenshuai.xi #endif
98*53ee8cc1Swenshuai.xi #define REG32_W(reg, value) { (reg)->low = ((value) & 0x0000FFFF); \
99*53ee8cc1Swenshuai.xi (reg)->high = ((value) >> 16);\
100*53ee8cc1Swenshuai.xi if(_u32RegDump){_REG32_DUMP(reg, value);}}
101*53ee8cc1Swenshuai.xi
102*53ee8cc1Swenshuai.xi #define REG16_W(reg, value) {(reg)->data = ((value) & 0x0000FFFF);\
103*53ee8cc1Swenshuai.xi if(_u32RegDump){_REG16_DUMP(reg, value);}}
104*53ee8cc1Swenshuai.xi
105*53ee8cc1Swenshuai.xi
106*53ee8cc1Swenshuai.xi #define _AND_(flag, bit) ((flag) & (bit) )
107*53ee8cc1Swenshuai.xi
108*53ee8cc1Swenshuai.xi #define _SET_(flag, bit) ((flag) | (bit) )
109*53ee8cc1Swenshuai.xi #define _CLR_(flag, bit) ((flag) & (~(bit)))
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xi #define REG16_SET(reg, value) REG16_W(reg, _SET_(REG16_R(reg), value))
112*53ee8cc1Swenshuai.xi #define REG32_SET(reg, value) REG32_W(reg, _SET_(REG32_R(reg), value))
113*53ee8cc1Swenshuai.xi #define REG16_CLR(reg, value) REG16_W(reg, _CLR_(REG16_R(reg), value))
114*53ee8cc1Swenshuai.xi #define REG32_CLR(reg, value) REG32_W(reg, _CLR_(REG32_R(reg), value))
115*53ee8cc1Swenshuai.xi
116*53ee8cc1Swenshuai.xi #define REG16_MSK_W(reg, mask, value) REG16_W((reg), _CLR_(REG16_R(reg), (mask)) | _AND_((value), (mask)))
117*53ee8cc1Swenshuai.xi #define REG32_MSK_W(reg, mask, value) REG32_W((reg), _CLR_(REG32_R(reg), (mask)) | _AND_((value), (mask)))
118*53ee8cc1Swenshuai.xi
119*53ee8cc1Swenshuai.xi #define MIU_BUS (4)
120*53ee8cc1Swenshuai.xi
121*53ee8cc1Swenshuai.xi
122*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
123*53ee8cc1Swenshuai.xi // Debug Message
124*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
125*53ee8cc1Swenshuai.xi typedef enum
126*53ee8cc1Swenshuai.xi {
127*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_NONE, // no debug message shown
128*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_ERR, // only shows error message that can't be recover
129*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_WARN, // error case can be recover, like retry
130*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_EVENT, // event that is okay but better known, ex: timestamp ring, file circular, etc.
131*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_INFO, // information for internal parameter
132*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_FUNC, // Function trace and input parameter trace
133*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_LEVEL_TRACE, // debug trace
134*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_LEVEL;
135*53ee8cc1Swenshuai.xi
136*53ee8cc1Swenshuai.xi typedef enum
137*53ee8cc1Swenshuai.xi {
138*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_MODEL_NONE, // @temporarily , need to refine
139*53ee8cc1Swenshuai.xi E_HAL_TSP_DBG_MODEL_ALL,
140*53ee8cc1Swenshuai.xi } EN_HAL_TSP_DBGMSG_MODEL;
141*53ee8cc1Swenshuai.xi
142*53ee8cc1Swenshuai.xi #define HAL_TSP_DBGMSG(_level,_model,_f) do {if(_u32TSPDbgLevel >= (_level)&&((_u32TSPDbgModel&_model)!=0)) (_f);} while(0)
143*53ee8cc1Swenshuai.xi static MS_U32 _u32TSPDbgLevel = E_HAL_TSP_DBG_LEVEL_ERR;
144*53ee8cc1Swenshuai.xi static MS_U32 _u32TSPDbgModel = E_HAL_TSP_DBG_MODEL_ALL;
145*53ee8cc1Swenshuai.xi
146*53ee8cc1Swenshuai.xi
147*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
148*53ee8cc1Swenshuai.xi // Implementation
149*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
TSP32_IdrW(TSP32 * preg,MS_U32 value)150*53ee8cc1Swenshuai.xi void TSP32_IdrW(TSP32 *preg, MS_U32 value)
151*53ee8cc1Swenshuai.xi {
152*53ee8cc1Swenshuai.xi MS_U32 tempDump = _u32RegDump;
153*53ee8cc1Swenshuai.xi if(_u32RegDump)
154*53ee8cc1Swenshuai.xi {
155*53ee8cc1Swenshuai.xi //test_chip_top.write_ind32('h00221004, 32'hffffffff); //indirect .... (address,data)
156*53ee8cc1Swenshuai.xi _u32RegDump = 0;
157*53ee8cc1Swenshuai.xi printf("test_chip_top.write_ind32(\'h%08lx, 32\'h%08lx);\n", (long unsigned int)preg, (long unsigned int)value);
158*53ee8cc1Swenshuai.xi }
159*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Idr_Addr, (MS_VIRT)preg);
160*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Idr_Write, value);
161*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_WRITE);
162*53ee8cc1Swenshuai.xi _u32RegDump = tempDump;
163*53ee8cc1Swenshuai.xi }
164*53ee8cc1Swenshuai.xi
TSP32_IdrR(TSP32 * preg)165*53ee8cc1Swenshuai.xi MS_U32 TSP32_IdrR(TSP32 *preg)
166*53ee8cc1Swenshuai.xi {
167*53ee8cc1Swenshuai.xi MS_U32 tempDump = _u32RegDump;
168*53ee8cc1Swenshuai.xi if(_u32RegDump)
169*53ee8cc1Swenshuai.xi {
170*53ee8cc1Swenshuai.xi _u32RegDump = 0;
171*53ee8cc1Swenshuai.xi }
172*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Idr_Addr, (MS_VIRT)preg);
173*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Idr_Ctrl, TSP_IDR_START | TSP_IDR_READ);
174*53ee8cc1Swenshuai.xi _u32RegDump = tempDump;
175*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl->Idr_Read);
176*53ee8cc1Swenshuai.xi }
177*53ee8cc1Swenshuai.xi
HAL_TSP_SetBank(MS_VIRT u32BankAddr)178*53ee8cc1Swenshuai.xi void HAL_TSP_SetBank(MS_VIRT u32BankAddr)
179*53ee8cc1Swenshuai.xi {
180*53ee8cc1Swenshuai.xi _u32RegBase = u32BankAddr;
181*53ee8cc1Swenshuai.xi _RegCtrl = (REG_Ctrl*)(u32BankAddr + 0x2A00UL); //TSP0 0x1015, TSP1 0x1016
182*53ee8cc1Swenshuai.xi _RegCtrl2 = (REG_Ctrl2*)(u32BankAddr + 0xE0400UL); //TSP3 0x1702,
183*53ee8cc1Swenshuai.xi _RegCtrl3 = (REG_Ctrl3*)(u32BankAddr + 0xE0600UL); //TSP4 0x1703
184*53ee8cc1Swenshuai.xi _RegCtrl4 = (REG_Ctrl4*)(u32BankAddr + 0xC2000UL); //TSP6 0x1610
185*53ee8cc1Swenshuai.xi _RegCtrl5 = (REG_Ctrl5*)(u32BankAddr + 0xC2200UL); //TSP7 0x1611
186*53ee8cc1Swenshuai.xi _RegCtrl6 = (REG_Ctrl6*)(u32BankAddr + 0xC4E00UL); //TSP8 0x1627
187*53ee8cc1Swenshuai.xi _RegCtrl7 = (REG_Ctrl7*)(u32BankAddr + 0xE1800UL); //TSP9 0x170C
188*53ee8cc1Swenshuai.xi _RegCtrl8 = (REG_Ctrl8*)(u32BankAddr + 0xE1A00UL); //TSP10 0x170D
189*53ee8cc1Swenshuai.xi }
190*53ee8cc1Swenshuai.xi
HAL_TSP_RegDump(MS_BOOL bEnable)191*53ee8cc1Swenshuai.xi void HAL_TSP_RegDump(MS_BOOL bEnable)
192*53ee8cc1Swenshuai.xi {
193*53ee8cc1Swenshuai.xi _u32RegDump = bEnable;
194*53ee8cc1Swenshuai.xi }
195*53ee8cc1Swenshuai.xi #if 1
_REG32_DUMP(REG32 * reg,MS_U32 value)196*53ee8cc1Swenshuai.xi static void _REG32_DUMP(REG32* reg, MS_U32 value )
197*53ee8cc1Swenshuai.xi {
198*53ee8cc1Swenshuai.xi //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a); //..bank 15 ,7�h06 ....reg ,16�h400a ......
199*53ee8cc1Swenshuai.xi //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7�h06 ....reg ,16�h400a ......
200*53ee8cc1Swenshuai.xi //`RIU_W((24'h103800>>1) + 7'h56 , 2'b11, 16'h0000); //....bank 038
201*53ee8cc1Swenshuai.xi MS_U32 bank = ((MS_VIRT)(&(reg)->low) - _u32RegBase)>>(1+8);
202*53ee8cc1Swenshuai.xi MS_U32 addr_low = ((((MS_VIRT)(&(reg)->low) - _u32RegBase)>>1)&0xFF)>>1;
203*53ee8cc1Swenshuai.xi MS_U32 addr_high = ((((MS_VIRT)(&(reg)->high) - _u32RegBase)>>1)&0xFF)>>1;
204*53ee8cc1Swenshuai.xi MS_U32 val_low = (value) & 0x0000FFFF;
205*53ee8cc1Swenshuai.xi MS_U32 val_high = ((value) & 0xFFFF0000 )>>16;
206*53ee8cc1Swenshuai.xi
207*53ee8cc1Swenshuai.xi if(bank == 0x15)
208*53ee8cc1Swenshuai.xi {
209*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);
210*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);
211*53ee8cc1Swenshuai.xi }
212*53ee8cc1Swenshuai.xi else if(bank == 0x16)
213*53ee8cc1Swenshuai.xi {
214*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);
215*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);
216*53ee8cc1Swenshuai.xi }
217*53ee8cc1Swenshuai.xi else if(bank == 0x38)
218*53ee8cc1Swenshuai.xi {
219*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);
220*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);
221*53ee8cc1Swenshuai.xi }
222*53ee8cc1Swenshuai.xi }
_REG16_DUMP(REG16 * reg,MS_U16 value)223*53ee8cc1Swenshuai.xi static void _REG16_DUMP(REG16* reg, MS_U16 value )
224*53ee8cc1Swenshuai.xi {
225*53ee8cc1Swenshuai.xi //`RIU_W(`TSP_REG_BASE + 7'h06, 2'b11, 16'h400a); //..bank 15 ,7�h06 ....reg ,16�h400a ......
226*53ee8cc1Swenshuai.xi //`RIU_W(`TSP_REG_BASE1 + 7'h72, 2'b11, 16'hc000); // ..bank 16 ,7�h06 ....reg ,16�h400a ......
227*53ee8cc1Swenshuai.xi //`RIU_W((24'h103800>>1) + 7'h56 , 2'b11, 16'h0000); //....bank 038
228*53ee8cc1Swenshuai.xi MS_U32 bank = ((MS_VIRT)(&(reg)) - _u32RegBase)>>(1+8);
229*53ee8cc1Swenshuai.xi MS_U32 addr = ((((MS_VIRT)(&(reg)) - _u32RegBase)>>1)&0xFF)>>1;
230*53ee8cc1Swenshuai.xi MS_U32 val = (value) & 0x0000FFFF;
231*53ee8cc1Swenshuai.xi
232*53ee8cc1Swenshuai.xi if(bank == 0x15)
233*53ee8cc1Swenshuai.xi {
234*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);
235*53ee8cc1Swenshuai.xi }
236*53ee8cc1Swenshuai.xi else if(bank == 0x16)
237*53ee8cc1Swenshuai.xi {
238*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);
239*53ee8cc1Swenshuai.xi }
240*53ee8cc1Swenshuai.xi else if(bank == 0x38)
241*53ee8cc1Swenshuai.xi {
242*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);
243*53ee8cc1Swenshuai.xi }
244*53ee8cc1Swenshuai.xi }
245*53ee8cc1Swenshuai.xi #endif
246*53ee8cc1Swenshuai.xi
HAL_TSP_HwPatch(void)247*53ee8cc1Swenshuai.xi void HAL_TSP_HwPatch(void)
248*53ee8cc1Swenshuai.xi {
249*53ee8cc1Swenshuai.xi //For sram
250*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_HW_STANDBY_MODE);
251*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
252*53ee8cc1Swenshuai.xi
253*53ee8cc1Swenshuai.xi // @F_TODO check these setting with Stephen
254*53ee8cc1Swenshuai.xi // TSP_HW_CFG4_WSTAT_CH_EN <--this is bit disable HW sync section buf id with section filter id
255*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);
256*53ee8cc1Swenshuai.xi
257*53ee8cc1Swenshuai.xi // Bad initial value of TSP_CTRL1
258*53ee8cc1Swenshuai.xi // Suppose Standby mode for TSP should NOT be enabled.
259*53ee8cc1Swenshuai.xi // Enabling TSP standby mode cause TSP section registers (SRAM in AEON) malfunction.
260*53ee8cc1Swenshuai.xi // Disable it by SW at this stage.
261*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_STANDBY);
262*53ee8cc1Swenshuai.xi
263*53ee8cc1Swenshuai.xi //enable PVR record to bypass header
264*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b4, TSP_PVR_PID_BYPASS|TSP_PVR_PID_BYPASS2);
265*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_16, CFG_16_PID_BYPASS3_REC);
266*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_23, CFG_23_PID_BYPASS4_REC);
267*53ee8cc1Swenshuai.xi
268*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
269*53ee8cc1Swenshuai.xi
270*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ2PINGPONG_EN | TSP_RM_PKT_DEMUX_PIPE /*| TSP_PVR1_ALIGN_EN*/);
271*53ee8cc1Swenshuai.xi
272*53ee8cc1Swenshuai.xi //Disable all live pathes block mechanism
273*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_DOUBLE_BUF_DESC/*| TSP_VQTX0_BLOCK_DIS|TSP_VQTX2_BLOCK_DIS|TSP_VQTX3_BLOCK_DIS*/);
274*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_RM_DMA_GLITCH);
275*53ee8cc1Swenshuai.xi
276*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PUSI_3BYTE_MODE); //Enable audio 3 byte mode
277*53ee8cc1Swenshuai.xi
278*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
279*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PVRConfig, TSP_MATCH_PID_LD);
280*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BLK_AD_SCMBTIS_TSP);
281*53ee8cc1Swenshuai.xi
282*53ee8cc1Swenshuai.xi //Disable pvr1 & pvr2 block mechanism
283*53ee8cc1Swenshuai.xi //DisableAV FIFO block mechanism for live path
284*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
285*53ee8cc1Swenshuai.xi
286*53ee8cc1Swenshuai.xi //fix load fw secure issue (dma_start = 1 , polling dma_done , dma_start = 0)
287*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_16, CFG3_16_FIXED_DMA_RSTART_OTP_ONEWAY_LOAD_FW);
288*53ee8cc1Swenshuai.xi
289*53ee8cc1Swenshuai.xi //Internal Sync Patch
290*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_DATA_CHK_2T);
291*53ee8cc1Swenshuai.xi
292*53ee8cc1Swenshuai.xi //Fixed filein_192+timer_en+byte_time=0 Error
293*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_FIX_192_TIMER_0_EN);
294*53ee8cc1Swenshuai.xi
295*53ee8cc1Swenshuai.xi //Fixed filein_192 timestamp & LPCR ring back first issue
296*53ee8cc1Swenshuai.xi //REG16_SET(&_RegCtrl6->CFG6_2A, FIXED_TIMESTAMP_RING_BACK_EN | FIXED_LPCR_RING_BACK_EN);
297*53ee8cc1Swenshuai.xi
298*53ee8cc1Swenshuai.xi //ECO bit for miu flush
299*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl6->CFG6_2A, FIXED_DMA_WADDR_NEXT_OVF | FIXED_VQ_MIU_REQ_FLUSH);
300*53ee8cc1Swenshuai.xi
301*53ee8cc1Swenshuai.xi //drop start code error
302*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl6->CFG6_2A, TSP_DROP_ERR_START_CODE | TSP_DROP_TEI_ERR_START_CODE);
303*53ee8cc1Swenshuai.xi
304*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl6->CFG6_2A,TSP_FIQ_DMA_FLUSH_EN | TSP_FIND_LOSS_SYNC_PID_RVU);
305*53ee8cc1Swenshuai.xi
306*53ee8cc1Swenshuai.xi //FIQ ECO and block-reverse
307*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl6->CFG6_2B, TSP_ECO_FIQ_INPUT | TSP_ECO_TS_SYNC_OUT_DELAY | TSP_ECO_TS_SYNC_OUT_REVERSE_BLOCK);
308*53ee8cc1Swenshuai.xi
309*53ee8cc1Swenshuai.xi //serial mode config
310*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_SYNC_RISING_DETECT | TSP_VALID_FALLING_DETECT);
311*53ee8cc1Swenshuai.xi }
312*53ee8cc1Swenshuai.xi
313*53ee8cc1Swenshuai.xi // ------------ initial config ------------
314*53ee8cc1Swenshuai.xi // Sync Byte: 0x47 , 0x48 .... , 0x4e
315*53ee8cc1Swenshuai.xi // Source id : 0 , 1 , ... , 7
316*53ee8cc1Swenshuai.xi // User can use "HAL_TSP_PktConverter_SetSyncByte()" to change Sync Byte configuration
317*53ee8cc1Swenshuai.xi // , and use "HAL_TSP_PktConverter_SetSrcId()" to change Source id configuration
HAL_TSP_PktConverter_Init(void)318*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_Init(void)
319*53ee8cc1Swenshuai.xi {
320*53ee8cc1Swenshuai.xi MS_U8 u8Path,u8Id;
321*53ee8cc1Swenshuai.xi MS_U8 u8SyncByte;
322*53ee8cc1Swenshuai.xi
323*53ee8cc1Swenshuai.xi for(u8Path = 0; u8Path < TSP_TSIF_NUM; ++u8Path)
324*53ee8cc1Swenshuai.xi {
325*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_ForceSync(u8Path,TRUE);//default: FALSE
326*53ee8cc1Swenshuai.xi
327*53ee8cc1Swenshuai.xi u8SyncByte = 0x47;
328*53ee8cc1Swenshuai.xi for(u8Id = 0; u8Id < TSP_MERGESTREAM_NUM; ++u8Id,++u8SyncByte)
329*53ee8cc1Swenshuai.xi {
330*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Id, &u8SyncByte, TRUE);
331*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetSrcId(u8Path, u8Id, &u8Id, TRUE);
332*53ee8cc1Swenshuai.xi }
333*53ee8cc1Swenshuai.xi }
334*53ee8cc1Swenshuai.xi }
335*53ee8cc1Swenshuai.xi
HAL_TSP_Reset(MS_BOOL bEn)336*53ee8cc1Swenshuai.xi void HAL_TSP_Reset(MS_BOOL bEn)
337*53ee8cc1Swenshuai.xi {
338*53ee8cc1Swenshuai.xi //MS_U16 reg;
339*53ee8cc1Swenshuai.xi
340*53ee8cc1Swenshuai.xi if (bEn)
341*53ee8cc1Swenshuai.xi {
342*53ee8cc1Swenshuai.xi #if 0
343*53ee8cc1Swenshuai.xi
344*53ee8cc1Swenshuai.xi // WB DMA source won't be reset by SW_RST bit so we use HWPATCH to make it's source to default
345*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
346*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
347*53ee8cc1Swenshuai.xi
348*53ee8cc1Swenshuai.xi #endif
349*53ee8cc1Swenshuai.xi // reset CMDQ for tsif 0~3
350*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
351*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
352*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
353*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
354*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
355*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
356*53ee8cc1Swenshuai.xi }
357*53ee8cc1Swenshuai.xi else
358*53ee8cc1Swenshuai.xi {
359*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_SW_RST);
360*53ee8cc1Swenshuai.xi
361*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_WB_DMA_RESET);
362*53ee8cc1Swenshuai.xi // set CMDQ for tsif 0~3
363*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
364*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
365*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
366*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_0A, CFG_0A_RST_CMDQ_FILEIN_TSIF3);
367*53ee8cc1Swenshuai.xi }
368*53ee8cc1Swenshuai.xi }
369*53ee8cc1Swenshuai.xi
370*53ee8cc1Swenshuai.xi
HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)371*53ee8cc1Swenshuai.xi void HAL_TSP_Path_Reset(MS_U32 tsIf,MS_BOOL bEn)
372*53ee8cc1Swenshuai.xi {
373*53ee8cc1Swenshuai.xi switch(tsIf)
374*53ee8cc1Swenshuai.xi {
375*53ee8cc1Swenshuai.xi case 0: if(bEn)
376*53ee8cc1Swenshuai.xi {
377*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
378*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
379*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
380*53ee8cc1Swenshuai.xi }
381*53ee8cc1Swenshuai.xi else
382*53ee8cc1Swenshuai.xi {
383*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF0 | CFG_12_REG_REST_PDBF0);
384*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT0);
385*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C,TSP_TIMESTAMP_RESET);
386*53ee8cc1Swenshuai.xi }
387*53ee8cc1Swenshuai.xi break;
388*53ee8cc1Swenshuai.xi case 1: if(bEn)
389*53ee8cc1Swenshuai.xi {
390*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
391*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
392*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
393*53ee8cc1Swenshuai.xi }
394*53ee8cc1Swenshuai.xi else
395*53ee8cc1Swenshuai.xi {
396*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF1 | CFG_12_REG_REST_PDBF1);
397*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT1);
398*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00,CFG_00_RST_TS_FIN1);
399*53ee8cc1Swenshuai.xi }
400*53ee8cc1Swenshuai.xi break;
401*53ee8cc1Swenshuai.xi case 2: if(bEn)
402*53ee8cc1Swenshuai.xi {
403*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
404*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
405*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
406*53ee8cc1Swenshuai.xi }
407*53ee8cc1Swenshuai.xi else
408*53ee8cc1Swenshuai.xi {
409*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12,CFG_12_REG_REST_RBF2 | CFG_12_REG_REST_PDBF2);
410*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_10,CFG_10_RESET_PDFLT2);
411*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_05,CFG_05_RST_TS_FIN2);
412*53ee8cc1Swenshuai.xi }
413*53ee8cc1Swenshuai.xi break;
414*53ee8cc1Swenshuai.xi default: break;
415*53ee8cc1Swenshuai.xi }
416*53ee8cc1Swenshuai.xi }
417*53ee8cc1Swenshuai.xi /*****************/
418*53ee8cc1Swenshuai.xi
HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType,MS_U8 u8Index,ST_TSP_HAL_CLK_STATUS * pstClkStatus)419*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetClockSetting(EN_TSP_HAL_CLK_TYPE eClkType, MS_U8 u8Index, ST_TSP_HAL_CLK_STATUS *pstClkStatus)
420*53ee8cc1Swenshuai.xi {
421*53ee8cc1Swenshuai.xi switch(eClkType)
422*53ee8cc1Swenshuai.xi {
423*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSP_CLK:
424*53ee8cc1Swenshuai.xi pstClkStatus->bEnable = !(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_DISABLE);
425*53ee8cc1Swenshuai.xi pstClkStatus->bInvert = !!(TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_INVERT);
426*53ee8cc1Swenshuai.xi pstClkStatus->u8ClkSrc = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & REG_CLKGEN0_TSP_CLK_MASK) >> REG_CLKGEN0_TSP_SRC_SHIFT;
427*53ee8cc1Swenshuai.xi break;
428*53ee8cc1Swenshuai.xi default:
429*53ee8cc1Swenshuai.xi return FALSE;
430*53ee8cc1Swenshuai.xi }
431*53ee8cc1Swenshuai.xi
432*53ee8cc1Swenshuai.xi return TRUE;
433*53ee8cc1Swenshuai.xi }
434*53ee8cc1Swenshuai.xi
HAL_TSP_Power(MS_BOOL bEn)435*53ee8cc1Swenshuai.xi void HAL_TSP_Power(MS_BOOL bEn)
436*53ee8cc1Swenshuai.xi {
437*53ee8cc1Swenshuai.xi if(bEn)
438*53ee8cc1Swenshuai.xi {
439*53ee8cc1Swenshuai.xi
440*53ee8cc1Swenshuai.xi //disable MCM
441*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE); //TSP
442*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_16, CFG3_16_MMFI1_REQ_MCM_DISABLE); // disable MMFI1 MCM, and never enable it, only for Curry
443*53ee8cc1Swenshuai.xi
444*53ee8cc1Swenshuai.xi // Enable TSP Clk
445*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSP_CLK) & ~REG_CLKGEN0_TSP_CLK_MASK)
446*53ee8cc1Swenshuai.xi | (REG_CLKGEN0_TSP_SRC_192MHZ << REG_CLKGEN0_TSP_SRC_SHIFT);
447*53ee8cc1Swenshuai.xi // Enable STC1,2 Clk
448*53ee8cc1Swenshuai.xi // STC1
449*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC0_CLK) & ~REG_CLKGEN0_STC0_MASK)
450*53ee8cc1Swenshuai.xi | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC0_SHIFT));
451*53ee8cc1Swenshuai.xi // STC2
452*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STC1_CLK) & ~REG_CLKGEN0_STC1_MASK)
453*53ee8cc1Swenshuai.xi | (REG_CLKGEN0_STC_SRC_SYNTH << (REG_CLKGEN0_STC_SRC_SHIFT+REG_CLKGEN0_STC1_SHIFT));
454*53ee8cc1Swenshuai.xi
455*53ee8cc1Swenshuai.xi // Stamp
456*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_STAMP_CLK) & ~REG_CLKGEN0_STAMP_MASK);
457*53ee8cc1Swenshuai.xi
458*53ee8cc1Swenshuai.xi // Parser
459*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) = ((TSP_CLKGEN0_REG(REG_CLKGEN0_PARSER_CLK) & ~REG_CLKGEN0_PARSER_MASK) | REG_CLKGEN0_PARSER_192);
460*53ee8cc1Swenshuai.xi
461*53ee8cc1Swenshuai.xi // Enable TSIF => Disable TSIF
462*53ee8cc1Swenshuai.xi // FixME Enable flowset would enable TSx clk so we don't enable TSx clk
463*53ee8cc1Swenshuai.xi //TS0
464*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & ~REG_CLKGEN0_TS_MASK);
465*53ee8cc1Swenshuai.xi
466*53ee8cc1Swenshuai.xi //TS1
467*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS1_SHIFT));
468*53ee8cc1Swenshuai.xi
469*53ee8cc1Swenshuai.xi //TS2
470*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK << REG_CLKGEN0_TS2_SHIFT));
471*53ee8cc1Swenshuai.xi // TSP Boot clk sel
472*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;
473*53ee8cc1Swenshuai.xi
474*53ee8cc1Swenshuai.xi // TSP SRAM sel
475*53ee8cc1Swenshuai.xi TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) = TSP_MMFI_REG(REG_MMFI_TSP_SEL_SRAM) | REG_MMFI_TSP_SEL_SRAM_EN;
476*53ee8cc1Swenshuai.xi
477*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_PREVENT_SRAM_COLLISION);
478*53ee8cc1Swenshuai.xi }
479*53ee8cc1Swenshuai.xi else
480*53ee8cc1Swenshuai.xi {
481*53ee8cc1Swenshuai.xi // Disable TSP Clk
482*53ee8cc1Swenshuai.xi // [2016.03.10] Disable TSP clk for power problem. If AESDMA share clk with TSP. Need to do tsp init before using AESDMA.
483*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));
484*53ee8cc1Swenshuai.xi
485*53ee8cc1Swenshuai.xi // Disable STC Clk
486*53ee8cc1Swenshuai.xi //STC0
487*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));
488*53ee8cc1Swenshuai.xi //STC1
489*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));
490*53ee8cc1Swenshuai.xi
491*53ee8cc1Swenshuai.xi // Stamp
492*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));
493*53ee8cc1Swenshuai.xi
494*53ee8cc1Swenshuai.xi // Parser
495*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));
496*53ee8cc1Swenshuai.xi
497*53ee8cc1Swenshuai.xi // Disable TSIF clk
498*53ee8cc1Swenshuai.xi //TS0
499*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));
500*53ee8cc1Swenshuai.xi //TS1
501*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));
502*53ee8cc1Swenshuai.xi //TS2
503*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));
504*53ee8cc1Swenshuai.xi
505*53ee8cc1Swenshuai.xi //enable MCM
506*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_TSP2MI_REQ_MCM_DISABLE);//TSP
507*53ee8cc1Swenshuai.xi }
508*53ee8cc1Swenshuai.xi }
509*53ee8cc1Swenshuai.xi
HAL_TSP_CPU(MS_BOOL bEn)510*53ee8cc1Swenshuai.xi void HAL_TSP_CPU(MS_BOOL bEn)
511*53ee8cc1Swenshuai.xi {
512*53ee8cc1Swenshuai.xi if (bEn)
513*53ee8cc1Swenshuai.xi {
514*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
515*53ee8cc1Swenshuai.xi }
516*53ee8cc1Swenshuai.xi else
517*53ee8cc1Swenshuai.xi {
518*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
519*53ee8cc1Swenshuai.xi }
520*53ee8cc1Swenshuai.xi }
HAL_TSP_ResetCPU(MS_BOOL bReset)521*53ee8cc1Swenshuai.xi void HAL_TSP_ResetCPU(MS_BOOL bReset)
522*53ee8cc1Swenshuai.xi {
523*53ee8cc1Swenshuai.xi // @NOTE TRUE for stop cpu clock
524*53ee8cc1Swenshuai.xi if (bReset)
525*53ee8cc1Swenshuai.xi {
526*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
527*53ee8cc1Swenshuai.xi }
528*53ee8cc1Swenshuai.xi else
529*53ee8cc1Swenshuai.xi {
530*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_CPU_EN);
531*53ee8cc1Swenshuai.xi }
532*53ee8cc1Swenshuai.xi }
533*53ee8cc1Swenshuai.xi
534*53ee8cc1Swenshuai.xi
HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr,MS_U32 u32FwSize)535*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_LoadFW(MS_U32 u32FwPhyAddr, MS_U32 u32FwSize)
536*53ee8cc1Swenshuai.xi {
537*53ee8cc1Swenshuai.xi
538*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_MASK 0xffffc000 //code: 0x2000, data: 0x1000, total: 0x3000
539*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_HIT 0x00000000
540*53ee8cc1Swenshuai.xi #define _TSP_QMEM_I_ADDR_MISS 0xffffffff
541*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_MASK 0xffffc000
542*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_HIT 0x00000000
543*53ee8cc1Swenshuai.xi #define _TSP_QMEM_D_ADDR_MISS 0xffffffff
544*53ee8cc1Swenshuai.xi #define _TSP_QMEM_SIZE 0x1000 // 16K bytes, 32bit aligment //0x4000 this is 4 byte address
545*53ee8cc1Swenshuai.xi
546*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Cpu_Base, 0); // 16 bytes address unit
547*53ee8cc1Swenshuai.xi
548*53ee8cc1Swenshuai.xi MS_U32 u32DnldCtrl = 0;
549*53ee8cc1Swenshuai.xi MS_U32 u32DnldCtrl1 = 0;
550*53ee8cc1Swenshuai.xi
551*53ee8cc1Swenshuai.xi u32DnldCtrl = (u32FwPhyAddr >> MIU_BUS) >> TSP_DNLD_ADDR_ALI_SHIFT;
552*53ee8cc1Swenshuai.xi u32DnldCtrl1 = u32DnldCtrl >> 16;
553*53ee8cc1Swenshuai.xi
554*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Dnld_Ctrl_Addr, (MS_U16)(u32DnldCtrl & TSP_DNLD_ADDR_MASK)); // oneway register
555*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->Dnld_AddrH, TSP_DMA_RADDR_MSB_MASK, (MS_U16)u32DnldCtrl1);
556*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Dnld_Ctrl_Size, _TSP_QMEM_SIZE);
557*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
558*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START);
559*53ee8cc1Swenshuai.xi
560*53ee8cc1Swenshuai.xi //@TODO temprarily comment because of Secure Protect
561*53ee8cc1Swenshuai.xi #if 1
562*53ee8cc1Swenshuai.xi while (!(REG16_R(&_RegCtrl->TSP_Ctrl) & TSP_CTRL_DNLD_DONE))
563*53ee8cc1Swenshuai.xi {
564*53ee8cc1Swenshuai.xi }
565*53ee8cc1Swenshuai.xi #endif
566*53ee8cc1Swenshuai.xi
567*53ee8cc1Swenshuai.xi
568*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_DNLD_START| TSP_CTRL_DNLD_DONE);
569*53ee8cc1Swenshuai.xi
570*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Qmem_Imask, _TSP_QMEM_I_MASK);
571*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Qmem_Ibase, _TSP_QMEM_I_ADDR_HIT);
572*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Qmem_Dmask, _TSP_QMEM_D_MASK);
573*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Qmem_Dbase, _TSP_QMEM_D_ADDR_HIT);
574*53ee8cc1Swenshuai.xi
575*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_MASK
576*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_HIT
577*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_I_ADDR_MISS
578*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_MASK
579*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_HIT
580*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_D_ADDR_MISS
581*53ee8cc1Swenshuai.xi #undef _TSP_QMEM_SIZE
582*53ee8cc1Swenshuai.xi
583*53ee8cc1Swenshuai.xi return TRUE;
584*53ee8cc1Swenshuai.xi }
585*53ee8cc1Swenshuai.xi
HAL_TSP_RestoreFltState(void)586*53ee8cc1Swenshuai.xi void HAL_TSP_RestoreFltState(void)
587*53ee8cc1Swenshuai.xi {
588*53ee8cc1Swenshuai.xi MS_U32 u32Size;
589*53ee8cc1Swenshuai.xi TSP32 * pRegEnd;
590*53ee8cc1Swenshuai.xi TSP32 * pReg;
591*53ee8cc1Swenshuai.xi int i, j;
592*53ee8cc1Swenshuai.xi
593*53ee8cc1Swenshuai.xi for (i = 0; i < TSP_PIDFLT_NUM; i++)
594*53ee8cc1Swenshuai.xi {
595*53ee8cc1Swenshuai.xi TSP32_IdrW(&(_REGPid0->Flt[i]), _u32PidFltReg[i]);
596*53ee8cc1Swenshuai.xi TSP32_IdrW(&(_REGPid1->Flt[i]), _u32PidDstReg[i]);
597*53ee8cc1Swenshuai.xi }
598*53ee8cc1Swenshuai.xi
599*53ee8cc1Swenshuai.xi u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
600*53ee8cc1Swenshuai.xi
601*53ee8cc1Swenshuai.xi for (i = 0; i < TSP_SECFLT_NUM; i++)
602*53ee8cc1Swenshuai.xi {
603*53ee8cc1Swenshuai.xi pReg = (TSP32*)&(_REGSec->Flt[i]);
604*53ee8cc1Swenshuai.xi pRegEnd = pReg + u32Size;
605*53ee8cc1Swenshuai.xi j = 0;
606*53ee8cc1Swenshuai.xi for ( ; pReg < pRegEnd; pReg++)
607*53ee8cc1Swenshuai.xi {
608*53ee8cc1Swenshuai.xi TSP32_IdrW(pReg, _u32SecReg[i*u32Size+j]);
609*53ee8cc1Swenshuai.xi j++;
610*53ee8cc1Swenshuai.xi }
611*53ee8cc1Swenshuai.xi }
612*53ee8cc1Swenshuai.xi
613*53ee8cc1Swenshuai.xi }
614*53ee8cc1Swenshuai.xi
HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)615*53ee8cc1Swenshuai.xi void HAL_TSP_PktBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
616*53ee8cc1Swenshuai.xi {
617*53ee8cc1Swenshuai.xi if(bEn)
618*53ee8cc1Swenshuai.xi {
619*53ee8cc1Swenshuai.xi switch(pktDmxId)
620*53ee8cc1Swenshuai.xi {
621*53ee8cc1Swenshuai.xi case 0:
622*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
623*53ee8cc1Swenshuai.xi break;
624*53ee8cc1Swenshuai.xi case 1:
625*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
626*53ee8cc1Swenshuai.xi break;
627*53ee8cc1Swenshuai.xi case 2:
628*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
629*53ee8cc1Swenshuai.xi break;
630*53ee8cc1Swenshuai.xi default:
631*53ee8cc1Swenshuai.xi break;
632*53ee8cc1Swenshuai.xi }
633*53ee8cc1Swenshuai.xi }
634*53ee8cc1Swenshuai.xi else
635*53ee8cc1Swenshuai.xi {
636*53ee8cc1Swenshuai.xi switch(pktDmxId)
637*53ee8cc1Swenshuai.xi {
638*53ee8cc1Swenshuai.xi case 0:
639*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF0);
640*53ee8cc1Swenshuai.xi break;
641*53ee8cc1Swenshuai.xi case 1:
642*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF1);
643*53ee8cc1Swenshuai.xi break;
644*53ee8cc1Swenshuai.xi case 2:
645*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_PDBF2);
646*53ee8cc1Swenshuai.xi break;
647*53ee8cc1Swenshuai.xi default:
648*53ee8cc1Swenshuai.xi break;
649*53ee8cc1Swenshuai.xi }
650*53ee8cc1Swenshuai.xi }
651*53ee8cc1Swenshuai.xi }
652*53ee8cc1Swenshuai.xi
HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId,MS_BOOL bEn)653*53ee8cc1Swenshuai.xi void HAL_TSP_RecvBuf_Reset(MS_U32 pktDmxId, MS_BOOL bEn)
654*53ee8cc1Swenshuai.xi {
655*53ee8cc1Swenshuai.xi if(bEn)
656*53ee8cc1Swenshuai.xi {
657*53ee8cc1Swenshuai.xi switch(pktDmxId)
658*53ee8cc1Swenshuai.xi {
659*53ee8cc1Swenshuai.xi case 0:
660*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
661*53ee8cc1Swenshuai.xi break;
662*53ee8cc1Swenshuai.xi case 1:
663*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
664*53ee8cc1Swenshuai.xi break;
665*53ee8cc1Swenshuai.xi case 2:
666*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
667*53ee8cc1Swenshuai.xi break;
668*53ee8cc1Swenshuai.xi default:
669*53ee8cc1Swenshuai.xi break;
670*53ee8cc1Swenshuai.xi }
671*53ee8cc1Swenshuai.xi }
672*53ee8cc1Swenshuai.xi else
673*53ee8cc1Swenshuai.xi {
674*53ee8cc1Swenshuai.xi switch(pktDmxId)
675*53ee8cc1Swenshuai.xi {
676*53ee8cc1Swenshuai.xi case 0:
677*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF0);
678*53ee8cc1Swenshuai.xi break;
679*53ee8cc1Swenshuai.xi case 1:
680*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF1);
681*53ee8cc1Swenshuai.xi break;
682*53ee8cc1Swenshuai.xi case 2:
683*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_12, CFG_12_REG_REST_RBF2);
684*53ee8cc1Swenshuai.xi break;
685*53ee8cc1Swenshuai.xi default:
686*53ee8cc1Swenshuai.xi break;
687*53ee8cc1Swenshuai.xi }
688*53ee8cc1Swenshuai.xi }
689*53ee8cc1Swenshuai.xi }
690*53ee8cc1Swenshuai.xi
HAL_TSP_SetTSIF(MS_U16 u16TSIF,TSP_TSIF_CFG u16Cfg,MS_BOOL bFileIn)691*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetTSIF(MS_U16 u16TSIF, TSP_TSIF_CFG u16Cfg, MS_BOOL bFileIn)
692*53ee8cc1Swenshuai.xi {
693*53ee8cc1Swenshuai.xi if(bFileIn)
694*53ee8cc1Swenshuai.xi {
695*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, TRUE); // this returns true only we don't check the return value
696*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_LiveEn(u16TSIF, FALSE); // this returns true only we don't check the return value
697*53ee8cc1Swenshuai.xi }
698*53ee8cc1Swenshuai.xi else
699*53ee8cc1Swenshuai.xi {
700*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_FileEn((FILEENG_SEQ)u16TSIF, FALSE);
701*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_LiveEn(u16TSIF, TRUE);
702*53ee8cc1Swenshuai.xi }
703*53ee8cc1Swenshuai.xi
704*53ee8cc1Swenshuai.xi if(bFileIn != TRUE)
705*53ee8cc1Swenshuai.xi {
706*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_BitSwap(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_BITSWAP)?TRUE:FALSE));
707*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_ExtSync(u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_EXTSYNC)?TRUE:FALSE));
708*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_Parl (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_PARA )?TRUE:FALSE));
709*53ee8cc1Swenshuai.xi HAL_TSP_TSIF_3Wire (u16TSIF, ((u16Cfg&E_TSP_TSIF_CFG_3WIRE )?TRUE:FALSE));
710*53ee8cc1Swenshuai.xi }
711*53ee8cc1Swenshuai.xi
712*53ee8cc1Swenshuai.xi return TRUE;
713*53ee8cc1Swenshuai.xi }
714*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_LiveEn(MS_U32 tsIf,MS_BOOL bEnable)715*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_LiveEn(MS_U32 tsIf, MS_BOOL bEnable)
716*53ee8cc1Swenshuai.xi {
717*53ee8cc1Swenshuai.xi if(bEnable)
718*53ee8cc1Swenshuai.xi {
719*53ee8cc1Swenshuai.xi switch(tsIf)
720*53ee8cc1Swenshuai.xi {
721*53ee8cc1Swenshuai.xi case 0:
722*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
723*53ee8cc1Swenshuai.xi break;
724*53ee8cc1Swenshuai.xi case 1:
725*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
726*53ee8cc1Swenshuai.xi break;
727*53ee8cc1Swenshuai.xi case 2:
728*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
729*53ee8cc1Swenshuai.xi break;
730*53ee8cc1Swenshuai.xi default:
731*53ee8cc1Swenshuai.xi return FALSE;
732*53ee8cc1Swenshuai.xi }
733*53ee8cc1Swenshuai.xi }
734*53ee8cc1Swenshuai.xi else
735*53ee8cc1Swenshuai.xi {
736*53ee8cc1Swenshuai.xi switch(tsIf)
737*53ee8cc1Swenshuai.xi {
738*53ee8cc1Swenshuai.xi case 0:
739*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF0_ENABLE);
740*53ee8cc1Swenshuai.xi break;
741*53ee8cc1Swenshuai.xi case 1:
742*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TSIF1_ENABLE);
743*53ee8cc1Swenshuai.xi break;
744*53ee8cc1Swenshuai.xi case 2:
745*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_IF2_EN);
746*53ee8cc1Swenshuai.xi break;
747*53ee8cc1Swenshuai.xi default:
748*53ee8cc1Swenshuai.xi return FALSE;
749*53ee8cc1Swenshuai.xi }
750*53ee8cc1Swenshuai.xi }
751*53ee8cc1Swenshuai.xi
752*53ee8cc1Swenshuai.xi return TRUE;
753*53ee8cc1Swenshuai.xi }
754*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_SelPad(MS_U32 tsIf,TSP_TS_PAD eTSPad)755*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad(MS_U32 tsIf, TSP_TS_PAD eTSPad) // @FIXME modify this parameter to enum plz
756*53ee8cc1Swenshuai.xi {
757*53ee8cc1Swenshuai.xi MS_U32 clk_src = REG_CLKGEN0_TS_SRC_EXT0;
758*53ee8cc1Swenshuai.xi MS_U32 pad_src = REG_TOP_TS_SRC_EXT0;
759*53ee8cc1Swenshuai.xi
760*53ee8cc1Swenshuai.xi //@NOTE
761*53ee8cc1Swenshuai.xi //EX3~6 are serial mode and ts2_padmax_mode must be 2 or 3.
762*53ee8cc1Swenshuai.xi
763*53ee8cc1Swenshuai.xi
764*53ee8cc1Swenshuai.xi switch (eTSPad)
765*53ee8cc1Swenshuai.xi {
766*53ee8cc1Swenshuai.xi default:
767*53ee8cc1Swenshuai.xi case E_TSP_TS_PAD_EXT0:
768*53ee8cc1Swenshuai.xi clk_src = REG_CLKGEN0_TS_SRC_EXT0;
769*53ee8cc1Swenshuai.xi pad_src = REG_TOP_TS_SRC_EXT0;
770*53ee8cc1Swenshuai.xi break;
771*53ee8cc1Swenshuai.xi case E_TSP_TS_PAD_EXT1:
772*53ee8cc1Swenshuai.xi clk_src = REG_CLKGEN0_TS_SRC_EXT1;
773*53ee8cc1Swenshuai.xi pad_src = REG_TOP_TS_SRC_EXT1;
774*53ee8cc1Swenshuai.xi break;
775*53ee8cc1Swenshuai.xi case E_TSP_TS_PAD_INTER0:
776*53ee8cc1Swenshuai.xi clk_src = REG_CLKGEN0_TS_SRC_EXT0;
777*53ee8cc1Swenshuai.xi pad_src = REG_TOP_TS_SRC_EXT0;
778*53ee8cc1Swenshuai.xi printf("[%s][%d]Warning KANO not support Internal Demod\n",__FUNCTION__,__LINE__);
779*53ee8cc1Swenshuai.xi break;
780*53ee8cc1Swenshuai.xi }
781*53ee8cc1Swenshuai.xi //@FIXME use enum instead of constant
782*53ee8cc1Swenshuai.xi switch (tsIf)
783*53ee8cc1Swenshuai.xi {
784*53ee8cc1Swenshuai.xi case 0:
785*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);
786*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));
787*53ee8cc1Swenshuai.xi break;
788*53ee8cc1Swenshuai.xi case 1:
789*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))
790*53ee8cc1Swenshuai.xi | (pad_src<<REG_TOP_TS1_SHIFT);
791*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS1_SHIFT))
792*53ee8cc1Swenshuai.xi | (clk_src<<(REG_CLKGEN0_TS1_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
793*53ee8cc1Swenshuai.xi break;
794*53ee8cc1Swenshuai.xi case 2:
795*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))
796*53ee8cc1Swenshuai.xi | (pad_src<<REG_TOP_TS2_SHIFT);
797*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ~(REG_CLKGEN0_TS_MASK<<REG_CLKGEN0_TS2_SHIFT))
798*53ee8cc1Swenshuai.xi | (clk_src<<(REG_CLKGEN0_TS2_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
799*53ee8cc1Swenshuai.xi break;
800*53ee8cc1Swenshuai.xi default:
801*53ee8cc1Swenshuai.xi return FALSE;
802*53ee8cc1Swenshuai.xi }
803*53ee8cc1Swenshuai.xi return TRUE;
804*53ee8cc1Swenshuai.xi }
805*53ee8cc1Swenshuai.xi
HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)806*53ee8cc1Swenshuai.xi void HAL_TSO_SetTSOOutMUX(MS_BOOL bSet)
807*53ee8cc1Swenshuai.xi {
808*53ee8cc1Swenshuai.xi return ;
809*53ee8cc1Swenshuai.xi }
810*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)811*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)
812*53ee8cc1Swenshuai.xi {
813*53ee8cc1Swenshuai.xi return FALSE;
814*53ee8cc1Swenshuai.xi }
815*53ee8cc1Swenshuai.xi
_TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad,MS_U32 * pu32PADSrc,MS_U32 * pu32CLKSrc)816*53ee8cc1Swenshuai.xi static MS_BOOL _TSP_Hal_TSPAD2RelatedReg_Mapping(TSP_TS_PAD eTSPad, MS_U32* pu32PADSrc, MS_U32* pu32CLKSrc)
817*53ee8cc1Swenshuai.xi {
818*53ee8cc1Swenshuai.xi switch (eTSPad)
819*53ee8cc1Swenshuai.xi {
820*53ee8cc1Swenshuai.xi case E_TSP_TS_PAD_EXT0:
821*53ee8cc1Swenshuai.xi *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
822*53ee8cc1Swenshuai.xi *pu32PADSrc = REG_TOP_TS_SRC_EXT0;
823*53ee8cc1Swenshuai.xi break;
824*53ee8cc1Swenshuai.xi case E_TSP_TS_PAD_EXT1:
825*53ee8cc1Swenshuai.xi *pu32CLKSrc = REG_CLKGEN0_TS_SRC_EXT1;
826*53ee8cc1Swenshuai.xi *pu32PADSrc = REG_TOP_TS_SRC_EXT1;
827*53ee8cc1Swenshuai.xi break;
828*53ee8cc1Swenshuai.xi case E_TSP_TS_PAD_INTER0:
829*53ee8cc1Swenshuai.xi *pu32CLKSrc = REG_CLKGEN0_TS_SRC_DMD0;
830*53ee8cc1Swenshuai.xi *pu32PADSrc = REG_TOP_TS_SRC_DMD0;
831*53ee8cc1Swenshuai.xi break;
832*53ee8cc1Swenshuai.xi default:
833*53ee8cc1Swenshuai.xi return FALSE;
834*53ee8cc1Swenshuai.xi }
835*53ee8cc1Swenshuai.xi
836*53ee8cc1Swenshuai.xi return TRUE;
837*53ee8cc1Swenshuai.xi }
838*53ee8cc1Swenshuai.xi
HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng,TSP_TS_PAD eTSPad)839*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSO_TSIF_SelPad(MS_U32 u32TSOEng, TSP_TS_PAD eTSPad)
840*53ee8cc1Swenshuai.xi {
841*53ee8cc1Swenshuai.xi MS_U32 u32CLKSrc = REG_CLKGEN0_TS_SRC_EXT0;
842*53ee8cc1Swenshuai.xi MS_U32 u32PADSrc = REG_TOP_TS_SRC_EXT0;
843*53ee8cc1Swenshuai.xi _TSP_Hal_TSPAD2RelatedReg_Mapping(eTSPad, &u32PADSrc, &u32CLKSrc);
844*53ee8cc1Swenshuai.xi
845*53ee8cc1Swenshuai.xi switch(u32TSOEng)
846*53ee8cc1Swenshuai.xi {
847*53ee8cc1Swenshuai.xi case 0:
848*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSO0_MUX) = (TSP_TOP_REG(REG_TOP_TSO0_MUX) & ~REG_TOP_TS_SRC_MASK) | u32PADSrc;
849*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) = (TSP_CLKGEN0_REG(REG_CLKGEN0_TSO0_CLK) & ~REG_CLKGEN0_TS_MASK)
850*53ee8cc1Swenshuai.xi | (u32CLKSrc << (REG_CLKGEN0_TSO0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
851*53ee8cc1Swenshuai.xi return TRUE;
852*53ee8cc1Swenshuai.xi
853*53ee8cc1Swenshuai.xi default:
854*53ee8cc1Swenshuai.xi return FALSE;
855*53ee8cc1Swenshuai.xi }
856*53ee8cc1Swenshuai.xi }
857*53ee8cc1Swenshuai.xi
858*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf,MS_BOOL bClkInv)859*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkInv(MS_U32 tsIf , MS_BOOL bClkInv)
860*53ee8cc1Swenshuai.xi {
861*53ee8cc1Swenshuai.xi if (bClkInv)
862*53ee8cc1Swenshuai.xi {
863*53ee8cc1Swenshuai.xi switch (tsIf)
864*53ee8cc1Swenshuai.xi {
865*53ee8cc1Swenshuai.xi case 0:
866*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
867*53ee8cc1Swenshuai.xi break;
868*53ee8cc1Swenshuai.xi case 1:
869*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
870*53ee8cc1Swenshuai.xi break;
871*53ee8cc1Swenshuai.xi case 2:
872*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
873*53ee8cc1Swenshuai.xi break;
874*53ee8cc1Swenshuai.xi default:
875*53ee8cc1Swenshuai.xi return FALSE;
876*53ee8cc1Swenshuai.xi }
877*53ee8cc1Swenshuai.xi }
878*53ee8cc1Swenshuai.xi else
879*53ee8cc1Swenshuai.xi {
880*53ee8cc1Swenshuai.xi switch (tsIf)
881*53ee8cc1Swenshuai.xi {
882*53ee8cc1Swenshuai.xi case 0:
883*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS0_SHIFT));
884*53ee8cc1Swenshuai.xi break;
885*53ee8cc1Swenshuai.xi case 1:
886*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS1_SHIFT));
887*53ee8cc1Swenshuai.xi break;
888*53ee8cc1Swenshuai.xi case 2:
889*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_INVERT)<<(REG_CLKGEN0_TS2_SHIFT));
890*53ee8cc1Swenshuai.xi break;
891*53ee8cc1Swenshuai.xi default:
892*53ee8cc1Swenshuai.xi return FALSE;
893*53ee8cc1Swenshuai.xi }
894*53ee8cc1Swenshuai.xi }
895*53ee8cc1Swenshuai.xi return TRUE;
896*53ee8cc1Swenshuai.xi }
897*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf,MS_BOOL bClkDis)898*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_SelPad_ClkDis(MS_U32 tsIf , MS_BOOL bClkDis)
899*53ee8cc1Swenshuai.xi {
900*53ee8cc1Swenshuai.xi if (bClkDis)
901*53ee8cc1Swenshuai.xi {
902*53ee8cc1Swenshuai.xi switch (tsIf)
903*53ee8cc1Swenshuai.xi {
904*53ee8cc1Swenshuai.xi case 0:
905*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
906*53ee8cc1Swenshuai.xi break;
907*53ee8cc1Swenshuai.xi case 1:
908*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
909*53ee8cc1Swenshuai.xi break;
910*53ee8cc1Swenshuai.xi case 2:
911*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) |= ((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
912*53ee8cc1Swenshuai.xi break;
913*53ee8cc1Swenshuai.xi default:
914*53ee8cc1Swenshuai.xi return FALSE;
915*53ee8cc1Swenshuai.xi }
916*53ee8cc1Swenshuai.xi }
917*53ee8cc1Swenshuai.xi else
918*53ee8cc1Swenshuai.xi {
919*53ee8cc1Swenshuai.xi switch (tsIf)
920*53ee8cc1Swenshuai.xi {
921*53ee8cc1Swenshuai.xi case 0:
922*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS0_SHIFT));
923*53ee8cc1Swenshuai.xi break;
924*53ee8cc1Swenshuai.xi case 1:
925*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS1_SHIFT));
926*53ee8cc1Swenshuai.xi break;
927*53ee8cc1Swenshuai.xi case 2:
928*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) &= ~((REG_CLKGEN0_TS_DISABLE)<<(REG_CLKGEN0_TS2_SHIFT));
929*53ee8cc1Swenshuai.xi break;
930*53ee8cc1Swenshuai.xi default:
931*53ee8cc1Swenshuai.xi return FALSE;
932*53ee8cc1Swenshuai.xi }
933*53ee8cc1Swenshuai.xi }
934*53ee8cc1Swenshuai.xi return TRUE;
935*53ee8cc1Swenshuai.xi }
936*53ee8cc1Swenshuai.xi
937*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)938*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_TSIF_FileEn(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
939*53ee8cc1Swenshuai.xi {
940*53ee8cc1Swenshuai.xi if(bEnable)
941*53ee8cc1Swenshuai.xi {
942*53ee8cc1Swenshuai.xi switch(eFileEng)
943*53ee8cc1Swenshuai.xi {
944*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
945*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE); // for wishbone DMA (load firmware or playback)
946*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL); //Tsif0 output is live TS
947*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN); //filein enable
948*53ee8cc1Swenshuai.xi break;
949*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
950*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
951*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
952*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
953*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN); //filein enable
954*53ee8cc1Swenshuai.xi break;
955*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
956*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
957*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
958*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
959*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
960*53ee8cc1Swenshuai.xi break;
961*53ee8cc1Swenshuai.xi default:
962*53ee8cc1Swenshuai.xi return FALSE;
963*53ee8cc1Swenshuai.xi }
964*53ee8cc1Swenshuai.xi }
965*53ee8cc1Swenshuai.xi else
966*53ee8cc1Swenshuai.xi {
967*53ee8cc1Swenshuai.xi switch(eFileEng)
968*53ee8cc1Swenshuai.xi {
969*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
970*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_PVR_CMD_QUEUE_ENABLE);
971*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_DATA_PORT_SEL);
972*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl, TSP_CTRL_TSFILE_EN);
973*53ee8cc1Swenshuai.xi break;
974*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
975*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TSP_FILE_SEGMENT1);
976*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_SEGMENT_TSIF1);
977*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TS_DATA_PORT_SEL1);
978*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_TSP_FILE_IN_TSIF1_EN);
979*53ee8cc1Swenshuai.xi break;
980*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
981*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_FILE_SEGMENT2);
982*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILE_SEGMENT_TSIF2);
983*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_TSP_FILEIN_TSIF2);
984*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TS_DATA_PORT_SEL2);
985*53ee8cc1Swenshuai.xi break;
986*53ee8cc1Swenshuai.xi default:
987*53ee8cc1Swenshuai.xi return FALSE;
988*53ee8cc1Swenshuai.xi }
989*53ee8cc1Swenshuai.xi }
990*53ee8cc1Swenshuai.xi
991*53ee8cc1Swenshuai.xi return TRUE;
992*53ee8cc1Swenshuai.xi }
993*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_BitSwap(MS_U32 tsIf,MS_BOOL bEnable)994*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_BitSwap(MS_U32 tsIf, MS_BOOL bEnable)
995*53ee8cc1Swenshuai.xi {
996*53ee8cc1Swenshuai.xi if(bEnable)
997*53ee8cc1Swenshuai.xi {
998*53ee8cc1Swenshuai.xi switch(tsIf)
999*53ee8cc1Swenshuai.xi {
1000*53ee8cc1Swenshuai.xi case 0:
1001*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1002*53ee8cc1Swenshuai.xi break;
1003*53ee8cc1Swenshuai.xi case 1:
1004*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1005*53ee8cc1Swenshuai.xi break;
1006*53ee8cc1Swenshuai.xi case 2:
1007*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1008*53ee8cc1Swenshuai.xi break;
1009*53ee8cc1Swenshuai.xi default:
1010*53ee8cc1Swenshuai.xi return;
1011*53ee8cc1Swenshuai.xi }
1012*53ee8cc1Swenshuai.xi }
1013*53ee8cc1Swenshuai.xi else
1014*53ee8cc1Swenshuai.xi {
1015*53ee8cc1Swenshuai.xi switch(tsIf)
1016*53ee8cc1Swenshuai.xi {
1017*53ee8cc1Swenshuai.xi case 0:
1018*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA0_SWAP);
1019*53ee8cc1Swenshuai.xi break;
1020*53ee8cc1Swenshuai.xi case 1:
1021*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_PVRCfg, TSP_HW_CFG4_TS_DATA1_SWAP);
1022*53ee8cc1Swenshuai.xi break;
1023*53ee8cc1Swenshuai.xi case 2:
1024*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TS_DATA2_SWAP);
1025*53ee8cc1Swenshuai.xi break;
1026*53ee8cc1Swenshuai.xi default:
1027*53ee8cc1Swenshuai.xi return;
1028*53ee8cc1Swenshuai.xi }
1029*53ee8cc1Swenshuai.xi }
1030*53ee8cc1Swenshuai.xi }
1031*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_ExtSync(MS_U32 tsIf,MS_BOOL bEnable)1032*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_ExtSync(MS_U32 tsIf, MS_BOOL bEnable)
1033*53ee8cc1Swenshuai.xi {
1034*53ee8cc1Swenshuai.xi if(bEnable)
1035*53ee8cc1Swenshuai.xi {
1036*53ee8cc1Swenshuai.xi printf("External Sync\n");
1037*53ee8cc1Swenshuai.xi
1038*53ee8cc1Swenshuai.xi switch(tsIf)
1039*53ee8cc1Swenshuai.xi {
1040*53ee8cc1Swenshuai.xi case 0:
1041*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1042*53ee8cc1Swenshuai.xi break;
1043*53ee8cc1Swenshuai.xi case 1:
1044*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1045*53ee8cc1Swenshuai.xi break;
1046*53ee8cc1Swenshuai.xi case 2:
1047*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1048*53ee8cc1Swenshuai.xi break;
1049*53ee8cc1Swenshuai.xi default:
1050*53ee8cc1Swenshuai.xi return;
1051*53ee8cc1Swenshuai.xi }
1052*53ee8cc1Swenshuai.xi }
1053*53ee8cc1Swenshuai.xi else
1054*53ee8cc1Swenshuai.xi {
1055*53ee8cc1Swenshuai.xi printf("Internal Sync\n");
1056*53ee8cc1Swenshuai.xi
1057*53ee8cc1Swenshuai.xi switch(tsIf)
1058*53ee8cc1Swenshuai.xi {
1059*53ee8cc1Swenshuai.xi case 0:
1060*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_EXTSYNC);
1061*53ee8cc1Swenshuai.xi break;
1062*53ee8cc1Swenshuai.xi case 1:
1063*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config2, TSP_HW_CFG2_TSIF1_EXTSYNC);
1064*53ee8cc1Swenshuai.xi break;
1065*53ee8cc1Swenshuai.xi case 2:
1066*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_EXT_SYNC_SEL2);
1067*53ee8cc1Swenshuai.xi break;
1068*53ee8cc1Swenshuai.xi default:
1069*53ee8cc1Swenshuai.xi return;
1070*53ee8cc1Swenshuai.xi }
1071*53ee8cc1Swenshuai.xi }
1072*53ee8cc1Swenshuai.xi }
1073*53ee8cc1Swenshuai.xi
1074*53ee8cc1Swenshuai.xi //void HAL_TSP_TSIF_Full_Block(MS_U32 tsIf, MS_BOOL bEnable)
HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng,MS_BOOL bEnable)1075*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Bypass(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
1076*53ee8cc1Swenshuai.xi {
1077*53ee8cc1Swenshuai.xi if(bEnable)
1078*53ee8cc1Swenshuai.xi {
1079*53ee8cc1Swenshuai.xi switch(eFileEng)
1080*53ee8cc1Swenshuai.xi {
1081*53ee8cc1Swenshuai.xi case 0:
1082*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP);
1083*53ee8cc1Swenshuai.xi break;
1084*53ee8cc1Swenshuai.xi case 1:
1085*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP1);
1086*53ee8cc1Swenshuai.xi break;
1087*53ee8cc1Swenshuai.xi case 2:
1088*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP2);
1089*53ee8cc1Swenshuai.xi break;
1090*53ee8cc1Swenshuai.xi default:
1091*53ee8cc1Swenshuai.xi return;
1092*53ee8cc1Swenshuai.xi }
1093*53ee8cc1Swenshuai.xi
1094*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl3->CFG3_10,CFG3_10_PS_MODE_SRC_MASK,(eFileEng << CFG3_10_PS_MODE_SRC_SHIFT));
1095*53ee8cc1Swenshuai.xi }
1096*53ee8cc1Swenshuai.xi else
1097*53ee8cc1Swenshuai.xi {
1098*53ee8cc1Swenshuai.xi switch(eFileEng)
1099*53ee8cc1Swenshuai.xi {
1100*53ee8cc1Swenshuai.xi case 0:
1101*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP);
1102*53ee8cc1Swenshuai.xi break;
1103*53ee8cc1Swenshuai.xi case 1:
1104*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP1);
1105*53ee8cc1Swenshuai.xi break;
1106*53ee8cc1Swenshuai.xi case 2:
1107*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->TSP_Ctrl2), TSP_AV_DIRECT_STOP2);
1108*53ee8cc1Swenshuai.xi break;
1109*53ee8cc1Swenshuai.xi default:
1110*53ee8cc1Swenshuai.xi return;
1111*53ee8cc1Swenshuai.xi }
1112*53ee8cc1Swenshuai.xi
1113*53ee8cc1Swenshuai.xi }
1114*53ee8cc1Swenshuai.xi }
1115*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_Parl(MS_U32 tsIf,MS_BOOL bEnable)1116*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_Parl(MS_U32 tsIf, MS_BOOL bEnable)
1117*53ee8cc1Swenshuai.xi {
1118*53ee8cc1Swenshuai.xi if(bEnable)
1119*53ee8cc1Swenshuai.xi {
1120*53ee8cc1Swenshuai.xi switch(tsIf)
1121*53ee8cc1Swenshuai.xi {
1122*53ee8cc1Swenshuai.xi case 0:
1123*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1124*53ee8cc1Swenshuai.xi break;
1125*53ee8cc1Swenshuai.xi case 1:
1126*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1127*53ee8cc1Swenshuai.xi break;
1128*53ee8cc1Swenshuai.xi case 2:
1129*53ee8cc1Swenshuai.xi REG32_SET(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1130*53ee8cc1Swenshuai.xi break;
1131*53ee8cc1Swenshuai.xi default:
1132*53ee8cc1Swenshuai.xi return;
1133*53ee8cc1Swenshuai.xi }
1134*53ee8cc1Swenshuai.xi }
1135*53ee8cc1Swenshuai.xi else
1136*53ee8cc1Swenshuai.xi {
1137*53ee8cc1Swenshuai.xi switch(tsIf)
1138*53ee8cc1Swenshuai.xi {
1139*53ee8cc1Swenshuai.xi case 0:
1140*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->Hw_Config0), TSP_HW_CFG0_TSIF0_PARL);
1141*53ee8cc1Swenshuai.xi break;
1142*53ee8cc1Swenshuai.xi case 1:
1143*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->Hw_Config2), TSP_HW_CFG2_TSIF1_PARL);
1144*53ee8cc1Swenshuai.xi break;
1145*53ee8cc1Swenshuai.xi case 2:
1146*53ee8cc1Swenshuai.xi REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_P_SEL2);
1147*53ee8cc1Swenshuai.xi break;
1148*53ee8cc1Swenshuai.xi default:
1149*53ee8cc1Swenshuai.xi return;
1150*53ee8cc1Swenshuai.xi }
1151*53ee8cc1Swenshuai.xi }
1152*53ee8cc1Swenshuai.xi }
1153*53ee8cc1Swenshuai.xi
HAL_TSP_PAD_3Wire(MS_U32 u32Pad,MS_BOOL bEnable)1154*53ee8cc1Swenshuai.xi void HAL_TSP_PAD_3Wire(MS_U32 u32Pad, MS_BOOL bEnable)
1155*53ee8cc1Swenshuai.xi {
1156*53ee8cc1Swenshuai.xi #if 0 //@NOTE: Kano do NOT need to set
1157*53ee8cc1Swenshuai.xi if(bEnable)
1158*53ee8cc1Swenshuai.xi {
1159*53ee8cc1Swenshuai.xi switch(u32Pad)
1160*53ee8cc1Swenshuai.xi {
1161*53ee8cc1Swenshuai.xi case 0:
1162*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS0_3WIRE_EN;
1163*53ee8cc1Swenshuai.xi break;
1164*53ee8cc1Swenshuai.xi case 1:
1165*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) | REG_TOP_TSP_TS1_3WIRE_EN;
1166*53ee8cc1Swenshuai.xi break;
1167*53ee8cc1Swenshuai.xi case 2:
1168*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1)| REG_TOP_TSP_TS2_3WIRE_EN;
1169*53ee8cc1Swenshuai.xi break;
1170*53ee8cc1Swenshuai.xi case 3:
1171*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) | REG_TOP_TSP_TS3_3WIRE_EN;
1172*53ee8cc1Swenshuai.xi break;
1173*53ee8cc1Swenshuai.xi
1174*53ee8cc1Swenshuai.xi default:
1175*53ee8cc1Swenshuai.xi return;
1176*53ee8cc1Swenshuai.xi }
1177*53ee8cc1Swenshuai.xi }
1178*53ee8cc1Swenshuai.xi else
1179*53ee8cc1Swenshuai.xi {
1180*53ee8cc1Swenshuai.xi switch(u32Pad)
1181*53ee8cc1Swenshuai.xi {
1182*53ee8cc1Swenshuai.xi case 0:
1183*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS0_3WIRE_EN;
1184*53ee8cc1Swenshuai.xi break;
1185*53ee8cc1Swenshuai.xi case 1:
1186*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE) & ~REG_TOP_TSP_TS1_3WIRE_EN;
1187*53ee8cc1Swenshuai.xi break;
1188*53ee8cc1Swenshuai.xi case 2:
1189*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) & ~REG_TOP_TSP_TS2_3WIRE_EN;
1190*53ee8cc1Swenshuai.xi break;
1191*53ee8cc1Swenshuai.xi case 3:
1192*53ee8cc1Swenshuai.xi TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) = TSP_TOP_REG(REG_TOP_TSP_3WIRE_MODE1) & ~REG_TOP_TSP_TS3_3WIRE_EN;
1193*53ee8cc1Swenshuai.xi break;
1194*53ee8cc1Swenshuai.xi default:
1195*53ee8cc1Swenshuai.xi return;
1196*53ee8cc1Swenshuai.xi }
1197*53ee8cc1Swenshuai.xi }
1198*53ee8cc1Swenshuai.xi #endif
1199*53ee8cc1Swenshuai.xi }
1200*53ee8cc1Swenshuai.xi
HAL_TSP_TSIF_3Wire(MS_U32 tsIf,MS_BOOL bEnable)1201*53ee8cc1Swenshuai.xi void HAL_TSP_TSIF_3Wire(MS_U32 tsIf, MS_BOOL bEnable)
1202*53ee8cc1Swenshuai.xi {
1203*53ee8cc1Swenshuai.xi if(bEnable)
1204*53ee8cc1Swenshuai.xi {
1205*53ee8cc1Swenshuai.xi switch(tsIf)
1206*53ee8cc1Swenshuai.xi {
1207*53ee8cc1Swenshuai.xi case 0:
1208*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1209*53ee8cc1Swenshuai.xi break;
1210*53ee8cc1Swenshuai.xi case 1:
1211*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1212*53ee8cc1Swenshuai.xi break;
1213*53ee8cc1Swenshuai.xi case 2:
1214*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1215*53ee8cc1Swenshuai.xi break;
1216*53ee8cc1Swenshuai.xi default:
1217*53ee8cc1Swenshuai.xi return;
1218*53ee8cc1Swenshuai.xi }
1219*53ee8cc1Swenshuai.xi }
1220*53ee8cc1Swenshuai.xi else
1221*53ee8cc1Swenshuai.xi {
1222*53ee8cc1Swenshuai.xi switch(tsIf)
1223*53ee8cc1Swenshuai.xi {
1224*53ee8cc1Swenshuai.xi case 0:
1225*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS0);
1226*53ee8cc1Swenshuai.xi break;
1227*53ee8cc1Swenshuai.xi case 1:
1228*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS1);
1229*53ee8cc1Swenshuai.xi break;
1230*53ee8cc1Swenshuai.xi case 2:
1231*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl3->CFG3_37), HW4_CFG37_3WIRE_SERIAL_MODE_TS2);
1232*53ee8cc1Swenshuai.xi break;
1233*53ee8cc1Swenshuai.xi default:
1234*53ee8cc1Swenshuai.xi return;
1235*53ee8cc1Swenshuai.xi }
1236*53ee8cc1Swenshuai.xi }
1237*53ee8cc1Swenshuai.xi
1238*53ee8cc1Swenshuai.xi }
1239*53ee8cc1Swenshuai.xi
HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId,MS_BOOL bEn)1240*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_CCDrop(MS_U32 pktDmxId, MS_BOOL bEn)
1241*53ee8cc1Swenshuai.xi {
1242*53ee8cc1Swenshuai.xi if(bEn)
1243*53ee8cc1Swenshuai.xi {
1244*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
1245*53ee8cc1Swenshuai.xi }
1246*53ee8cc1Swenshuai.xi else
1247*53ee8cc1Swenshuai.xi {
1248*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_0C, ((1 << pktDmxId) << CFG3_0C_PKTDMX_CC_DROP_SHIFT) & CFG3_0C_PKTDMX_CC_DROP_MSAK);
1249*53ee8cc1Swenshuai.xi }
1250*53ee8cc1Swenshuai.xi }
1251*53ee8cc1Swenshuai.xi
HAL_TSP_ReDirect_File(MS_U32 reDir,MS_U32 tsIf,MS_BOOL bEn)1252*53ee8cc1Swenshuai.xi void HAL_TSP_ReDirect_File(MS_U32 reDir, MS_U32 tsIf, MS_BOOL bEn)
1253*53ee8cc1Swenshuai.xi {
1254*53ee8cc1Swenshuai.xi //@NOTE Not support in KANO(K7)
1255*53ee8cc1Swenshuai.xi #if 0
1256*53ee8cc1Swenshuai.xi MS_U16 u16Src = 0;
1257*53ee8cc1Swenshuai.xi
1258*53ee8cc1Swenshuai.xi if((reDir > 0) || (tsIf > 1))
1259*53ee8cc1Swenshuai.xi return;
1260*53ee8cc1Swenshuai.xi
1261*53ee8cc1Swenshuai.xi if(bEn)
1262*53ee8cc1Swenshuai.xi {
1263*53ee8cc1Swenshuai.xi u16Src = (MS_U16)(tsIf + 1) << CFG_01_PDFLT2_FILE_SRC_SHIFT;
1264*53ee8cc1Swenshuai.xi }
1265*53ee8cc1Swenshuai.xi
1266*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PDFLT2_FILE_SRC, u16Src);
1267*53ee8cc1Swenshuai.xi #endif
1268*53ee8cc1Swenshuai.xi }
1269*53ee8cc1Swenshuai.xi
HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)1270*53ee8cc1Swenshuai.xi void HAL_TSP_TRACE_MARK_En(MS_U32 u32Tsif,TSP_DST_SEQ eFltType,MS_BOOL bEn)
1271*53ee8cc1Swenshuai.xi {
1272*53ee8cc1Swenshuai.xi if(bEn)
1273*53ee8cc1Swenshuai.xi {
1274*53ee8cc1Swenshuai.xi switch(u32Tsif)
1275*53ee8cc1Swenshuai.xi {
1276*53ee8cc1Swenshuai.xi case 0:
1277*53ee8cc1Swenshuai.xi switch (eFltType)
1278*53ee8cc1Swenshuai.xi {
1279*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
1280*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
1281*53ee8cc1Swenshuai.xi break;
1282*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
1283*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
1284*53ee8cc1Swenshuai.xi break;
1285*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
1286*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
1287*53ee8cc1Swenshuai.xi break;
1288*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
1289*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
1290*53ee8cc1Swenshuai.xi break;
1291*53ee8cc1Swenshuai.xi default:
1292*53ee8cc1Swenshuai.xi break;
1293*53ee8cc1Swenshuai.xi }
1294*53ee8cc1Swenshuai.xi break;
1295*53ee8cc1Swenshuai.xi case 1:
1296*53ee8cc1Swenshuai.xi switch (eFltType)
1297*53ee8cc1Swenshuai.xi {
1298*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
1299*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
1300*53ee8cc1Swenshuai.xi break;
1301*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
1302*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
1303*53ee8cc1Swenshuai.xi break;
1304*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
1305*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
1306*53ee8cc1Swenshuai.xi break;
1307*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
1308*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
1309*53ee8cc1Swenshuai.xi break;
1310*53ee8cc1Swenshuai.xi default:
1311*53ee8cc1Swenshuai.xi break;
1312*53ee8cc1Swenshuai.xi }
1313*53ee8cc1Swenshuai.xi break;
1314*53ee8cc1Swenshuai.xi case 2:
1315*53ee8cc1Swenshuai.xi switch (eFltType)
1316*53ee8cc1Swenshuai.xi {
1317*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
1318*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
1319*53ee8cc1Swenshuai.xi break;
1320*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
1321*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
1322*53ee8cc1Swenshuai.xi break;
1323*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
1324*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
1325*53ee8cc1Swenshuai.xi break;
1326*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
1327*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
1328*53ee8cc1Swenshuai.xi break;
1329*53ee8cc1Swenshuai.xi default:
1330*53ee8cc1Swenshuai.xi break;
1331*53ee8cc1Swenshuai.xi }
1332*53ee8cc1Swenshuai.xi break;
1333*53ee8cc1Swenshuai.xi default:
1334*53ee8cc1Swenshuai.xi break;
1335*53ee8cc1Swenshuai.xi }
1336*53ee8cc1Swenshuai.xi }
1337*53ee8cc1Swenshuai.xi else
1338*53ee8cc1Swenshuai.xi {
1339*53ee8cc1Swenshuai.xi switch(u32Tsif)
1340*53ee8cc1Swenshuai.xi {
1341*53ee8cc1Swenshuai.xi case 0:
1342*53ee8cc1Swenshuai.xi switch (eFltType)
1343*53ee8cc1Swenshuai.xi {
1344*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
1345*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V_EN);
1346*53ee8cc1Swenshuai.xi break;
1347*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
1348*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_V3D_EN);
1349*53ee8cc1Swenshuai.xi break;
1350*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
1351*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_A_EN);
1352*53ee8cc1Swenshuai.xi break;
1353*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
1354*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX0_TRACE_MARK_AB_EN);
1355*53ee8cc1Swenshuai.xi break;
1356*53ee8cc1Swenshuai.xi default:
1357*53ee8cc1Swenshuai.xi break;
1358*53ee8cc1Swenshuai.xi }
1359*53ee8cc1Swenshuai.xi break;
1360*53ee8cc1Swenshuai.xi case 1:
1361*53ee8cc1Swenshuai.xi switch (eFltType)
1362*53ee8cc1Swenshuai.xi {
1363*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
1364*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V_EN);
1365*53ee8cc1Swenshuai.xi break;
1366*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
1367*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_V3D_EN);
1368*53ee8cc1Swenshuai.xi break;
1369*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
1370*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_A_EN);
1371*53ee8cc1Swenshuai.xi break;
1372*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
1373*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX1_TRACE_MARK_AB_EN);
1374*53ee8cc1Swenshuai.xi break;
1375*53ee8cc1Swenshuai.xi default:
1376*53ee8cc1Swenshuai.xi break;
1377*53ee8cc1Swenshuai.xi }
1378*53ee8cc1Swenshuai.xi break;
1379*53ee8cc1Swenshuai.xi case 2:
1380*53ee8cc1Swenshuai.xi switch (eFltType)
1381*53ee8cc1Swenshuai.xi {
1382*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
1383*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V_EN);
1384*53ee8cc1Swenshuai.xi break;
1385*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
1386*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_V3D_EN);
1387*53ee8cc1Swenshuai.xi break;
1388*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
1389*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_A_EN);
1390*53ee8cc1Swenshuai.xi break;
1391*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
1392*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2A, CFG3_2A_PKTDMX2_TRACE_MARK_AB_EN);
1393*53ee8cc1Swenshuai.xi break;
1394*53ee8cc1Swenshuai.xi default:
1395*53ee8cc1Swenshuai.xi break;
1396*53ee8cc1Swenshuai.xi }
1397*53ee8cc1Swenshuai.xi break;
1398*53ee8cc1Swenshuai.xi default:
1399*53ee8cc1Swenshuai.xi break;
1400*53ee8cc1Swenshuai.xi }
1401*53ee8cc1Swenshuai.xi }
1402*53ee8cc1Swenshuai.xi }
1403*53ee8cc1Swenshuai.xi
HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)1404*53ee8cc1Swenshuai.xi void HAL_TSP_BD_AUD_En(MS_U32 u32BD,MS_BOOL bEn)
1405*53ee8cc1Swenshuai.xi {
1406*53ee8cc1Swenshuai.xi
1407*53ee8cc1Swenshuai.xi if(bEn == TRUE)
1408*53ee8cc1Swenshuai.xi {
1409*53ee8cc1Swenshuai.xi switch(u32BD)
1410*53ee8cc1Swenshuai.xi {
1411*53ee8cc1Swenshuai.xi case 0:
1412*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
1413*53ee8cc1Swenshuai.xi break;
1414*53ee8cc1Swenshuai.xi case 1:
1415*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
1416*53ee8cc1Swenshuai.xi break;
1417*53ee8cc1Swenshuai.xi default:
1418*53ee8cc1Swenshuai.xi printf("Not support !!\n");
1419*53ee8cc1Swenshuai.xi break;
1420*53ee8cc1Swenshuai.xi }
1421*53ee8cc1Swenshuai.xi }
1422*53ee8cc1Swenshuai.xi else
1423*53ee8cc1Swenshuai.xi {
1424*53ee8cc1Swenshuai.xi switch(u32BD)
1425*53ee8cc1Swenshuai.xi {
1426*53ee8cc1Swenshuai.xi case 0:
1427*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b4, TSP_BD_AUD_EN);
1428*53ee8cc1Swenshuai.xi break;
1429*53ee8cc1Swenshuai.xi case 1:
1430*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b4, TSP_BD2_AUD_EN);
1431*53ee8cc1Swenshuai.xi break;
1432*53ee8cc1Swenshuai.xi default:
1433*53ee8cc1Swenshuai.xi printf("Not support !!\n");
1434*53ee8cc1Swenshuai.xi break;
1435*53ee8cc1Swenshuai.xi
1436*53ee8cc1Swenshuai.xi }
1437*53ee8cc1Swenshuai.xi }
1438*53ee8cc1Swenshuai.xi
1439*53ee8cc1Swenshuai.xi }
1440*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng,MS_U32 u32PktSize)1441*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PktSize(FILEENG_SEQ eFileEng, MS_U32 u32PktSize)
1442*53ee8cc1Swenshuai.xi {
1443*53ee8cc1Swenshuai.xi MS_U32 u32PktLen = u32PktSize;
1444*53ee8cc1Swenshuai.xi
1445*53ee8cc1Swenshuai.xi if(u32PktSize == 130)
1446*53ee8cc1Swenshuai.xi {
1447*53ee8cc1Swenshuai.xi u32PktLen = 188;
1448*53ee8cc1Swenshuai.xi }
1449*53ee8cc1Swenshuai.xi else if(u32PktSize == 134)
1450*53ee8cc1Swenshuai.xi {
1451*53ee8cc1Swenshuai.xi u32PktLen = 192;
1452*53ee8cc1Swenshuai.xi }
1453*53ee8cc1Swenshuai.xi
1454*53ee8cc1Swenshuai.xi if(u32PktSize == 130 || u32PktSize == 134) //RVU
1455*53ee8cc1Swenshuai.xi {
1456*53ee8cc1Swenshuai.xi MS_U16 u16value = 0;
1457*53ee8cc1Swenshuai.xi
1458*53ee8cc1Swenshuai.xi if(u32PktSize == 134)
1459*53ee8cc1Swenshuai.xi {
1460*53ee8cc1Swenshuai.xi switch(eFileEng)
1461*53ee8cc1Swenshuai.xi {
1462*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1463*53ee8cc1Swenshuai.xi u16value = HW4_CFG36_PKT130_TIMESTAMP_EN0;
1464*53ee8cc1Swenshuai.xi break;
1465*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1466*53ee8cc1Swenshuai.xi u16value = HW4_CFG36_PKT130_TIMESTAMP_EN1;
1467*53ee8cc1Swenshuai.xi break;
1468*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1469*53ee8cc1Swenshuai.xi u16value = CFG4_54_RVU_TIMESTAMP_EN2;
1470*53ee8cc1Swenshuai.xi break;
1471*53ee8cc1Swenshuai.xi default:
1472*53ee8cc1Swenshuai.xi printf("Not support !!\n");
1473*53ee8cc1Swenshuai.xi break;
1474*53ee8cc1Swenshuai.xi }
1475*53ee8cc1Swenshuai.xi }
1476*53ee8cc1Swenshuai.xi
1477*53ee8cc1Swenshuai.xi switch(eFileEng)
1478*53ee8cc1Swenshuai.xi {
1479*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1480*53ee8cc1Swenshuai.xi u16value |= HW4_CFG36_PKT130_PSI_EN0 | HW4_CFG36_PKT130_EN0;
1481*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_36, u16value);
1482*53ee8cc1Swenshuai.xi break;
1483*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1484*53ee8cc1Swenshuai.xi u16value |= HW4_CFG36_PKT130_PSI_EN1 | HW4_CFG36_PKT130_EN1;
1485*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_36, u16value);
1486*53ee8cc1Swenshuai.xi break;
1487*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1488*53ee8cc1Swenshuai.xi u16value |= CFG4_54_RVU_PSI_EN2 | CFG4_54_RVU_EN2;
1489*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl4->CFG4_54, u16value);
1490*53ee8cc1Swenshuai.xi break;
1491*53ee8cc1Swenshuai.xi default:
1492*53ee8cc1Swenshuai.xi return;
1493*53ee8cc1Swenshuai.xi }
1494*53ee8cc1Swenshuai.xi
1495*53ee8cc1Swenshuai.xi }
1496*53ee8cc1Swenshuai.xi
1497*53ee8cc1Swenshuai.xi switch(eFileEng)
1498*53ee8cc1Swenshuai.xi {
1499*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1500*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_ALT_TS_SIZE);
1501*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->PktChkSizeFilein, (REG16_R(&_RegCtrl->PktChkSizeFilein) & ~TSP_PKT_SIZE_MASK) | (TSP_PKT_SIZE_MASK & (u32PktLen-1)));
1502*53ee8cc1Swenshuai.xi break;
1503*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1504*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)));
1505*53ee8cc1Swenshuai.xi break;
1506*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1507*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_07, (REG16_R(&_RegCtrl2->CFG_07) & ~CFG_07_PKT_CHK_SIZE_FILEIN2) | (CFG_07_PKT_CHK_SIZE_FILEIN2 & (u32PktLen-1)));
1508*53ee8cc1Swenshuai.xi break;
1509*53ee8cc1Swenshuai.xi default:
1510*53ee8cc1Swenshuai.xi break;
1511*53ee8cc1Swenshuai.xi }
1512*53ee8cc1Swenshuai.xi }
1513*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng,MS_U32 addr)1514*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Addr(FILEENG_SEQ eFileEng, MS_U32 addr)
1515*53ee8cc1Swenshuai.xi {
1516*53ee8cc1Swenshuai.xi switch(eFileEng)
1517*53ee8cc1Swenshuai.xi {
1518*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1519*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->TsDma_Addr, addr);
1520*53ee8cc1Swenshuai.xi break;
1521*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1522*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_30_31, addr);
1523*53ee8cc1Swenshuai.xi break;
1524*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1525*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_35_36, addr);
1526*53ee8cc1Swenshuai.xi break;
1527*53ee8cc1Swenshuai.xi default:
1528*53ee8cc1Swenshuai.xi break;
1529*53ee8cc1Swenshuai.xi }
1530*53ee8cc1Swenshuai.xi }
1531*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng,MS_U32 size)1532*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Size(FILEENG_SEQ eFileEng, MS_U32 size)
1533*53ee8cc1Swenshuai.xi {
1534*53ee8cc1Swenshuai.xi switch(eFileEng)
1535*53ee8cc1Swenshuai.xi {
1536*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1537*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->TsDma_Size, size);
1538*53ee8cc1Swenshuai.xi break;
1539*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1540*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_32_33, size);
1541*53ee8cc1Swenshuai.xi break;
1542*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1543*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_37_38, size);
1544*53ee8cc1Swenshuai.xi break;
1545*53ee8cc1Swenshuai.xi default:
1546*53ee8cc1Swenshuai.xi break;
1547*53ee8cc1Swenshuai.xi }
1548*53ee8cc1Swenshuai.xi }
1549*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)1550*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Start(FILEENG_SEQ eFileEng)
1551*53ee8cc1Swenshuai.xi {
1552*53ee8cc1Swenshuai.xi switch(eFileEng)
1553*53ee8cc1Swenshuai.xi {
1554*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1555*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TsDma_Ctrl, TSP_TSDMA_CTRL_START);
1556*53ee8cc1Swenshuai.xi break;
1557*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1558*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_34, CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START);
1559*53ee8cc1Swenshuai.xi break;
1560*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1561*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_39, CFG_39_FILEIN_CTRL_TSIF2_START);
1562*53ee8cc1Swenshuai.xi break;
1563*53ee8cc1Swenshuai.xi default:
1564*53ee8cc1Swenshuai.xi break;
1565*53ee8cc1Swenshuai.xi }
1566*53ee8cc1Swenshuai.xi }
1567*53ee8cc1Swenshuai.xi
HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)1568*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Pause(FILEENG_SEQ eFileEng)
1569*53ee8cc1Swenshuai.xi {
1570*53ee8cc1Swenshuai.xi switch (eFileEng)
1571*53ee8cc1Swenshuai.xi {
1572*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1573*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
1574*53ee8cc1Swenshuai.xi return TRUE;
1575*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1576*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
1577*53ee8cc1Swenshuai.xi return TRUE;
1578*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1579*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
1580*53ee8cc1Swenshuai.xi return TRUE;
1581*53ee8cc1Swenshuai.xi default:
1582*53ee8cc1Swenshuai.xi return FALSE;
1583*53ee8cc1Swenshuai.xi }
1584*53ee8cc1Swenshuai.xi }
1585*53ee8cc1Swenshuai.xi
HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)1586*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_File_Resume(FILEENG_SEQ eFileEng)
1587*53ee8cc1Swenshuai.xi {
1588*53ee8cc1Swenshuai.xi switch (eFileEng)
1589*53ee8cc1Swenshuai.xi {
1590*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1591*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_FILEIN_PAUSE);
1592*53ee8cc1Swenshuai.xi return TRUE;
1593*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1594*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF1_FILE_PAUSE);
1595*53ee8cc1Swenshuai.xi return TRUE;
1596*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1597*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_21, CFG3_21_TSIF2_FILE_PAUSE);
1598*53ee8cc1Swenshuai.xi return TRUE;
1599*53ee8cc1Swenshuai.xi default:
1600*53ee8cc1Swenshuai.xi return FALSE;
1601*53ee8cc1Swenshuai.xi }
1602*53ee8cc1Swenshuai.xi }
1603*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)1604*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Init_Trust_Start(FILEENG_SEQ eFileEng)
1605*53ee8cc1Swenshuai.xi {
1606*53ee8cc1Swenshuai.xi switch(eFileEng)
1607*53ee8cc1Swenshuai.xi {
1608*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1609*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TsDma_Ctrl, (TSP_TSDMA_INIT_TRUST | TSP_TSDMA_CTRL_START));
1610*53ee8cc1Swenshuai.xi break;
1611*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1612*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_34, (CFG_34_REG_TSP_FILEIN_INIT_TRUST_TSIF1 | CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_START));
1613*53ee8cc1Swenshuai.xi break;
1614*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1615*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_39, (CFG_39_FILEIN_INIT_TRUST_TSIF2 | CFG_39_FILEIN_CTRL_TSIF2_START));
1616*53ee8cc1Swenshuai.xi break;
1617*53ee8cc1Swenshuai.xi default:
1618*53ee8cc1Swenshuai.xi break;
1619*53ee8cc1Swenshuai.xi }
1620*53ee8cc1Swenshuai.xi }
1621*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng,MS_BOOL bEn)1622*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_Abort(FILEENG_SEQ eFileEng, MS_BOOL bEn)
1623*53ee8cc1Swenshuai.xi {
1624*53ee8cc1Swenshuai.xi if(bEn)
1625*53ee8cc1Swenshuai.xi {
1626*53ee8cc1Swenshuai.xi switch(eFileEng)
1627*53ee8cc1Swenshuai.xi {
1628*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1629*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
1630*53ee8cc1Swenshuai.xi break;
1631*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1632*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
1633*53ee8cc1Swenshuai.xi break;
1634*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1635*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
1636*53ee8cc1Swenshuai.xi break;
1637*53ee8cc1Swenshuai.xi default:
1638*53ee8cc1Swenshuai.xi break;
1639*53ee8cc1Swenshuai.xi }
1640*53ee8cc1Swenshuai.xi }
1641*53ee8cc1Swenshuai.xi else
1642*53ee8cc1Swenshuai.xi {
1643*53ee8cc1Swenshuai.xi switch(eFileEng)
1644*53ee8cc1Swenshuai.xi {
1645*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1646*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF0);
1647*53ee8cc1Swenshuai.xi break;
1648*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1649*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF1);
1650*53ee8cc1Swenshuai.xi break;
1651*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1652*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_04, CFG_04_TSP_FILEIN_ABORT_ECO_TSIF2);
1653*53ee8cc1Swenshuai.xi break;
1654*53ee8cc1Swenshuai.xi default:
1655*53ee8cc1Swenshuai.xi break;
1656*53ee8cc1Swenshuai.xi }
1657*53ee8cc1Swenshuai.xi }
1658*53ee8cc1Swenshuai.xi }
1659*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)1660*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_CmdQRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
1661*53ee8cc1Swenshuai.xi {
1662*53ee8cc1Swenshuai.xi if(bEnable)
1663*53ee8cc1Swenshuai.xi {
1664*53ee8cc1Swenshuai.xi switch(eFileEng)
1665*53ee8cc1Swenshuai.xi {
1666*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1667*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
1668*53ee8cc1Swenshuai.xi break;
1669*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1670*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
1671*53ee8cc1Swenshuai.xi break;
1672*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1673*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
1674*53ee8cc1Swenshuai.xi break;
1675*53ee8cc1Swenshuai.xi default:
1676*53ee8cc1Swenshuai.xi break;
1677*53ee8cc1Swenshuai.xi }
1678*53ee8cc1Swenshuai.xi }
1679*53ee8cc1Swenshuai.xi else
1680*53ee8cc1Swenshuai.xi {
1681*53ee8cc1Swenshuai.xi switch(eFileEng)
1682*53ee8cc1Swenshuai.xi {
1683*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1684*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl1, TSP_CTRL1_CMDQ_RESET);
1685*53ee8cc1Swenshuai.xi break;
1686*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1687*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_RST_CMDQ_FILEIN_TSIF1);
1688*53ee8cc1Swenshuai.xi break;
1689*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1690*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_RST_CMDQ_FILEIN_TSIF2);
1691*53ee8cc1Swenshuai.xi break;
1692*53ee8cc1Swenshuai.xi default:
1693*53ee8cc1Swenshuai.xi break;
1694*53ee8cc1Swenshuai.xi }
1695*53ee8cc1Swenshuai.xi }
1696*53ee8cc1Swenshuai.xi }
1697*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)1698*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQSlot(FILEENG_SEQ eFileEng)
1699*53ee8cc1Swenshuai.xi {
1700*53ee8cc1Swenshuai.xi switch(eFileEng)
1701*53ee8cc1Swenshuai.xi {
1702*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1703*53ee8cc1Swenshuai.xi return (TSP_CMDQ_SIZE - ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT));
1704*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1705*53ee8cc1Swenshuai.xi return (CFG_3F_REG_TSIF1_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT));
1706*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1707*53ee8cc1Swenshuai.xi return (CFG_40_REG_TSIF2_CMD_QUEUE_SIZE - (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT));
1708*53ee8cc1Swenshuai.xi default:
1709*53ee8cc1Swenshuai.xi return 0;
1710*53ee8cc1Swenshuai.xi }
1711*53ee8cc1Swenshuai.xi }
1712*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)1713*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQCnt(FILEENG_SEQ eFileEng)
1714*53ee8cc1Swenshuai.xi {
1715*53ee8cc1Swenshuai.xi switch(eFileEng)
1716*53ee8cc1Swenshuai.xi {
1717*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1718*53ee8cc1Swenshuai.xi return ((REG16_R(&_RegCtrl->TsDma_mdQ) & TSP_CMDQ_CNT_MASK) >> TSP_CMDQ_CNT_SHFT);
1719*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1720*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_CNT);
1721*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1722*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_CNT);
1723*53ee8cc1Swenshuai.xi default:
1724*53ee8cc1Swenshuai.xi return 0;
1725*53ee8cc1Swenshuai.xi }
1726*53ee8cc1Swenshuai.xi }
1727*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)1728*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_CmdQLv(FILEENG_SEQ eFileEng)
1729*53ee8cc1Swenshuai.xi {
1730*53ee8cc1Swenshuai.xi switch(eFileEng)
1731*53ee8cc1Swenshuai.xi {
1732*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1733*53ee8cc1Swenshuai.xi return ((REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_CMDQ_WR_LEVEL_MASK) >> TSP_CMDQ_WR_LEVEL_SHFT);
1734*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1735*53ee8cc1Swenshuai.xi return ((REG16_R(&_RegCtrl2->CFG_3F) & CFG_3F_REG_TSIF1_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
1736*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1737*53ee8cc1Swenshuai.xi return ((REG16_R(&_RegCtrl2->CFG_40) & CFG_40_REG_TSIF2_CMD_QUEUE_WR_LEVEL) >> CFG_3F_REG_TSIF1_CMD_QUEUE_LEVEL_SHIFT);
1738*53ee8cc1Swenshuai.xi default:
1739*53ee8cc1Swenshuai.xi return 0;
1740*53ee8cc1Swenshuai.xi }
1741*53ee8cc1Swenshuai.xi }
1742*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng,MS_U32 delay,MS_BOOL bEnable)1743*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_ByteDelay(FILEENG_SEQ eFileEng, MS_U32 delay, MS_BOOL bEnable)
1744*53ee8cc1Swenshuai.xi {
1745*53ee8cc1Swenshuai.xi if(bEnable)
1746*53ee8cc1Swenshuai.xi {
1747*53ee8cc1Swenshuai.xi switch(eFileEng)
1748*53ee8cc1Swenshuai.xi {
1749*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1750*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->TsFileIn_Timer, delay & TSP_FILE_TIMER_MASK);
1751*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
1752*53ee8cc1Swenshuai.xi break;
1753*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1754*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_03, delay & CFG_03_TSP_FILE_TIMER1);
1755*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
1756*53ee8cc1Swenshuai.xi break;
1757*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1758*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_08, delay & CFG_08_TSP_FILE_TIMER2);
1759*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
1760*53ee8cc1Swenshuai.xi break;
1761*53ee8cc1Swenshuai.xi default:
1762*53ee8cc1Swenshuai.xi break;
1763*53ee8cc1Swenshuai.xi }
1764*53ee8cc1Swenshuai.xi }
1765*53ee8cc1Swenshuai.xi else
1766*53ee8cc1Swenshuai.xi {
1767*53ee8cc1Swenshuai.xi switch(eFileEng)
1768*53ee8cc1Swenshuai.xi {
1769*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1770*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b4, TSP_FILEIN_BYTETIMER_ENABLE);
1771*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->TsFileIn_Timer, 0x0000);
1772*53ee8cc1Swenshuai.xi break;
1773*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1774*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_TIMER_EN1);
1775*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_03, 0x0000);
1776*53ee8cc1Swenshuai.xi break;
1777*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1778*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_TIMER_EN2);
1779*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_08, 0x0000);
1780*53ee8cc1Swenshuai.xi break;
1781*53ee8cc1Swenshuai.xi default:
1782*53ee8cc1Swenshuai.xi break;
1783*53ee8cc1Swenshuai.xi }
1784*53ee8cc1Swenshuai.xi }
1785*53ee8cc1Swenshuai.xi }
1786*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)1787*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_Status(FILEENG_SEQ eFileEng)
1788*53ee8cc1Swenshuai.xi {
1789*53ee8cc1Swenshuai.xi switch(eFileEng)
1790*53ee8cc1Swenshuai.xi {
1791*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1792*53ee8cc1Swenshuai.xi return !(REG16_R(&_RegCtrl->TsDma_Ctrl) & TSP_TSDMA_FILEIN_DONE);
1793*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1794*53ee8cc1Swenshuai.xi return !(REG16_R(&_RegCtrl2->CFG_34) & CFG_34_REG_TSP_FILEIN_CTRL_TSIF1_DONE);
1795*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1796*53ee8cc1Swenshuai.xi return !(REG16_R(&_RegCtrl2->CFG_39) & CFG_39_FILEIN_CTRL_TSIF2_DONE);
1797*53ee8cc1Swenshuai.xi default:
1798*53ee8cc1Swenshuai.xi return 0;
1799*53ee8cc1Swenshuai.xi }
1800*53ee8cc1Swenshuai.xi }
1801*53ee8cc1Swenshuai.xi
1802*53ee8cc1Swenshuai.xi // Only used by [HW test code]
1803*53ee8cc1Swenshuai.xi /*
1804*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_Filein_Done_Status(FILEENG_SEQ eFileEng)
1805*53ee8cc1Swenshuai.xi {
1806*53ee8cc1Swenshuai.xi return !HAL_TSP_Filein_Status(eFileEng);
1807*53ee8cc1Swenshuai.xi }
1808*53ee8cc1Swenshuai.xi */
1809*53ee8cc1Swenshuai.xi
1810*53ee8cc1Swenshuai.xi //To do : only tsif0 has pause functionality in Kaiser
HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)1811*53ee8cc1Swenshuai.xi TSP_HAL_FileState HAL_TSP_Filein_GetState(FILEENG_SEQ eFileEng)
1812*53ee8cc1Swenshuai.xi {
1813*53ee8cc1Swenshuai.xi TSP_HAL_FileState state = E_TSP_HAL_FILE_STATE_INVALID;
1814*53ee8cc1Swenshuai.xi MS_U32 u32Status = HAL_TSP_Filein_Status(eFileEng);
1815*53ee8cc1Swenshuai.xi
1816*53ee8cc1Swenshuai.xi // @FIXME in kaiser u01 only tsif0 file eng has pause function
1817*53ee8cc1Swenshuai.xi switch (eFileEng)
1818*53ee8cc1Swenshuai.xi {
1819*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1820*53ee8cc1Swenshuai.xi if (REG16_R(&_RegCtrl->TSP_Ctrl1) & TSP_CTRL1_FILEIN_PAUSE )
1821*53ee8cc1Swenshuai.xi {
1822*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_PAUSE;
1823*53ee8cc1Swenshuai.xi }
1824*53ee8cc1Swenshuai.xi else if (u32Status)
1825*53ee8cc1Swenshuai.xi {
1826*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_BUSY;
1827*53ee8cc1Swenshuai.xi }
1828*53ee8cc1Swenshuai.xi else
1829*53ee8cc1Swenshuai.xi {
1830*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_IDLE;
1831*53ee8cc1Swenshuai.xi }
1832*53ee8cc1Swenshuai.xi break;
1833*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1834*53ee8cc1Swenshuai.xi if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF1_FILE_PAUSE)
1835*53ee8cc1Swenshuai.xi {
1836*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_PAUSE;
1837*53ee8cc1Swenshuai.xi }
1838*53ee8cc1Swenshuai.xi else if (u32Status)
1839*53ee8cc1Swenshuai.xi {
1840*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_BUSY;
1841*53ee8cc1Swenshuai.xi }
1842*53ee8cc1Swenshuai.xi else
1843*53ee8cc1Swenshuai.xi {
1844*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_IDLE;
1845*53ee8cc1Swenshuai.xi }
1846*53ee8cc1Swenshuai.xi break;
1847*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1848*53ee8cc1Swenshuai.xi if (REG16_R(&_RegCtrl3->CFG3_21) & CFG3_21_TSIF2_FILE_PAUSE)
1849*53ee8cc1Swenshuai.xi {
1850*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_PAUSE;
1851*53ee8cc1Swenshuai.xi }
1852*53ee8cc1Swenshuai.xi else if (u32Status)
1853*53ee8cc1Swenshuai.xi {
1854*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_BUSY;
1855*53ee8cc1Swenshuai.xi }
1856*53ee8cc1Swenshuai.xi else
1857*53ee8cc1Swenshuai.xi {
1858*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_IDLE;
1859*53ee8cc1Swenshuai.xi }
1860*53ee8cc1Swenshuai.xi break;
1861*53ee8cc1Swenshuai.xi default:
1862*53ee8cc1Swenshuai.xi state = E_TSP_HAL_FILE_STATE_INVALID;
1863*53ee8cc1Swenshuai.xi break;
1864*53ee8cc1Swenshuai.xi }
1865*53ee8cc1Swenshuai.xi return state;
1866*53ee8cc1Swenshuai.xi }
1867*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)1868*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_PacketMode(FILEENG_SEQ eFileEng,MS_BOOL bSet)
1869*53ee8cc1Swenshuai.xi {
1870*53ee8cc1Swenshuai.xi if(bSet)
1871*53ee8cc1Swenshuai.xi {
1872*53ee8cc1Swenshuai.xi switch(eFileEng)
1873*53ee8cc1Swenshuai.xi {
1874*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1875*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
1876*53ee8cc1Swenshuai.xi break;
1877*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1878*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
1879*53ee8cc1Swenshuai.xi break;
1880*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1881*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
1882*53ee8cc1Swenshuai.xi break;
1883*53ee8cc1Swenshuai.xi default:
1884*53ee8cc1Swenshuai.xi break;
1885*53ee8cc1Swenshuai.xi }
1886*53ee8cc1Swenshuai.xi }
1887*53ee8cc1Swenshuai.xi else
1888*53ee8cc1Swenshuai.xi {
1889*53ee8cc1Swenshuai.xi switch(eFileEng)
1890*53ee8cc1Swenshuai.xi {
1891*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1892*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C, TSP_FILEIN192_EN);
1893*53ee8cc1Swenshuai.xi break;
1894*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1895*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_EN1);
1896*53ee8cc1Swenshuai.xi break;
1897*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1898*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_EN2);
1899*53ee8cc1Swenshuai.xi break;
1900*53ee8cc1Swenshuai.xi default:
1901*53ee8cc1Swenshuai.xi break;
1902*53ee8cc1Swenshuai.xi }
1903*53ee8cc1Swenshuai.xi }
1904*53ee8cc1Swenshuai.xi
1905*53ee8cc1Swenshuai.xi }
1906*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng,MS_BOOL bEn)1907*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_BlockTimeStamp(FILEENG_SEQ eFileEng, MS_BOOL bEn)
1908*53ee8cc1Swenshuai.xi {
1909*53ee8cc1Swenshuai.xi if(bEn)
1910*53ee8cc1Swenshuai.xi {
1911*53ee8cc1Swenshuai.xi switch(eFileEng)
1912*53ee8cc1Swenshuai.xi {
1913*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1914*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
1915*53ee8cc1Swenshuai.xi break;
1916*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1917*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
1918*53ee8cc1Swenshuai.xi break;
1919*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1920*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
1921*53ee8cc1Swenshuai.xi break;
1922*53ee8cc1Swenshuai.xi default:
1923*53ee8cc1Swenshuai.xi break;
1924*53ee8cc1Swenshuai.xi }
1925*53ee8cc1Swenshuai.xi }
1926*53ee8cc1Swenshuai.xi else
1927*53ee8cc1Swenshuai.xi {
1928*53ee8cc1Swenshuai.xi switch(eFileEng)
1929*53ee8cc1Swenshuai.xi {
1930*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1931*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PktChkSizeFilein, TSP_PKT192_BLK_DIS_FIN);
1932*53ee8cc1Swenshuai.xi break;
1933*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1934*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_01, CFG_01_PKT192_BLK_DISABLE1);
1935*53ee8cc1Swenshuai.xi break;
1936*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1937*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_06, CFG_06_TSP_PKT192_BLK_DISABLE2);
1938*53ee8cc1Swenshuai.xi break;
1939*53ee8cc1Swenshuai.xi break;
1940*53ee8cc1Swenshuai.xi default:
1941*53ee8cc1Swenshuai.xi break;
1942*53ee8cc1Swenshuai.xi }
1943*53ee8cc1Swenshuai.xi }
1944*53ee8cc1Swenshuai.xi }
1945*53ee8cc1Swenshuai.xi
_HAL_TSP_FILEIN_ResetPktTimeStamp(FILEENG_SEQ eFileEng,MS_U32 u32InitTimeStamp)1946*53ee8cc1Swenshuai.xi static void _HAL_TSP_FILEIN_ResetPktTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32InitTimeStamp)
1947*53ee8cc1Swenshuai.xi {
1948*53ee8cc1Swenshuai.xi switch(eFileEng)
1949*53ee8cc1Swenshuai.xi {
1950*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1951*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
1952*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_50_51, u32InitTimeStamp);
1953*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_0);
1954*53ee8cc1Swenshuai.xi break;
1955*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1956*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
1957*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_52_53, u32InitTimeStamp);
1958*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_1);
1959*53ee8cc1Swenshuai.xi break;
1960*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1961*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
1962*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_54_55, u32InitTimeStamp);
1963*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_17, CFG3_17_INIT_TIMESTAMP_TSIF_2);
1964*53ee8cc1Swenshuai.xi break;
1965*53ee8cc1Swenshuai.xi default:
1966*53ee8cc1Swenshuai.xi break;
1967*53ee8cc1Swenshuai.xi }
1968*53ee8cc1Swenshuai.xi }
1969*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng,MS_U32 u32Stamp)1970*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStamp(FILEENG_SEQ eFileEng, MS_U32 u32Stamp)
1971*53ee8cc1Swenshuai.xi {
1972*53ee8cc1Swenshuai.xi switch(eFileEng)
1973*53ee8cc1Swenshuai.xi {
1974*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
1975*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
1976*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->LPcr2, u32Stamp);
1977*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_WLD);
1978*53ee8cc1Swenshuai.xi break;
1979*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
1980*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
1981*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_50_51, u32Stamp);
1982*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_01, CFG_01_LPCR2_WLD1);
1983*53ee8cc1Swenshuai.xi break;
1984*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
1985*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
1986*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_52_53, u32Stamp);
1987*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_06, CFG_06_LPCR2_WLD2);
1988*53ee8cc1Swenshuai.xi break;
1989*53ee8cc1Swenshuai.xi default:
1990*53ee8cc1Swenshuai.xi break;
1991*53ee8cc1Swenshuai.xi }
1992*53ee8cc1Swenshuai.xi
1993*53ee8cc1Swenshuai.xi _HAL_TSP_FILEIN_ResetPktTimeStamp(eFileEng, 0);
1994*53ee8cc1Swenshuai.xi }
1995*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng,TSP_HAL_TimeStamp_Clk eTimeStampClk)1996*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_SetTimeStampClk(FILEENG_SEQ eFileEng, TSP_HAL_TimeStamp_Clk eTimeStampClk)
1997*53ee8cc1Swenshuai.xi {
1998*53ee8cc1Swenshuai.xi switch(eFileEng)
1999*53ee8cc1Swenshuai.xi {
2000*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2001*53ee8cc1Swenshuai.xi if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2002*53ee8cc1Swenshuai.xi {
2003*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
2004*53ee8cc1Swenshuai.xi }
2005*53ee8cc1Swenshuai.xi else
2006*53ee8cc1Swenshuai.xi {
2007*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF0_C27M);
2008*53ee8cc1Swenshuai.xi }
2009*53ee8cc1Swenshuai.xi break;
2010*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2011*53ee8cc1Swenshuai.xi if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2012*53ee8cc1Swenshuai.xi {
2013*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
2014*53ee8cc1Swenshuai.xi }
2015*53ee8cc1Swenshuai.xi else
2016*53ee8cc1Swenshuai.xi {
2017*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF1_C27M);
2018*53ee8cc1Swenshuai.xi }
2019*53ee8cc1Swenshuai.xi break;
2020*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2021*53ee8cc1Swenshuai.xi if(eTimeStampClk==E_TSP_HAL_TIMESTAMP_CLK_27M)
2022*53ee8cc1Swenshuai.xi {
2023*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
2024*53ee8cc1Swenshuai.xi }
2025*53ee8cc1Swenshuai.xi else
2026*53ee8cc1Swenshuai.xi {
2027*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_0F, CFG3_0F_TSIF2_C27M);
2028*53ee8cc1Swenshuai.xi }
2029*53ee8cc1Swenshuai.xi break;
2030*53ee8cc1Swenshuai.xi default:
2031*53ee8cc1Swenshuai.xi break;
2032*53ee8cc1Swenshuai.xi }
2033*53ee8cc1Swenshuai.xi }
2034*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)2035*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_GetTimeStamp(FILEENG_SEQ eFileEng)
2036*53ee8cc1Swenshuai.xi {
2037*53ee8cc1Swenshuai.xi MS_U32 u32Stamp = 0;
2038*53ee8cc1Swenshuai.xi switch(eFileEng)
2039*53ee8cc1Swenshuai.xi {
2040*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2041*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
2042*53ee8cc1Swenshuai.xi u32Stamp = REG32_R(&_RegCtrl->LPcr2);
2043*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_LPCR2_RLD);
2044*53ee8cc1Swenshuai.xi break;
2045*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2046*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
2047*53ee8cc1Swenshuai.xi u32Stamp = REG32_R(&_RegCtrl2->CFG_50_51);
2048*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_00, CFG_00_LPCR2_LOAD_TSIF1);
2049*53ee8cc1Swenshuai.xi break;
2050*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2051*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
2052*53ee8cc1Swenshuai.xi u32Stamp = REG32_R(&_RegCtrl2->CFG_52_53);
2053*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl2->CFG_05, CFG_05_LPCR2_LOAD_TSIF2);
2054*53ee8cc1Swenshuai.xi break;
2055*53ee8cc1Swenshuai.xi default:
2056*53ee8cc1Swenshuai.xi u32Stamp = 0;
2057*53ee8cc1Swenshuai.xi break;
2058*53ee8cc1Swenshuai.xi }
2059*53ee8cc1Swenshuai.xi return u32Stamp;
2060*53ee8cc1Swenshuai.xi }
2061*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)2062*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Filein_PktTimeStamp(FILEENG_SEQ eFileEng)
2063*53ee8cc1Swenshuai.xi {
2064*53ee8cc1Swenshuai.xi switch(eFileEng)
2065*53ee8cc1Swenshuai.xi {
2066*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2067*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl->TimeStamp_FileIn);
2068*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2069*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl2->CFG_42_43);
2070*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2071*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl2->CFG_44_45);
2072*53ee8cc1Swenshuai.xi default:
2073*53ee8cc1Swenshuai.xi break;
2074*53ee8cc1Swenshuai.xi }
2075*53ee8cc1Swenshuai.xi return 0;
2076*53ee8cc1Swenshuai.xi }
2077*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng,MS_PHY * pu32Addr)2078*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_GetCurAddr(FILEENG_SEQ eFileEng, MS_PHY *pu32Addr)
2079*53ee8cc1Swenshuai.xi {
2080*53ee8cc1Swenshuai.xi switch(eFileEng)
2081*53ee8cc1Swenshuai.xi {
2082*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2083*53ee8cc1Swenshuai.xi *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl->TsFileIn_RPtr) & TSP_FILE_RPTR_MASK);
2084*53ee8cc1Swenshuai.xi break;
2085*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2086*53ee8cc1Swenshuai.xi *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6A_6B) & CFG_6A_6B_TSP2MI_RADDR_S_TSIF1);
2087*53ee8cc1Swenshuai.xi break;
2088*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2089*53ee8cc1Swenshuai.xi *pu32Addr = (MS_PHY)(REG32_R(&_RegCtrl2->CFG_6C_6D) & CFG_6C_6D_TSP2MI_RADDR_S_TSIF2);
2090*53ee8cc1Swenshuai.xi break;
2091*53ee8cc1Swenshuai.xi default:
2092*53ee8cc1Swenshuai.xi break;
2093*53ee8cc1Swenshuai.xi }
2094*53ee8cc1Swenshuai.xi
2095*53ee8cc1Swenshuai.xi }
2096*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng,MS_BOOL bEnable)2097*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_WbFsmRst(FILEENG_SEQ eFileEng, MS_BOOL bEnable)
2098*53ee8cc1Swenshuai.xi {
2099*53ee8cc1Swenshuai.xi if(bEnable)
2100*53ee8cc1Swenshuai.xi {
2101*53ee8cc1Swenshuai.xi switch(eFileEng)
2102*53ee8cc1Swenshuai.xi {
2103*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2104*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_REST);
2105*53ee8cc1Swenshuai.xi break;
2106*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2107*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
2108*53ee8cc1Swenshuai.xi break;
2109*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2110*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
2111*53ee8cc1Swenshuai.xi break;
2112*53ee8cc1Swenshuai.xi default:
2113*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));
2114*53ee8cc1Swenshuai.xi break;
2115*53ee8cc1Swenshuai.xi }
2116*53ee8cc1Swenshuai.xi }
2117*53ee8cc1Swenshuai.xi else
2118*53ee8cc1Swenshuai.xi {
2119*53ee8cc1Swenshuai.xi switch(eFileEng)
2120*53ee8cc1Swenshuai.xi {
2121*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2122*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_53, CFG3_53_WB_FSM_REST);
2123*53ee8cc1Swenshuai.xi break;
2124*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2125*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF1);
2126*53ee8cc1Swenshuai.xi break;
2127*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2128*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl6->CFG6_2B, TSP_RESET_WB_DMA_FSM_TSIF2);
2129*53ee8cc1Swenshuai.xi break;
2130*53ee8cc1Swenshuai.xi default:
2131*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));
2132*53ee8cc1Swenshuai.xi break;
2133*53ee8cc1Swenshuai.xi }
2134*53ee8cc1Swenshuai.xi }
2135*53ee8cc1Swenshuai.xi }
2136*53ee8cc1Swenshuai.xi
2137*53ee8cc1Swenshuai.xi
HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng,MS_BOOL bEnable,MS_U32 u32Key)2138*53ee8cc1Swenshuai.xi void HAL_TSP_Filein_MOBF_Enable(FILEENG_SEQ eFileEng, MS_BOOL bEnable, MS_U32 u32Key)
2139*53ee8cc1Swenshuai.xi {
2140*53ee8cc1Swenshuai.xi if(bEnable)
2141*53ee8cc1Swenshuai.xi {
2142*53ee8cc1Swenshuai.xi switch(eFileEng)
2143*53ee8cc1Swenshuai.xi {
2144*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2145*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Mobf_Filein_Idx, (u32Key & TSP_MOBF_FILEIN_MASK));
2146*53ee8cc1Swenshuai.xi break;
2147*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2148*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_75, (u32Key & CFG_75_FI_MOBF_INDEC_TSIF1_MASK));
2149*53ee8cc1Swenshuai.xi break;
2150*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2151*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_76, (u32Key & CFG_76_FI_MOBF_INDEC_TSIF2_MASK));
2152*53ee8cc1Swenshuai.xi break;
2153*53ee8cc1Swenshuai.xi default:
2154*53ee8cc1Swenshuai.xi break;
2155*53ee8cc1Swenshuai.xi }
2156*53ee8cc1Swenshuai.xi }
2157*53ee8cc1Swenshuai.xi else
2158*53ee8cc1Swenshuai.xi {
2159*53ee8cc1Swenshuai.xi switch(eFileEng)
2160*53ee8cc1Swenshuai.xi {
2161*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
2162*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Mobf_Filein_Idx, 0);
2163*53ee8cc1Swenshuai.xi break;
2164*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
2165*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_75, 0);
2166*53ee8cc1Swenshuai.xi break;
2167*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
2168*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl2->CFG_76, 0);
2169*53ee8cc1Swenshuai.xi break;
2170*53ee8cc1Swenshuai.xi default:
2171*53ee8cc1Swenshuai.xi break;
2172*53ee8cc1Swenshuai.xi }
2173*53ee8cc1Swenshuai.xi }
2174*53ee8cc1Swenshuai.xi }
2175*53ee8cc1Swenshuai.xi
HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)2176*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FltSrc2PktDmx_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
2177*53ee8cc1Swenshuai.xi {
2178*53ee8cc1Swenshuai.xi switch (ePidFltSrc)
2179*53ee8cc1Swenshuai.xi {
2180*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_LIVE0:
2181*53ee8cc1Swenshuai.xi return TSP_PIDFLT_TSIF0;
2182*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_LIVE1:
2183*53ee8cc1Swenshuai.xi return TSP_PIDFLT_TSIF2;
2184*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_LIVE2:
2185*53ee8cc1Swenshuai.xi return TSP_PIDFLT_TSIF1;
2186*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_FILE0:
2187*53ee8cc1Swenshuai.xi return TSP_PIDFLT_TSIF1;
2188*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_FILE1:
2189*53ee8cc1Swenshuai.xi return TSP_PIDFLT_TSIF2;
2190*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_FILE2:
2191*53ee8cc1Swenshuai.xi return TSP_PIDFLT_TSIF0;
2192*53ee8cc1Swenshuai.xi default:
2193*53ee8cc1Swenshuai.xi printf("[TSP_ERR][%s][%d] Wrong filter source!!!\n",__FUNCTION__, __LINE__);
2194*53ee8cc1Swenshuai.xi break;
2195*53ee8cc1Swenshuai.xi }
2196*53ee8cc1Swenshuai.xi
2197*53ee8cc1Swenshuai.xi return 0;
2198*53ee8cc1Swenshuai.xi }
2199*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId,MS_U32 u32FltIn)2200*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltIn(MS_U32 fltId, MS_U32 u32FltIn)
2201*53ee8cc1Swenshuai.xi {
2202*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
2203*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_IN_MASK) | ((u32FltIn << TSP_PIDFLT_TSIF_SHFT) & TSP_PIDFLT_IN_MASK));
2204*53ee8cc1Swenshuai.xi }
2205*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId,MS_U32 u32FltOut)2206*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltOut(MS_U32 fltId, MS_U32 u32FltOut)
2207*53ee8cc1Swenshuai.xi {
2208*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
2209*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_OUT_MASK)) | (u32FltOut & TSP_PIDFLT_OUT_MASK)));
2210*53ee8cc1Swenshuai.xi }
2211*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId,MS_U32 u32SrcID)2212*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcID(MS_U32 fltId, MS_U32 u32SrcID)
2213*53ee8cc1Swenshuai.xi {
2214*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
2215*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcID << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
2216*53ee8cc1Swenshuai.xi }
2217*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId,MS_U32 u32SecFltId)2218*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSecFlt(MS_U32 fltId, MS_U32 u32SecFltId)
2219*53ee8cc1Swenshuai.xi {
2220*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
2221*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_SECFLT_MASK) | ((u32SecFltId << TSP_PIDFLT_SECFLT_SHFT) & TSP_PIDFLT_SECFLT_MASK));
2222*53ee8cc1Swenshuai.xi }
2223*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId,MS_U32 u32PVREng,MS_BOOL bEn)2224*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPvrFlt(MS_U32 fltId, MS_U32 u32PVREng, MS_BOOL bEn)
2225*53ee8cc1Swenshuai.xi {
2226*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
2227*53ee8cc1Swenshuai.xi if(bEn)
2228*53ee8cc1Swenshuai.xi {
2229*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK) | (((1 << u32PVREng) << TSP_PIDFLT_PVRFLT_SHFT) & TSP_PIDFLT_PVRFLT_MASK));
2230*53ee8cc1Swenshuai.xi }
2231*53ee8cc1Swenshuai.xi else
2232*53ee8cc1Swenshuai.xi {
2233*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PVRFLT_MASK));
2234*53ee8cc1Swenshuai.xi }
2235*53ee8cc1Swenshuai.xi }
2236*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId,MS_U8 u8Enable)2237*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetFltRushPass(MS_U32 fltId, MS_U8 u8Enable)
2238*53ee8cc1Swenshuai.xi {
2239*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
2240*53ee8cc1Swenshuai.xi if(u8Enable)
2241*53ee8cc1Swenshuai.xi TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) | (TSP_PID_FLT_PKTPUSH_PASS));
2242*53ee8cc1Swenshuai.xi else
2243*53ee8cc1Swenshuai.xi TSP32_IdrW( pPidFlt, TSP32_IdrR(pPidFlt) & ~(TSP_PID_FLT_PKTPUSH_PASS));
2244*53ee8cc1Swenshuai.xi }
2245*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetPid(MS_U32 fltId,MS_U32 u32Pid)2246*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetPid(MS_U32 fltId, MS_U32 u32Pid)
2247*53ee8cc1Swenshuai.xi {
2248*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT0(fltId);
2249*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_PID_MASK) | ((u32Pid << TSP_PIDFLT_PID_SHFT) & TSP_PIDFLT_PID_MASK));
2250*53ee8cc1Swenshuai.xi }
2251*53ee8cc1Swenshuai.xi
2252*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2253*53ee8cc1Swenshuai.xi // For section filter part
2254*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2255*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)2256*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_BurstLen(MS_U32 burstMode)
2257*53ee8cc1Swenshuai.xi {
2258*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SEC_DMA_BURST_EN);
2259*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->Hw_Config4, TSP_HW_DMA_MODE_MASK, (burstMode << TSP_HW_DMA_MODE_SHIFT));
2260*53ee8cc1Swenshuai.xi }
2261*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_SetType(REG_SecFlt * pSecFlt,MS_U32 u32FltType)2262*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetType(REG_SecFlt *pSecFlt, MS_U32 u32FltType)
2263*53ee8cc1Swenshuai.xi {
2264*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_USER_MASK) | (u32FltType << TSP_SECFLT_USER_SHFT));
2265*53ee8cc1Swenshuai.xi }
2266*53ee8cc1Swenshuai.xi
2267*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_SetMode(REG_SecFlt * pSecFlt,MS_U32 u32SecFltMode)2268*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMode(REG_SecFlt *pSecFlt, MS_U32 u32SecFltMode)
2269*53ee8cc1Swenshuai.xi {
2270*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_MASK) | ((u32SecFltMode << TSP_SECFLT_MODE_SHFT) & TSP_SECFLT_MODE_MASK));
2271*53ee8cc1Swenshuai.xi }
2272*53ee8cc1Swenshuai.xi
2273*53ee8cc1Swenshuai.xi
2274*53ee8cc1Swenshuai.xi // match mask --> 0 will compare
HAL_TSP_SecFlt_SetMask(REG_SecFlt * pSecFlt,MS_U8 * pu8Mask)2275*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMask(REG_SecFlt *pSecFlt, MS_U8 *pu8Mask)
2276*53ee8cc1Swenshuai.xi {
2277*53ee8cc1Swenshuai.xi MS_U32 i,j;
2278*53ee8cc1Swenshuai.xi MS_U32 u32Temp;
2279*53ee8cc1Swenshuai.xi
2280*53ee8cc1Swenshuai.xi for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
2281*53ee8cc1Swenshuai.xi {
2282*53ee8cc1Swenshuai.xi j = (i<< 2);
2283*53ee8cc1Swenshuai.xi u32Temp = (pu8Mask[j]) | (pu8Mask[j+ 1] << 8 ) | (pu8Mask[j+ 2] << 16 )| (pu8Mask[j+ 3] << 24);
2284*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)&pSecFlt->Mask[i], u32Temp);
2285*53ee8cc1Swenshuai.xi }
2286*53ee8cc1Swenshuai.xi }
2287*53ee8cc1Swenshuai.xi
2288*53ee8cc1Swenshuai.xi
2289*53ee8cc1Swenshuai.xi // not match mask --> 1 will compare
HAL_TSP_SecFlt_SetNMask(REG_SecFlt * pSecFlt,MS_U8 * pu8NMask)2290*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetNMask(REG_SecFlt *pSecFlt, MS_U8 *pu8NMask)
2291*53ee8cc1Swenshuai.xi {
2292*53ee8cc1Swenshuai.xi MS_U32 i,j;
2293*53ee8cc1Swenshuai.xi MS_U32 u32Temp;
2294*53ee8cc1Swenshuai.xi
2295*53ee8cc1Swenshuai.xi for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
2296*53ee8cc1Swenshuai.xi {
2297*53ee8cc1Swenshuai.xi j = (i<< 2);
2298*53ee8cc1Swenshuai.xi u32Temp = (pu8NMask[j]) | (pu8NMask[j+ 1] << 8 ) | (pu8NMask[j+ 2] << 16 )| (pu8NMask[j+ 3] << 24);
2299*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)&pSecFlt->NMask[i], u32Temp);
2300*53ee8cc1Swenshuai.xi }
2301*53ee8cc1Swenshuai.xi }
2302*53ee8cc1Swenshuai.xi
2303*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_SetMatch(REG_SecFlt * pSecFlt,MS_U8 * pu8Match)2304*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetMatch(REG_SecFlt *pSecFlt, MS_U8 *pu8Match)
2305*53ee8cc1Swenshuai.xi {
2306*53ee8cc1Swenshuai.xi MS_U32 i,j;
2307*53ee8cc1Swenshuai.xi MS_U32 u32Temp;
2308*53ee8cc1Swenshuai.xi
2309*53ee8cc1Swenshuai.xi for (i = 0; i < (TSP_FILTER_DEPTH/sizeof(MS_U32)); i++)
2310*53ee8cc1Swenshuai.xi {
2311*53ee8cc1Swenshuai.xi j = (i<< 2);
2312*53ee8cc1Swenshuai.xi u32Temp = (pu8Match[j]) | (pu8Match[j+ 1] << 8 ) | (pu8Match[j+ 2] << 16 )| (pu8Match[j+ 3] << 24);
2313*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)&pSecFlt->Match[i], u32Temp);
2314*53ee8cc1Swenshuai.xi }
2315*53ee8cc1Swenshuai.xi }
2316*53ee8cc1Swenshuai.xi
2317*53ee8cc1Swenshuai.xi
2318*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)2319*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SelSecBuf(REG_SecFlt *pSecFlt, MS_U16 u16BufId)
2320*53ee8cc1Swenshuai.xi {
2321*53ee8cc1Swenshuai.xi TSP32_IdrW( &pSecFlt->Ctrl, (TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_SECBUF_MASK)
2322*53ee8cc1Swenshuai.xi | ((u16BufId << TSP_SECFLT_SECBUF_SHFT) & TSP_SECFLT_SECBUF_MASK) );
2323*53ee8cc1Swenshuai.xi }
2324*53ee8cc1Swenshuai.xi
2325*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt * pSecFlt)2326*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_SecFlt_GetSecBuf(REG_SecFlt *pSecFlt)
2327*53ee8cc1Swenshuai.xi {
2328*53ee8cc1Swenshuai.xi return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_SECBUF_MASK) >> TSP_SECFLT_SECBUF_SHFT);
2329*53ee8cc1Swenshuai.xi }
2330*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt * pPidFlt)2331*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetFltOutput(REG_PidFlt *pPidFlt)
2332*53ee8cc1Swenshuai.xi {
2333*53ee8cc1Swenshuai.xi return (TSP32_IdrR(pPidFlt) & TSP_PIDFLT_OUT_MASK);
2334*53ee8cc1Swenshuai.xi }
2335*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)2336*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_DropEnable(MS_BOOL bSet)
2337*53ee8cc1Swenshuai.xi {
2338*53ee8cc1Swenshuai.xi // don't have to implement no reference
2339*53ee8cc1Swenshuai.xi }
2340*53ee8cc1Swenshuai.xi
2341*53ee8cc1Swenshuai.xi
2342*53ee8cc1Swenshuai.xi // @FIXME: Is it secflt or secbuf?
HAL_TSP_SecFlt_ResetState(REG_SecFlt * pSecFlt)2343*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetState(REG_SecFlt* pSecFlt)
2344*53ee8cc1Swenshuai.xi {
2345*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~(TSP_SECFLT_STATE_MASK));
2346*53ee8cc1Swenshuai.xi }
2347*53ee8cc1Swenshuai.xi
2348*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt * pSecFlt)2349*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ClrCtrl(REG_SecFlt *pSecFlt)
2350*53ee8cc1Swenshuai.xi {
2351*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, 0);
2352*53ee8cc1Swenshuai.xi }
2353*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_GetState(REG_SecFlt * pSecFlt)2354*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetState(REG_SecFlt *pSecFlt)
2355*53ee8cc1Swenshuai.xi {
2356*53ee8cc1Swenshuai.xi return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_STATE_MASK) >> TSP_SECFLT_STATE_SHFT);
2357*53ee8cc1Swenshuai.xi }
2358*53ee8cc1Swenshuai.xi
2359*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_GetMode(REG_SecFlt * pSecFlt)2360*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecFlt_GetMode(REG_SecFlt *pSecFlt)
2361*53ee8cc1Swenshuai.xi {
2362*53ee8cc1Swenshuai.xi return ((TSP32_IdrR(&pSecFlt->Ctrl) & TSP_SECFLT_MODE_MASK) >> TSP_SECFLT_MODE_SHFT);
2363*53ee8cc1Swenshuai.xi }
2364*53ee8cc1Swenshuai.xi
2365*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_PcrReset(REG_SecFlt * pSecFlt)2366*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_PcrReset(REG_SecFlt *pSecFlt)
2367*53ee8cc1Swenshuai.xi {
2368*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_PCRRST);
2369*53ee8cc1Swenshuai.xi }
2370*53ee8cc1Swenshuai.xi
2371*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_TryAlloc(REG_SecFlt * pSecFlt,MS_U16 u16TSPId)2372*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecFlt_TryAlloc(REG_SecFlt* pSecFlt, MS_U16 u16TSPId)
2373*53ee8cc1Swenshuai.xi {
2374*53ee8cc1Swenshuai.xi MS_U32 reg;
2375*53ee8cc1Swenshuai.xi
2376*53ee8cc1Swenshuai.xi //_TSP_HW_Lock();
2377*53ee8cc1Swenshuai.xi
2378*53ee8cc1Swenshuai.xi // rmn counter doesn't need 32bit (check 13818) so we use some of it to store owner and alloc info
2379*53ee8cc1Swenshuai.xi reg = TSP32_IdrR(&pSecFlt->RmnCnt) & (TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
2380*53ee8cc1Swenshuai.xi if (reg & TSP_SECFLT_ALLOC_MASK)
2381*53ee8cc1Swenshuai.xi {
2382*53ee8cc1Swenshuai.xi //_TSP_HW_Unlock();
2383*53ee8cc1Swenshuai.xi return FALSE;
2384*53ee8cc1Swenshuai.xi }
2385*53ee8cc1Swenshuai.xi reg |= TSP_SECFLT_ALLOC_MASK | ((u16TSPId<<TSP_SECFLT_OWNER_SHFT) & TSP_SECFLT_OWNER_MASK);
2386*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->RmnCnt, reg);
2387*53ee8cc1Swenshuai.xi
2388*53ee8cc1Swenshuai.xi //_TSP_HW_Unlock();
2389*53ee8cc1Swenshuai.xi return TRUE;
2390*53ee8cc1Swenshuai.xi }
2391*53ee8cc1Swenshuai.xi
2392*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt * pSecFlt,MS_BOOL bSet)2393*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_SetAutoCRCChk(REG_SecFlt *pSecFlt, MS_BOOL bSet)
2394*53ee8cc1Swenshuai.xi {
2395*53ee8cc1Swenshuai.xi if(bSet)
2396*53ee8cc1Swenshuai.xi {
2397*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) | TSP_SECFLT_MODE_AUTO_CRCCHK);
2398*53ee8cc1Swenshuai.xi }
2399*53ee8cc1Swenshuai.xi else
2400*53ee8cc1Swenshuai.xi {
2401*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->Ctrl, TSP32_IdrR(&pSecFlt->Ctrl) & ~TSP_SECFLT_MODE_AUTO_CRCCHK);
2402*53ee8cc1Swenshuai.xi }
2403*53ee8cc1Swenshuai.xi }
2404*53ee8cc1Swenshuai.xi
2405*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_Free(REG_SecFlt * pSecFlt)2406*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_Free(REG_SecFlt* pSecFlt)
2407*53ee8cc1Swenshuai.xi {
2408*53ee8cc1Swenshuai.xi MS_U32 reg;
2409*53ee8cc1Swenshuai.xi
2410*53ee8cc1Swenshuai.xi reg = TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECFLT_OWNER_MASK | TSP_SECFLT_ALLOC_MASK);
2411*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->RmnCnt, reg);
2412*53ee8cc1Swenshuai.xi }
2413*53ee8cc1Swenshuai.xi
HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt * pSecFlt)2414*53ee8cc1Swenshuai.xi void HAL_TSP_SecFlt_ResetRmnCnt(REG_SecFlt* pSecFlt)
2415*53ee8cc1Swenshuai.xi {
2416*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecFlt->RmnCnt, TSP32_IdrR(&pSecFlt->RmnCnt) & ~(TSP_SECBUF_RMNCNT_MASK));
2417*53ee8cc1Swenshuai.xi }
2418*53ee8cc1Swenshuai.xi
2419*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2420*53ee8cc1Swenshuai.xi // For section buffer part
2421*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_TSP_SecBuf_SetBuf(REG_SecBuf * pSecBuf,MS_U32 u32StartAddr,MS_U32 u32BufSize)2422*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetBuf(REG_SecBuf *pSecBuf, MS_U32 u32StartAddr, MS_U32 u32BufSize)
2423*53ee8cc1Swenshuai.xi {
2424*53ee8cc1Swenshuai.xi MS_U32 owner;
2425*53ee8cc1Swenshuai.xi // To avoid SW read hidden HW byte enable information.
2426*53ee8cc1Swenshuai.xi owner = TSP32_IdrR(&pSecBuf->Start); // @FIXME local variable but not used?
2427*53ee8cc1Swenshuai.xi
2428*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->Start, u32StartAddr);
2429*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->End, u32StartAddr + u32BufSize);
2430*53ee8cc1Swenshuai.xi }
2431*53ee8cc1Swenshuai.xi
2432*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_SetRead(REG_SecBuf * pSecBuf,MS_U32 u32ReadAddr)2433*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_SetRead(REG_SecBuf *pSecBuf, MS_U32 u32ReadAddr)
2434*53ee8cc1Swenshuai.xi {
2435*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->Read, u32ReadAddr);
2436*53ee8cc1Swenshuai.xi }
2437*53ee8cc1Swenshuai.xi
2438*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_GetStart(REG_SecBuf * pSecBuf)2439*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetStart(REG_SecBuf *pSecBuf)
2440*53ee8cc1Swenshuai.xi {
2441*53ee8cc1Swenshuai.xi return TSP32_IdrR(&pSecBuf->Start);
2442*53ee8cc1Swenshuai.xi }
2443*53ee8cc1Swenshuai.xi
2444*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_GetEnd(REG_SecBuf * pSecBuf)2445*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetEnd(REG_SecBuf *pSecBuf)
2446*53ee8cc1Swenshuai.xi {
2447*53ee8cc1Swenshuai.xi return TSP32_IdrR(&pSecBuf->End);
2448*53ee8cc1Swenshuai.xi }
2449*53ee8cc1Swenshuai.xi
2450*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_GetBufCur(REG_SecBuf * pSecBuf)2451*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetBufCur(REG_SecBuf *pSecBuf)
2452*53ee8cc1Swenshuai.xi {
2453*53ee8cc1Swenshuai.xi //BufCur is control by firmware
2454*53ee8cc1Swenshuai.xi //we use Cur pointer to receive the newest data
2455*53ee8cc1Swenshuai.xi //and use write pointer to guarantee that the data between
2456*53ee8cc1Swenshuai.xi //read and write pointer is correct, so that user won't get
2457*53ee8cc1Swenshuai.xi //unverified data.
2458*53ee8cc1Swenshuai.xi return TSP32_IdrR(&pSecBuf->Cur);
2459*53ee8cc1Swenshuai.xi }
2460*53ee8cc1Swenshuai.xi
2461*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_Reset(REG_SecBuf * pSecBuf)2462*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Reset(REG_SecBuf *pSecBuf)
2463*53ee8cc1Swenshuai.xi {
2464*53ee8cc1Swenshuai.xi MS_U32 start;
2465*53ee8cc1Swenshuai.xi
2466*53ee8cc1Swenshuai.xi start = TSP32_IdrR(&pSecBuf->Start);
2467*53ee8cc1Swenshuai.xi
2468*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->Cur, start);
2469*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->Read, start);
2470*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->Write, start);
2471*53ee8cc1Swenshuai.xi
2472*53ee8cc1Swenshuai.xi start = ( (MS_VIRT)pSecBuf - (MS_VIRT)REG_SECBUF_BASE ) / sizeof(REG_SecBuf) ;
2473*53ee8cc1Swenshuai.xi HAL_TSP_HCMD_BufRst(start); // @FIXME seems we don't need to do this
2474*53ee8cc1Swenshuai.xi }
2475*53ee8cc1Swenshuai.xi
2476*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_GetRead(REG_SecBuf * pSecBuf)2477*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetRead(REG_SecBuf *pSecBuf)
2478*53ee8cc1Swenshuai.xi {
2479*53ee8cc1Swenshuai.xi return TSP32_IdrR((TSP32*)&pSecBuf->Read);
2480*53ee8cc1Swenshuai.xi }
2481*53ee8cc1Swenshuai.xi
2482*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_GetWrite(REG_SecBuf * pSecBuf)2483*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_SecBuf_GetWrite(REG_SecBuf *pSecBuf)
2484*53ee8cc1Swenshuai.xi {
2485*53ee8cc1Swenshuai.xi return TSP32_IdrR((TSP32*)&pSecBuf->Write);
2486*53ee8cc1Swenshuai.xi }
2487*53ee8cc1Swenshuai.xi
2488*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_TryAlloc(REG_SecBuf * pSecBuf,MS_U16 u16TSPId)2489*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SecBuf_TryAlloc(REG_SecBuf *pSecBuf, MS_U16 u16TSPId)
2490*53ee8cc1Swenshuai.xi {
2491*53ee8cc1Swenshuai.xi // @TODO make sure the owner and alloc info is necessary or not.
2492*53ee8cc1Swenshuai.xi MS_U32 reg;
2493*53ee8cc1Swenshuai.xi
2494*53ee8cc1Swenshuai.xi //_TSP_HW_Lock();
2495*53ee8cc1Swenshuai.xi
2496*53ee8cc1Swenshuai.xi reg = TSP32_IdrR(&pSecBuf->Start) & (TSP_SECBUF_OWNER_MASK | TSP_SECBUF_ALLOC_MASK);
2497*53ee8cc1Swenshuai.xi //if (reg & TSP_SECBUF_ALLOC_MASK)
2498*53ee8cc1Swenshuai.xi //{
2499*53ee8cc1Swenshuai.xi // //_TSP_HW_Unlock();
2500*53ee8cc1Swenshuai.xi // return FALSE;
2501*53ee8cc1Swenshuai.xi //}
2502*53ee8cc1Swenshuai.xi reg |= TSP_SECBUF_ALLOC_MASK | ((u16TSPId<<TSP_SECBUF_OWNER_SHFT) & TSP_SECBUF_OWNER_MASK);
2503*53ee8cc1Swenshuai.xi //TSP32_IdrW(&pSecBuf->Start, reg);
2504*53ee8cc1Swenshuai.xi
2505*53ee8cc1Swenshuai.xi //_TSP_HW_Unlock();
2506*53ee8cc1Swenshuai.xi return TRUE;
2507*53ee8cc1Swenshuai.xi }
2508*53ee8cc1Swenshuai.xi
2509*53ee8cc1Swenshuai.xi
HAL_TSP_SecBuf_Free(REG_SecBuf * pSecBuf)2510*53ee8cc1Swenshuai.xi void HAL_TSP_SecBuf_Free(REG_SecBuf *pSecBuf)
2511*53ee8cc1Swenshuai.xi {
2512*53ee8cc1Swenshuai.xi // @TODO ref to HAL_TSP_SecBuf_TryAlloc
2513*53ee8cc1Swenshuai.xi TSP32_IdrW(&pSecBuf->Start, 0x0);
2514*53ee8cc1Swenshuai.xi }
2515*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_GetPid(REG_PidFlt * pPidFlt)2516*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFlt_GetPid(REG_PidFlt* pPidFlt)
2517*53ee8cc1Swenshuai.xi {
2518*53ee8cc1Swenshuai.xi return ((TSP32_IdrR(pPidFlt) & TSP_PIDFLT_PID_MASK) >> TSP_PIDFLT_PID_SHFT);
2519*53ee8cc1Swenshuai.xi }
2520*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId,MS_BOOL bEnable)2521*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Enable(MS_U32 pcrFltId, MS_BOOL bEnable)
2522*53ee8cc1Swenshuai.xi {
2523*53ee8cc1Swenshuai.xi switch(pcrFltId)
2524*53ee8cc1Swenshuai.xi {
2525*53ee8cc1Swenshuai.xi case 0:
2526*53ee8cc1Swenshuai.xi if(bEnable)
2527*53ee8cc1Swenshuai.xi {
2528*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
2529*53ee8cc1Swenshuai.xi }
2530*53ee8cc1Swenshuai.xi else
2531*53ee8cc1Swenshuai.xi {
2532*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_EN);
2533*53ee8cc1Swenshuai.xi }
2534*53ee8cc1Swenshuai.xi break;
2535*53ee8cc1Swenshuai.xi case 1:
2536*53ee8cc1Swenshuai.xi if(bEnable)
2537*53ee8cc1Swenshuai.xi {
2538*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
2539*53ee8cc1Swenshuai.xi }
2540*53ee8cc1Swenshuai.xi else
2541*53ee8cc1Swenshuai.xi {
2542*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_EN);
2543*53ee8cc1Swenshuai.xi }
2544*53ee8cc1Swenshuai.xi break;
2545*53ee8cc1Swenshuai.xi default:
2546*53ee8cc1Swenshuai.xi break;
2547*53ee8cc1Swenshuai.xi }
2548*53ee8cc1Swenshuai.xi }
2549*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId,MS_U32 u32Pid)2550*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetPid(MS_U32 pcrFltId, MS_U32 u32Pid)
2551*53ee8cc1Swenshuai.xi {
2552*53ee8cc1Swenshuai.xi switch(pcrFltId)
2553*53ee8cc1Swenshuai.xi {
2554*53ee8cc1Swenshuai.xi case 0:
2555*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->PIDFLT_PCR0, TSP_PIDFLT_PCR0_PID_MASK, u32Pid);
2556*53ee8cc1Swenshuai.xi break;
2557*53ee8cc1Swenshuai.xi case 1:
2558*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->PIDFLT_PCR1, TSP_PIDFLT_PCR1_PID_MASK, u32Pid);
2559*53ee8cc1Swenshuai.xi break;
2560*53ee8cc1Swenshuai.xi default:
2561*53ee8cc1Swenshuai.xi break;
2562*53ee8cc1Swenshuai.xi }
2563*53ee8cc1Swenshuai.xi
2564*53ee8cc1Swenshuai.xi }
2565*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)2566*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetPid(MS_U32 pcrFltId)
2567*53ee8cc1Swenshuai.xi {
2568*53ee8cc1Swenshuai.xi switch(pcrFltId)
2569*53ee8cc1Swenshuai.xi {
2570*53ee8cc1Swenshuai.xi case 0:
2571*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->PIDFLT_PCR0) & TSP_PIDFLT_PCR0_PID_MASK);
2572*53ee8cc1Swenshuai.xi case 1:
2573*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->PIDFLT_PCR1) & TSP_PIDFLT_PCR1_PID_MASK);
2574*53ee8cc1Swenshuai.xi default:
2575*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__));
2576*53ee8cc1Swenshuai.xi return PVR_PIDFLT_DEF;
2577*53ee8cc1Swenshuai.xi }
2578*53ee8cc1Swenshuai.xi }
2579*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId,TSP_PCR_SRC src)2580*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrc(MS_U32 pcrFltId, TSP_PCR_SRC src)
2581*53ee8cc1Swenshuai.xi {
2582*53ee8cc1Swenshuai.xi switch(pcrFltId)
2583*53ee8cc1Swenshuai.xi {
2584*53ee8cc1Swenshuai.xi case 0:
2585*53ee8cc1Swenshuai.xi //src 0
2586*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR0_SRC_MASK, src << CFG_01_PCR0_SRC_SHIFT);
2587*53ee8cc1Swenshuai.xi break;
2588*53ee8cc1Swenshuai.xi case 1:
2589*53ee8cc1Swenshuai.xi //src 1
2590*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl2->CFG_01, CFG_01_PCR1_SRC_MASK, src << CFG_01_PCR1_SRC_SHIFT);
2591*53ee8cc1Swenshuai.xi break;
2592*53ee8cc1Swenshuai.xi default:
2593*53ee8cc1Swenshuai.xi break;
2594*53ee8cc1Swenshuai.xi }
2595*53ee8cc1Swenshuai.xi }
2596*53ee8cc1Swenshuai.xi
2597*53ee8cc1Swenshuai.xi //[Jason]
HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId,TSP_PCR_SRC * pPcrSrc)2598*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetSrc(MS_U32 pcrFltId, TSP_PCR_SRC *pPcrSrc)
2599*53ee8cc1Swenshuai.xi {
2600*53ee8cc1Swenshuai.xi //printf("[Jason][%s][%d] pcrFltId = %x\n", __FUNCTION__, __LINE__, pcrFltId);
2601*53ee8cc1Swenshuai.xi
2602*53ee8cc1Swenshuai.xi switch(pcrFltId)
2603*53ee8cc1Swenshuai.xi {
2604*53ee8cc1Swenshuai.xi case 0:
2605*53ee8cc1Swenshuai.xi //src 0
2606*53ee8cc1Swenshuai.xi *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR0_SRC_MASK) >> CFG_01_PCR0_SRC_SHIFT;
2607*53ee8cc1Swenshuai.xi break;
2608*53ee8cc1Swenshuai.xi case 1:
2609*53ee8cc1Swenshuai.xi //src 1
2610*53ee8cc1Swenshuai.xi *pPcrSrc = (REG16_R(&_RegCtrl2->CFG_01) & CFG_01_PCR1_SRC_MASK) >> CFG_01_PCR1_SRC_SHIFT;
2611*53ee8cc1Swenshuai.xi break;
2612*53ee8cc1Swenshuai.xi default:
2613*53ee8cc1Swenshuai.xi break;
2614*53ee8cc1Swenshuai.xi }
2615*53ee8cc1Swenshuai.xi }
2616*53ee8cc1Swenshuai.xi
HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)2617*53ee8cc1Swenshuai.xi TSP_PCR_SRC HAL_TSP_FltSrc2PCRSrc_Mapping(TSP_PIDFLT_SRC ePidFltSrc)
2618*53ee8cc1Swenshuai.xi {
2619*53ee8cc1Swenshuai.xi TSP_PCR_SRC ePcrSrc = E_TSP_PCR_SRC_INVALID;
2620*53ee8cc1Swenshuai.xi switch(ePidFltSrc)
2621*53ee8cc1Swenshuai.xi {
2622*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_LIVE0:
2623*53ee8cc1Swenshuai.xi ePcrSrc = E_TSP_PCR_SRC_TSIF0;
2624*53ee8cc1Swenshuai.xi break;
2625*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_LIVE1:
2626*53ee8cc1Swenshuai.xi ePcrSrc = E_TSP_PCR_SRC_TSIF2;
2627*53ee8cc1Swenshuai.xi break;
2628*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_LIVE2:
2629*53ee8cc1Swenshuai.xi ePcrSrc = E_TSP_PCR_SRC_TSIF1;
2630*53ee8cc1Swenshuai.xi break;
2631*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_FILE0:
2632*53ee8cc1Swenshuai.xi ePcrSrc = E_TSP_PCR_SRC_TSIF1;
2633*53ee8cc1Swenshuai.xi break;
2634*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_FILE1:
2635*53ee8cc1Swenshuai.xi ePcrSrc = E_TSP_PCR_SRC_TSIF2;
2636*53ee8cc1Swenshuai.xi break;
2637*53ee8cc1Swenshuai.xi case E_TSP_PIDFLT_FILE2:
2638*53ee8cc1Swenshuai.xi ePcrSrc = E_TSP_PCR_SRC_TSIF0;
2639*53ee8cc1Swenshuai.xi break;
2640*53ee8cc1Swenshuai.xi default:
2641*53ee8cc1Swenshuai.xi printf("[TSP_ERR][%s][%d] Wrong Flt Src type!!!\n",__FUNCTION__,__LINE__);
2642*53ee8cc1Swenshuai.xi break;
2643*53ee8cc1Swenshuai.xi }
2644*53ee8cc1Swenshuai.xi return ePcrSrc;
2645*53ee8cc1Swenshuai.xi
2646*53ee8cc1Swenshuai.xi }
2647*53ee8cc1Swenshuai.xi
2648*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId,MS_U32 * pu32Pcr_H,MS_U32 * pu32Pcr)2649*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_GetPcr(MS_U32 pcrFltId, MS_U32 *pu32Pcr_H, MS_U32 *pu32Pcr)
2650*53ee8cc1Swenshuai.xi {
2651*53ee8cc1Swenshuai.xi switch(pcrFltId)
2652*53ee8cc1Swenshuai.xi {
2653*53ee8cc1Swenshuai.xi case 0:
2654*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
2655*53ee8cc1Swenshuai.xi *pu32Pcr = REG32_R(&_RegCtrl->HWPCR0_L);
2656*53ee8cc1Swenshuai.xi *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR0_H) & 0x1;
2657*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_READ);
2658*53ee8cc1Swenshuai.xi break;
2659*53ee8cc1Swenshuai.xi case 1:
2660*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
2661*53ee8cc1Swenshuai.xi *pu32Pcr = REG32_R(&_RegCtrl->HWPCR1_L);
2662*53ee8cc1Swenshuai.xi *pu32Pcr_H = REG32_R(&_RegCtrl->HWPCR1_H) & 0x1;
2663*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_READ);
2664*53ee8cc1Swenshuai.xi break;
2665*53ee8cc1Swenshuai.xi default:
2666*53ee8cc1Swenshuai.xi break;
2667*53ee8cc1Swenshuai.xi }
2668*53ee8cc1Swenshuai.xi }
2669*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)2670*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_Reset(MS_U32 pcrFltId)
2671*53ee8cc1Swenshuai.xi {
2672*53ee8cc1Swenshuai.xi switch(pcrFltId)
2673*53ee8cc1Swenshuai.xi {
2674*53ee8cc1Swenshuai.xi case 0:
2675*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
2676*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR0_RESET);
2677*53ee8cc1Swenshuai.xi break;
2678*53ee8cc1Swenshuai.xi case 1:
2679*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
2680*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PCR_Cfg, TSP_PCR1_RESET);
2681*53ee8cc1Swenshuai.xi break;
2682*53ee8cc1Swenshuai.xi default:
2683*53ee8cc1Swenshuai.xi break;
2684*53ee8cc1Swenshuai.xi }
2685*53ee8cc1Swenshuai.xi }
2686*53ee8cc1Swenshuai.xi
2687*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)2688*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_ClearInt(MS_U32 pcrFltId)
2689*53ee8cc1Swenshuai.xi {
2690*53ee8cc1Swenshuai.xi switch(pcrFltId)
2691*53ee8cc1Swenshuai.xi {
2692*53ee8cc1Swenshuai.xi case 0:
2693*53ee8cc1Swenshuai.xi //REG16_CLR(&_RegCtrl->SwInt_Stat1_L,TSP_HWINT2_PCR0_UPDATE_END);
2694*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->SwInt_Stat1_L,
2695*53ee8cc1Swenshuai.xi (REG16_R(&_RegCtrl->SwInt_Stat1_L) & (~TSP_HWINT2_STATUS_MASK)) |
2696*53ee8cc1Swenshuai.xi (~TSP_HWINT2_PCR0_UPDATE_END & TSP_HWINT2_STATUS_MASK));
2697*53ee8cc1Swenshuai.xi break;
2698*53ee8cc1Swenshuai.xi case 1:
2699*53ee8cc1Swenshuai.xi //REG16_CLR(&_RegCtrl->SwInt_Stat1_L,TSP_HWINT2_PCR1_UPDATE_END);
2700*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->SwInt_Stat1_L,
2701*53ee8cc1Swenshuai.xi (REG16_R(&_RegCtrl->SwInt_Stat1_L) & (~TSP_HWINT2_STATUS_MASK)) |
2702*53ee8cc1Swenshuai.xi (~TSP_HWINT2_PCR1_UPDATE_END & TSP_HWINT2_STATUS_MASK));
2703*53ee8cc1Swenshuai.xi break;
2704*53ee8cc1Swenshuai.xi default:
2705*53ee8cc1Swenshuai.xi break;
2706*53ee8cc1Swenshuai.xi }
2707*53ee8cc1Swenshuai.xi }
2708*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)2709*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PcrFlt_GetIntMask(MS_U32 pcrFltId)
2710*53ee8cc1Swenshuai.xi {
2711*53ee8cc1Swenshuai.xi switch(pcrFltId)
2712*53ee8cc1Swenshuai.xi {
2713*53ee8cc1Swenshuai.xi case 0:
2714*53ee8cc1Swenshuai.xi return (TSP_HWINT2_PCR0_UPDATE_END_EN << 8);
2715*53ee8cc1Swenshuai.xi case 1:
2716*53ee8cc1Swenshuai.xi return (TSP_HWINT2_PCR1_UPDATE_END_EN << 8);
2717*53ee8cc1Swenshuai.xi default:
2718*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__));
2719*53ee8cc1Swenshuai.xi return 0;
2720*53ee8cc1Swenshuai.xi }
2721*53ee8cc1Swenshuai.xi }
2722*53ee8cc1Swenshuai.xi
HAL_TSP_STC_Init(void)2723*53ee8cc1Swenshuai.xi void HAL_TSP_STC_Init(void)
2724*53ee8cc1Swenshuai.xi {
2725*53ee8cc1Swenshuai.xi /////////////Set STC control by HK////////////////
2726*53ee8cc1Swenshuai.xi // select synth from chip top : bit 1 -> 0 -> controlled by HK
2727*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
2728*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
2729*53ee8cc1Swenshuai.xi
2730*53ee8cc1Swenshuai.xi // set HK STC synth CW
2731*53ee8cc1Swenshuai.xi //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
2732*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L) = 0x0000;
2733*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) = 0x2800;
2734*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = 0x0000;
2735*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = 0x2800;
2736*53ee8cc1Swenshuai.xi
2737*53ee8cc1Swenshuai.xi // set STC synth
2738*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
2739*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_EN;
2740*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
2741*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
2742*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_EN;
2743*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
2744*53ee8cc1Swenshuai.xi
2745*53ee8cc1Swenshuai.xi #if 0 // we don't use TSP CPU to control STC anymmore, so we don't have to do the following
2746*53ee8cc1Swenshuai.xi /////////////Set STC control by TSP////////////////
2747*53ee8cc1Swenshuai.xi // select synth from TSP : bit 1 -> 1 -> controlled by TSP
2748*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_SEL;
2749*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_SEL;
2750*53ee8cc1Swenshuai.xi
2751*53ee8cc1Swenshuai.xi // set TSP STC synth CW
2752*53ee8cc1Swenshuai.xi //if CLK_MPLL_SYN is 432MHz, set 0x28000000;if CLK_MPLL_SYN is 216MHz, set 0x14000000
2753*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)(0x0021024c<<1), 0x28000000);
2754*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)(0x00210280<<1), 0x28000000); //STC1
2755*53ee8cc1Swenshuai.xi
2756*53ee8cc1Swenshuai.xi // t2 , t3 had no 0x0021025c, it was add after t4, eanble synthesizer
2757*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x01);
2758*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x01);
2759*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))|0x02); //STC1
2760*53ee8cc1Swenshuai.xi TSP32_IdrW((TSP32 *)(0x0021025c<<1), TSP32_IdrR((TSP32 *)(0x0021025c<<1))& ~0x02);
2761*53ee8cc1Swenshuai.xi #endif
2762*53ee8cc1Swenshuai.xi }
2763*53ee8cc1Swenshuai.xi
HAL_TSP_GetSTCSynth(MS_U32 Eng,MS_U32 * u32Sync)2764*53ee8cc1Swenshuai.xi void HAL_TSP_GetSTCSynth(MS_U32 Eng, MS_U32* u32Sync)
2765*53ee8cc1Swenshuai.xi {
2766*53ee8cc1Swenshuai.xi switch (Eng)
2767*53ee8cc1Swenshuai.xi {
2768*53ee8cc1Swenshuai.xi case 0:
2769*53ee8cc1Swenshuai.xi // get HK STC synth CW
2770*53ee8cc1Swenshuai.xi *u32Sync = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L);
2771*53ee8cc1Swenshuai.xi *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) << 16 ;
2772*53ee8cc1Swenshuai.xi break;
2773*53ee8cc1Swenshuai.xi case 1:
2774*53ee8cc1Swenshuai.xi // get HK STC synth CW
2775*53ee8cc1Swenshuai.xi *u32Sync = TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L);
2776*53ee8cc1Swenshuai.xi *u32Sync |= TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) << 16 ;
2777*53ee8cc1Swenshuai.xi break;
2778*53ee8cc1Swenshuai.xi }
2779*53ee8cc1Swenshuai.xi }
2780*53ee8cc1Swenshuai.xi
HAL_TSP_SetSTCSynth(MS_U32 Eng,MS_U32 u32Sync)2781*53ee8cc1Swenshuai.xi void HAL_TSP_SetSTCSynth(MS_U32 Eng, MS_U32 u32Sync)
2782*53ee8cc1Swenshuai.xi {
2783*53ee8cc1Swenshuai.xi switch (Eng)
2784*53ee8cc1Swenshuai.xi {
2785*53ee8cc1Swenshuai.xi case 0:
2786*53ee8cc1Swenshuai.xi //set STC controller : HK or TSP CPU
2787*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC_CW_SEL;
2788*53ee8cc1Swenshuai.xi
2789*53ee8cc1Swenshuai.xi // set HK STC synth CW
2790*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_L) = u32Sync & 0xFFFF;
2791*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC_CW_H) = u32Sync >> 16;
2792*53ee8cc1Swenshuai.xi
2793*53ee8cc1Swenshuai.xi // set STC synth : toggle update bit
2794*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
2795*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC_CW_EN;
2796*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC_CW_EN);
2797*53ee8cc1Swenshuai.xi break;
2798*53ee8cc1Swenshuai.xi case 1:
2799*53ee8cc1Swenshuai.xi //set STC controller : HK or TSP CPU
2800*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~REG_CLKGEN0_STC1_CW_SEL;
2801*53ee8cc1Swenshuai.xi
2802*53ee8cc1Swenshuai.xi // set HK STC synth CW
2803*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_L) = u32Sync & 0xFFFF;
2804*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_STC1_CW_H) = u32Sync >> 16;
2805*53ee8cc1Swenshuai.xi
2806*53ee8cc1Swenshuai.xi // set STC synth : toggle update bit
2807*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
2808*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) |= REG_CLKGEN0_STC1_CW_EN;
2809*53ee8cc1Swenshuai.xi TSP_CLKGEN0_REG(REG_CLKGEN0_DC0_SYTNTH) &= ~(REG_CLKGEN0_STC1_CW_EN);
2810*53ee8cc1Swenshuai.xi break;
2811*53ee8cc1Swenshuai.xi }
2812*53ee8cc1Swenshuai.xi }
2813*53ee8cc1Swenshuai.xi
HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)2814*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Mode_En(MS_BOOL bEnable)
2815*53ee8cc1Swenshuai.xi {
2816*53ee8cc1Swenshuai.xi if (bEnable)
2817*53ee8cc1Swenshuai.xi {
2818*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
2819*53ee8cc1Swenshuai.xi }
2820*53ee8cc1Swenshuai.xi else
2821*53ee8cc1Swenshuai.xi {
2822*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Cfg5, TSP_SYSTIME_MODE);
2823*53ee8cc1Swenshuai.xi }
2824*53ee8cc1Swenshuai.xi }
2825*53ee8cc1Swenshuai.xi
HAL_TSP_STC64_Set(MS_U32 Eng,MS_U32 stcH,MS_U32 stcL)2826*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Set(MS_U32 Eng, MS_U32 stcH, MS_U32 stcL)
2827*53ee8cc1Swenshuai.xi {
2828*53ee8cc1Swenshuai.xi switch (Eng)
2829*53ee8cc1Swenshuai.xi {
2830*53ee8cc1Swenshuai.xi case 0:
2831*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Pcr_L, stcL);
2832*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Pcr_H, stcH);
2833*53ee8cc1Swenshuai.xi break;
2834*53ee8cc1Swenshuai.xi case 1:
2835*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->PCR64_2_L, stcL);
2836*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->PCR64_2_H, stcH);
2837*53ee8cc1Swenshuai.xi break;
2838*53ee8cc1Swenshuai.xi }
2839*53ee8cc1Swenshuai.xi }
2840*53ee8cc1Swenshuai.xi
HAL_TSP_STC64_Get(MS_U32 Eng,MS_U32 * pStcH,MS_U32 * pStcL)2841*53ee8cc1Swenshuai.xi void HAL_TSP_STC64_Get(MS_U32 Eng, MS_U32* pStcH, MS_U32* pStcL)
2842*53ee8cc1Swenshuai.xi {
2843*53ee8cc1Swenshuai.xi switch (Eng)
2844*53ee8cc1Swenshuai.xi {
2845*53ee8cc1Swenshuai.xi case 0:
2846*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
2847*53ee8cc1Swenshuai.xi *pStcH = REG32_R(&_RegCtrl->Pcr_H);
2848*53ee8cc1Swenshuai.xi *pStcL = REG32_R(&_RegCtrl->Pcr_L);
2849*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
2850*53ee8cc1Swenshuai.xi break;
2851*53ee8cc1Swenshuai.xi case 1:
2852*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
2853*53ee8cc1Swenshuai.xi *pStcH = REG32_R(&_RegCtrl->PCR64_2_H);
2854*53ee8cc1Swenshuai.xi *pStcL = REG32_R(&_RegCtrl->PCR64_2_L);
2855*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_64bit_PCR2_ld);
2856*53ee8cc1Swenshuai.xi break;
2857*53ee8cc1Swenshuai.xi }
2858*53ee8cc1Swenshuai.xi }
2859*53ee8cc1Swenshuai.xi
HAL_TSP_STC33_CmdQSet(MS_U32 stcH,MS_U32 stcL)2860*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQSet(MS_U32 stcH, MS_U32 stcL)
2861*53ee8cc1Swenshuai.xi {
2862*53ee8cc1Swenshuai.xi // @TODO ask designer for the difference between 64bit STC and 33 Bit STC
2863*53ee8cc1Swenshuai.xi // and it's hw limit (like: cmdQ delay)
2864*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->Pcr_H_CmdQ, stcH & TSP_REG_PCR_CMDQ_H);
2865*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Pcr_L_CmdQ, stcL);
2866*53ee8cc1Swenshuai.xi }
2867*53ee8cc1Swenshuai.xi
HAL_TSP_STC33_CmdQGet(MS_U32 * pStcH,MS_U32 * pStcL)2868*53ee8cc1Swenshuai.xi void HAL_TSP_STC33_CmdQGet(MS_U32* pStcH, MS_U32* pStcL)
2869*53ee8cc1Swenshuai.xi {
2870*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
2871*53ee8cc1Swenshuai.xi *pStcH = REG16_R(&_RegCtrl->Pcr_H_CmdQ) & TSP_REG_PCR_CMDQ_H;
2872*53ee8cc1Swenshuai.xi *pStcL = REG32_R(&_RegCtrl->Pcr_L_CmdQ);
2873*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_cnt_33b_ld);
2874*53ee8cc1Swenshuai.xi }
2875*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType,MS_U32 pktDmxId)2876*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_SetSrc(TSP_DST_SEQ eFltType, MS_U32 pktDmxId)
2877*53ee8cc1Swenshuai.xi {
2878*53ee8cc1Swenshuai.xi switch (eFltType)
2879*53ee8cc1Swenshuai.xi {
2880*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
2881*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID_SRC_SHIFT);
2882*53ee8cc1Swenshuai.xi break;
2883*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
2884*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_VID3D_SRC_MASK, ((MS_U16)pktDmxId) << TSP_VID3D_SRC_SHIFT);
2885*53ee8cc1Swenshuai.xi break;
2886*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
2887*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUD_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUD_SRC_SHIFT);
2888*53ee8cc1Swenshuai.xi break;
2889*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
2890*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->FIFO_Src, TSP_AUDB_SRC_MASK, ((MS_U16)pktDmxId) << TSP_AUDB_SRC_SHIFT);
2891*53ee8cc1Swenshuai.xi break;
2892*53ee8cc1Swenshuai.xi default:
2893*53ee8cc1Swenshuai.xi break;
2894*53ee8cc1Swenshuai.xi }
2895*53ee8cc1Swenshuai.xi }
2896*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType,TSP_SRC_SEQ * pktDmxId)2897*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_GetSrc(TSP_DST_SEQ eFltType, TSP_SRC_SEQ *pktDmxId)
2898*53ee8cc1Swenshuai.xi {
2899*53ee8cc1Swenshuai.xi switch (eFltType)
2900*53ee8cc1Swenshuai.xi {
2901*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
2902*53ee8cc1Swenshuai.xi *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID_SRC_MASK) >> TSP_VID_SRC_SHIFT;
2903*53ee8cc1Swenshuai.xi break;
2904*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
2905*53ee8cc1Swenshuai.xi *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_VID3D_SRC_MASK) >> TSP_VID3D_SRC_SHIFT;
2906*53ee8cc1Swenshuai.xi break;
2907*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
2908*53ee8cc1Swenshuai.xi *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUD_SRC_MASK) >> TSP_AUD_SRC_SHIFT;
2909*53ee8cc1Swenshuai.xi break;
2910*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
2911*53ee8cc1Swenshuai.xi *pktDmxId = ((REG16_R(&_RegCtrl->FIFO_Src)) & TSP_AUDB_SRC_MASK) >> TSP_AUDB_SRC_SHIFT;
2912*53ee8cc1Swenshuai.xi break;
2913*53ee8cc1Swenshuai.xi default:
2914*53ee8cc1Swenshuai.xi break;
2915*53ee8cc1Swenshuai.xi }
2916*53ee8cc1Swenshuai.xi }
2917*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_ClearAll()2918*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ClearAll()
2919*53ee8cc1Swenshuai.xi {
2920*53ee8cc1Swenshuai.xi // clear ALL FIFO !!!
2921*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
2922*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
2923*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
2924*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
2925*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDC_EN);
2926*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDD_EN);
2927*53ee8cc1Swenshuai.xi
2928*53ee8cc1Swenshuai.xi }
2929*53ee8cc1Swenshuai.xi
2930*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Connect(MS_BOOL bEn)2931*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Connect(MS_BOOL bEn)
2932*53ee8cc1Swenshuai.xi {
2933*53ee8cc1Swenshuai.xi if(bEn == TRUE)
2934*53ee8cc1Swenshuai.xi {
2935*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
2936*53ee8cc1Swenshuai.xi }
2937*53ee8cc1Swenshuai.xi else
2938*53ee8cc1Swenshuai.xi {
2939*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b4,TSP_AVFIFO_RD_EN);
2940*53ee8cc1Swenshuai.xi }
2941*53ee8cc1Swenshuai.xi
2942*53ee8cc1Swenshuai.xi }
2943*53ee8cc1Swenshuai.xi
2944*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_ReadPkt(void)2945*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_FIFO_ReadPkt(void)
2946*53ee8cc1Swenshuai.xi {
2947*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->PKT_CNT) & TSP_PKT_CNT_MASK);
2948*53ee8cc1Swenshuai.xi }
2949*53ee8cc1Swenshuai.xi
2950*53ee8cc1Swenshuai.xi
2951*53ee8cc1Swenshuai.xi
2952*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)2953*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_ReadSrc(TSP_DST_SEQ eFltType)
2954*53ee8cc1Swenshuai.xi {
2955*53ee8cc1Swenshuai.xi switch (eFltType)
2956*53ee8cc1Swenshuai.xi {
2957*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
2958*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);
2959*53ee8cc1Swenshuai.xi break;
2960*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
2961*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);
2962*53ee8cc1Swenshuai.xi break;
2963*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
2964*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);
2965*53ee8cc1Swenshuai.xi break;
2966*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
2967*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);
2968*53ee8cc1Swenshuai.xi break;
2969*53ee8cc1Swenshuai.xi default:
2970*53ee8cc1Swenshuai.xi break;
2971*53ee8cc1Swenshuai.xi }
2972*53ee8cc1Swenshuai.xi }
2973*53ee8cc1Swenshuai.xi
2974*53ee8cc1Swenshuai.xi
2975*53ee8cc1Swenshuai.xi
2976*53ee8cc1Swenshuai.xi
2977*53ee8cc1Swenshuai.xi //@NOTE for TS mode
2978*53ee8cc1Swenshuai.xi //@TODO need to rename (TS enable or PKTDMX_BYPASS)
HAL_TSP_Flt_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)2979*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
2980*53ee8cc1Swenshuai.xi {
2981*53ee8cc1Swenshuai.xi if(bEn)
2982*53ee8cc1Swenshuai.xi {
2983*53ee8cc1Swenshuai.xi switch (eFltType)
2984*53ee8cc1Swenshuai.xi {
2985*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
2986*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
2987*53ee8cc1Swenshuai.xi break;
2988*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
2989*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
2990*53ee8cc1Swenshuai.xi break;
2991*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
2992*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
2993*53ee8cc1Swenshuai.xi break;
2994*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
2995*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
2996*53ee8cc1Swenshuai.xi break;
2997*53ee8cc1Swenshuai.xi default:
2998*53ee8cc1Swenshuai.xi break;
2999*53ee8cc1Swenshuai.xi }
3000*53ee8cc1Swenshuai.xi }
3001*53ee8cc1Swenshuai.xi else
3002*53ee8cc1Swenshuai.xi {
3003*53ee8cc1Swenshuai.xi switch (eFltType)
3004*53ee8cc1Swenshuai.xi {
3005*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
3006*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_VPID_BYPASS);
3007*53ee8cc1Swenshuai.xi break;
3008*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
3009*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config0, TSP_HW_CFG0_TSIF0_APID_BYPASS);
3010*53ee8cc1Swenshuai.xi break;
3011*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
3012*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_APID_B_BYPASS);
3013*53ee8cc1Swenshuai.xi break;
3014*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3015*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_2D, CFG3_2D_VPID_3D_BYPASS);
3016*53ee8cc1Swenshuai.xi break;
3017*53ee8cc1Swenshuai.xi default:
3018*53ee8cc1Swenshuai.xi break;
3019*53ee8cc1Swenshuai.xi
3020*53ee8cc1Swenshuai.xi }
3021*53ee8cc1Swenshuai.xi }
3022*53ee8cc1Swenshuai.xi }
3023*53ee8cc1Swenshuai.xi
3024*53ee8cc1Swenshuai.xi
HAL_TSP_PS_SRC(MS_U32 tsIf)3025*53ee8cc1Swenshuai.xi void HAL_TSP_PS_SRC(MS_U32 tsIf)
3026*53ee8cc1Swenshuai.xi {
3027*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl3->CFG3_10, CFG3_10_PS_MODE_SRC_MASK,(((MS_U16)tsIf)<< CFG3_10_PS_MODE_SRC_SHIFT));
3028*53ee8cc1Swenshuai.xi }
3029*53ee8cc1Swenshuai.xi
3030*53ee8cc1Swenshuai.xi
3031*53ee8cc1Swenshuai.xi
3032*53ee8cc1Swenshuai.xi //PS MODE
3033*53ee8cc1Swenshuai.xi //NEED TO rename
HAL_TSP_FIFO_Bypass(TSP_DST_SEQ eFltType,MS_BOOL bEn)3034*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
3035*53ee8cc1Swenshuai.xi {
3036*53ee8cc1Swenshuai.xi if(bEn)
3037*53ee8cc1Swenshuai.xi {
3038*53ee8cc1Swenshuai.xi switch (eFltType)
3039*53ee8cc1Swenshuai.xi {
3040*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
3041*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
3042*53ee8cc1Swenshuai.xi break;
3043*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3044*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
3045*53ee8cc1Swenshuai.xi break;
3046*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
3047*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
3048*53ee8cc1Swenshuai.xi break;
3049*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
3050*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
3051*53ee8cc1Swenshuai.xi break;
3052*53ee8cc1Swenshuai.xi default:
3053*53ee8cc1Swenshuai.xi break;
3054*53ee8cc1Swenshuai.xi }
3055*53ee8cc1Swenshuai.xi }
3056*53ee8cc1Swenshuai.xi else
3057*53ee8cc1Swenshuai.xi {
3058*53ee8cc1Swenshuai.xi switch (eFltType)
3059*53ee8cc1Swenshuai.xi {
3060*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3061*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_VID_EN);
3062*53ee8cc1Swenshuai.xi break;
3063*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3064*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->TSP_Ctrl2, TSP_PS_VID_3D_EN);
3065*53ee8cc1Swenshuai.xi break;
3066*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3067*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUD_EN);
3068*53ee8cc1Swenshuai.xi break;
3069*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3070*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_PS_AUDB_EN);
3071*53ee8cc1Swenshuai.xi break;
3072*53ee8cc1Swenshuai.xi default:
3073*53ee8cc1Swenshuai.xi break;
3074*53ee8cc1Swenshuai.xi }
3075*53ee8cc1Swenshuai.xi }
3076*53ee8cc1Swenshuai.xi }
3077*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng,TSP_DST_SEQ eFltType)3078*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Bypass_Src(FILEENG_SEQ eFileEng, TSP_DST_SEQ eFltType)
3079*53ee8cc1Swenshuai.xi {
3080*53ee8cc1Swenshuai.xi // (K6 HW CL) Kano doesn't support
3081*53ee8cc1Swenshuai.xi // PS mode source sel need to be independent
3082*53ee8cc1Swenshuai.xi }
3083*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)3084*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_PidHit(TSP_DST_SEQ eFltType)
3085*53ee8cc1Swenshuai.xi {
3086*53ee8cc1Swenshuai.xi switch (eFltType)
3087*53ee8cc1Swenshuai.xi {
3088*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3089*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl->Vd_Pid_Hit) & TSP_VPID_MASK;
3090*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
3091*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl2->CFG_70) & CFG_70_MATCHECED_VPID_3D_MASK;
3092*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3093*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl->Aud_Pid_Hit) & TSP_APID_MASK;
3094*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3095*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl2->CFG_71) & CFG_71_MATCHECED_APID_B_MASK;
3096*53ee8cc1Swenshuai.xi default:
3097*53ee8cc1Swenshuai.xi return 0x1FFF;
3098*53ee8cc1Swenshuai.xi }
3099*53ee8cc1Swenshuai.xi }
3100*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType,MS_BOOL bReset)3101*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Reset(TSP_DST_SEQ eFltType, MS_BOOL bReset)
3102*53ee8cc1Swenshuai.xi {
3103*53ee8cc1Swenshuai.xi if (bReset)
3104*53ee8cc1Swenshuai.xi {
3105*53ee8cc1Swenshuai.xi switch (eFltType)
3106*53ee8cc1Swenshuai.xi {
3107*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3108*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
3109*53ee8cc1Swenshuai.xi break;
3110*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3111*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
3112*53ee8cc1Swenshuai.xi break;
3113*53ee8cc1Swenshuai.xi
3114*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3115*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
3116*53ee8cc1Swenshuai.xi break;
3117*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3118*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
3119*53ee8cc1Swenshuai.xi break;
3120*53ee8cc1Swenshuai.xi default :
3121*53ee8cc1Swenshuai.xi break;
3122*53ee8cc1Swenshuai.xi }
3123*53ee8cc1Swenshuai.xi }
3124*53ee8cc1Swenshuai.xi else
3125*53ee8cc1Swenshuai.xi {
3126*53ee8cc1Swenshuai.xi switch (eFltType)
3127*53ee8cc1Swenshuai.xi {
3128*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3129*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO);
3130*53ee8cc1Swenshuai.xi break;
3131*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3132*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_VFIFO3D);
3133*53ee8cc1Swenshuai.xi break;
3134*53ee8cc1Swenshuai.xi
3135*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3136*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO);
3137*53ee8cc1Swenshuai.xi break;
3138*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3139*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_RESET_AFIFO2);
3140*53ee8cc1Swenshuai.xi break;
3141*53ee8cc1Swenshuai.xi default :
3142*53ee8cc1Swenshuai.xi break;
3143*53ee8cc1Swenshuai.xi }
3144*53ee8cc1Swenshuai.xi }
3145*53ee8cc1Swenshuai.xi
3146*53ee8cc1Swenshuai.xi _delay(1);
3147*53ee8cc1Swenshuai.xi }
3148*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)3149*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_Skip_Scrmb(TSP_DST_SEQ eFltType,MS_BOOL bSkip)
3150*53ee8cc1Swenshuai.xi {
3151*53ee8cc1Swenshuai.xi if(bSkip)
3152*53ee8cc1Swenshuai.xi {
3153*53ee8cc1Swenshuai.xi switch(eFltType)
3154*53ee8cc1Swenshuai.xi {
3155*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
3156*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
3157*53ee8cc1Swenshuai.xi break;
3158*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3159*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
3160*53ee8cc1Swenshuai.xi break;
3161*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
3162*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
3163*53ee8cc1Swenshuai.xi break;
3164*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
3165*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
3166*53ee8cc1Swenshuai.xi break;
3167*53ee8cc1Swenshuai.xi default:
3168*53ee8cc1Swenshuai.xi break;
3169*53ee8cc1Swenshuai.xi }
3170*53ee8cc1Swenshuai.xi }
3171*53ee8cc1Swenshuai.xi else
3172*53ee8cc1Swenshuai.xi {
3173*53ee8cc1Swenshuai.xi switch(eFltType)
3174*53ee8cc1Swenshuai.xi {
3175*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
3176*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V_EN);
3177*53ee8cc1Swenshuai.xi break;
3178*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3179*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_V3D_EN);
3180*53ee8cc1Swenshuai.xi break;
3181*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
3182*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_A_EN);
3183*53ee8cc1Swenshuai.xi break;
3184*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
3185*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_34, CFG3_34_MASK_SRC_AB_EN);
3186*53ee8cc1Swenshuai.xi break;
3187*53ee8cc1Swenshuai.xi default:
3188*53ee8cc1Swenshuai.xi break;
3189*53ee8cc1Swenshuai.xi }
3190*53ee8cc1Swenshuai.xi
3191*53ee8cc1Swenshuai.xi }
3192*53ee8cc1Swenshuai.xi }
3193*53ee8cc1Swenshuai.xi
3194*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType,MS_BOOL bDisable)3195*53ee8cc1Swenshuai.xi void HAL_TSP_FIFO_BlockDis(TSP_DST_SEQ eFltType, MS_BOOL bDisable)
3196*53ee8cc1Swenshuai.xi {
3197*53ee8cc1Swenshuai.xi if(bDisable)
3198*53ee8cc1Swenshuai.xi {
3199*53ee8cc1Swenshuai.xi switch(eFltType)
3200*53ee8cc1Swenshuai.xi {
3201*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
3202*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
3203*53ee8cc1Swenshuai.xi break;
3204*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3205*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
3206*53ee8cc1Swenshuai.xi break;
3207*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3208*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
3209*53ee8cc1Swenshuai.xi break;
3210*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3211*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
3212*53ee8cc1Swenshuai.xi break;
3213*53ee8cc1Swenshuai.xi default:
3214*53ee8cc1Swenshuai.xi break;
3215*53ee8cc1Swenshuai.xi }
3216*53ee8cc1Swenshuai.xi }
3217*53ee8cc1Swenshuai.xi else
3218*53ee8cc1Swenshuai.xi {
3219*53ee8cc1Swenshuai.xi switch(eFltType)
3220*53ee8cc1Swenshuai.xi {
3221*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
3222*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V_BLOCK_DIS);
3223*53ee8cc1Swenshuai.xi break;
3224*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3225*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_V3d_BLOCK_DIS);
3226*53ee8cc1Swenshuai.xi break;
3227*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3228*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_A_BLOCK_DIS);
3229*53ee8cc1Swenshuai.xi break;
3230*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3231*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_AD_BLOCK_DIS);
3232*53ee8cc1Swenshuai.xi break;
3233*53ee8cc1Swenshuai.xi default:
3234*53ee8cc1Swenshuai.xi break;
3235*53ee8cc1Swenshuai.xi }
3236*53ee8cc1Swenshuai.xi }
3237*53ee8cc1Swenshuai.xi }
3238*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)3239*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_IsReset(TSP_DST_SEQ eFltType)
3240*53ee8cc1Swenshuai.xi {
3241*53ee8cc1Swenshuai.xi MS_U32 u32Matched = 0;
3242*53ee8cc1Swenshuai.xi switch (eFltType)
3243*53ee8cc1Swenshuai.xi {
3244*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3245*53ee8cc1Swenshuai.xi u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO;
3246*53ee8cc1Swenshuai.xi break;
3247*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3248*53ee8cc1Swenshuai.xi u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_VFIFO3D;
3249*53ee8cc1Swenshuai.xi break;
3250*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3251*53ee8cc1Swenshuai.xi u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO;
3252*53ee8cc1Swenshuai.xi break;
3253*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3254*53ee8cc1Swenshuai.xi u32Matched = REG16_R(&_RegCtrl->reg160E) & TSP_RESET_AFIFO2;
3255*53ee8cc1Swenshuai.xi break;
3256*53ee8cc1Swenshuai.xi default :
3257*53ee8cc1Swenshuai.xi return FALSE;
3258*53ee8cc1Swenshuai.xi }
3259*53ee8cc1Swenshuai.xi return (u32Matched) ? TRUE: FALSE;
3260*53ee8cc1Swenshuai.xi }
3261*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)3262*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_GetStatus(TSP_DST_SEQ eFltType)
3263*53ee8cc1Swenshuai.xi {
3264*53ee8cc1Swenshuai.xi #define E_TSP_FIFO_STATUS_ISRESET 0x80000000
3265*53ee8cc1Swenshuai.xi #define E_TSP_FIFO_STATUS_EMPTY 0x00000001
3266*53ee8cc1Swenshuai.xi #define E_TSP_FIFO_STATUS_OVERFLOW 0x00000002
3267*53ee8cc1Swenshuai.xi #define E_TSP_FIFO_STATUS_LEVEL 0x0000000C
3268*53ee8cc1Swenshuai.xi #define TSP_FIFO_STATUS_LEVEL_SHFT 2 //shift the value get from HAL_TSP_FIFO_Level to the u32Status level position
3269*53ee8cc1Swenshuai.xi // @NOTE please follow K2 like series to return this value
3270*53ee8cc1Swenshuai.xi // since API layer didn't define for each column
3271*53ee8cc1Swenshuai.xi // we only defined that 0x80000000 stands for this fifo reset is High
3272*53ee8cc1Swenshuai.xi // 0x00000001 stands for this fifo is empty
3273*53ee8cc1Swenshuai.xi // 0x00000002 stands for this fifo is overflow
3274*53ee8cc1Swenshuai.xi // 0x0000000C is a mask for this fifo level
3275*53ee8cc1Swenshuai.xi // this is exclusive usage
3276*53ee8cc1Swenshuai.xi MS_U32 u32Status = 0;
3277*53ee8cc1Swenshuai.xi if (HAL_TSP_FIFO_IsReset(eFltType))
3278*53ee8cc1Swenshuai.xi {
3279*53ee8cc1Swenshuai.xi u32Status |= E_TSP_FIFO_STATUS_ISRESET;
3280*53ee8cc1Swenshuai.xi }
3281*53ee8cc1Swenshuai.xi if (HAL_TSP_FIFO_Empty(eFltType))
3282*53ee8cc1Swenshuai.xi {
3283*53ee8cc1Swenshuai.xi u32Status |= E_TSP_FIFO_STATUS_EMPTY;
3284*53ee8cc1Swenshuai.xi }
3285*53ee8cc1Swenshuai.xi if (HAL_TSP_FIFO_Overflow(eFltType))
3286*53ee8cc1Swenshuai.xi {
3287*53ee8cc1Swenshuai.xi u32Status |= E_TSP_FIFO_STATUS_OVERFLOW;
3288*53ee8cc1Swenshuai.xi }
3289*53ee8cc1Swenshuai.xi
3290*53ee8cc1Swenshuai.xi u32Status |= ((HAL_TSP_FIFO_Level(eFltType)<<TSP_FIFO_STATUS_LEVEL_SHFT)&E_TSP_FIFO_STATUS_LEVEL);
3291*53ee8cc1Swenshuai.xi
3292*53ee8cc1Swenshuai.xi return u32Status;
3293*53ee8cc1Swenshuai.xi }
3294*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)3295*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FIFO_Level(TSP_DST_SEQ eFltType)
3296*53ee8cc1Swenshuai.xi {
3297*53ee8cc1Swenshuai.xi switch (eFltType)
3298*53ee8cc1Swenshuai.xi {
3299*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3300*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_LEVEL) >> TSP_VFIFO_LEVEL_SHFT;
3301*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
3302*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_LEVEL) >> TSP_VFIFO3D_LEVEL_SHFT;
3303*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3304*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_LEVEL) >> TSP_AFIFO_LEVEL_SHFT;
3305*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3306*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_LEVEL) >> TSP_AFIFOB_LEVEL_SHFT;
3307*53ee8cc1Swenshuai.xi default :
3308*53ee8cc1Swenshuai.xi return 0;
3309*53ee8cc1Swenshuai.xi }
3310*53ee8cc1Swenshuai.xi }
3311*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)3312*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Overflow(TSP_DST_SEQ eFltType)
3313*53ee8cc1Swenshuai.xi {
3314*53ee8cc1Swenshuai.xi switch (eFltType)
3315*53ee8cc1Swenshuai.xi {
3316*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3317*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_FULL) >> TSP_VFIFO_FULL_SHFT;
3318*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
3319*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_FULL) >> TSP_VFIFO3D_FULL_SHFT;
3320*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3321*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_FULL) >> TSP_AFIFO_FULL_SHFT;
3322*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3323*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_FULL) >> TSP_AFIFOB_FULL_SHFT;
3324*53ee8cc1Swenshuai.xi default :
3325*53ee8cc1Swenshuai.xi return FALSE;
3326*53ee8cc1Swenshuai.xi }
3327*53ee8cc1Swenshuai.xi }
3328*53ee8cc1Swenshuai.xi
HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)3329*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FIFO_Empty(TSP_DST_SEQ eFltType)
3330*53ee8cc1Swenshuai.xi {
3331*53ee8cc1Swenshuai.xi switch (eFltType)
3332*53ee8cc1Swenshuai.xi {
3333*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
3334*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO_EMPTY) >> TSP_VFIFO_EMPTY_SHFT;
3335*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
3336*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_VFIFO3D_EMPTY) >> TSP_VFIFO3D_EMPTY_SHFT;
3337*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
3338*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFO_EMPTY) >> TSP_AFIFO_EMPTY_SHFT;
3339*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
3340*53ee8cc1Swenshuai.xi return (REG16_R(&_RegCtrl->AVFifoSts) & TSP_AFIFOB_EMPTY) >> TSP_AFIFOB_EMPTY_SHFT;
3341*53ee8cc1Swenshuai.xi default :
3342*53ee8cc1Swenshuai.xi return FALSE;
3343*53ee8cc1Swenshuai.xi }
3344*53ee8cc1Swenshuai.xi }
3345*53ee8cc1Swenshuai.xi
_HAL_TSP_VQ_TxConfig(MS_U32 vqId)3346*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_TSP_VQ_TxConfig(MS_U32 vqId)
3347*53ee8cc1Swenshuai.xi {
3348*53ee8cc1Swenshuai.xi // reg_vq_wr_threshold = 0x8
3349*53ee8cc1Swenshuai.xi // reg_vq_forcefire_cnt_1k= 0xC
3350*53ee8cc1Swenshuai.xi
3351*53ee8cc1Swenshuai.xi switch(vqId)
3352*53ee8cc1Swenshuai.xi {
3353*53ee8cc1Swenshuai.xi case 0:
3354*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));
3355*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));
3356*53ee8cc1Swenshuai.xi break;
3357*53ee8cc1Swenshuai.xi case 1:
3358*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));
3359*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));
3360*53ee8cc1Swenshuai.xi break;
3361*53ee8cc1Swenshuai.xi case 2:
3362*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));
3363*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));
3364*53ee8cc1Swenshuai.xi break;
3365*53ee8cc1Swenshuai.xi default:
3366*53ee8cc1Swenshuai.xi return FALSE;
3367*53ee8cc1Swenshuai.xi }
3368*53ee8cc1Swenshuai.xi return TRUE;
3369*53ee8cc1Swenshuai.xi }
3370*53ee8cc1Swenshuai.xi
3371*53ee8cc1Swenshuai.xi
HAL_TSP_SetVQ(MS_PHYADDR u32BaseAddr,MS_U32 u32BufLen)3372*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_SetVQ( MS_PHYADDR u32BaseAddr, MS_U32 u32BufLen)
3373*53ee8cc1Swenshuai.xi {
3374*53ee8cc1Swenshuai.xi MS_U32 vqId;
3375*53ee8cc1Swenshuai.xi MS_U32 u32VQ_PktNum = 0;
3376*53ee8cc1Swenshuai.xi MS_U32 u32Addr = u32BaseAddr;
3377*53ee8cc1Swenshuai.xi MS_U32 u32OneBufSize = 0;
3378*53ee8cc1Swenshuai.xi
3379*53ee8cc1Swenshuai.xi u32OneBufSize = ((u32BufLen >> MIU_BUS) / VQ_NUM) << MIU_BUS; //miu alignment
3380*53ee8cc1Swenshuai.xi u32VQ_PktNum = u32OneBufSize / VQ_PACKET_UNIT_LEN;
3381*53ee8cc1Swenshuai.xi
3382*53ee8cc1Swenshuai.xi for(vqId = 0; vqId < VQ_NUM; vqId ++)
3383*53ee8cc1Swenshuai.xi {
3384*53ee8cc1Swenshuai.xi if(TRUE != _HAL_TSP_VQ_TxConfig(vqId))
3385*53ee8cc1Swenshuai.xi {
3386*53ee8cc1Swenshuai.xi return FALSE;
3387*53ee8cc1Swenshuai.xi }
3388*53ee8cc1Swenshuai.xi
3389*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
3390*53ee8cc1Swenshuai.xi if (TRUE != HAL_TSP_VQ_Buffer(vqId, u32Addr, u32VQ_PktNum))
3391*53ee8cc1Swenshuai.xi {
3392*53ee8cc1Swenshuai.xi return FALSE;
3393*53ee8cc1Swenshuai.xi }
3394*53ee8cc1Swenshuai.xi u32Addr += u32OneBufSize;
3395*53ee8cc1Swenshuai.xi }
3396*53ee8cc1Swenshuai.xi
3397*53ee8cc1Swenshuai.xi HAL_TSP_VQ_Enable(TRUE);
3398*53ee8cc1Swenshuai.xi return TRUE;
3399*53ee8cc1Swenshuai.xi
3400*53ee8cc1Swenshuai.xi }
3401*53ee8cc1Swenshuai.xi
HAL_TSP_VQ_Buffer(MS_U32 vqId,MS_PHYADDR u32BaseAddr,MS_U32 u32VQ_PktNum)3402*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Buffer(MS_U32 vqId, MS_PHYADDR u32BaseAddr, MS_U32 u32VQ_PktNum)
3403*53ee8cc1Swenshuai.xi {
3404*53ee8cc1Swenshuai.xi switch(vqId)
3405*53ee8cc1Swenshuai.xi {
3406*53ee8cc1Swenshuai.xi case 0:
3407*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->VQ0_BASE, (u32BaseAddr >> MIU_BUS));
3408*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->VQ0_SIZE, u32VQ_PktNum);
3409*53ee8cc1Swenshuai.xi break;
3410*53ee8cc1Swenshuai.xi case 1:
3411*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->VQ1_Base, (u32BaseAddr >> MIU_BUS));
3412*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->VQ1_Size, u32VQ_PktNum);
3413*53ee8cc1Swenshuai.xi break;
3414*53ee8cc1Swenshuai.xi case 2:
3415*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->VQ2_Base, (u32BaseAddr >> MIU_BUS));
3416*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->VQ2_Size, u32VQ_PktNum);
3417*53ee8cc1Swenshuai.xi break;
3418*53ee8cc1Swenshuai.xi default:
3419*53ee8cc1Swenshuai.xi return FALSE;
3420*53ee8cc1Swenshuai.xi }
3421*53ee8cc1Swenshuai.xi return TRUE;
3422*53ee8cc1Swenshuai.xi }
3423*53ee8cc1Swenshuai.xi
HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)3424*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_VQ_Block_Dis(MS_U32 vqId,MS_BOOL bDis)
3425*53ee8cc1Swenshuai.xi {
3426*53ee8cc1Swenshuai.xi if(bDis == TRUE)
3427*53ee8cc1Swenshuai.xi {
3428*53ee8cc1Swenshuai.xi switch(vqId)
3429*53ee8cc1Swenshuai.xi {
3430*53ee8cc1Swenshuai.xi case 0:
3431*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
3432*53ee8cc1Swenshuai.xi break;
3433*53ee8cc1Swenshuai.xi case 1:
3434*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
3435*53ee8cc1Swenshuai.xi break;
3436*53ee8cc1Swenshuai.xi case 2:
3437*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
3438*53ee8cc1Swenshuai.xi break;
3439*53ee8cc1Swenshuai.xi default:
3440*53ee8cc1Swenshuai.xi return FALSE;
3441*53ee8cc1Swenshuai.xi }
3442*53ee8cc1Swenshuai.xi }
3443*53ee8cc1Swenshuai.xi else
3444*53ee8cc1Swenshuai.xi {
3445*53ee8cc1Swenshuai.xi switch(vqId)
3446*53ee8cc1Swenshuai.xi {
3447*53ee8cc1Swenshuai.xi case 0:
3448*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX0_BLOCK_DIS);
3449*53ee8cc1Swenshuai.xi break;
3450*53ee8cc1Swenshuai.xi case 1:
3451*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX1_BLOCK_DIS);
3452*53ee8cc1Swenshuai.xi break;
3453*53ee8cc1Swenshuai.xi case 2:
3454*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160E, TSP_VQTX2_BLOCK_DIS);
3455*53ee8cc1Swenshuai.xi break;
3456*53ee8cc1Swenshuai.xi default:
3457*53ee8cc1Swenshuai.xi return FALSE;
3458*53ee8cc1Swenshuai.xi }
3459*53ee8cc1Swenshuai.xi }
3460*53ee8cc1Swenshuai.xi
3461*53ee8cc1Swenshuai.xi return TRUE;
3462*53ee8cc1Swenshuai.xi }
3463*53ee8cc1Swenshuai.xi
HAL_TSP_VQ_Enable(MS_BOOL bEn)3464*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Enable(MS_BOOL bEn)
3465*53ee8cc1Swenshuai.xi {
3466*53ee8cc1Swenshuai.xi if (bEn)
3467*53ee8cc1Swenshuai.xi {
3468*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
3469*53ee8cc1Swenshuai.xi }
3470*53ee8cc1Swenshuai.xi else
3471*53ee8cc1Swenshuai.xi {
3472*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->HW2_Config3, TSP_VQ_EN|TSP_VQ2PINGPONG_EN);
3473*53ee8cc1Swenshuai.xi }
3474*53ee8cc1Swenshuai.xi }
HAL_TSP_VQ_Reset(MS_U32 vqId,MS_BOOL bEn)3475*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_Reset(MS_U32 vqId, MS_BOOL bEn)
3476*53ee8cc1Swenshuai.xi {
3477*53ee8cc1Swenshuai.xi if(bEn)
3478*53ee8cc1Swenshuai.xi {
3479*53ee8cc1Swenshuai.xi switch(vqId)
3480*53ee8cc1Swenshuai.xi {
3481*53ee8cc1Swenshuai.xi case 0:
3482*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
3483*53ee8cc1Swenshuai.xi break;
3484*53ee8cc1Swenshuai.xi case 1:
3485*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
3486*53ee8cc1Swenshuai.xi break;
3487*53ee8cc1Swenshuai.xi case 2:
3488*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
3489*53ee8cc1Swenshuai.xi break;
3490*53ee8cc1Swenshuai.xi default:
3491*53ee8cc1Swenshuai.xi break;
3492*53ee8cc1Swenshuai.xi }
3493*53ee8cc1Swenshuai.xi }
3494*53ee8cc1Swenshuai.xi else
3495*53ee8cc1Swenshuai.xi {
3496*53ee8cc1Swenshuai.xi switch(vqId)
3497*53ee8cc1Swenshuai.xi {
3498*53ee8cc1Swenshuai.xi case 0:
3499*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_RESET);
3500*53ee8cc1Swenshuai.xi break;
3501*53ee8cc1Swenshuai.xi case 1:
3502*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_RESET);
3503*53ee8cc1Swenshuai.xi break;
3504*53ee8cc1Swenshuai.xi case 2:
3505*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_RESET);
3506*53ee8cc1Swenshuai.xi break;
3507*53ee8cc1Swenshuai.xi default:
3508*53ee8cc1Swenshuai.xi break;
3509*53ee8cc1Swenshuai.xi }
3510*53ee8cc1Swenshuai.xi }
3511*53ee8cc1Swenshuai.xi }
3512*53ee8cc1Swenshuai.xi
HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId,MS_BOOL bEn)3513*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_En(MS_U32 vqId, MS_BOOL bEn)
3514*53ee8cc1Swenshuai.xi {
3515*53ee8cc1Swenshuai.xi if(bEn)
3516*53ee8cc1Swenshuai.xi {
3517*53ee8cc1Swenshuai.xi switch(vqId)
3518*53ee8cc1Swenshuai.xi {
3519*53ee8cc1Swenshuai.xi case 0:
3520*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
3521*53ee8cc1Swenshuai.xi break;
3522*53ee8cc1Swenshuai.xi case 1:
3523*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
3524*53ee8cc1Swenshuai.xi break;
3525*53ee8cc1Swenshuai.xi case 2:
3526*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
3527*53ee8cc1Swenshuai.xi break;
3528*53ee8cc1Swenshuai.xi default:
3529*53ee8cc1Swenshuai.xi break;
3530*53ee8cc1Swenshuai.xi }
3531*53ee8cc1Swenshuai.xi }
3532*53ee8cc1Swenshuai.xi else
3533*53ee8cc1Swenshuai.xi {
3534*53ee8cc1Swenshuai.xi switch(vqId)
3535*53ee8cc1Swenshuai.xi {
3536*53ee8cc1Swenshuai.xi case 0:
3537*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_OVERFLOW_INT_EN);
3538*53ee8cc1Swenshuai.xi break;
3539*53ee8cc1Swenshuai.xi case 1:
3540*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_OVF_INT_EN);
3541*53ee8cc1Swenshuai.xi break;
3542*53ee8cc1Swenshuai.xi case 2:
3543*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_OVF_INT_EN);
3544*53ee8cc1Swenshuai.xi break;
3545*53ee8cc1Swenshuai.xi default:
3546*53ee8cc1Swenshuai.xi break;
3547*53ee8cc1Swenshuai.xi }
3548*53ee8cc1Swenshuai.xi }
3549*53ee8cc1Swenshuai.xi }
3550*53ee8cc1Swenshuai.xi
HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId,MS_BOOL bEn)3551*53ee8cc1Swenshuai.xi void HAL_TSP_VQ_OverflowInt_Clr(MS_U32 vqId, MS_BOOL bEn)
3552*53ee8cc1Swenshuai.xi {
3553*53ee8cc1Swenshuai.xi if(bEn)
3554*53ee8cc1Swenshuai.xi {
3555*53ee8cc1Swenshuai.xi switch(vqId)
3556*53ee8cc1Swenshuai.xi {
3557*53ee8cc1Swenshuai.xi case 0:
3558*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
3559*53ee8cc1Swenshuai.xi break;
3560*53ee8cc1Swenshuai.xi case 1:
3561*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
3562*53ee8cc1Swenshuai.xi break;
3563*53ee8cc1Swenshuai.xi case 2:
3564*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
3565*53ee8cc1Swenshuai.xi break;
3566*53ee8cc1Swenshuai.xi default:
3567*53ee8cc1Swenshuai.xi break;
3568*53ee8cc1Swenshuai.xi }
3569*53ee8cc1Swenshuai.xi }
3570*53ee8cc1Swenshuai.xi else
3571*53ee8cc1Swenshuai.xi {
3572*53ee8cc1Swenshuai.xi switch(vqId)
3573*53ee8cc1Swenshuai.xi {
3574*53ee8cc1Swenshuai.xi case 0:
3575*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ0_CTRL, TSP_VQ0_CLR_OVERFLOW_INT);
3576*53ee8cc1Swenshuai.xi break;
3577*53ee8cc1Swenshuai.xi case 1:
3578*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ1_Config, TSP_VQ1_CLR_OVF_INT);
3579*53ee8cc1Swenshuai.xi break;
3580*53ee8cc1Swenshuai.xi case 2:
3581*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->VQ2_Config, TSP_VQ2_CLR_OVF_INT);
3582*53ee8cc1Swenshuai.xi break;
3583*53ee8cc1Swenshuai.xi default:
3584*53ee8cc1Swenshuai.xi break;
3585*53ee8cc1Swenshuai.xi }
3586*53ee8cc1Swenshuai.xi }
3587*53ee8cc1Swenshuai.xi }
3588*53ee8cc1Swenshuai.xi
HAL_PVR_Init(MS_U32 u32PVREng,MS_U32 pktDmxId)3589*53ee8cc1Swenshuai.xi void HAL_PVR_Init(MS_U32 u32PVREng, MS_U32 pktDmxId)
3590*53ee8cc1Swenshuai.xi {
3591*53ee8cc1Swenshuai.xi switch(u32PVREng)
3592*53ee8cc1Swenshuai.xi {
3593*53ee8cc1Swenshuai.xi case 0:
3594*53ee8cc1Swenshuai.xi // PVR 1
3595*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
3596*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl->FIFO_Src), (REG16_R(&(_RegCtrl->FIFO_Src)) & ~TSP_PVR1_SRC_MASK) | (((MS_U16)pktDmxId) << TSP_PVR1_SRC_SHIFT));
3597*53ee8cc1Swenshuai.xi break;
3598*53ee8cc1Swenshuai.xi case 1:
3599*53ee8cc1Swenshuai.xi // PVR 2
3600*53ee8cc1Swenshuai.xi REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
3601*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));
3602*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));
3603*53ee8cc1Swenshuai.xi break;
3604*53ee8cc1Swenshuai.xi default:
3605*53ee8cc1Swenshuai.xi break;
3606*53ee8cc1Swenshuai.xi }
3607*53ee8cc1Swenshuai.xi }
3608*53ee8cc1Swenshuai.xi
HAL_PVR_Exit(MS_U32 u32PVREng)3609*53ee8cc1Swenshuai.xi void HAL_PVR_Exit(MS_U32 u32PVREng)
3610*53ee8cc1Swenshuai.xi {
3611*53ee8cc1Swenshuai.xi switch(u32PVREng)
3612*53ee8cc1Swenshuai.xi {
3613*53ee8cc1Swenshuai.xi case 0:
3614*53ee8cc1Swenshuai.xi //reset pvr control registers
3615*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->reg15b8), TSP_PVR1_PINGPONG);
3616*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR1_SRC_MASK);
3617*53ee8cc1Swenshuai.xi
3618*53ee8cc1Swenshuai.xi //reset write address
3619*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
3620*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
3621*53ee8cc1Swenshuai.xi break;
3622*53ee8cc1Swenshuai.xi case 1:
3623*53ee8cc1Swenshuai.xi //reset pvr control registers
3624*53ee8cc1Swenshuai.xi REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_REG_PINGPONG_EN);
3625*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->FIFO_Src), TSP_PVR2_SRC_MASK_L);
3626*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->PCR_Cfg), TSP_PVR2_SRC_MASK_H);
3627*53ee8cc1Swenshuai.xi
3628*53ee8cc1Swenshuai.xi //reset write address
3629*53ee8cc1Swenshuai.xi REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
3630*53ee8cc1Swenshuai.xi REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
3631*53ee8cc1Swenshuai.xi break;
3632*53ee8cc1Swenshuai.xi default:
3633*53ee8cc1Swenshuai.xi break;
3634*53ee8cc1Swenshuai.xi }
3635*53ee8cc1Swenshuai.xi
3636*53ee8cc1Swenshuai.xi //reset time-stamp
3637*53ee8cc1Swenshuai.xi HAL_PVR_SetPVRTimeStamp(u32PVREng,0);
3638*53ee8cc1Swenshuai.xi
3639*53ee8cc1Swenshuai.xi }
3640*53ee8cc1Swenshuai.xi
HAL_PVR_Start(MS_U32 u32PVREng)3641*53ee8cc1Swenshuai.xi void HAL_PVR_Start(MS_U32 u32PVREng)
3642*53ee8cc1Swenshuai.xi {
3643*53ee8cc1Swenshuai.xi switch(u32PVREng)
3644*53ee8cc1Swenshuai.xi {
3645*53ee8cc1Swenshuai.xi case 0:
3646*53ee8cc1Swenshuai.xi //reset write address
3647*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
3648*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_FLUSH);
3649*53ee8cc1Swenshuai.xi
3650*53ee8cc1Swenshuai.xi //enable string to miu
3651*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
3652*53ee8cc1Swenshuai.xi break;
3653*53ee8cc1Swenshuai.xi case 1:
3654*53ee8cc1Swenshuai.xi //reset write address
3655*53ee8cc1Swenshuai.xi REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
3656*53ee8cc1Swenshuai.xi REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_RST_WADR);
3657*53ee8cc1Swenshuai.xi
3658*53ee8cc1Swenshuai.xi //enable string to miu
3659*53ee8cc1Swenshuai.xi REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
3660*53ee8cc1Swenshuai.xi break;
3661*53ee8cc1Swenshuai.xi default:
3662*53ee8cc1Swenshuai.xi break;
3663*53ee8cc1Swenshuai.xi }
3664*53ee8cc1Swenshuai.xi }
3665*53ee8cc1Swenshuai.xi
HAL_PVR_Stop(MS_U32 u32PVREng)3666*53ee8cc1Swenshuai.xi void HAL_PVR_Stop(MS_U32 u32PVREng)
3667*53ee8cc1Swenshuai.xi {
3668*53ee8cc1Swenshuai.xi switch(u32PVREng)
3669*53ee8cc1Swenshuai.xi {
3670*53ee8cc1Swenshuai.xi case 0:
3671*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_ENABLE);
3672*53ee8cc1Swenshuai.xi break;
3673*53ee8cc1Swenshuai.xi case 1:
3674*53ee8cc1Swenshuai.xi REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_EN);
3675*53ee8cc1Swenshuai.xi break;
3676*53ee8cc1Swenshuai.xi default:
3677*53ee8cc1Swenshuai.xi break;
3678*53ee8cc1Swenshuai.xi }
3679*53ee8cc1Swenshuai.xi }
3680*53ee8cc1Swenshuai.xi
HAL_PVR_Pause(MS_U32 u32PVREng,MS_BOOL bPause)3681*53ee8cc1Swenshuai.xi void HAL_PVR_Pause(MS_U32 u32PVREng , MS_BOOL bPause)
3682*53ee8cc1Swenshuai.xi {
3683*53ee8cc1Swenshuai.xi if(bPause)
3684*53ee8cc1Swenshuai.xi {
3685*53ee8cc1Swenshuai.xi switch(u32PVREng)
3686*53ee8cc1Swenshuai.xi {
3687*53ee8cc1Swenshuai.xi case 0:
3688*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
3689*53ee8cc1Swenshuai.xi break;
3690*53ee8cc1Swenshuai.xi case 1:
3691*53ee8cc1Swenshuai.xi REG32_SET(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
3692*53ee8cc1Swenshuai.xi break;
3693*53ee8cc1Swenshuai.xi default:
3694*53ee8cc1Swenshuai.xi break;
3695*53ee8cc1Swenshuai.xi }
3696*53ee8cc1Swenshuai.xi }
3697*53ee8cc1Swenshuai.xi else
3698*53ee8cc1Swenshuai.xi {
3699*53ee8cc1Swenshuai.xi switch(u32PVREng)
3700*53ee8cc1Swenshuai.xi {
3701*53ee8cc1Swenshuai.xi case 0:
3702*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->Hw_PVRCfg), TSP_HW_CFG4_PVR_PAUSE);
3703*53ee8cc1Swenshuai.xi break;
3704*53ee8cc1Swenshuai.xi case 1:
3705*53ee8cc1Swenshuai.xi REG32_CLR(&(_RegCtrl->PVR2_Config), TSP_PVR2_STR2MIU_PAUSE);
3706*53ee8cc1Swenshuai.xi break;
3707*53ee8cc1Swenshuai.xi default:
3708*53ee8cc1Swenshuai.xi break;
3709*53ee8cc1Swenshuai.xi }
3710*53ee8cc1Swenshuai.xi }
3711*53ee8cc1Swenshuai.xi }
3712*53ee8cc1Swenshuai.xi
HAL_PVR_RecPid(MS_U32 u32PVREng,MS_BOOL bSet)3713*53ee8cc1Swenshuai.xi void HAL_PVR_RecPid(MS_U32 u32PVREng , MS_BOOL bSet)
3714*53ee8cc1Swenshuai.xi {
3715*53ee8cc1Swenshuai.xi if(bSet)
3716*53ee8cc1Swenshuai.xi {
3717*53ee8cc1Swenshuai.xi switch(u32PVREng)
3718*53ee8cc1Swenshuai.xi {
3719*53ee8cc1Swenshuai.xi case 0:
3720*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
3721*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
3722*53ee8cc1Swenshuai.xi break;
3723*53ee8cc1Swenshuai.xi case 1:
3724*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
3725*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
3726*53ee8cc1Swenshuai.xi break;
3727*53ee8cc1Swenshuai.xi default:
3728*53ee8cc1Swenshuai.xi break;
3729*53ee8cc1Swenshuai.xi }
3730*53ee8cc1Swenshuai.xi }
3731*53ee8cc1Swenshuai.xi else
3732*53ee8cc1Swenshuai.xi {
3733*53ee8cc1Swenshuai.xi switch(u32PVREng)
3734*53ee8cc1Swenshuai.xi {
3735*53ee8cc1Swenshuai.xi case 0:
3736*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS);
3737*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR1_REC_ALL_EN);
3738*53ee8cc1Swenshuai.xi break;
3739*53ee8cc1Swenshuai.xi case 1:
3740*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->reg15b4), TSP_PVR_PID_BYPASS2);
3741*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->PVRConfig), TSP_PVR2_REC_ALL_EN);
3742*53ee8cc1Swenshuai.xi break;
3743*53ee8cc1Swenshuai.xi default:
3744*53ee8cc1Swenshuai.xi break;
3745*53ee8cc1Swenshuai.xi }
3746*53ee8cc1Swenshuai.xi }
3747*53ee8cc1Swenshuai.xi }
3748*53ee8cc1Swenshuai.xi
HAL_PVR_RecNull(MS_BOOL bSet)3749*53ee8cc1Swenshuai.xi void HAL_PVR_RecNull(MS_BOOL bSet)
3750*53ee8cc1Swenshuai.xi {
3751*53ee8cc1Swenshuai.xi if(bSet == TRUE)
3752*53ee8cc1Swenshuai.xi {
3753*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
3754*53ee8cc1Swenshuai.xi }
3755*53ee8cc1Swenshuai.xi else
3756*53ee8cc1Swenshuai.xi {
3757*53ee8cc1Swenshuai.xi REG16_CLR(&(_RegCtrl->PVRConfig), TSP_REC_NULL);
3758*53ee8cc1Swenshuai.xi }
3759*53ee8cc1Swenshuai.xi }
3760*53ee8cc1Swenshuai.xi
HAL_PVR_SetBuf(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32BufSize0,MS_U32 u32StartAddr1,MS_U32 u32BufSize1)3761*53ee8cc1Swenshuai.xi void HAL_PVR_SetBuf(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32BufSize0, MS_U32 u32StartAddr1, MS_U32 u32BufSize1)
3762*53ee8cc1Swenshuai.xi {
3763*53ee8cc1Swenshuai.xi MS_U32 u32EndAddr0 = u32StartAddr0 + u32BufSize0;
3764*53ee8cc1Swenshuai.xi MS_U32 u32EndAddr1 = u32StartAddr1 + u32BufSize1;
3765*53ee8cc1Swenshuai.xi //MS_U32 u32Temp;
3766*53ee8cc1Swenshuai.xi switch(u32PVREng)
3767*53ee8cc1Swenshuai.xi {
3768*53ee8cc1Swenshuai.xi case 0:
3769*53ee8cc1Swenshuai.xi //head1
3770*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->TsRec_Head, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3771*53ee8cc1Swenshuai.xi //end1
3772*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3773*53ee8cc1Swenshuai.xi //mid1
3774*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (u32StartAddr0>>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3775*53ee8cc1Swenshuai.xi
3776*53ee8cc1Swenshuai.xi //head2
3777*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_head2pvr1, (u32StartAddr1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
3778*53ee8cc1Swenshuai.xi //end2
3779*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
3780*53ee8cc1Swenshuai.xi //mid2
3781*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (u32StartAddr1>>MIU_BUS) & TSP_HW_PVR1_BUF_MID2_MASK);
3782*53ee8cc1Swenshuai.xi break;
3783*53ee8cc1Swenshuai.xi case 1:
3784*53ee8cc1Swenshuai.xi //head1
3785*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3786*53ee8cc1Swenshuai.xi //end1
3787*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3788*53ee8cc1Swenshuai.xi //mid1
3789*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (u32StartAddr0>>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3790*53ee8cc1Swenshuai.xi
3791*53ee8cc1Swenshuai.xi //head2
3792*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (u32StartAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3793*53ee8cc1Swenshuai.xi //end2
3794*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3795*53ee8cc1Swenshuai.xi //mid2
3796*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (u32StartAddr1>>MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3797*53ee8cc1Swenshuai.xi break;
3798*53ee8cc1Swenshuai.xi default:
3799*53ee8cc1Swenshuai.xi break;
3800*53ee8cc1Swenshuai.xi }
3801*53ee8cc1Swenshuai.xi }
3802*53ee8cc1Swenshuai.xi
HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng,MS_U32 u32StartAddr0,MS_U32 u32StartAddr1)3803*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_StartAddr(MS_U32 u32PVREng , MS_U32 u32StartAddr0, MS_U32 u32StartAddr1)
3804*53ee8cc1Swenshuai.xi {
3805*53ee8cc1Swenshuai.xi //MS_U32 u32Temp;
3806*53ee8cc1Swenshuai.xi switch(u32PVREng)
3807*53ee8cc1Swenshuai.xi {
3808*53ee8cc1Swenshuai.xi case 0:
3809*53ee8cc1Swenshuai.xi //head1
3810*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->TsRec_Head, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3811*53ee8cc1Swenshuai.xi
3812*53ee8cc1Swenshuai.xi //head2
3813*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_head2pvr1, (u32StartAddr1>> MIU_BUS) & TSP_HW_PVR1_BUF_HEAD2_MASK);
3814*53ee8cc1Swenshuai.xi break;
3815*53ee8cc1Swenshuai.xi case 1:
3816*53ee8cc1Swenshuai.xi //head1
3817*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_head1_pvr2, (u32StartAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3818*53ee8cc1Swenshuai.xi
3819*53ee8cc1Swenshuai.xi //head2
3820*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_head2_pvr2, (u32StartAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3821*53ee8cc1Swenshuai.xi
3822*53ee8cc1Swenshuai.xi break;
3823*53ee8cc1Swenshuai.xi default:
3824*53ee8cc1Swenshuai.xi break;
3825*53ee8cc1Swenshuai.xi }
3826*53ee8cc1Swenshuai.xi }
3827*53ee8cc1Swenshuai.xi
HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng,MS_U32 u32MidAddr0,MS_U32 u32MidAddr1)3828*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_MidAddr(MS_U32 u32PVREng , MS_U32 u32MidAddr0, MS_U32 u32MidAddr1)
3829*53ee8cc1Swenshuai.xi {
3830*53ee8cc1Swenshuai.xi switch(u32PVREng)
3831*53ee8cc1Swenshuai.xi {
3832*53ee8cc1Swenshuai.xi case 0:
3833*53ee8cc1Swenshuai.xi //mid1
3834*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->TsRec_Mid_PVR1_WPTR), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
3835*53ee8cc1Swenshuai.xi
3836*53ee8cc1Swenshuai.xi //mid2
3837*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_mid2pvr1), (u32MidAddr1>>4) & TSP_HW_PVR1_BUF_MID2_MASK);
3838*53ee8cc1Swenshuai.xi break;
3839*53ee8cc1Swenshuai.xi case 1:
3840*53ee8cc1Swenshuai.xi //mid1
3841*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_mid1_wptr_pvr2), (u32MidAddr0>>4) & TSP_STR2MI2_ADDR_MASK);
3842*53ee8cc1Swenshuai.xi
3843*53ee8cc1Swenshuai.xi //mid2
3844*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_mid2_pvr2), (u32MidAddr1>>4) & TSP_STR2MI2_ADDR_MASK);
3845*53ee8cc1Swenshuai.xi break;
3846*53ee8cc1Swenshuai.xi default:
3847*53ee8cc1Swenshuai.xi break;
3848*53ee8cc1Swenshuai.xi }
3849*53ee8cc1Swenshuai.xi }
3850*53ee8cc1Swenshuai.xi
HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng,MS_U32 u32EndAddr0,MS_U32 u32EndAddr1)3851*53ee8cc1Swenshuai.xi void HAL_PVR_SetStr2Miu_EndAddr(MS_U32 u32PVREng , MS_U32 u32EndAddr0, MS_U32 u32EndAddr1)
3852*53ee8cc1Swenshuai.xi {
3853*53ee8cc1Swenshuai.xi switch(u32PVREng)
3854*53ee8cc1Swenshuai.xi {
3855*53ee8cc1Swenshuai.xi case 0:
3856*53ee8cc1Swenshuai.xi //end1
3857*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->TsRec_Tail), (u32EndAddr0 >> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3858*53ee8cc1Swenshuai.xi
3859*53ee8cc1Swenshuai.xi //end2
3860*53ee8cc1Swenshuai.xi REG32_W(&(_RegCtrl->Str2mi_tail2pvr1), (u32EndAddr1 >> MIU_BUS) &TSP_HW_PVR1_BUF_TAIL2_MASK);
3861*53ee8cc1Swenshuai.xi break;
3862*53ee8cc1Swenshuai.xi case 1:
3863*53ee8cc1Swenshuai.xi //end1
3864*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_tail1_pvr2, (u32EndAddr0>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3865*53ee8cc1Swenshuai.xi
3866*53ee8cc1Swenshuai.xi //end2
3867*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->Str2mi_tail2_pvr2, (u32EndAddr1>> MIU_BUS) & TSP_STR2MI2_ADDR_MASK);
3868*53ee8cc1Swenshuai.xi break;
3869*53ee8cc1Swenshuai.xi default:
3870*53ee8cc1Swenshuai.xi break;
3871*53ee8cc1Swenshuai.xi }
3872*53ee8cc1Swenshuai.xi }
3873*53ee8cc1Swenshuai.xi
HAL_PVR_GetWritePtr(MS_U32 u32PVREng)3874*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetWritePtr(MS_U32 u32PVREng)
3875*53ee8cc1Swenshuai.xi {
3876*53ee8cc1Swenshuai.xi switch(u32PVREng)
3877*53ee8cc1Swenshuai.xi {
3878*53ee8cc1Swenshuai.xi case 0:
3879*53ee8cc1Swenshuai.xi return (REG32_R(&_RegCtrl->TsRec_Mid_PVR1_WPTR) << MIU_BUS);
3880*53ee8cc1Swenshuai.xi break;
3881*53ee8cc1Swenshuai.xi case 1:
3882*53ee8cc1Swenshuai.xi return (REG32_R(&_RegCtrl->Str2mi_mid1_wptr_pvr2) << MIU_BUS);
3883*53ee8cc1Swenshuai.xi break;
3884*53ee8cc1Swenshuai.xi default:
3885*53ee8cc1Swenshuai.xi break;
3886*53ee8cc1Swenshuai.xi }
3887*53ee8cc1Swenshuai.xi return 0;
3888*53ee8cc1Swenshuai.xi }
3889*53ee8cc1Swenshuai.xi
3890*53ee8cc1Swenshuai.xi
HAL_PVR_GetEngSrc(MS_U32 u32EngDst,TSP_SRC_SEQ * eSrc)3891*53ee8cc1Swenshuai.xi void HAL_PVR_GetEngSrc(MS_U32 u32EngDst, TSP_SRC_SEQ *eSrc)
3892*53ee8cc1Swenshuai.xi {
3893*53ee8cc1Swenshuai.xi MS_U16 u16Value = 0;
3894*53ee8cc1Swenshuai.xi
3895*53ee8cc1Swenshuai.xi switch(u32EngDst)
3896*53ee8cc1Swenshuai.xi {
3897*53ee8cc1Swenshuai.xi case 0:
3898*53ee8cc1Swenshuai.xi // PVR 1
3899*53ee8cc1Swenshuai.xi *eSrc = ((REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR1_SRC_MASK) >> TSP_PVR1_SRC_SHIFT);
3900*53ee8cc1Swenshuai.xi break;
3901*53ee8cc1Swenshuai.xi case 1:
3902*53ee8cc1Swenshuai.xi // PVR 2
3903*53ee8cc1Swenshuai.xi u16Value = (REG16_R(&(_RegCtrl->FIFO_Src)) & TSP_PVR2_SRC_MASK_L)>> TSP_PVR2_SRC_SHIFT_L;
3904*53ee8cc1Swenshuai.xi u16Value |= ((REG16_R(&(_RegCtrl->PCR_Cfg)) & TSP_PVR2_SRC_MASK_H) << 1);
3905*53ee8cc1Swenshuai.xi *eSrc = (TSP_SRC_SEQ)u16Value;
3906*53ee8cc1Swenshuai.xi break;
3907*53ee8cc1Swenshuai.xi default:
3908*53ee8cc1Swenshuai.xi break;
3909*53ee8cc1Swenshuai.xi }
3910*53ee8cc1Swenshuai.xi }
3911*53ee8cc1Swenshuai.xi
3912*53ee8cc1Swenshuai.xi
3913*53ee8cc1Swenshuai.xi // kaiser Only!!!
HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)3914*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_FilePath2Tsif_Mapping(MS_U32 u32FileEng)
3915*53ee8cc1Swenshuai.xi {
3916*53ee8cc1Swenshuai.xi switch (u32FileEng)
3917*53ee8cc1Swenshuai.xi {
3918*53ee8cc1Swenshuai.xi case 0: //File in Eng 0
3919*53ee8cc1Swenshuai.xi return E_FILEENG_TSIF1;
3920*53ee8cc1Swenshuai.xi case 1: //File in Eng 1
3921*53ee8cc1Swenshuai.xi return E_FILEENG_TSIF2;
3922*53ee8cc1Swenshuai.xi case 2: //File in Eng 2
3923*53ee8cc1Swenshuai.xi return E_FILEENG_TSIF0;
3924*53ee8cc1Swenshuai.xi default:
3925*53ee8cc1Swenshuai.xi return E_FILEENG_INVALID;
3926*53ee8cc1Swenshuai.xi }
3927*53ee8cc1Swenshuai.xi }
3928*53ee8cc1Swenshuai.xi
3929*53ee8cc1Swenshuai.xi // @NOTE for backward competible when calling flowset pvr
3930*53ee8cc1Swenshuai.xi // kaiser Only!!!
HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)3931*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Eng2PktDmx_Mapping(MS_U32 u32Eng)
3932*53ee8cc1Swenshuai.xi {
3933*53ee8cc1Swenshuai.xi switch(u32Eng)
3934*53ee8cc1Swenshuai.xi {
3935*53ee8cc1Swenshuai.xi case 0:
3936*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX0;
3937*53ee8cc1Swenshuai.xi case 1:
3938*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX1;
3939*53ee8cc1Swenshuai.xi case 2:
3940*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX2;
3941*53ee8cc1Swenshuai.xi default:
3942*53ee8cc1Swenshuai.xi return E_TSP_SRC_INVALID;
3943*53ee8cc1Swenshuai.xi }
3944*53ee8cc1Swenshuai.xi }
3945*53ee8cc1Swenshuai.xi
3946*53ee8cc1Swenshuai.xi // kaiser Only!!!
HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF,MS_BOOL bFileIn)3947*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_TsifMapping(TSP_HAL_TSIF eTSIF, MS_BOOL bFileIn)
3948*53ee8cc1Swenshuai.xi {
3949*53ee8cc1Swenshuai.xi MS_U32 u32PhyTSIF = 0;
3950*53ee8cc1Swenshuai.xi switch (eTSIF)
3951*53ee8cc1Swenshuai.xi {
3952*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSIF_0:
3953*53ee8cc1Swenshuai.xi if(bFileIn)
3954*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF1; // @NOTE tsif1 is used for playback0 file-in
3955*53ee8cc1Swenshuai.xi else
3956*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF0;
3957*53ee8cc1Swenshuai.xi break;
3958*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSIF_1:
3959*53ee8cc1Swenshuai.xi if(bFileIn)
3960*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF2;
3961*53ee8cc1Swenshuai.xi else
3962*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF2;
3963*53ee8cc1Swenshuai.xi break;
3964*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSIF_2:
3965*53ee8cc1Swenshuai.xi if(bFileIn)
3966*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF0;
3967*53ee8cc1Swenshuai.xi else
3968*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF1;
3969*53ee8cc1Swenshuai.xi break;
3970*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSIF_PVR0:
3971*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF0;
3972*53ee8cc1Swenshuai.xi break;
3973*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSIF_PVR1:
3974*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF1;
3975*53ee8cc1Swenshuai.xi break;
3976*53ee8cc1Swenshuai.xi case E_TSP_HAL_TSIF_PVR2:
3977*53ee8cc1Swenshuai.xi u32PhyTSIF = TSP_TSIF2;
3978*53ee8cc1Swenshuai.xi break;
3979*53ee8cc1Swenshuai.xi default:
3980*53ee8cc1Swenshuai.xi printf("[PVR ERROR][%s][%d] mapping TSIF error\n",__FUNCTION__,__LINE__);
3981*53ee8cc1Swenshuai.xi break;
3982*53ee8cc1Swenshuai.xi }
3983*53ee8cc1Swenshuai.xi
3984*53ee8cc1Swenshuai.xi return u32PhyTSIF;
3985*53ee8cc1Swenshuai.xi }
3986*53ee8cc1Swenshuai.xi
3987*53ee8cc1Swenshuai.xi
3988*53ee8cc1Swenshuai.xi // kaiser Only!!!
HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)3989*53ee8cc1Swenshuai.xi TSP_PIDFLT_SRC HAL_TSP_PktDmx2FltSrc_Mapping(TSP_SRC_SEQ eSrc)
3990*53ee8cc1Swenshuai.xi {
3991*53ee8cc1Swenshuai.xi // @NOTE we map hw pkt dmx setting to api layer flow at this function
3992*53ee8cc1Swenshuai.xi
3993*53ee8cc1Swenshuai.xi TSP_PIDFLT_SRC ePidFltSrc = E_TSP_PIDFLT_INVALID;
3994*53ee8cc1Swenshuai.xi
3995*53ee8cc1Swenshuai.xi switch (eSrc)
3996*53ee8cc1Swenshuai.xi {
3997*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX0:
3998*53ee8cc1Swenshuai.xi ePidFltSrc = E_TSP_PIDFLT_LIVE0;
3999*53ee8cc1Swenshuai.xi break;
4000*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX1:
4001*53ee8cc1Swenshuai.xi ePidFltSrc = E_TSP_PIDFLT_FILE0;
4002*53ee8cc1Swenshuai.xi break;
4003*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX2:
4004*53ee8cc1Swenshuai.xi ePidFltSrc = E_TSP_PIDFLT_LIVE1;
4005*53ee8cc1Swenshuai.xi break;
4006*53ee8cc1Swenshuai.xi default:
4007*53ee8cc1Swenshuai.xi // @TODO add assert
4008*53ee8cc1Swenshuai.xi printf ("[TSP_ERR][%s][%d] Wrong Engine Source!!\n", __FUNCTION__,__LINE__);
4009*53ee8cc1Swenshuai.xi break;
4010*53ee8cc1Swenshuai.xi }
4011*53ee8cc1Swenshuai.xi
4012*53ee8cc1Swenshuai.xi return ePidFltSrc;
4013*53ee8cc1Swenshuai.xi }
4014*53ee8cc1Swenshuai.xi
HAL_TSP_GetDefaultFileinEng(void)4015*53ee8cc1Swenshuai.xi FILEENG_SEQ HAL_TSP_GetDefaultFileinEng(void)
4016*53ee8cc1Swenshuai.xi {
4017*53ee8cc1Swenshuai.xi return E_FILEENG_TSIF1;
4018*53ee8cc1Swenshuai.xi }
4019*53ee8cc1Swenshuai.xi
HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType,MS_U32 u32Eng)4020*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_PidFltDstMapping(TSP_PIDFLT_DST eDstType, MS_U32 u32Eng)
4021*53ee8cc1Swenshuai.xi {
4022*53ee8cc1Swenshuai.xi if(eDstType == E_TSP_PIDFLT_DST_VIDEO)
4023*53ee8cc1Swenshuai.xi {
4024*53ee8cc1Swenshuai.xi switch(u32Eng)
4025*53ee8cc1Swenshuai.xi {
4026*53ee8cc1Swenshuai.xi case 0:
4027*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_VFIFO;
4028*53ee8cc1Swenshuai.xi case 1:
4029*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_VFIFO3D;
4030*53ee8cc1Swenshuai.xi default:
4031*53ee8cc1Swenshuai.xi printf("[TSP ERROR][%s][%d] mapping Vfifo eng error\n", __FUNCTION__, __LINE__);
4032*53ee8cc1Swenshuai.xi return 0;
4033*53ee8cc1Swenshuai.xi }
4034*53ee8cc1Swenshuai.xi }
4035*53ee8cc1Swenshuai.xi else if(eDstType == E_TSP_PIDFLT_DST_AUDIO)
4036*53ee8cc1Swenshuai.xi {
4037*53ee8cc1Swenshuai.xi switch(u32Eng)
4038*53ee8cc1Swenshuai.xi {
4039*53ee8cc1Swenshuai.xi case 0:
4040*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_AFIFO;
4041*53ee8cc1Swenshuai.xi case 1:
4042*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_AFIFO2;
4043*53ee8cc1Swenshuai.xi case 2:
4044*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_AFIFO3;
4045*53ee8cc1Swenshuai.xi case 3:
4046*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_AFIFO4;
4047*53ee8cc1Swenshuai.xi default:
4048*53ee8cc1Swenshuai.xi printf("[TSP ERROR][%s][%d] mapping Afifo eng error\n", __FUNCTION__, __LINE__);
4049*53ee8cc1Swenshuai.xi return 0;
4050*53ee8cc1Swenshuai.xi }
4051*53ee8cc1Swenshuai.xi }
4052*53ee8cc1Swenshuai.xi else if(eDstType == E_TSP_PIDFLT_DST_PVR)
4053*53ee8cc1Swenshuai.xi {
4054*53ee8cc1Swenshuai.xi switch(u32Eng)
4055*53ee8cc1Swenshuai.xi {
4056*53ee8cc1Swenshuai.xi case 0:
4057*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_PVR1;
4058*53ee8cc1Swenshuai.xi case 1:
4059*53ee8cc1Swenshuai.xi return TSP_PIDFLT_OUT_PVR2;
4060*53ee8cc1Swenshuai.xi default:
4061*53ee8cc1Swenshuai.xi printf("[TSP ERROR][%s][%d] mapping PVR eng error\n", __FUNCTION__, __LINE__);
4062*53ee8cc1Swenshuai.xi return 0;
4063*53ee8cc1Swenshuai.xi }
4064*53ee8cc1Swenshuai.xi }
4065*53ee8cc1Swenshuai.xi else
4066*53ee8cc1Swenshuai.xi {
4067*53ee8cc1Swenshuai.xi printf("[TSP ERROR][%s][%d] pid filter destination type error\n", __FUNCTION__, __LINE__);
4068*53ee8cc1Swenshuai.xi return 0;
4069*53ee8cc1Swenshuai.xi }
4070*53ee8cc1Swenshuai.xi }
4071*53ee8cc1Swenshuai.xi
HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif)4072*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_Tsif2Fq_Mapping(MS_U32 u32Tsif) //TODO: fiq mux
4073*53ee8cc1Swenshuai.xi {
4074*53ee8cc1Swenshuai.xi MS_U32 u32Fq = 0;
4075*53ee8cc1Swenshuai.xi
4076*53ee8cc1Swenshuai.xi switch (u32Tsif)
4077*53ee8cc1Swenshuai.xi {
4078*53ee8cc1Swenshuai.xi case 0:
4079*53ee8cc1Swenshuai.xi case 1:
4080*53ee8cc1Swenshuai.xi case 2:
4081*53ee8cc1Swenshuai.xi u32Fq = 0;
4082*53ee8cc1Swenshuai.xi break;
4083*53ee8cc1Swenshuai.xi default:
4084*53ee8cc1Swenshuai.xi printf("[PVR ERROR][%s][%d] mapping TSIF:%u error\n",__FUNCTION__,__LINE__,(unsigned int)u32Tsif);
4085*53ee8cc1Swenshuai.xi break;
4086*53ee8cc1Swenshuai.xi }
4087*53ee8cc1Swenshuai.xi
4088*53ee8cc1Swenshuai.xi return u32Fq;
4089*53ee8cc1Swenshuai.xi }
4090*53ee8cc1Swenshuai.xi
HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)4091*53ee8cc1Swenshuai.xi TSP_TS_PAD HAL_TSP_3WirePadMapping(MS_U8 u8Pad3WireId)
4092*53ee8cc1Swenshuai.xi {
4093*53ee8cc1Swenshuai.xi switch(u8Pad3WireId)
4094*53ee8cc1Swenshuai.xi {
4095*53ee8cc1Swenshuai.xi case 0:
4096*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT3;
4097*53ee8cc1Swenshuai.xi case 1:
4098*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT4;
4099*53ee8cc1Swenshuai.xi case 2:
4100*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT5;
4101*53ee8cc1Swenshuai.xi case 3:
4102*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT6;
4103*53ee8cc1Swenshuai.xi default:
4104*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));
4105*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_INVALID;
4106*53ee8cc1Swenshuai.xi }
4107*53ee8cc1Swenshuai.xi }
4108*53ee8cc1Swenshuai.xi
HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng,MS_BOOL bSet)4109*53ee8cc1Swenshuai.xi void HAL_PVR_SetStrPacketMode(MS_U32 u32PVREng , MS_BOOL bSet)
4110*53ee8cc1Swenshuai.xi {
4111*53ee8cc1Swenshuai.xi if(bSet)
4112*53ee8cc1Swenshuai.xi {
4113*53ee8cc1Swenshuai.xi switch(u32PVREng)
4114*53ee8cc1Swenshuai.xi {
4115*53ee8cc1Swenshuai.xi case 0:
4116*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_RECORD192_EN);
4117*53ee8cc1Swenshuai.xi break;
4118*53ee8cc1Swenshuai.xi case 1:
4119*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
4120*53ee8cc1Swenshuai.xi break;
4121*53ee8cc1Swenshuai.xi default:
4122*53ee8cc1Swenshuai.xi break;
4123*53ee8cc1Swenshuai.xi }
4124*53ee8cc1Swenshuai.xi }
4125*53ee8cc1Swenshuai.xi else
4126*53ee8cc1Swenshuai.xi {
4127*53ee8cc1Swenshuai.xi switch(u32PVREng)
4128*53ee8cc1Swenshuai.xi {
4129*53ee8cc1Swenshuai.xi case 0:
4130*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C, TSP_RECORD192_EN);
4131*53ee8cc1Swenshuai.xi break;
4132*53ee8cc1Swenshuai.xi case 1:
4133*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PKT192_EN);
4134*53ee8cc1Swenshuai.xi break;
4135*53ee8cc1Swenshuai.xi default:
4136*53ee8cc1Swenshuai.xi break;
4137*53ee8cc1Swenshuai.xi }
4138*53ee8cc1Swenshuai.xi }
4139*53ee8cc1Swenshuai.xi }
4140*53ee8cc1Swenshuai.xi
HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)4141*53ee8cc1Swenshuai.xi MS_U32 HAL_PVR_GetPVRTimeStamp(MS_U32 u32PVREng)
4142*53ee8cc1Swenshuai.xi {
4143*53ee8cc1Swenshuai.xi MS_U32 u32lpcr = 0;
4144*53ee8cc1Swenshuai.xi switch(u32PVREng)
4145*53ee8cc1Swenshuai.xi {
4146*53ee8cc1Swenshuai.xi case 0:
4147*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
4148*53ee8cc1Swenshuai.xi
4149*53ee8cc1Swenshuai.xi u32lpcr = REG32_R(&_RegCtrl->PVR1_LPcr1);
4150*53ee8cc1Swenshuai.xi
4151*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_RLD);
4152*53ee8cc1Swenshuai.xi
4153*53ee8cc1Swenshuai.xi return u32lpcr;
4154*53ee8cc1Swenshuai.xi case 1:
4155*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
4156*53ee8cc1Swenshuai.xi
4157*53ee8cc1Swenshuai.xi u32lpcr = REG32_R(&_RegCtrl->PVR2_LPCR1);
4158*53ee8cc1Swenshuai.xi
4159*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_RLD);
4160*53ee8cc1Swenshuai.xi return u32lpcr;
4161*53ee8cc1Swenshuai.xi default:
4162*53ee8cc1Swenshuai.xi break;
4163*53ee8cc1Swenshuai.xi }
4164*53ee8cc1Swenshuai.xi return 0;
4165*53ee8cc1Swenshuai.xi }
4166*53ee8cc1Swenshuai.xi
HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng,MS_U32 u32Stamp)4167*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp(MS_U32 u32PVREng , MS_U32 u32Stamp)
4168*53ee8cc1Swenshuai.xi {
4169*53ee8cc1Swenshuai.xi switch(u32PVREng)
4170*53ee8cc1Swenshuai.xi {
4171*53ee8cc1Swenshuai.xi case 0:
4172*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
4173*53ee8cc1Swenshuai.xi
4174*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->PVR1_LPcr1, u32Stamp);
4175*53ee8cc1Swenshuai.xi
4176*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C, TSP_PVR1_LPCR1_WLD);
4177*53ee8cc1Swenshuai.xi break;
4178*53ee8cc1Swenshuai.xi case 1:
4179*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
4180*53ee8cc1Swenshuai.xi
4181*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->PVR2_LPCR1, u32Stamp);
4182*53ee8cc1Swenshuai.xi
4183*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_LPCR1_WLD);
4184*53ee8cc1Swenshuai.xi break;
4185*53ee8cc1Swenshuai.xi default:
4186*53ee8cc1Swenshuai.xi break;
4187*53ee8cc1Swenshuai.xi }
4188*53ee8cc1Swenshuai.xi }
4189*53ee8cc1Swenshuai.xi
HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng,MS_U32 u32Stamp)4190*53ee8cc1Swenshuai.xi void HAL_PVR_SetPVRTimeStamp_Stream(MS_U32 u32PVREng , MS_U32 u32Stamp)
4191*53ee8cc1Swenshuai.xi {
4192*53ee8cc1Swenshuai.xi switch(u32PVREng)
4193*53ee8cc1Swenshuai.xi {
4194*53ee8cc1Swenshuai.xi case 0:
4195*53ee8cc1Swenshuai.xi REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
4196*53ee8cc1Swenshuai.xi
4197*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_56_57, u32Stamp);
4198*53ee8cc1Swenshuai.xi
4199*53ee8cc1Swenshuai.xi REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD0);
4200*53ee8cc1Swenshuai.xi break;
4201*53ee8cc1Swenshuai.xi case 1:
4202*53ee8cc1Swenshuai.xi REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
4203*53ee8cc1Swenshuai.xi
4204*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl2->CFG_58_59, u32Stamp);
4205*53ee8cc1Swenshuai.xi
4206*53ee8cc1Swenshuai.xi REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_WLD1);
4207*53ee8cc1Swenshuai.xi break;
4208*53ee8cc1Swenshuai.xi default:
4209*53ee8cc1Swenshuai.xi break;
4210*53ee8cc1Swenshuai.xi }
4211*53ee8cc1Swenshuai.xi }
4212*53ee8cc1Swenshuai.xi
HAL_PVR_Alignment_Enable(MS_U32 u32PVREng,MS_BOOL bEnable)4213*53ee8cc1Swenshuai.xi void HAL_PVR_Alignment_Enable(MS_U32 u32PVREng, MS_BOOL bEnable)
4214*53ee8cc1Swenshuai.xi {
4215*53ee8cc1Swenshuai.xi if(bEnable)
4216*53ee8cc1Swenshuai.xi {
4217*53ee8cc1Swenshuai.xi switch(u32PVREng)
4218*53ee8cc1Swenshuai.xi {
4219*53ee8cc1Swenshuai.xi case 0:
4220*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
4221*53ee8cc1Swenshuai.xi break;
4222*53ee8cc1Swenshuai.xi case 1:
4223*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
4224*53ee8cc1Swenshuai.xi break;
4225*53ee8cc1Swenshuai.xi default:
4226*53ee8cc1Swenshuai.xi break;
4227*53ee8cc1Swenshuai.xi }
4228*53ee8cc1Swenshuai.xi }
4229*53ee8cc1Swenshuai.xi else
4230*53ee8cc1Swenshuai.xi {
4231*53ee8cc1Swenshuai.xi switch(u32PVREng)
4232*53ee8cc1Swenshuai.xi {
4233*53ee8cc1Swenshuai.xi case 0:
4234*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->HW2_Config3, TSP_PVR1_ALIGN_EN);
4235*53ee8cc1Swenshuai.xi break;
4236*53ee8cc1Swenshuai.xi case 1:
4237*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_PVR_ALIGN_EN);
4238*53ee8cc1Swenshuai.xi break;
4239*53ee8cc1Swenshuai.xi default:
4240*53ee8cc1Swenshuai.xi break;
4241*53ee8cc1Swenshuai.xi }
4242*53ee8cc1Swenshuai.xi }
4243*53ee8cc1Swenshuai.xi }
4244*53ee8cc1Swenshuai.xi
HAL_PVR_FlushData(MS_U32 u32PVREng)4245*53ee8cc1Swenshuai.xi void HAL_PVR_FlushData(MS_U32 u32PVREng)
4246*53ee8cc1Swenshuai.xi {
4247*53ee8cc1Swenshuai.xi switch(u32PVREng)
4248*53ee8cc1Swenshuai.xi {
4249*53ee8cc1Swenshuai.xi case 0:
4250*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
4251*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR_DATA);
4252*53ee8cc1Swenshuai.xi break;
4253*53ee8cc1Swenshuai.xi case 1:
4254*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
4255*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_39,HW4_CFG39_FLUSH_PVR1_DATA);
4256*53ee8cc1Swenshuai.xi break;
4257*53ee8cc1Swenshuai.xi default:
4258*53ee8cc1Swenshuai.xi break;
4259*53ee8cc1Swenshuai.xi }
4260*53ee8cc1Swenshuai.xi }
4261*53ee8cc1Swenshuai.xi
HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)4262*53ee8cc1Swenshuai.xi void HAL_PVR_Skip_Scrmb(MS_U32 u32PVREng,MS_BOOL bSkip)
4263*53ee8cc1Swenshuai.xi {
4264*53ee8cc1Swenshuai.xi if(bSkip)
4265*53ee8cc1Swenshuai.xi {
4266*53ee8cc1Swenshuai.xi switch(u32PVREng)
4267*53ee8cc1Swenshuai.xi {
4268*53ee8cc1Swenshuai.xi case 0:
4269*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
4270*53ee8cc1Swenshuai.xi break;
4271*53ee8cc1Swenshuai.xi case 1:
4272*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
4273*53ee8cc1Swenshuai.xi break;
4274*53ee8cc1Swenshuai.xi default:
4275*53ee8cc1Swenshuai.xi break;
4276*53ee8cc1Swenshuai.xi }
4277*53ee8cc1Swenshuai.xi }
4278*53ee8cc1Swenshuai.xi else
4279*53ee8cc1Swenshuai.xi {
4280*53ee8cc1Swenshuai.xi switch(u32PVREng)
4281*53ee8cc1Swenshuai.xi {
4282*53ee8cc1Swenshuai.xi case 0:
4283*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR1_EN);
4284*53ee8cc1Swenshuai.xi break;
4285*53ee8cc1Swenshuai.xi case 1:
4286*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_37, HW4_CFG37_MASK_SCR_PVR2_EN);
4287*53ee8cc1Swenshuai.xi break;
4288*53ee8cc1Swenshuai.xi default:
4289*53ee8cc1Swenshuai.xi break;
4290*53ee8cc1Swenshuai.xi }
4291*53ee8cc1Swenshuai.xi }
4292*53ee8cc1Swenshuai.xi }
4293*53ee8cc1Swenshuai.xi
4294*53ee8cc1Swenshuai.xi
HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)4295*53ee8cc1Swenshuai.xi void HAL_PVR_Block_Dis(MS_U32 u32PVREng,MS_BOOL bDisable)
4296*53ee8cc1Swenshuai.xi {
4297*53ee8cc1Swenshuai.xi if(bDisable)
4298*53ee8cc1Swenshuai.xi {
4299*53ee8cc1Swenshuai.xi switch(u32PVREng)
4300*53ee8cc1Swenshuai.xi {
4301*53ee8cc1Swenshuai.xi case 0:
4302*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
4303*53ee8cc1Swenshuai.xi break;
4304*53ee8cc1Swenshuai.xi case 1:
4305*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
4306*53ee8cc1Swenshuai.xi break;
4307*53ee8cc1Swenshuai.xi default:
4308*53ee8cc1Swenshuai.xi break;
4309*53ee8cc1Swenshuai.xi }
4310*53ee8cc1Swenshuai.xi }
4311*53ee8cc1Swenshuai.xi else
4312*53ee8cc1Swenshuai.xi {
4313*53ee8cc1Swenshuai.xi switch(u32PVREng)
4314*53ee8cc1Swenshuai.xi {
4315*53ee8cc1Swenshuai.xi case 0:
4316*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR1_BLOCK_DIS);
4317*53ee8cc1Swenshuai.xi break;
4318*53ee8cc1Swenshuai.xi case 1:
4319*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_PVR2_BLOCK_DIS);
4320*53ee8cc1Swenshuai.xi break;
4321*53ee8cc1Swenshuai.xi default:
4322*53ee8cc1Swenshuai.xi break;
4323*53ee8cc1Swenshuai.xi }
4324*53ee8cc1Swenshuai.xi
4325*53ee8cc1Swenshuai.xi }
4326*53ee8cc1Swenshuai.xi }
4327*53ee8cc1Swenshuai.xi
HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)4328*53ee8cc1Swenshuai.xi void HAL_PVR_BurstLen(MS_U32 u32PVREng,MS_U16 u16BurstMode)
4329*53ee8cc1Swenshuai.xi {
4330*53ee8cc1Swenshuai.xi switch(u32PVREng)
4331*53ee8cc1Swenshuai.xi {
4332*53ee8cc1Swenshuai.xi case 0:
4333*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->reg15b8, TSP_BURST_LEN_MASK, (u16BurstMode << TSP_BURST_LEN_SHIFT));
4334*53ee8cc1Swenshuai.xi break;
4335*53ee8cc1Swenshuai.xi case 1:
4336*53ee8cc1Swenshuai.xi REG32_MSK_W(&_RegCtrl->PVR2_Config, TSP_PVR2_BURST_LEN_MASK, (u16BurstMode << TSP_PVR2_BURST_LEN_SHIFT));
4337*53ee8cc1Swenshuai.xi break;
4338*53ee8cc1Swenshuai.xi default:
4339*53ee8cc1Swenshuai.xi break;
4340*53ee8cc1Swenshuai.xi }
4341*53ee8cc1Swenshuai.xi }
4342*53ee8cc1Swenshuai.xi
HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng,MS_BOOL bLocal_Stream)4343*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Sel(MS_U32 u32PVREng, MS_BOOL bLocal_Stream)
4344*53ee8cc1Swenshuai.xi {
4345*53ee8cc1Swenshuai.xi if (u32PVREng>=TSP_PVRENG_NUM)
4346*53ee8cc1Swenshuai.xi {
4347*53ee8cc1Swenshuai.xi return;
4348*53ee8cc1Swenshuai.xi }
4349*53ee8cc1Swenshuai.xi
4350*53ee8cc1Swenshuai.xi if (bLocal_Stream) //Stream
4351*53ee8cc1Swenshuai.xi {
4352*53ee8cc1Swenshuai.xi REG16_SET((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
4353*53ee8cc1Swenshuai.xi }
4354*53ee8cc1Swenshuai.xi else //local
4355*53ee8cc1Swenshuai.xi {
4356*53ee8cc1Swenshuai.xi REG16_CLR((&_RegCtrl2->CFG_12), CFG_12_TIMESTAMP_SEL_PVR1 << (u32PVREng));
4357*53ee8cc1Swenshuai.xi }
4358*53ee8cc1Swenshuai.xi }
4359*53ee8cc1Swenshuai.xi
HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)4360*53ee8cc1Swenshuai.xi void HAL_PVR_PauseTime_En(MS_U32 u32PVREng,MS_BOOL bEnable)
4361*53ee8cc1Swenshuai.xi {
4362*53ee8cc1Swenshuai.xi if(bEnable)
4363*53ee8cc1Swenshuai.xi {
4364*53ee8cc1Swenshuai.xi switch(u32PVREng)
4365*53ee8cc1Swenshuai.xi {
4366*53ee8cc1Swenshuai.xi case 0:
4367*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
4368*53ee8cc1Swenshuai.xi break;
4369*53ee8cc1Swenshuai.xi case 1:
4370*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
4371*53ee8cc1Swenshuai.xi break;
4372*53ee8cc1Swenshuai.xi default:
4373*53ee8cc1Swenshuai.xi break;
4374*53ee8cc1Swenshuai.xi }
4375*53ee8cc1Swenshuai.xi }
4376*53ee8cc1Swenshuai.xi else
4377*53ee8cc1Swenshuai.xi {
4378*53ee8cc1Swenshuai.xi switch(u32PVREng)
4379*53ee8cc1Swenshuai.xi {
4380*53ee8cc1Swenshuai.xi case 0:
4381*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL1);
4382*53ee8cc1Swenshuai.xi break;
4383*53ee8cc1Swenshuai.xi case 1:
4384*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_35, HW4_CFG35_BYPASS_TIMESTAMP_SEL2);
4385*53ee8cc1Swenshuai.xi break;
4386*53ee8cc1Swenshuai.xi default:
4387*53ee8cc1Swenshuai.xi break;
4388*53ee8cc1Swenshuai.xi }
4389*53ee8cc1Swenshuai.xi }
4390*53ee8cc1Swenshuai.xi }
4391*53ee8cc1Swenshuai.xi
HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)4392*53ee8cc1Swenshuai.xi void HAL_PVR_SetPauseTime(MS_U32 u32PVREng,MS_U32 u32PauseTime)
4393*53ee8cc1Swenshuai.xi {
4394*53ee8cc1Swenshuai.xi switch(u32PVREng)
4395*53ee8cc1Swenshuai.xi {
4396*53ee8cc1Swenshuai.xi case 0:
4397*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl3->CFG3_44_45, u32PauseTime);
4398*53ee8cc1Swenshuai.xi break;
4399*53ee8cc1Swenshuai.xi case 1:
4400*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl3->CFG3_46_47, u32PauseTime);
4401*53ee8cc1Swenshuai.xi break;
4402*53ee8cc1Swenshuai.xi default:
4403*53ee8cc1Swenshuai.xi break;
4404*53ee8cc1Swenshuai.xi }
4405*53ee8cc1Swenshuai.xi }
4406*53ee8cc1Swenshuai.xi
HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId,MS_BOOL bEnable)4407*53ee8cc1Swenshuai.xi void HAL_PVR_TimeStamp_Stream_En(MS_U32 u32pktDmxId, MS_BOOL bEnable)
4408*53ee8cc1Swenshuai.xi {
4409*53ee8cc1Swenshuai.xi if (bEnable)
4410*53ee8cc1Swenshuai.xi {
4411*53ee8cc1Swenshuai.xi REG16_SET((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
4412*53ee8cc1Swenshuai.xi }
4413*53ee8cc1Swenshuai.xi else
4414*53ee8cc1Swenshuai.xi {
4415*53ee8cc1Swenshuai.xi REG16_CLR((&_RegCtrl2->CFG_13), CFG_13_LPCR_EN0 << (u32pktDmxId*2));
4416*53ee8cc1Swenshuai.xi }
4417*53ee8cc1Swenshuai.xi }
4418*53ee8cc1Swenshuai.xi
HAL_PVR_MOBF_Enable(MS_U32 u32PVREng,MS_BOOL bEnable,MS_U32 u32Key)4419*53ee8cc1Swenshuai.xi void HAL_PVR_MOBF_Enable(MS_U32 u32PVREng, MS_BOOL bEnable, MS_U32 u32Key)
4420*53ee8cc1Swenshuai.xi {
4421*53ee8cc1Swenshuai.xi switch(u32PVREng)
4422*53ee8cc1Swenshuai.xi {
4423*53ee8cc1Swenshuai.xi case 0:
4424*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->MOBF_PVR1_Index[0], (u32Key & TSP_MOBF_PVR1_INDEX_MASK));
4425*53ee8cc1Swenshuai.xi break;
4426*53ee8cc1Swenshuai.xi case 1:
4427*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->MOBF_PVR2_Index[0], (u32Key & TSP_MOBF_PVR2_INDEX_MASK));
4428*53ee8cc1Swenshuai.xi break;
4429*53ee8cc1Swenshuai.xi default:
4430*53ee8cc1Swenshuai.xi break;
4431*53ee8cc1Swenshuai.xi }
4432*53ee8cc1Swenshuai.xi }
4433*53ee8cc1Swenshuai.xi
4434*53ee8cc1Swenshuai.xi /*
4435*53ee8cc1Swenshuai.xi void HAL_PVR_SetTSIF(MS_U32 u32PVREng , MS_BOOL bPara, MS_BOOL bExtSync, MS_BOOL bDataSWP)
4436*53ee8cc1Swenshuai.xi {
4437*53ee8cc1Swenshuai.xi if (bPara)
4438*53ee8cc1Swenshuai.xi {
4439*53ee8cc1Swenshuai.xi REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
4440*53ee8cc1Swenshuai.xi }
4441*53ee8cc1Swenshuai.xi else
4442*53ee8cc1Swenshuai.xi {
4443*53ee8cc1Swenshuai.xi REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_PARA_SEL);
4444*53ee8cc1Swenshuai.xi }
4445*53ee8cc1Swenshuai.xi
4446*53ee8cc1Swenshuai.xi if (bExtSync)
4447*53ee8cc1Swenshuai.xi {
4448*53ee8cc1Swenshuai.xi REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
4449*53ee8cc1Swenshuai.xi }
4450*53ee8cc1Swenshuai.xi else
4451*53ee8cc1Swenshuai.xi {
4452*53ee8cc1Swenshuai.xi REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_EXT_SYNC);
4453*53ee8cc1Swenshuai.xi }
4454*53ee8cc1Swenshuai.xi
4455*53ee8cc1Swenshuai.xi if (bDataSWP)
4456*53ee8cc1Swenshuai.xi {
4457*53ee8cc1Swenshuai.xi REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
4458*53ee8cc1Swenshuai.xi }
4459*53ee8cc1Swenshuai.xi else
4460*53ee8cc1Swenshuai.xi {
4461*53ee8cc1Swenshuai.xi REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
4462*53ee8cc1Swenshuai.xi }
4463*53ee8cc1Swenshuai.xi }
4464*53ee8cc1Swenshuai.xi
4465*53ee8cc1Swenshuai.xi void HAL_PVR_RecAtSync_Dis(MS_U32 u32PVREng, MS_BOOL bDis)
4466*53ee8cc1Swenshuai.xi {
4467*53ee8cc1Swenshuai.xi if(bDis)
4468*53ee8cc1Swenshuai.xi {
4469*53ee8cc1Swenshuai.xi REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
4470*53ee8cc1Swenshuai.xi }
4471*53ee8cc1Swenshuai.xi else
4472*53ee8cc1Swenshuai.xi {
4473*53ee8cc1Swenshuai.xi REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl1), PVR_REC_AT_SYNC_DIS);
4474*53ee8cc1Swenshuai.xi }
4475*53ee8cc1Swenshuai.xi }
4476*53ee8cc1Swenshuai.xi
4477*53ee8cc1Swenshuai.xi void HAL_PVR_SetDataSwap(MS_U32 u32PVREng, MS_BOOL bEn)
4478*53ee8cc1Swenshuai.xi {
4479*53ee8cc1Swenshuai.xi if(bEn)
4480*53ee8cc1Swenshuai.xi {
4481*53ee8cc1Swenshuai.xi REG16_SET(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
4482*53ee8cc1Swenshuai.xi }
4483*53ee8cc1Swenshuai.xi else
4484*53ee8cc1Swenshuai.xi {
4485*53ee8cc1Swenshuai.xi REG16_CLR(&(_PVRReg[u32PVREng]->PVR_Ctrl0), PVR_TSIF_DATA_SWP);
4486*53ee8cc1Swenshuai.xi }
4487*53ee8cc1Swenshuai.xi }
4488*53ee8cc1Swenshuai.xi */
4489*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)4490*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_GetInfo(MS_U32 u32Type)
4491*53ee8cc1Swenshuai.xi {
4492*53ee8cc1Swenshuai.xi MS_U32 u32Data;
4493*53ee8cc1Swenshuai.xi
4494*53ee8cc1Swenshuai.xi //reserved
4495*53ee8cc1Swenshuai.xi switch (u32Type)
4496*53ee8cc1Swenshuai.xi {
4497*53ee8cc1Swenshuai.xi
4498*53ee8cc1Swenshuai.xi case INFO_FW_VERSION:
4499*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
4500*53ee8cc1Swenshuai.xi break;
4501*53ee8cc1Swenshuai.xi case INFO_FW_DATE:
4502*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_DATE);
4503*53ee8cc1Swenshuai.xi break;
4504*53ee8cc1Swenshuai.xi default:
4505*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, INFO_FW_VERSION);
4506*53ee8cc1Swenshuai.xi break;
4507*53ee8cc1Swenshuai.xi
4508*53ee8cc1Swenshuai.xi }
4509*53ee8cc1Swenshuai.xi
4510*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_INFO);
4511*53ee8cc1Swenshuai.xi
4512*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4513*53ee8cc1Swenshuai.xi u32Data = REG32_R(&_RegCtrl->MCU_Data1);
4514*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
4515*53ee8cc1Swenshuai.xi
4516*53ee8cc1Swenshuai.xi return u32Data;
4517*53ee8cc1Swenshuai.xi }
4518*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_BufRst(MS_U32 u32Value)4519*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_BufRst(MS_U32 u32Value)
4520*53ee8cc1Swenshuai.xi {
4521*53ee8cc1Swenshuai.xi // MS_U32 u32Data;
4522*53ee8cc1Swenshuai.xi
4523*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0 , u32Value);
4524*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd , TSP_MCU_CMD_BUFRST);
4525*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4526*53ee8cc1Swenshuai.xi
4527*53ee8cc1Swenshuai.xi return TRUE;
4528*53ee8cc1Swenshuai.xi }
4529*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_Read(MS_U32 u32Addr)4530*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Read(MS_U32 u32Addr)
4531*53ee8cc1Swenshuai.xi {
4532*53ee8cc1Swenshuai.xi MS_U32 u32Data;
4533*53ee8cc1Swenshuai.xi
4534*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
4535*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_READ);
4536*53ee8cc1Swenshuai.xi
4537*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4538*53ee8cc1Swenshuai.xi u32Data = REG32_R(&_RegCtrl->MCU_Data1);
4539*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
4540*53ee8cc1Swenshuai.xi
4541*53ee8cc1Swenshuai.xi return u32Data;
4542*53ee8cc1Swenshuai.xi }
4543*53ee8cc1Swenshuai.xi
4544*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_Write(MS_U32 u32Addr,MS_U32 u32Value)4545*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Write(MS_U32 u32Addr, MS_U32 u32Value)
4546*53ee8cc1Swenshuai.xi {
4547*53ee8cc1Swenshuai.xi MS_U32 u32Data;
4548*53ee8cc1Swenshuai.xi
4549*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, u32Addr);
4550*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data1, u32Value);
4551*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_WRITE);
4552*53ee8cc1Swenshuai.xi
4553*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4554*53ee8cc1Swenshuai.xi u32Data = REG32_R(&_RegCtrl->MCU_Data1);
4555*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
4556*53ee8cc1Swenshuai.xi
4557*53ee8cc1Swenshuai.xi return TRUE;
4558*53ee8cc1Swenshuai.xi }
4559*53ee8cc1Swenshuai.xi
4560*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_Alive(void)4561*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_HCMD_Alive(void)
4562*53ee8cc1Swenshuai.xi {
4563*53ee8cc1Swenshuai.xi MS_U32 u32Data;
4564*53ee8cc1Swenshuai.xi
4565*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data1, 0);
4566*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_ALIVE); //@TODO check FW HCMD
4567*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4568*53ee8cc1Swenshuai.xi u32Data = REG32_R(&_RegCtrl->MCU_Data1);
4569*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
4570*53ee8cc1Swenshuai.xi
4571*53ee8cc1Swenshuai.xi return (u32Data == TSP_MCU_DATA_ALIVE)? TRUE : FALSE;
4572*53ee8cc1Swenshuai.xi }
4573*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_SET(MS_U32 mcu_cmd,MS_U32 mcu_data0,MS_U32 mcu_data1)4574*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SET(MS_U32 mcu_cmd, MS_U32 mcu_data0, MS_U32 mcu_data1)
4575*53ee8cc1Swenshuai.xi {
4576*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, mcu_data0);
4577*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data1, mcu_data1);
4578*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, mcu_cmd);
4579*53ee8cc1Swenshuai.xi }
4580*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_GET(MS_U32 * pmcu_cmd,MS_U32 * pmcu_data0,MS_U32 * pmcu_data1)4581*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_GET(MS_U32* pmcu_cmd, MS_U32* pmcu_data0, MS_U32* pmcu_data1)
4582*53ee8cc1Swenshuai.xi {
4583*53ee8cc1Swenshuai.xi *pmcu_cmd = REG32_R(&_RegCtrl->MCU_Cmd);
4584*53ee8cc1Swenshuai.xi *pmcu_data0 = REG32_R(&_RegCtrl->MCU_Data0);
4585*53ee8cc1Swenshuai.xi *pmcu_data1 = REG32_R(&_RegCtrl->MCU_Data1);
4586*53ee8cc1Swenshuai.xi }
4587*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId,MS_BOOL bDis)4588*53ee8cc1Swenshuai.xi void HAL_TSP_HCMD_SecRdyInt_Disable(MS_U32 FltId ,MS_BOOL bDis)
4589*53ee8cc1Swenshuai.xi {
4590*53ee8cc1Swenshuai.xi MS_U32 u32Data = bDis ;
4591*53ee8cc1Swenshuai.xi
4592*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, FltId);
4593*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data1,u32Data);
4594*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_SECRDYINT_DISABLE); // @TODO add HCMD list here
4595*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4596*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
4597*53ee8cc1Swenshuai.xi
4598*53ee8cc1Swenshuai.xi return ;
4599*53ee8cc1Swenshuai.xi }
4600*53ee8cc1Swenshuai.xi
HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)4601*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_HCMD_Dbg(MS_U32 u32Enable)
4602*53ee8cc1Swenshuai.xi {
4603*53ee8cc1Swenshuai.xi MS_U32 u32Data;
4604*53ee8cc1Swenshuai.xi
4605*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Data0, u32Enable);
4606*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, TSP_MCU_CMD_DBG);
4607*53ee8cc1Swenshuai.xi
4608*53ee8cc1Swenshuai.xi _delay(10); // supposed TSP is able to respond in 10us
4609*53ee8cc1Swenshuai.xi u32Data = REG32_R(&_RegCtrl->MCU_Data1);
4610*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->MCU_Cmd, 0); // write null to clear
4611*53ee8cc1Swenshuai.xi
4612*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl->MCU_Data1);
4613*53ee8cc1Swenshuai.xi }
4614*53ee8cc1Swenshuai.xi
HAL_TSP_GetDBGStatus(MS_U16 u16Sel)4615*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_GetDBGStatus(MS_U16 u16Sel)
4616*53ee8cc1Swenshuai.xi {
4617*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->PKT_CNT, TSP_DBG_SEL_MASK);
4618*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->PKT_CNT, ((u16Sel << TSP_DBG_SEL_SHIFT) & TSP_DBG_SEL_MASK));
4619*53ee8cc1Swenshuai.xi
4620*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl->TSP_Debug);
4621*53ee8cc1Swenshuai.xi }
4622*53ee8cc1Swenshuai.xi
HAL_TSP_INT_Enable(MS_U32 u32Mask)4623*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Enable(MS_U32 u32Mask)
4624*53ee8cc1Swenshuai.xi {
4625*53ee8cc1Swenshuai.xi // Low byte for bank 0x15 7e bit[0:7]
4626*53ee8cc1Swenshuai.xi /*
4627*53ee8cc1Swenshuai.xi 7: audio/video packet error
4628*53ee8cc1Swenshuai.xi 6: DMA read done
4629*53ee8cc1Swenshuai.xi 5: HK_INT_FORCE. // it's trigure bit is at bank 15 44 bit[15]
4630*53ee8cc1Swenshuai.xi 4: TSP_FILE_RP meets TSP_FILE_TAIL.
4631*53ee8cc1Swenshuai.xi 3: TSP_FILE_RP meets TSP_FILE_MID.
4632*53ee8cc1Swenshuai.xi 2: HK_INT_FORCE. // it's trigure bit is at bank 15 39 bit[15]
4633*53ee8cc1Swenshuai.xi 1: STR2MI_WADR meets STR2MI_MID.
4634*53ee8cc1Swenshuai.xi 0: STR2MI_WADR meets STR2MI_TAIL."
4635*53ee8cc1Swenshuai.xi */
4636*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->HwInt_Stat, TSP_INT_EN_MASK & u32Mask);
4637*53ee8cc1Swenshuai.xi
4638*53ee8cc1Swenshuai.xi // High byte for bank 0x16 6c bit[0:7]
4639*53ee8cc1Swenshuai.xi /*
4640*53ee8cc1Swenshuai.xi [7] : PVR2 meet_tail or PVR2_meet_mid
4641*53ee8cc1Swenshuai.xi [6] : vq0, vq1, vq2, vq3 overflow interrupt
4642*53ee8cc1Swenshuai.xi [5] : all DMA write address not in the protect zone interrupt
4643*53ee8cc1Swenshuai.xi [4] : PVR_cb meet the mid or PVR_cb meet the tail
4644*53ee8cc1Swenshuai.xi [3] : pcr filter 0 update finish
4645*53ee8cc1Swenshuai.xi [2] : pcr filter 1 update finish
4646*53ee8cc1Swenshuai.xi [1: 0] : reserved
4647*53ee8cc1Swenshuai.xi */
4648*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->SwInt_Stat1_L, (TSP_HWINT2_EN_MASK & (u32Mask >> 8)) | TSP_HWINT2_STATUS_MASK);
4649*53ee8cc1Swenshuai.xi }
4650*53ee8cc1Swenshuai.xi
4651*53ee8cc1Swenshuai.xi
HAL_TSP_INT_Disable(MS_U32 u32Mask)4652*53ee8cc1Swenshuai.xi void HAL_TSP_INT_Disable(MS_U32 u32Mask)
4653*53ee8cc1Swenshuai.xi {
4654*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->HwInt_Stat, TSP_INT_EN_MASK & u32Mask);
4655*53ee8cc1Swenshuai.xi //REG16_CLR(&_RegCtrl->SwInt_Stat1_L, TSP_HWINT2_EN_MASK & (u32Mask >> 8));
4656*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->SwInt_Stat1_L,
4657*53ee8cc1Swenshuai.xi (REG16_R(&_RegCtrl->SwInt_Stat1_L) & ~(TSP_HWINT2_EN_MASK & (u32Mask >> 8))) |
4658*53ee8cc1Swenshuai.xi TSP_HWINT2_STATUS_MASK);
4659*53ee8cc1Swenshuai.xi }
4660*53ee8cc1Swenshuai.xi
4661*53ee8cc1Swenshuai.xi
HAL_TSP_INT_ClrHW(MS_U32 u32Mask)4662*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrHW(MS_U32 u32Mask)
4663*53ee8cc1Swenshuai.xi {
4664*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->HwInt_Stat, (u32Mask & 0x00FF) << 8);
4665*53ee8cc1Swenshuai.xi //REG16_CLR(&_RegCtrl->SwInt_Stat1_L, u32Mask & 0xFF00);
4666*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->SwInt_Stat1_L,
4667*53ee8cc1Swenshuai.xi (REG16_R(&_RegCtrl->SwInt_Stat1_L) & (~TSP_HWINT2_STATUS_MASK)) |
4668*53ee8cc1Swenshuai.xi (~(u32Mask & 0xFF00) & TSP_HWINT2_STATUS_MASK));
4669*53ee8cc1Swenshuai.xi }
4670*53ee8cc1Swenshuai.xi
4671*53ee8cc1Swenshuai.xi
HAL_TSP_INT_GetHW(void)4672*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetHW(void)
4673*53ee8cc1Swenshuai.xi {
4674*53ee8cc1Swenshuai.xi MS_U32 status;
4675*53ee8cc1Swenshuai.xi
4676*53ee8cc1Swenshuai.xi status = (MS_U32)(((REG16_R(&_RegCtrl->SwInt_Stat1_L) & TSP_HWINT2_STATUS_MASK) >> TSP_HWINT2_STATUS_SHIFT)<<8);
4677*53ee8cc1Swenshuai.xi
4678*53ee8cc1Swenshuai.xi status |= (MS_U32)((REG16_R(&_RegCtrl->HwInt_Stat) & TSP_HWINT_STATUS_MASK) >> TSP_HWINT_STATUS_SHIFT);
4679*53ee8cc1Swenshuai.xi
4680*53ee8cc1Swenshuai.xi return (status & 0xFFFF);
4681*53ee8cc1Swenshuai.xi }
4682*53ee8cc1Swenshuai.xi
4683*53ee8cc1Swenshuai.xi
HAL_TSP_INT_ClrSW(void)4684*53ee8cc1Swenshuai.xi void HAL_TSP_INT_ClrSW(void)
4685*53ee8cc1Swenshuai.xi {
4686*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->SwInt_Stat, 0);
4687*53ee8cc1Swenshuai.xi }
4688*53ee8cc1Swenshuai.xi
4689*53ee8cc1Swenshuai.xi
HAL_TSP_INT_GetSW(void)4690*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_INT_GetSW(void)
4691*53ee8cc1Swenshuai.xi {
4692*53ee8cc1Swenshuai.xi return REG32_R(&_RegCtrl->SwInt_Stat);
4693*53ee8cc1Swenshuai.xi }
4694*53ee8cc1Swenshuai.xi
HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx,MS_U32 inputSrc)4695*53ee8cc1Swenshuai.xi void HAL_TSP_Set_RcvBuf_Src(MS_U32 bufIdx, MS_U32 inputSrc)
4696*53ee8cc1Swenshuai.xi {
4697*53ee8cc1Swenshuai.xi switch (bufIdx)
4698*53ee8cc1Swenshuai.xi {
4699*53ee8cc1Swenshuai.xi case 0:
4700*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF0_SRC, inputSrc<<(bufIdx * 2));
4701*53ee8cc1Swenshuai.xi break;
4702*53ee8cc1Swenshuai.xi case 1:
4703*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF1_SRC, inputSrc<<(bufIdx * 2));
4704*53ee8cc1Swenshuai.xi break;
4705*53ee8cc1Swenshuai.xi case 2:
4706*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl2->CFG_11, CFG_11_RECEIVE_BUF2_SRC, inputSrc<<(bufIdx * 2));
4707*53ee8cc1Swenshuai.xi break;
4708*53ee8cc1Swenshuai.xi default:
4709*53ee8cc1Swenshuai.xi break;
4710*53ee8cc1Swenshuai.xi }
4711*53ee8cc1Swenshuai.xi }
4712*53ee8cc1Swenshuai.xi
HAL_RASP_Set_Source(MS_U32 u32RASPEng,MS_U32 pktDmxId)4713*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_Set_Source(MS_U32 u32RASPEng, MS_U32 pktDmxId)
4714*53ee8cc1Swenshuai.xi {
4715*53ee8cc1Swenshuai.xi return 0;
4716*53ee8cc1Swenshuai.xi }
4717*53ee8cc1Swenshuai.xi
HAL_RASP_Get_Source(MS_U32 u32RASPEng,TSP_SRC_SEQ * eSrc)4718*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_Get_Source(MS_U32 u32RASPEng, TSP_SRC_SEQ *eSrc)
4719*53ee8cc1Swenshuai.xi {
4720*53ee8cc1Swenshuai.xi return 0;
4721*53ee8cc1Swenshuai.xi }
4722*53ee8cc1Swenshuai.xi
HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)4723*53ee8cc1Swenshuai.xi void HAL_TSP_SPD_Bypass_En(MS_BOOL bByPassEn)
4724*53ee8cc1Swenshuai.xi {
4725*53ee8cc1Swenshuai.xi if (bByPassEn)
4726*53ee8cc1Swenshuai.xi {
4727*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);
4728*53ee8cc1Swenshuai.xi }
4729*53ee8cc1Swenshuai.xi else
4730*53ee8cc1Swenshuai.xi {
4731*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);
4732*53ee8cc1Swenshuai.xi }
4733*53ee8cc1Swenshuai.xi }
4734*53ee8cc1Swenshuai.xi
4735*53ee8cc1Swenshuai.xi //@TODO
4736*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_FileIn_SPDConfig(MS_U32 tsif,MS_BOOL CTR_mode)4737*53ee8cc1Swenshuai.xi void HAL_TSP_FileIn_SPDConfig(MS_U32 tsif, MS_BOOL CTR_mode)
4738*53ee8cc1Swenshuai.xi {
4739*53ee8cc1Swenshuai.xi if(CTR_mode == TRUE)
4740*53ee8cc1Swenshuai.xi {
4741*53ee8cc1Swenshuai.xi printf("SPD CTR mode = %p\n",&(_RegCtrl7[tsif].CFG7_05));
4742*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_CTR_MODE_SPD_FILEIN); //set CTR mode enable
4743*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[0]), 0x0000); //set counter IV
4744*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[1]), 0x0000);
4745*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[2]), 0x0000);
4746*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl7[tsif].CFG7_00_03[3]), 0x0000);
4747*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl7[tsif].CFG7_04), CFG7_04_CTR_IV_SPD_MAX_1K); //set counter IV max vld
4748*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl7[tsif].CFG7_05), CFG7_05_LOAD_INIT_CNT_SPD); //load counter IV
4749*53ee8cc1Swenshuai.xi }
4750*53ee8cc1Swenshuai.xi
4751*53ee8cc1Swenshuai.xi switch(tsif)
4752*53ee8cc1Swenshuai.xi {
4753*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);
4754*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000); //file-in SPD key
4755*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
4756*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
4757*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
4758*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
4759*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
4760*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
4761*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
4762*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY0);
4763*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF0_BYPASS);//bypass SPD
4764*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET); //TSIF SPD reset
4765*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF0_SPD_RESET);
4766*53ee8cc1Swenshuai.xi break;
4767*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);
4768*53ee8cc1Swenshuai.xi /*
4769*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x2222); //file-in SPD key
4770*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x2222);
4771*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x2222);
4772*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x2222);
4773*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x3333);
4774*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x3333);
4775*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x3333);
4776*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x3333);
4777*53ee8cc1Swenshuai.xi */
4778*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000); //file-in SPD key
4779*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
4780*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
4781*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
4782*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
4783*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
4784*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
4785*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
4786*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY1);
4787*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF1_BYPASS);//bypass SPD
4788*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET); //TSIF SPD reset
4789*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF1_SPD_RESET);
4790*53ee8cc1Swenshuai.xi break;
4791*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);
4792*53ee8cc1Swenshuai.xi /*
4793*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x4444); //file-in SPD key
4794*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x4444);
4795*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x4444);
4796*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x4444);
4797*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x5555);
4798*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x5555);
4799*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x5555);
4800*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x5555);
4801*53ee8cc1Swenshuai.xi */
4802*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[0], 0x0000); //file-in SPD key
4803*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[1], 0x0000);
4804*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[2], 0x0000);
4805*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[3], 0x0000);
4806*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[4], 0x1111);
4807*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[5], 0x1111);
4808*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[6], 0x1111);
4809*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_68_6F[7], 0x1111);
4810*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_3A,HW4_CFG3A_LOAD_SPD_KEY2);
4811*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_52,CFG3_52_SPD_TSIF2_BYPASS);//bypass SPD
4812*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET); //TSIF SPD reset
4813*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_1E,CFG3_1E_TSIF2_SPD_RESET);
4814*53ee8cc1Swenshuai.xi break;
4815*53ee8cc1Swenshuai.xi default:printf("Not Support !!\n");
4816*53ee8cc1Swenshuai.xi break;
4817*53ee8cc1Swenshuai.xi }
4818*53ee8cc1Swenshuai.xi }
4819*53ee8cc1Swenshuai.xi #endif
4820*53ee8cc1Swenshuai.xi
4821*53ee8cc1Swenshuai.xi // for TSO
HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId,MS_U32 u32TSOEng,MS_BOOL bEn)4822*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetTSOFlt(MS_U32 fltId, MS_U32 u32TSOEng, MS_BOOL bEn)
4823*53ee8cc1Swenshuai.xi {
4824*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
4825*53ee8cc1Swenshuai.xi if(bEn)
4826*53ee8cc1Swenshuai.xi {
4827*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~TSP_PIDFLT_TSOFLT_MASK) | (((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK));
4828*53ee8cc1Swenshuai.xi }
4829*53ee8cc1Swenshuai.xi else
4830*53ee8cc1Swenshuai.xi {
4831*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, (TSP32_IdrR(pPidFlt) & ~(((1 << u32TSOEng) << TSP_PIDFLT_TSOFLT_SHFT) & TSP_PIDFLT_TSOFLT_MASK)));
4832*53ee8cc1Swenshuai.xi }
4833*53ee8cc1Swenshuai.xi }
4834*53ee8cc1Swenshuai.xi
HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap,MS_U32 * pu32CapInfo)4835*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_GetCaps(TSP_HAL_CAP_TYPE eCap, MS_U32 *pu32CapInfo)
4836*53ee8cc1Swenshuai.xi {
4837*53ee8cc1Swenshuai.xi switch (eCap)
4838*53ee8cc1Swenshuai.xi {
4839*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_PIDFLT_NUM :
4840*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PIDFLT_NUM;
4841*53ee8cc1Swenshuai.xi break;
4842*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_SECFLT_NUM :
4843*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECFLT_NUM;
4844*53ee8cc1Swenshuai.xi break;
4845*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_SECBUF_NUM :
4846*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_NUM;
4847*53ee8cc1Swenshuai.xi break;
4848*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_RECENG_NUM :
4849*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECENG_NUM;
4850*53ee8cc1Swenshuai.xi break;
4851*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_RECFLT_NUM :
4852*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_NUM;
4853*53ee8cc1Swenshuai.xi break;
4854*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_TSIF_NUM :
4855*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSIF_NUM;
4856*53ee8cc1Swenshuai.xi break;
4857*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_DEMOD_NUM :
4858*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_DEMOD_NUM;
4859*53ee8cc1Swenshuai.xi break;
4860*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_TSPAD_NUM :
4861*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_TSPAD_NUM;
4862*53ee8cc1Swenshuai.xi break;
4863*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_VQ_NUM :
4864*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_NUM;
4865*53ee8cc1Swenshuai.xi break;
4866*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_CAFLT_NUM :
4867*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAFLT_NUM;
4868*53ee8cc1Swenshuai.xi break;
4869*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_CAKEY_NUM :
4870*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_CAKEY_NUM;
4871*53ee8cc1Swenshuai.xi break;
4872*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_SECBUF_ALIGN :
4873*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_SECBUF_ALIGN;
4874*53ee8cc1Swenshuai.xi break;
4875*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_PVR_ALIGN:
4876*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PVR_ALIGN;
4877*53ee8cc1Swenshuai.xi break;
4878*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_FW_ALIGN :
4879*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_ALIGN;
4880*53ee8cc1Swenshuai.xi break;
4881*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_VQ_ALIGN :
4882*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_ALIGN;
4883*53ee8cc1Swenshuai.xi break;
4884*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_VQ_PITCH :
4885*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VQ_PITCH;
4886*53ee8cc1Swenshuai.xi break;
4887*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_MMFI_AUDIO_FILTER_NUM:
4888*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_AUDIO_FILTER_NUM;
4889*53ee8cc1Swenshuai.xi break;
4890*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_MMFI_V3D_FILTER_NUM:
4891*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_MMFI_V3D_FILTER_NUM;
4892*53ee8cc1Swenshuai.xi break;
4893*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_HW_TYPE:
4894*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HW_TYPE;
4895*53ee8cc1Swenshuai.xi break;
4896*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_RECFLT_IDX :
4897*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_RECFLT_IDX;
4898*53ee8cc1Swenshuai.xi break;
4899*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_PCRFLT_START_IDX :
4900*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_PCRFLT_START_IDX;
4901*53ee8cc1Swenshuai.xi break;
4902*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_VFIFO_NUM:
4903*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_VFIFO_NUM;
4904*53ee8cc1Swenshuai.xi break;
4905*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_AFIFO_NUM:
4906*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_AFIFO_NUM;
4907*53ee8cc1Swenshuai.xi break;
4908*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_TYPE_HWPCR_SUPPORT:
4909*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_HWPCR_SUPPORT;
4910*53ee8cc1Swenshuai.xi break;
4911*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_FIQ_NUM:
4912*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FIQ_NUM;
4913*53ee8cc1Swenshuai.xi break;
4914*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_FW_BUF_SIZE:
4915*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_FW_BUF_SIZE;
4916*53ee8cc1Swenshuai.xi break;
4917*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_FW_BUF_RANGE:
4918*53ee8cc1Swenshuai.xi *(pu32CapInfo) = TSP_FW_BUF_LOW_BUD;
4919*53ee8cc1Swenshuai.xi *(pu32CapInfo + 1) = TSP_FW_BUF_UP_BUD;
4920*53ee8cc1Swenshuai.xi break;
4921*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_VQ_BUF_RANGE:
4922*53ee8cc1Swenshuai.xi *(pu32CapInfo) = TSP_VQ_BUF_LOW_BUD;
4923*53ee8cc1Swenshuai.xi *(pu32CapInfo + 1) = TSP_VQ_BUF_UP_BUD;
4924*53ee8cc1Swenshuai.xi break;
4925*53ee8cc1Swenshuai.xi case E_TSP_HAL_CAP_SEC_BUF_RANGE:
4926*53ee8cc1Swenshuai.xi *(pu32CapInfo) = TSP_SEC_BUF_LOW_BUD;
4927*53ee8cc1Swenshuai.xi *(pu32CapInfo + 1) = TSP_SEC_BUF_UP_BUD;
4928*53ee8cc1Swenshuai.xi break;
4929*53ee8cc1Swenshuai.xi default:
4930*53ee8cc1Swenshuai.xi *(pu32CapInfo) = E_TSP_HAL_CAP_VAL_NULL;
4931*53ee8cc1Swenshuai.xi return FALSE;
4932*53ee8cc1Swenshuai.xi }
4933*53ee8cc1Swenshuai.xi return TRUE;
4934*53ee8cc1Swenshuai.xi }
4935*53ee8cc1Swenshuai.xi
_HAL_TSP_PadMapping(MS_U16 u16Pad)4936*53ee8cc1Swenshuai.xi static TSP_TS_PAD _HAL_TSP_PadMapping(MS_U16 u16Pad)
4937*53ee8cc1Swenshuai.xi {
4938*53ee8cc1Swenshuai.xi MS_U16 u16Ts2_Mode = (TSP_TOP_REG(REG_TOP_TS_PADMUX_MODE) >> REG_TOP_TS2MODE_SHIFT) & REG_TOP_TS2MODE_MASK;
4939*53ee8cc1Swenshuai.xi
4940*53ee8cc1Swenshuai.xi switch (u16Pad)
4941*53ee8cc1Swenshuai.xi {
4942*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT0:
4943*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT0;
4944*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT1:
4945*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT1;
4946*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT2:
4947*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT2;
4948*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT3:
4949*53ee8cc1Swenshuai.xi if(u16Ts2_Mode == REG_TOP_TS2MODE_3WIRED)
4950*53ee8cc1Swenshuai.xi {
4951*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT0_3WIRE;
4952*53ee8cc1Swenshuai.xi }
4953*53ee8cc1Swenshuai.xi else
4954*53ee8cc1Swenshuai.xi {
4955*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT3;
4956*53ee8cc1Swenshuai.xi }
4957*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT4:
4958*53ee8cc1Swenshuai.xi if(u16Ts2_Mode == REG_TOP_TS2MODE_3WIRED)
4959*53ee8cc1Swenshuai.xi {
4960*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT1_3WIRE;
4961*53ee8cc1Swenshuai.xi }
4962*53ee8cc1Swenshuai.xi else
4963*53ee8cc1Swenshuai.xi {
4964*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT4;
4965*53ee8cc1Swenshuai.xi }
4966*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT5:
4967*53ee8cc1Swenshuai.xi if(u16Ts2_Mode == REG_TOP_TS2MODE_3WIRED)
4968*53ee8cc1Swenshuai.xi {
4969*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT2_3WIRE;
4970*53ee8cc1Swenshuai.xi }
4971*53ee8cc1Swenshuai.xi else
4972*53ee8cc1Swenshuai.xi {
4973*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT5;
4974*53ee8cc1Swenshuai.xi }
4975*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_EXT6:
4976*53ee8cc1Swenshuai.xi if(u16Ts2_Mode == REG_TOP_TS2MODE_3WIRED)
4977*53ee8cc1Swenshuai.xi {
4978*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT3_3WIRE;
4979*53ee8cc1Swenshuai.xi }
4980*53ee8cc1Swenshuai.xi else
4981*53ee8cc1Swenshuai.xi {
4982*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_EXT6;
4983*53ee8cc1Swenshuai.xi }
4984*53ee8cc1Swenshuai.xi case REG_TOP_TS_SRC_TSO0:
4985*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_TSOUT0;
4986*53ee8cc1Swenshuai.xi
4987*53ee8cc1Swenshuai.xi default:
4988*53ee8cc1Swenshuai.xi HAL_TSP_DBGMSG(E_HAL_TSP_DBG_LEVEL_ERR, E_HAL_TSP_DBG_MODEL_ALL, printf("[%s][%s][%d] UnSupported Pad Enum: %d !\n",__FILE__,__FUNCTION__,__LINE__,u16Pad));
4989*53ee8cc1Swenshuai.xi return E_TSP_TS_PAD_INVALID;
4990*53ee8cc1Swenshuai.xi }
4991*53ee8cc1Swenshuai.xi }
4992*53ee8cc1Swenshuai.xi
HAL_TSP_GetTSIF_Status(MS_U32 u32TsIfId,TSP_TS_PAD * pePad,MS_U16 * pu16Clk,MS_BOOL * pbClkInv,MS_BOOL * pbExtSync,MS_BOOL * pbParl)4993*53ee8cc1Swenshuai.xi void HAL_TSP_GetTSIF_Status(MS_U32 u32TsIfId, TSP_TS_PAD* pePad, MS_U16* pu16Clk, MS_BOOL* pbClkInv, MS_BOOL* pbExtSync, MS_BOOL* pbParl)
4994*53ee8cc1Swenshuai.xi {
4995*53ee8cc1Swenshuai.xi MS_U16 u16pad, u16clk;
4996*53ee8cc1Swenshuai.xi *pbExtSync = FALSE;
4997*53ee8cc1Swenshuai.xi *pbParl = FALSE;
4998*53ee8cc1Swenshuai.xi *pbClkInv = FALSE;
4999*53ee8cc1Swenshuai.xi *pePad = 0;
5000*53ee8cc1Swenshuai.xi *pu16Clk = 0;
5001*53ee8cc1Swenshuai.xi
5002*53ee8cc1Swenshuai.xi switch (u32TsIfId)
5003*53ee8cc1Swenshuai.xi {
5004*53ee8cc1Swenshuai.xi case 0:
5005*53ee8cc1Swenshuai.xi u16pad = TSP_TOP_REG(REG_TOP_TS0_MUX) & ((REG_TOP_TS_SRC_MASK) << REG_TOP_TS0_SHIFT);
5006*53ee8cc1Swenshuai.xi u16pad >>= REG_TOP_TS0_SHIFT;
5007*53ee8cc1Swenshuai.xi *pePad = _HAL_TSP_PadMapping(u16pad);
5008*53ee8cc1Swenshuai.xi u16clk = TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) & ((REG_CLKGEN0_TS_SRC_MASK)<<(REG_CLKGEN0_TS0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
5009*53ee8cc1Swenshuai.xi u16clk >>= (REG_CLKGEN0_TS0_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT);
5010*53ee8cc1Swenshuai.xi *pu16Clk = u16clk;
5011*53ee8cc1Swenshuai.xi *pbExtSync = ((REG16_R(&_RegCtrl->Hw_Config0) & TSP_HW_CFG0_TSIF0_EXTSYNC) == TSP_HW_CFG0_TSIF0_EXTSYNC);
5012*53ee8cc1Swenshuai.xi *pbParl = ((REG16_R(&_RegCtrl->Hw_Config0) & TSP_HW_CFG0_TSIF0_PARL) == TSP_HW_CFG0_TSIF0_PARL);
5013*53ee8cc1Swenshuai.xi *pbClkInv =(((TSP_CLKGEN0_REG(REG_CLKGEN0_TS0_CLK) >> REG_CLKGEN0_TS0_SHIFT)& REG_CLKGEN0_TS_INVERT) == REG_CLKGEN0_TS_INVERT);
5014*53ee8cc1Swenshuai.xi break;
5015*53ee8cc1Swenshuai.xi case 1:
5016*53ee8cc1Swenshuai.xi u16pad = TSP_TOP_REG(REG_TOP_TS1_MUX) & ((REG_TOP_TS_SRC_MASK) << REG_TOP_TS1_SHIFT);
5017*53ee8cc1Swenshuai.xi u16pad >>= REG_TOP_TS1_SHIFT;
5018*53ee8cc1Swenshuai.xi *pePad = _HAL_TSP_PadMapping(u16pad);
5019*53ee8cc1Swenshuai.xi u16clk = TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) & ((REG_CLKGEN0_TS_SRC_MASK)<<(REG_CLKGEN0_TS1_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
5020*53ee8cc1Swenshuai.xi u16clk >>= (REG_CLKGEN0_TS1_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT);
5021*53ee8cc1Swenshuai.xi *pu16Clk = u16clk;
5022*53ee8cc1Swenshuai.xi *pbExtSync = ((REG16_R(&_RegCtrl->Hw_Config2) & TSP_HW_CFG2_TSIF1_EXTSYNC) == TSP_HW_CFG2_TSIF1_EXTSYNC);
5023*53ee8cc1Swenshuai.xi *pbParl = ((REG16_R(&_RegCtrl->Hw_Config2) & TSP_HW_CFG2_TSIF1_PARL) == TSP_HW_CFG2_TSIF1_PARL);
5024*53ee8cc1Swenshuai.xi *pbClkInv =(((TSP_CLKGEN0_REG(REG_CLKGEN0_TS1_CLK) >> REG_CLKGEN0_TS1_SHIFT)& REG_CLKGEN0_TS_INVERT) == REG_CLKGEN0_TS_INVERT);
5025*53ee8cc1Swenshuai.xi break;
5026*53ee8cc1Swenshuai.xi case 2:
5027*53ee8cc1Swenshuai.xi u16pad = TSP_TOP_REG(REG_TOP_TS2_MUX) & ((REG_TOP_TS_SRC_MASK) << REG_TOP_TS2_SHIFT);
5028*53ee8cc1Swenshuai.xi u16pad >>= REG_TOP_TS2_SHIFT;
5029*53ee8cc1Swenshuai.xi *pePad = _HAL_TSP_PadMapping(u16pad);
5030*53ee8cc1Swenshuai.xi u16clk = TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) & ((REG_CLKGEN0_TS_SRC_MASK)<<(REG_CLKGEN0_TS2_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT));
5031*53ee8cc1Swenshuai.xi u16clk >>= (REG_CLKGEN0_TS2_SHIFT+REG_CLKGEN0_TS_SRC_SHIFT);
5032*53ee8cc1Swenshuai.xi *pu16Clk = u16clk;
5033*53ee8cc1Swenshuai.xi *pbExtSync = ((REG32_R(&_RegCtrl->PVR2_Config) & TSP_EXT_SYNC_SEL2) == TSP_EXT_SYNC_SEL2);
5034*53ee8cc1Swenshuai.xi *pbParl = ((REG32_R(&_RegCtrl->PVR2_Config) & TSP_P_SEL2) == TSP_P_SEL2);
5035*53ee8cc1Swenshuai.xi *pbClkInv =(((TSP_CLKGEN0_REG(REG_CLKGEN0_TS2_CLK) >> REG_CLKGEN0_TS2_SHIFT)& REG_CLKGEN0_TS_INVERT) == REG_CLKGEN0_TS_INVERT);
5036*53ee8cc1Swenshuai.xi break;
5037*53ee8cc1Swenshuai.xi default:
5038*53ee8cc1Swenshuai.xi break;
5039*53ee8cc1Swenshuai.xi }
5040*53ee8cc1Swenshuai.xi
5041*53ee8cc1Swenshuai.xi }
5042*53ee8cc1Swenshuai.xi
HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)5043*53ee8cc1Swenshuai.xi void HAL_TSP_PktDmx_RmDupAVPkt(MS_BOOL bEnable)
5044*53ee8cc1Swenshuai.xi {
5045*53ee8cc1Swenshuai.xi if(bEnable)
5046*53ee8cc1Swenshuai.xi {
5047*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
5048*53ee8cc1Swenshuai.xi }
5049*53ee8cc1Swenshuai.xi else
5050*53ee8cc1Swenshuai.xi {
5051*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b8, TSP_REMOVE_DUP_AV_PKT);
5052*53ee8cc1Swenshuai.xi }
5053*53ee8cc1Swenshuai.xi }
5054*53ee8cc1Swenshuai.xi
HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType,MS_BOOL bEnable)5055*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_RemoveErrorPkt(TSP_HAL_TEI_RmPktType eHalPktType, MS_BOOL bEnable)
5056*53ee8cc1Swenshuai.xi {
5057*53ee8cc1Swenshuai.xi if(bEnable)
5058*53ee8cc1Swenshuai.xi {
5059*53ee8cc1Swenshuai.xi switch (eHalPktType)
5060*53ee8cc1Swenshuai.xi {
5061*53ee8cc1Swenshuai.xi case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
5062*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
5063*53ee8cc1Swenshuai.xi break;
5064*53ee8cc1Swenshuai.xi case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
5065*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
5066*53ee8cc1Swenshuai.xi break;
5067*53ee8cc1Swenshuai.xi default:
5068*53ee8cc1Swenshuai.xi break;
5069*53ee8cc1Swenshuai.xi }
5070*53ee8cc1Swenshuai.xi }
5071*53ee8cc1Swenshuai.xi else
5072*53ee8cc1Swenshuai.xi {
5073*53ee8cc1Swenshuai.xi switch (eHalPktType)
5074*53ee8cc1Swenshuai.xi {
5075*53ee8cc1Swenshuai.xi case E_TSP_HAL_TEI_REMOVE_AUDIO_PKT:
5076*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_APES_ERR_RM_EN);
5077*53ee8cc1Swenshuai.xi break;
5078*53ee8cc1Swenshuai.xi case E_TSP_HAL_TEI_REMOVE_VIDEO_PKT:
5079*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->Hw_Config4, TSP_HW_CFG4_VPES_ERR_RM_EN);
5080*53ee8cc1Swenshuai.xi break;
5081*53ee8cc1Swenshuai.xi default:
5082*53ee8cc1Swenshuai.xi break;
5083*53ee8cc1Swenshuai.xi }
5084*53ee8cc1Swenshuai.xi }
5085*53ee8cc1Swenshuai.xi }
5086*53ee8cc1Swenshuai.xi
HAL_TSP_TEI_SKIP(MS_U32 tsIf,MS_BOOL bEnable)5087*53ee8cc1Swenshuai.xi void HAL_TSP_TEI_SKIP(MS_U32 tsIf, MS_BOOL bEnable)
5088*53ee8cc1Swenshuai.xi {
5089*53ee8cc1Swenshuai.xi if(bEnable)
5090*53ee8cc1Swenshuai.xi {
5091*53ee8cc1Swenshuai.xi switch (tsIf)
5092*53ee8cc1Swenshuai.xi {
5093*53ee8cc1Swenshuai.xi case 0:
5094*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
5095*53ee8cc1Swenshuai.xi break;
5096*53ee8cc1Swenshuai.xi case 1:
5097*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
5098*53ee8cc1Swenshuai.xi break;
5099*53ee8cc1Swenshuai.xi case 2:
5100*53ee8cc1Swenshuai.xi REG32_SET(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
5101*53ee8cc1Swenshuai.xi break;
5102*53ee8cc1Swenshuai.xi default:
5103*53ee8cc1Swenshuai.xi break;
5104*53ee8cc1Swenshuai.xi }
5105*53ee8cc1Swenshuai.xi }
5106*53ee8cc1Swenshuai.xi else
5107*53ee8cc1Swenshuai.xi {
5108*53ee8cc1Swenshuai.xi switch (tsIf)
5109*53ee8cc1Swenshuai.xi {
5110*53ee8cc1Swenshuai.xi case 0:
5111*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID0);
5112*53ee8cc1Swenshuai.xi break;
5113*53ee8cc1Swenshuai.xi case 1:
5114*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b8, TSP_TEI_SKIPE_PKT_PID1);
5115*53ee8cc1Swenshuai.xi break;
5116*53ee8cc1Swenshuai.xi case 2:
5117*53ee8cc1Swenshuai.xi REG32_CLR(&_RegCtrl->PVR2_Config, TSP_TEI_SKIP_PKT2);
5118*53ee8cc1Swenshuai.xi break;
5119*53ee8cc1Swenshuai.xi default:
5120*53ee8cc1Swenshuai.xi break;
5121*53ee8cc1Swenshuai.xi }
5122*53ee8cc1Swenshuai.xi }
5123*53ee8cc1Swenshuai.xi
5124*53ee8cc1Swenshuai.xi }
5125*53ee8cc1Swenshuai.xi
HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)5126*53ee8cc1Swenshuai.xi void HAL_TSP_DisPKTCnt_Clear(TSP_DST_SEQ eFltType)
5127*53ee8cc1Swenshuai.xi {
5128*53ee8cc1Swenshuai.xi switch (eFltType)
5129*53ee8cc1Swenshuai.xi {
5130*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
5131*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
5132*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
5133*53ee8cc1Swenshuai.xi break;
5134*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
5135*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
5136*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
5137*53ee8cc1Swenshuai.xi break;
5138*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
5139*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
5140*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
5141*53ee8cc1Swenshuai.xi break;
5142*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
5143*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
5144*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
5145*53ee8cc1Swenshuai.xi break;
5146*53ee8cc1Swenshuai.xi default :
5147*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] Clear AVPktNum Error\n",__FILE__,__FUNCTION__,__LINE__);
5148*53ee8cc1Swenshuai.xi break;
5149*53ee8cc1Swenshuai.xi }
5150*53ee8cc1Swenshuai.xi }
5151*53ee8cc1Swenshuai.xi
_HAL_TSP_MIU_OFFSET(MS_PHY Phyaddr)5152*53ee8cc1Swenshuai.xi static MS_PHY _HAL_TSP_MIU_OFFSET(MS_PHY Phyaddr)
5153*53ee8cc1Swenshuai.xi {
5154*53ee8cc1Swenshuai.xi #ifdef HAL_MIU2_BASE
5155*53ee8cc1Swenshuai.xi if(Phyaddr >= (MS_PHY)HAL_MIU2_BASE)
5156*53ee8cc1Swenshuai.xi return (MS_PHY)HAL_MIU2_BASE;
5157*53ee8cc1Swenshuai.xi else
5158*53ee8cc1Swenshuai.xi #endif //HAL_MIU2_BUS_BASE
5159*53ee8cc1Swenshuai.xi #ifdef HAL_MIU1_BASE
5160*53ee8cc1Swenshuai.xi if(Phyaddr >= (MS_PHY)HAL_MIU1_BASE)
5161*53ee8cc1Swenshuai.xi return (MS_PHY)HAL_MIU1_BASE;
5162*53ee8cc1Swenshuai.xi else
5163*53ee8cc1Swenshuai.xi #endif //HAL_MIU1_BUS_BASE
5164*53ee8cc1Swenshuai.xi return (MS_PHY)HAL_MIU0_BASE;
5165*53ee8cc1Swenshuai.xi }
5166*53ee8cc1Swenshuai.xi
HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)5167*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect_En(MS_BOOL bEn)
5168*53ee8cc1Swenshuai.xi {
5169*53ee8cc1Swenshuai.xi if(bEn == TRUE)
5170*53ee8cc1Swenshuai.xi {
5171*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
5172*53ee8cc1Swenshuai.xi }
5173*53ee8cc1Swenshuai.xi else
5174*53ee8cc1Swenshuai.xi {
5175*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg160C,TSP_ORZ_DMAW_PROT_EN);
5176*53ee8cc1Swenshuai.xi }
5177*53ee8cc1Swenshuai.xi }
5178*53ee8cc1Swenshuai.xi
HAL_TSP_OR_Address_Protect(MS_PHY u32AddrH,MS_PHY u32AddrL)5179*53ee8cc1Swenshuai.xi void HAL_TSP_OR_Address_Protect(MS_PHY u32AddrH, MS_PHY u32AddrL)
5180*53ee8cc1Swenshuai.xi {
5181*53ee8cc1Swenshuai.xi MS_PHY phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
5182*53ee8cc1Swenshuai.xi
5183*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->ORZ_DMAW_LBND,(MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_ORZ_DMAW_LBND_MASK));
5184*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->ORZ_DMAW_UBND,(MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_ORZ_DMAW_UBND_MASK));
5185*53ee8cc1Swenshuai.xi }
5186*53ee8cc1Swenshuai.xi
HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)5187*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect_En(MS_BOOL bEn)
5188*53ee8cc1Swenshuai.xi {
5189*53ee8cc1Swenshuai.xi
5190*53ee8cc1Swenshuai.xi if(bEn == TRUE)
5191*53ee8cc1Swenshuai.xi {
5192*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
5193*53ee8cc1Swenshuai.xi }
5194*53ee8cc1Swenshuai.xi else
5195*53ee8cc1Swenshuai.xi {
5196*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl->reg15b4,TSP_SEC_CB_PVR2_DAMW_PROTECT_EN);
5197*53ee8cc1Swenshuai.xi }
5198*53ee8cc1Swenshuai.xi }
5199*53ee8cc1Swenshuai.xi
HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID,MS_PHY u32AddrH,MS_PHY u32AddrL)5200*53ee8cc1Swenshuai.xi void HAL_TSP_SEC_Address_Protect(MS_U8 u8SecID, MS_PHY u32AddrH, MS_PHY u32AddrL)
5201*53ee8cc1Swenshuai.xi {
5202*53ee8cc1Swenshuai.xi MS_PHY phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
5203*53ee8cc1Swenshuai.xi MS_U32 u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_DMAW_BND_MASK);
5204*53ee8cc1Swenshuai.xi MS_U32 u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_DMAW_BND_MASK);
5205*53ee8cc1Swenshuai.xi
5206*53ee8cc1Swenshuai.xi switch(u8SecID)
5207*53ee8cc1Swenshuai.xi {
5208*53ee8cc1Swenshuai.xi case 0:
5209*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_LBND0,u32LBnd);
5210*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_UBND0,u32UBnd);
5211*53ee8cc1Swenshuai.xi break;
5212*53ee8cc1Swenshuai.xi case 1:
5213*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_LBND1,u32LBnd);
5214*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_UBND1,u32UBnd);
5215*53ee8cc1Swenshuai.xi break;
5216*53ee8cc1Swenshuai.xi default:
5217*53ee8cc1Swenshuai.xi break;
5218*53ee8cc1Swenshuai.xi }
5219*53ee8cc1Swenshuai.xi }
5220*53ee8cc1Swenshuai.xi
HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)5221*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect_En(MS_U32 u32PVREng,MS_BOOL bEnable)
5222*53ee8cc1Swenshuai.xi {
5223*53ee8cc1Swenshuai.xi if(bEnable)
5224*53ee8cc1Swenshuai.xi {
5225*53ee8cc1Swenshuai.xi switch(u32PVREng)
5226*53ee8cc1Swenshuai.xi {
5227*53ee8cc1Swenshuai.xi case 0:
5228*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
5229*53ee8cc1Swenshuai.xi break;
5230*53ee8cc1Swenshuai.xi case 1:
5231*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
5232*53ee8cc1Swenshuai.xi break;
5233*53ee8cc1Swenshuai.xi default:
5234*53ee8cc1Swenshuai.xi break;
5235*53ee8cc1Swenshuai.xi }
5236*53ee8cc1Swenshuai.xi }
5237*53ee8cc1Swenshuai.xi else
5238*53ee8cc1Swenshuai.xi {
5239*53ee8cc1Swenshuai.xi switch(u32PVREng)
5240*53ee8cc1Swenshuai.xi {
5241*53ee8cc1Swenshuai.xi case 0:
5242*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR1_DMAW_PROTECT_EN);
5243*53ee8cc1Swenshuai.xi break;
5244*53ee8cc1Swenshuai.xi case 1:
5245*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_PVR2_DMAW_PROTECT_EN);
5246*53ee8cc1Swenshuai.xi break;
5247*53ee8cc1Swenshuai.xi default:
5248*53ee8cc1Swenshuai.xi break;
5249*53ee8cc1Swenshuai.xi }
5250*53ee8cc1Swenshuai.xi }
5251*53ee8cc1Swenshuai.xi }
5252*53ee8cc1Swenshuai.xi
HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32AddrH,MS_PHY u32AddrL)5253*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_Address_Protect(MS_U32 u32PVREng,MS_PHY u32AddrH, MS_PHY u32AddrL)
5254*53ee8cc1Swenshuai.xi {
5255*53ee8cc1Swenshuai.xi MS_PHY phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
5256*53ee8cc1Swenshuai.xi MS_U32 u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_PVR_MASK);
5257*53ee8cc1Swenshuai.xi MS_U32 u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_PVR_MASK);
5258*53ee8cc1Swenshuai.xi
5259*53ee8cc1Swenshuai.xi switch(u32PVREng)
5260*53ee8cc1Swenshuai.xi {
5261*53ee8cc1Swenshuai.xi case 0:
5262*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_LBND2, u32LBnd);
5263*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_UBND2, u32UBnd);
5264*53ee8cc1Swenshuai.xi break;
5265*53ee8cc1Swenshuai.xi case 1:
5266*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_LBND3, u32LBnd);
5267*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl->DMAW_UBND3, u32UBnd);
5268*53ee8cc1Swenshuai.xi break;
5269*53ee8cc1Swenshuai.xi default:
5270*53ee8cc1Swenshuai.xi break;
5271*53ee8cc1Swenshuai.xi }
5272*53ee8cc1Swenshuai.xi }
5273*53ee8cc1Swenshuai.xi
HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)5274*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect_En(FILEENG_SEQ eFileEng,MS_BOOL bEnable)
5275*53ee8cc1Swenshuai.xi {
5276*53ee8cc1Swenshuai.xi if(bEnable)
5277*53ee8cc1Swenshuai.xi {
5278*53ee8cc1Swenshuai.xi switch(eFileEng)
5279*53ee8cc1Swenshuai.xi {
5280*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
5281*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
5282*53ee8cc1Swenshuai.xi break;
5283*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
5284*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
5285*53ee8cc1Swenshuai.xi break;
5286*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
5287*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
5288*53ee8cc1Swenshuai.xi break;
5289*53ee8cc1Swenshuai.xi default:
5290*53ee8cc1Swenshuai.xi break;
5291*53ee8cc1Swenshuai.xi }
5292*53ee8cc1Swenshuai.xi }
5293*53ee8cc1Swenshuai.xi else
5294*53ee8cc1Swenshuai.xi {
5295*53ee8cc1Swenshuai.xi switch(eFileEng)
5296*53ee8cc1Swenshuai.xi {
5297*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
5298*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN0_DMAR_PROTECT_EN);
5299*53ee8cc1Swenshuai.xi break;
5300*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
5301*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN1_DMAR_PROTECT_EN);
5302*53ee8cc1Swenshuai.xi break;
5303*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
5304*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_FILEIN2_DMAR_PROTECT_EN);
5305*53ee8cc1Swenshuai.xi break;
5306*53ee8cc1Swenshuai.xi default:
5307*53ee8cc1Swenshuai.xi break;
5308*53ee8cc1Swenshuai.xi }
5309*53ee8cc1Swenshuai.xi }
5310*53ee8cc1Swenshuai.xi }
5311*53ee8cc1Swenshuai.xi
HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32AddrH,MS_PHY u32AddrL)5312*53ee8cc1Swenshuai.xi void HAL_TSP_FILEIN_Address_Protect(FILEENG_SEQ eFileEng,MS_PHY u32AddrH, MS_PHY u32AddrL)
5313*53ee8cc1Swenshuai.xi {
5314*53ee8cc1Swenshuai.xi MS_PHY phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
5315*53ee8cc1Swenshuai.xi MS_U32 u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
5316*53ee8cc1Swenshuai.xi MS_U32 u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_FILEIN_DMAR_BND_MASK);
5317*53ee8cc1Swenshuai.xi
5318*53ee8cc1Swenshuai.xi switch(eFileEng)
5319*53ee8cc1Swenshuai.xi {
5320*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF0:
5321*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_30_31, u32LBnd);
5322*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_32_33, u32UBnd);
5323*53ee8cc1Swenshuai.xi break;
5324*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF1:
5325*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_34_35, u32LBnd);
5326*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_36_37, u32UBnd);
5327*53ee8cc1Swenshuai.xi break;
5328*53ee8cc1Swenshuai.xi case E_FILEENG_TSIF2:
5329*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_38_39, u32LBnd);
5330*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_3A_3B, u32UBnd);
5331*53ee8cc1Swenshuai.xi break;
5332*53ee8cc1Swenshuai.xi default:
5333*53ee8cc1Swenshuai.xi break;
5334*53ee8cc1Swenshuai.xi }
5335*53ee8cc1Swenshuai.xi }
5336*53ee8cc1Swenshuai.xi
HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)5337*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect_En(MS_U32 u32MMFIEng,MS_BOOL bEnable)
5338*53ee8cc1Swenshuai.xi {
5339*53ee8cc1Swenshuai.xi if(bEnable)
5340*53ee8cc1Swenshuai.xi {
5341*53ee8cc1Swenshuai.xi switch(u32MMFIEng)
5342*53ee8cc1Swenshuai.xi {
5343*53ee8cc1Swenshuai.xi case 0:
5344*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
5345*53ee8cc1Swenshuai.xi break;
5346*53ee8cc1Swenshuai.xi case 1:
5347*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
5348*53ee8cc1Swenshuai.xi break;
5349*53ee8cc1Swenshuai.xi default:
5350*53ee8cc1Swenshuai.xi break;
5351*53ee8cc1Swenshuai.xi }
5352*53ee8cc1Swenshuai.xi }
5353*53ee8cc1Swenshuai.xi else
5354*53ee8cc1Swenshuai.xi {
5355*53ee8cc1Swenshuai.xi switch(u32MMFIEng)
5356*53ee8cc1Swenshuai.xi {
5357*53ee8cc1Swenshuai.xi case 0:
5358*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI0_DMAR_PROTECT_EN);
5359*53ee8cc1Swenshuai.xi break;
5360*53ee8cc1Swenshuai.xi case 1:
5361*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_73, CFG3_73_MMFI1_DMAR_PROTECT_EN);
5362*53ee8cc1Swenshuai.xi break;
5363*53ee8cc1Swenshuai.xi default:
5364*53ee8cc1Swenshuai.xi break;
5365*53ee8cc1Swenshuai.xi }
5366*53ee8cc1Swenshuai.xi }
5367*53ee8cc1Swenshuai.xi }
5368*53ee8cc1Swenshuai.xi
HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32AddrH,MS_PHY u32AddrL)5369*53ee8cc1Swenshuai.xi void HAL_TSP_MMFI_Address_Protect(MS_U32 u32MMFIEng,MS_PHY u32AddrH, MS_PHY u32AddrL)
5370*53ee8cc1Swenshuai.xi {
5371*53ee8cc1Swenshuai.xi MS_PHY phyMiuOffset = _HAL_TSP_MIU_OFFSET(u32AddrL);
5372*53ee8cc1Swenshuai.xi MS_U32 u32LBnd = (MS_U32)(((u32AddrL - phyMiuOffset) >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
5373*53ee8cc1Swenshuai.xi MS_U32 u32UBnd = (MS_U32)(((u32AddrH - phyMiuOffset) >> MIU_BUS) & TSP_MMFI_DMAR_BND_MASK);
5374*53ee8cc1Swenshuai.xi
5375*53ee8cc1Swenshuai.xi switch(u32MMFIEng)
5376*53ee8cc1Swenshuai.xi {
5377*53ee8cc1Swenshuai.xi case 0:
5378*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_48_49, u32LBnd);
5379*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_4A_4B, u32UBnd);
5380*53ee8cc1Swenshuai.xi break;
5381*53ee8cc1Swenshuai.xi case 1:
5382*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_4C_4D, u32LBnd);
5383*53ee8cc1Swenshuai.xi REG32_W(&_RegCtrl6->CFG6_4E_4F, u32UBnd);
5384*53ee8cc1Swenshuai.xi break;
5385*53ee8cc1Swenshuai.xi default:
5386*53ee8cc1Swenshuai.xi break;
5387*53ee8cc1Swenshuai.xi }
5388*53ee8cc1Swenshuai.xi }
5389*53ee8cc1Swenshuai.xi
5390*53ee8cc1Swenshuai.xi
HAL_TSP_SaveFltState(void)5391*53ee8cc1Swenshuai.xi void HAL_TSP_SaveFltState(void)
5392*53ee8cc1Swenshuai.xi {
5393*53ee8cc1Swenshuai.xi MS_U32 u32Size;
5394*53ee8cc1Swenshuai.xi TSP32 * pRegEnd;
5395*53ee8cc1Swenshuai.xi TSP32 * pReg;
5396*53ee8cc1Swenshuai.xi int i, j;
5397*53ee8cc1Swenshuai.xi
5398*53ee8cc1Swenshuai.xi for (i = 0; i < TSP_PIDFLT_NUM; i++)
5399*53ee8cc1Swenshuai.xi {
5400*53ee8cc1Swenshuai.xi _u32PidFltReg[i] = TSP32_IdrR(&(_REGPid0->Flt[i]));
5401*53ee8cc1Swenshuai.xi _u32PidDstReg[i] = TSP32_IdrR(&(_REGPid1->Flt[i]));
5402*53ee8cc1Swenshuai.xi }
5403*53ee8cc1Swenshuai.xi
5404*53ee8cc1Swenshuai.xi u32Size = ((MS_VIRT)&(((REG_SecFlt*)0)->_x50))/sizeof(TSP32);
5405*53ee8cc1Swenshuai.xi for (i = 0; i < TSP_SECFLT_NUM; i++)
5406*53ee8cc1Swenshuai.xi {
5407*53ee8cc1Swenshuai.xi pReg = (TSP32*)&(_REGSec->Flt[i]);
5408*53ee8cc1Swenshuai.xi pRegEnd = pReg + u32Size;
5409*53ee8cc1Swenshuai.xi j = 0;
5410*53ee8cc1Swenshuai.xi for ( ; pReg < pRegEnd; pReg++)
5411*53ee8cc1Swenshuai.xi {
5412*53ee8cc1Swenshuai.xi _u32SecReg[i*u32Size+j] = TSP32_IdrR(pReg);
5413*53ee8cc1Swenshuai.xi j++;
5414*53ee8cc1Swenshuai.xi }
5415*53ee8cc1Swenshuai.xi }
5416*53ee8cc1Swenshuai.xi }
5417*53ee8cc1Swenshuai.xi
5418*53ee8cc1Swenshuai.xi
HAL_TSP_CMD_Run(MS_U32 u32Cmd,MS_U32 u32Config0,MS_U32 u32Config1,MS_U32 * pData)5419*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1, MS_U32* pData)
5420*53ee8cc1Swenshuai.xi {
5421*53ee8cc1Swenshuai.xi //@TODO not implement yet
5422*53ee8cc1Swenshuai.xi return TRUE;
5423*53ee8cc1Swenshuai.xi }
5424*53ee8cc1Swenshuai.xi
HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng,MS_BOOL bEnable)5425*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_BOOL bEnable)
5426*53ee8cc1Swenshuai.xi {
5427*53ee8cc1Swenshuai.xi printf("[%s] not support!!\n",__FUNCTION__);
5428*53ee8cc1Swenshuai.xi return FALSE;
5429*53ee8cc1Swenshuai.xi }
5430*53ee8cc1Swenshuai.xi
HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng,MS_U16 u16CaPvrMode,MS_BOOL bEnable)5431*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_CAPVR_SPSEnable(MS_U32 u32Eng, MS_U16 u16CaPvrMode, MS_BOOL bEnable)
5432*53ee8cc1Swenshuai.xi {
5433*53ee8cc1Swenshuai.xi MS_U16 u16value = REG16_R(&_RegCtrl3->CFG3_38);
5434*53ee8cc1Swenshuai.xi
5435*53ee8cc1Swenshuai.xi switch(u32Eng)
5436*53ee8cc1Swenshuai.xi {
5437*53ee8cc1Swenshuai.xi case 0:
5438*53ee8cc1Swenshuai.xi u16value &= ~(HW4_CFG38_CA_PVR1_SEL_MASK|HW4_CFG38_PKT192_SPS_EN1);
5439*53ee8cc1Swenshuai.xi break;
5440*53ee8cc1Swenshuai.xi case 1:
5441*53ee8cc1Swenshuai.xi u16value &= ~(HW4_CFG38_CA_PVR2_SEL_MASK|HW4_CFG38_PKT192_SPS_EN2);
5442*53ee8cc1Swenshuai.xi break;
5443*53ee8cc1Swenshuai.xi default:
5444*53ee8cc1Swenshuai.xi return FALSE;
5445*53ee8cc1Swenshuai.xi }
5446*53ee8cc1Swenshuai.xi
5447*53ee8cc1Swenshuai.xi if(bEnable)
5448*53ee8cc1Swenshuai.xi {
5449*53ee8cc1Swenshuai.xi switch(u32Eng)
5450*53ee8cc1Swenshuai.xi {
5451*53ee8cc1Swenshuai.xi case 0:
5452*53ee8cc1Swenshuai.xi u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR1_SEL_SHIFT);
5453*53ee8cc1Swenshuai.xi u16value |= HW4_CFG38_PKT192_SPS_EN1;
5454*53ee8cc1Swenshuai.xi break;
5455*53ee8cc1Swenshuai.xi case 1:
5456*53ee8cc1Swenshuai.xi u16value |= (u16CaPvrMode << HW4_CFG38_CA_PVR2_SEL_SHIFT);
5457*53ee8cc1Swenshuai.xi u16value |= HW4_CFG38_PKT192_SPS_EN2;
5458*53ee8cc1Swenshuai.xi break;
5459*53ee8cc1Swenshuai.xi default:
5460*53ee8cc1Swenshuai.xi return FALSE;
5461*53ee8cc1Swenshuai.xi }
5462*53ee8cc1Swenshuai.xi }
5463*53ee8cc1Swenshuai.xi
5464*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_38, u16value);
5465*53ee8cc1Swenshuai.xi
5466*53ee8cc1Swenshuai.xi return TRUE;
5467*53ee8cc1Swenshuai.xi
5468*53ee8cc1Swenshuai.xi }
5469*53ee8cc1Swenshuai.xi
5470*53ee8cc1Swenshuai.xi //@TODO
5471*53ee8cc1Swenshuai.xi #if 1
HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng,MS_BOOL CTR_mode)5472*53ee8cc1Swenshuai.xi void HAL_TSP_PVR_SPSConfig(MS_U32 u32Eng, MS_BOOL CTR_mode)
5473*53ee8cc1Swenshuai.xi {
5474*53ee8cc1Swenshuai.xi switch(u32Eng)
5475*53ee8cc1Swenshuai.xi {
5476*53ee8cc1Swenshuai.xi case 0: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN1);
5477*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR1_KEY);
5478*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
5479*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
5480*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
5481*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
5482*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
5483*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
5484*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
5485*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
5486*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY1);
5487*53ee8cc1Swenshuai.xi break;
5488*53ee8cc1Swenshuai.xi case 1: REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_PKT192_SPS_EN2);
5489*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl3->CFG3_43, HW4_CFG43_SRC_AES_PVR_KEY_MASK, HW4_CFG43_SRC_AES_PVR2_KEY);
5490*53ee8cc1Swenshuai.xi /*
5491*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x2222);//PVR SPS key
5492*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x2222);
5493*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x2222);
5494*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x2222);
5495*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x3333);
5496*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x3333);
5497*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x3333);
5498*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x3333);
5499*53ee8cc1Swenshuai.xi */
5500*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[0], 0x0000);//PVR SPS key
5501*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[1], 0x0000);
5502*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[2], 0x0000);
5503*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[3], 0x0000);
5504*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[4], 0x1111);
5505*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[5], 0x1111);
5506*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[6], 0x1111);
5507*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl3->CFG3_60_67[7], 0x1111);
5508*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_38,HW4_CFG38_LOAD_SPS_KEY2);
5509*53ee8cc1Swenshuai.xi break;
5510*53ee8cc1Swenshuai.xi default: printf("Not Support !!\n");
5511*53ee8cc1Swenshuai.xi break;
5512*53ee8cc1Swenshuai.xi }
5513*53ee8cc1Swenshuai.xi
5514*53ee8cc1Swenshuai.xi if(CTR_mode == TRUE)
5515*53ee8cc1Swenshuai.xi {
5516*53ee8cc1Swenshuai.xi printf("SPS CTR mode = %p\n",&(_RegCtrl8[u32Eng].CFG8_05));
5517*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_CTR_MODE_SPS_PVR1); //set CTR mode
5518*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[0]), 0x0000); //set counter IV
5519*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[1]), 0x0000);
5520*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[2]), 0x0000);
5521*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl8[u32Eng].CFG8_00_03[3]), 0x0000);
5522*53ee8cc1Swenshuai.xi REG16_W(&(_RegCtrl8[u32Eng].CFG8_04), CFG8_04_CTR_IV_SPS_MAX_1K); //set counter IV max vld
5523*53ee8cc1Swenshuai.xi REG16_SET(&(_RegCtrl8[u32Eng].CFG8_05),CFG8_05_LOAD_INIT_CNT_SPS1); //load counter IV
5524*53ee8cc1Swenshuai.xi }
5525*53ee8cc1Swenshuai.xi }
5526*53ee8cc1Swenshuai.xi #endif
5527*53ee8cc1Swenshuai.xi
5528*53ee8cc1Swenshuai.xi // u32GroupId: 0 -> filter0 ~ filter31
5529*53ee8cc1Swenshuai.xi // u32GroupId: 1 -> filter32 ~ filter63
5530*53ee8cc1Swenshuai.xi // u32GroupId: 2 -> filter64 ~ filter95
5531*53ee8cc1Swenshuai.xi // u32GroupId: 3 -> filter96 ~ filter127
5532*53ee8cc1Swenshuai.xi // u32GroupId: 4 -> filter128 ~ filter159
5533*53ee8cc1Swenshuai.xi // u32GroupId: 5 -> filter160 ~ filter191
5534*53ee8cc1Swenshuai.xi
5535*53ee8cc1Swenshuai.xi
HAL_DSCMB_GetStatus(MS_U32 u32PktDmx,MS_U32 u32GroupId,MS_U32 u32PidFltId,MS_U32 * pu32ScmbSts)5536*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_GetStatus(MS_U32 u32PktDmx, MS_U32 u32GroupId, MS_U32 u32PidFltId, MS_U32 *pu32ScmbSts)
5537*53ee8cc1Swenshuai.xi {
5538*53ee8cc1Swenshuai.xi MS_U16 u16PktDmxSrc;
5539*53ee8cc1Swenshuai.xi MS_U16 u16WordId;
5540*53ee8cc1Swenshuai.xi MS_U32 u32PIDFltMask = u32PidFltId;
5541*53ee8cc1Swenshuai.xi
5542*53ee8cc1Swenshuai.xi if(u32PidFltId != 0xFFFFFFFF)
5543*53ee8cc1Swenshuai.xi {
5544*53ee8cc1Swenshuai.xi u32PIDFltMask = (1 << (u32PidFltId & 0x1F));
5545*53ee8cc1Swenshuai.xi }
5546*53ee8cc1Swenshuai.xi
5547*53ee8cc1Swenshuai.xi u16PktDmxSrc = _CLR_(REG16_R(&_RegCtrl->reg15b8), TSP_MATCH_PID_SRC_MASK);
5548*53ee8cc1Swenshuai.xi
5549*53ee8cc1Swenshuai.xi switch(u32PktDmx)
5550*53ee8cc1Swenshuai.xi {
5551*53ee8cc1Swenshuai.xi case 0:
5552*53ee8cc1Swenshuai.xi u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX0 << TSP_MATCH_PID_SRC_SHIFT);
5553*53ee8cc1Swenshuai.xi break;
5554*53ee8cc1Swenshuai.xi case 1:
5555*53ee8cc1Swenshuai.xi u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX1 << TSP_MATCH_PID_SRC_SHIFT);
5556*53ee8cc1Swenshuai.xi break;
5557*53ee8cc1Swenshuai.xi case 2:
5558*53ee8cc1Swenshuai.xi u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX2 << TSP_MATCH_PID_SRC_SHIFT);
5559*53ee8cc1Swenshuai.xi break;
5560*53ee8cc1Swenshuai.xi case 3:
5561*53ee8cc1Swenshuai.xi u16PktDmxSrc = _SET_(u16PktDmxSrc, TSP_MATCH_PID_SRC_PKTDMX3 << TSP_MATCH_PID_SRC_SHIFT);
5562*53ee8cc1Swenshuai.xi break;
5563*53ee8cc1Swenshuai.xi default:
5564*53ee8cc1Swenshuai.xi break;
5565*53ee8cc1Swenshuai.xi }
5566*53ee8cc1Swenshuai.xi
5567*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->reg15b8, u16PktDmxSrc);
5568*53ee8cc1Swenshuai.xi
5569*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // Set 1 to load match_pid_num
5570*53ee8cc1Swenshuai.xi
5571*53ee8cc1Swenshuai.xi // get status
5572*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->PVRConfig, _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // freeze
5573*53ee8cc1Swenshuai.xi
5574*53ee8cc1Swenshuai.xi u16WordId = _CLR_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_SEL_MASK);
5575*53ee8cc1Swenshuai.xi
5576*53ee8cc1Swenshuai.xi if (u32GroupId < 6)
5577*53ee8cc1Swenshuai.xi {
5578*53ee8cc1Swenshuai.xi u16WordId = _SET_(u16WordId, u32GroupId << TSP_MATCH_PID_SEL_SHIFT);
5579*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl->PVRConfig,TSP_MATCH_PID_SEL_MASK,u16WordId);
5580*53ee8cc1Swenshuai.xi }
5581*53ee8cc1Swenshuai.xi else
5582*53ee8cc1Swenshuai.xi {
5583*53ee8cc1Swenshuai.xi printf("[TSP_ERR][%s][%d] Unsupported u32GroupId (%lu)!!!\n",__FUNCTION__, __LINE__, (long unsigned int)u32GroupId);
5584*53ee8cc1Swenshuai.xi }
5585*53ee8cc1Swenshuai.xi
5586*53ee8cc1Swenshuai.xi *pu32ScmbSts = _AND_(REG32_R(&_RegCtrl->TsPidScmbStatTsin), u32PIDFltMask);
5587*53ee8cc1Swenshuai.xi
5588*53ee8cc1Swenshuai.xi REG16_W(&_RegCtrl->PVRConfig, _SET_(REG16_R(&_RegCtrl->PVRConfig), TSP_MATCH_PID_LD)); // re-enable
5589*53ee8cc1Swenshuai.xi
5590*53ee8cc1Swenshuai.xi if(u32PIDFltMask != 0xFFFFFFFF)
5591*53ee8cc1Swenshuai.xi {
5592*53ee8cc1Swenshuai.xi *pu32ScmbSts = ((*pu32ScmbSts > 0) ? 1: 0);
5593*53ee8cc1Swenshuai.xi }
5594*53ee8cc1Swenshuai.xi
5595*53ee8cc1Swenshuai.xi return TRUE;
5596*53ee8cc1Swenshuai.xi }
5597*53ee8cc1Swenshuai.xi
5598*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
5599*53ee8cc1Swenshuai.xi // Merge Stream
5600*53ee8cc1Swenshuai.xi // -------------------------------------------------------------
HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path,MS_U8 u8Id,MS_U8 * pu8SyncByte,MS_BOOL bSet)5601*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSyncByte(MS_U8 u8Path, MS_U8 u8Id, MS_U8 *pu8SyncByte, MS_BOOL bSet)
5602*53ee8cc1Swenshuai.xi {
5603*53ee8cc1Swenshuai.xi REG16 *SynReg=0;
5604*53ee8cc1Swenshuai.xi MS_U16 u16Mask = 0x00FF, u16Sync = 0, u16Shift = 0;
5605*53ee8cc1Swenshuai.xi
5606*53ee8cc1Swenshuai.xi switch(u8Path)
5607*53ee8cc1Swenshuai.xi {
5608*53ee8cc1Swenshuai.xi case TSP_TSIF0:
5609*53ee8cc1Swenshuai.xi SynReg = &(_RegCtrl6[0].SyncByte_tsif0[u8Id>>1]);
5610*53ee8cc1Swenshuai.xi break;
5611*53ee8cc1Swenshuai.xi case TSP_TSIF1:
5612*53ee8cc1Swenshuai.xi SynReg = &(_RegCtrl6[0].SyncByte_tsif1[u8Id>>1]);
5613*53ee8cc1Swenshuai.xi break;
5614*53ee8cc1Swenshuai.xi case TSP_TSIF2:
5615*53ee8cc1Swenshuai.xi SynReg = &(_RegCtrl6[0].SyncByte_tsif2[u8Id>>1]);
5616*53ee8cc1Swenshuai.xi break;
5617*53ee8cc1Swenshuai.xi default:
5618*53ee8cc1Swenshuai.xi return FALSE;
5619*53ee8cc1Swenshuai.xi }
5620*53ee8cc1Swenshuai.xi
5621*53ee8cc1Swenshuai.xi
5622*53ee8cc1Swenshuai.xi if(u8Id & 0x1)
5623*53ee8cc1Swenshuai.xi {
5624*53ee8cc1Swenshuai.xi u16Shift = 8;
5625*53ee8cc1Swenshuai.xi }
5626*53ee8cc1Swenshuai.xi
5627*53ee8cc1Swenshuai.xi if(bSet == TRUE)
5628*53ee8cc1Swenshuai.xi {
5629*53ee8cc1Swenshuai.xi u16Sync = (MS_U16)(*pu8SyncByte & 0xFF);
5630*53ee8cc1Swenshuai.xi REG16_W(SynReg,((REG16_R(SynReg) & ~(u16Mask << u16Shift)) | (u16Sync << u16Shift)));
5631*53ee8cc1Swenshuai.xi }
5632*53ee8cc1Swenshuai.xi else
5633*53ee8cc1Swenshuai.xi {
5634*53ee8cc1Swenshuai.xi u16Sync = (REG16_R(SynReg) & (u16Mask << u16Shift)) >> u16Shift;
5635*53ee8cc1Swenshuai.xi *pu8SyncByte = (MS_U8)u16Sync;
5636*53ee8cc1Swenshuai.xi }
5637*53ee8cc1Swenshuai.xi
5638*53ee8cc1Swenshuai.xi return TRUE;
5639*53ee8cc1Swenshuai.xi
5640*53ee8cc1Swenshuai.xi }
5641*53ee8cc1Swenshuai.xi
HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path,MS_U8 u8Id,MS_U8 * pu8SrcId,MS_BOOL bSet)5642*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_SetSrcId(MS_U8 u8Path, MS_U8 u8Id, MS_U8 *pu8SrcId, MS_BOOL bSet)
5643*53ee8cc1Swenshuai.xi {
5644*53ee8cc1Swenshuai.xi REG16 *SrcIdReg =0;
5645*53ee8cc1Swenshuai.xi MS_U16 u16SrcId = 0, u16Mask = 0x000F, u16Shift = 0;
5646*53ee8cc1Swenshuai.xi
5647*53ee8cc1Swenshuai.xi switch(u8Path)
5648*53ee8cc1Swenshuai.xi {
5649*53ee8cc1Swenshuai.xi case TSP_TSIF0:
5650*53ee8cc1Swenshuai.xi SrcIdReg = &(_RegCtrl6[0].SourceId_tsif0[u8Id>>2]);
5651*53ee8cc1Swenshuai.xi break;
5652*53ee8cc1Swenshuai.xi case TSP_TSIF1:
5653*53ee8cc1Swenshuai.xi SrcIdReg = &(_RegCtrl6[0].SourceId_tsif1[u8Id>>2]);
5654*53ee8cc1Swenshuai.xi break;
5655*53ee8cc1Swenshuai.xi case TSP_TSIF2:
5656*53ee8cc1Swenshuai.xi SrcIdReg = &(_RegCtrl6[0].SourceId_tsif2[u8Id>>2]);
5657*53ee8cc1Swenshuai.xi break;
5658*53ee8cc1Swenshuai.xi default:
5659*53ee8cc1Swenshuai.xi return FALSE;
5660*53ee8cc1Swenshuai.xi }
5661*53ee8cc1Swenshuai.xi
5662*53ee8cc1Swenshuai.xi switch(u8Id & 0x3)
5663*53ee8cc1Swenshuai.xi {
5664*53ee8cc1Swenshuai.xi case 0x1:
5665*53ee8cc1Swenshuai.xi u16Shift = 4;
5666*53ee8cc1Swenshuai.xi u16SrcId <<= 4;
5667*53ee8cc1Swenshuai.xi u16Mask <<= 4;
5668*53ee8cc1Swenshuai.xi break;
5669*53ee8cc1Swenshuai.xi case 0x2:
5670*53ee8cc1Swenshuai.xi u16Shift = 8;
5671*53ee8cc1Swenshuai.xi u16SrcId <<= 8;
5672*53ee8cc1Swenshuai.xi u16Mask <<= 8;
5673*53ee8cc1Swenshuai.xi break;
5674*53ee8cc1Swenshuai.xi case 0x3:
5675*53ee8cc1Swenshuai.xi u16Shift = 12;
5676*53ee8cc1Swenshuai.xi u16SrcId <<= 12;
5677*53ee8cc1Swenshuai.xi u16Mask <<= 12;
5678*53ee8cc1Swenshuai.xi break;
5679*53ee8cc1Swenshuai.xi }
5680*53ee8cc1Swenshuai.xi
5681*53ee8cc1Swenshuai.xi if(bSet == TRUE)
5682*53ee8cc1Swenshuai.xi {
5683*53ee8cc1Swenshuai.xi u16SrcId = (MS_U16)(*pu8SrcId & 0xFF);
5684*53ee8cc1Swenshuai.xi REG16_W(SrcIdReg,((REG16_R(SrcIdReg) & ~(u16Mask << u16Shift)) | (u16SrcId << u16Shift)));
5685*53ee8cc1Swenshuai.xi }
5686*53ee8cc1Swenshuai.xi else
5687*53ee8cc1Swenshuai.xi {
5688*53ee8cc1Swenshuai.xi u16SrcId = (REG16_R(SrcIdReg) & (u16Mask << u16Shift)) >> u16Shift;
5689*53ee8cc1Swenshuai.xi *pu8SrcId = (MS_U8)u16SrcId;
5690*53ee8cc1Swenshuai.xi }
5691*53ee8cc1Swenshuai.xi
5692*53ee8cc1Swenshuai.xi return TRUE;
5693*53ee8cc1Swenshuai.xi }
5694*53ee8cc1Swenshuai.xi
HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path,MS_U8 u8PktHeaderLen)5695*53ee8cc1Swenshuai.xi static void HAL_TSP_PktConverter_SetMXLPktHeaderLen(MS_U8 u8Path, MS_U8 u8PktHeaderLen)
5696*53ee8cc1Swenshuai.xi {
5697*53ee8cc1Swenshuai.xi REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
5698*53ee8cc1Swenshuai.xi
5699*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_MXL_PKT_HEADER_MASK)) | ((u8PktHeaderLen << TSP_MXL_PKT_HEADER_SHIFT) & TSP_MXL_PKT_HEADER_MASK)));
5700*53ee8cc1Swenshuai.xi }
5701*53ee8cc1Swenshuai.xi
HAL_TSP_PktConverter_PktMode(MS_U8 u8Path,TSP_HAL_PKT_MODE ePktMode)5702*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_PktConverter_PktMode(MS_U8 u8Path, TSP_HAL_PKT_MODE ePktMode)
5703*53ee8cc1Swenshuai.xi {
5704*53ee8cc1Swenshuai.xi REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
5705*53ee8cc1Swenshuai.xi
5706*53ee8cc1Swenshuai.xi switch(ePktMode)
5707*53ee8cc1Swenshuai.xi {
5708*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_NORMAL:
5709*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_188Mode));
5710*53ee8cc1Swenshuai.xi break;
5711*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_CI:
5712*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_CIMode));
5713*53ee8cc1Swenshuai.xi break;
5714*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_OPEN_CABLE:
5715*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_OpenCableMode));
5716*53ee8cc1Swenshuai.xi break;
5717*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_ATS:
5718*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_ATSMode));
5719*53ee8cc1Swenshuai.xi break;
5720*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_MXL_192:
5721*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
5722*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,4);
5723*53ee8cc1Swenshuai.xi break;
5724*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_MXL_196:
5725*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
5726*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,8);
5727*53ee8cc1Swenshuai.xi break;
5728*53ee8cc1Swenshuai.xi case E_TSP_HAL_PKT_MODE_MXL_200:
5729*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg,((REG16_R(PktConverterReg) & ~(TSP_PKT_CONVERTER_MODE_MASK)) | TSP_PKT_MxLMode));
5730*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetMXLPktHeaderLen(u8Path,12);
5731*53ee8cc1Swenshuai.xi break;
5732*53ee8cc1Swenshuai.xi default:
5733*53ee8cc1Swenshuai.xi printf("[TSP_ERR][%s][%d] Wrong PktConverter Packet Mode!!!\n",__FUNCTION__,__LINE__);
5734*53ee8cc1Swenshuai.xi return FALSE;
5735*53ee8cc1Swenshuai.xi }
5736*53ee8cc1Swenshuai.xi
5737*53ee8cc1Swenshuai.xi return TRUE;
5738*53ee8cc1Swenshuai.xi }
5739*53ee8cc1Swenshuai.xi
HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path,MS_BOOL bEnable)5740*53ee8cc1Swenshuai.xi void HAL_TSP_PktConverter_ForceSync(MS_U8 u8Path, MS_BOOL bEnable)
5741*53ee8cc1Swenshuai.xi {
5742*53ee8cc1Swenshuai.xi REG16 *PktConverterReg = &_RegCtrl6->pkt_converter[u8Path];
5743*53ee8cc1Swenshuai.xi
5744*53ee8cc1Swenshuai.xi if(bEnable)
5745*53ee8cc1Swenshuai.xi {
5746*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg, _SET_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47)); // Set 1 to force sync byte be 0x47
5747*53ee8cc1Swenshuai.xi }
5748*53ee8cc1Swenshuai.xi else
5749*53ee8cc1Swenshuai.xi {
5750*53ee8cc1Swenshuai.xi REG16_W(PktConverterReg, _CLR_(REG16_R(PktConverterReg), TSP_PKT_FORCE_SYNC_47));
5751*53ee8cc1Swenshuai.xi }
5752*53ee8cc1Swenshuai.xi }
5753*53ee8cc1Swenshuai.xi
HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId,MS_U32 u32SrcId)5754*53ee8cc1Swenshuai.xi void HAL_TSP_PidFlt_SetSrcId(MS_U32 fltId, MS_U32 u32SrcId)
5755*53ee8cc1Swenshuai.xi {
5756*53ee8cc1Swenshuai.xi REG_PidFlt *pPidFlt = PPIDFLT1(fltId);
5757*53ee8cc1Swenshuai.xi TSP32_IdrW(pPidFlt, ((TSP32_IdrR(pPidFlt) & ~(TSP_PIDFLT_SRCID_MASK)) | ((u32SrcId << TSP_PIDFLT_SRCID_SHIFT) & TSP_PIDFLT_SRCID_MASK)));
5758*53ee8cc1Swenshuai.xi }
5759*53ee8cc1Swenshuai.xi
HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId,MS_U32 u32SrcId)5760*53ee8cc1Swenshuai.xi void HAL_TSP_PcrFlt_SetSrcId(MS_U32 pcrFltId, MS_U32 u32SrcId)
5761*53ee8cc1Swenshuai.xi {
5762*53ee8cc1Swenshuai.xi switch(pcrFltId)
5763*53ee8cc1Swenshuai.xi {
5764*53ee8cc1Swenshuai.xi case 0:
5765*53ee8cc1Swenshuai.xi //src 0
5766*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl3->CFG3_72,CFG3_72_PIDFLT_PCR_SCR_ID_MASK,(u32SrcId << CFG3_72_PIDFLT_PCR0_SCR_ID_SHIFT));
5767*53ee8cc1Swenshuai.xi break;
5768*53ee8cc1Swenshuai.xi case 1:
5769*53ee8cc1Swenshuai.xi //src 1
5770*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl3->CFG3_72,CFG3_72_PIDFLT_PCR_SCR_ID_MASK<<CFG3_72_PIDFLT_PCR1_SCR_ID_SHIFT,(u32SrcId << CFG3_72_PIDFLT_PCR1_SCR_ID_SHIFT));
5771*53ee8cc1Swenshuai.xi
5772*53ee8cc1Swenshuai.xi break;
5773*53ee8cc1Swenshuai.xi default:
5774*53ee8cc1Swenshuai.xi break;
5775*53ee8cc1Swenshuai.xi }
5776*53ee8cc1Swenshuai.xi }
5777*53ee8cc1Swenshuai.xi
HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)5778*53ee8cc1Swenshuai.xi void HAL_TSP_Reset_TSIF_MergeSetting(MS_U8 u8Path)
5779*53ee8cc1Swenshuai.xi {
5780*53ee8cc1Swenshuai.xi MS_U8 u8Id;
5781*53ee8cc1Swenshuai.xi MS_U8 u8SyncByte;
5782*53ee8cc1Swenshuai.xi
5783*53ee8cc1Swenshuai.xi u8SyncByte = 0x47;
5784*53ee8cc1Swenshuai.xi for(u8Id = 0; u8Id < TSP_MERGESTREAM_NUM; u8Id++,u8SyncByte++)
5785*53ee8cc1Swenshuai.xi {
5786*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetSyncByte(u8Path, u8Id, &u8SyncByte, TRUE);
5787*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_SetSrcId(u8Path, u8Id, &u8Id, TRUE);
5788*53ee8cc1Swenshuai.xi }
5789*53ee8cc1Swenshuai.xi HAL_TSP_PktConverter_PktMode(u8Path,E_TSP_HAL_PKT_MODE_NORMAL);
5790*53ee8cc1Swenshuai.xi }
5791*53ee8cc1Swenshuai.xi
5792*53ee8cc1Swenshuai.xi
5793*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
5794*53ee8cc1Swenshuai.xi // For Debug Table
5795*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
5796*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)5797*53ee8cc1Swenshuai.xi TSP_SRC_SEQ HAL_TSP_Debug_Flow2PktDmx_Mapping(TSP_HAL_FLOW eFlow)
5798*53ee8cc1Swenshuai.xi {
5799*53ee8cc1Swenshuai.xi switch (eFlow)
5800*53ee8cc1Swenshuai.xi {
5801*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_LIVE0:
5802*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX0;
5803*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_LIVE1:
5804*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX2;
5805*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_LIVE2:
5806*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX1;
5807*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_FILE0:
5808*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX1;
5809*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_FILE1:
5810*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX2;
5811*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_FILE2:
5812*53ee8cc1Swenshuai.xi return E_TSP_SRC_PKTDMX0;
5813*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_MMFI0:
5814*53ee8cc1Swenshuai.xi return E_TSP_SRC_MMFI0;
5815*53ee8cc1Swenshuai.xi case E_TSP_HAL_FLOW_MMFI1:
5816*53ee8cc1Swenshuai.xi return E_TSP_SRC_MMFI1;
5817*53ee8cc1Swenshuai.xi default:
5818*53ee8cc1Swenshuai.xi printf("[TSP_ERR][%s][%d] UnSupported Debug Flow : %d !!!\n",__FUNCTION__, __LINE__,eFlow);
5819*53ee8cc1Swenshuai.xi return E_TSP_SRC_INVALID;
5820*53ee8cc1Swenshuai.xi }
5821*53ee8cc1Swenshuai.xi }
5822*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)5823*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Src(MS_U32 u32TsIf)
5824*53ee8cc1Swenshuai.xi {
5825*53ee8cc1Swenshuai.xi MS_U16 u16TSIF = 0;;
5826*53ee8cc1Swenshuai.xi
5827*53ee8cc1Swenshuai.xi switch(u32TsIf)
5828*53ee8cc1Swenshuai.xi {
5829*53ee8cc1Swenshuai.xi case 0:
5830*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF0;
5831*53ee8cc1Swenshuai.xi break;
5832*53ee8cc1Swenshuai.xi case 1:
5833*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF1;
5834*53ee8cc1Swenshuai.xi break;
5835*53ee8cc1Swenshuai.xi case 2:
5836*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF2;
5837*53ee8cc1Swenshuai.xi break;
5838*53ee8cc1Swenshuai.xi default:
5839*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
5840*53ee8cc1Swenshuai.xi break;
5841*53ee8cc1Swenshuai.xi }
5842*53ee8cc1Swenshuai.xi
5843*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_TSIF_SRC_SEL_MASK,(u16TSIF << CFG5_7F_TSIF_SRC_SEL_SHIFT));
5844*53ee8cc1Swenshuai.xi }
5845*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)5846*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
5847*53ee8cc1Swenshuai.xi {
5848*53ee8cc1Swenshuai.xi if(bEn == TRUE)
5849*53ee8cc1Swenshuai.xi {
5850*53ee8cc1Swenshuai.xi switch(u32TsIf)
5851*53ee8cc1Swenshuai.xi {
5852*53ee8cc1Swenshuai.xi case 0:
5853*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
5854*53ee8cc1Swenshuai.xi break;
5855*53ee8cc1Swenshuai.xi case 1:
5856*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
5857*53ee8cc1Swenshuai.xi break;
5858*53ee8cc1Swenshuai.xi case 2:
5859*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
5860*53ee8cc1Swenshuai.xi break;
5861*53ee8cc1Swenshuai.xi default:
5862*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
5863*53ee8cc1Swenshuai.xi break;
5864*53ee8cc1Swenshuai.xi }
5865*53ee8cc1Swenshuai.xi }
5866*53ee8cc1Swenshuai.xi else
5867*53ee8cc1Swenshuai.xi {
5868*53ee8cc1Swenshuai.xi switch(u32TsIf)
5869*53ee8cc1Swenshuai.xi {
5870*53ee8cc1Swenshuai.xi case 0:
5871*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_0_LOAD);
5872*53ee8cc1Swenshuai.xi break;
5873*53ee8cc1Swenshuai.xi case 1:
5874*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_1_LOAD);
5875*53ee8cc1Swenshuai.xi break;
5876*53ee8cc1Swenshuai.xi case 2:
5877*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_LOCKED_PKT_CNT_2_LOAD);
5878*53ee8cc1Swenshuai.xi break;
5879*53ee8cc1Swenshuai.xi default:
5880*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
5881*53ee8cc1Swenshuai.xi break;
5882*53ee8cc1Swenshuai.xi }
5883*53ee8cc1Swenshuai.xi }
5884*53ee8cc1Swenshuai.xi
5885*53ee8cc1Swenshuai.xi }
5886*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf,MS_BOOL bLock)5887*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_LockPktCnt_Get(MS_U32 u32TsIf, MS_BOOL bLock)
5888*53ee8cc1Swenshuai.xi {
5889*53ee8cc1Swenshuai.xi if(bLock) // 188 mode
5890*53ee8cc1Swenshuai.xi {
5891*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
5892*53ee8cc1Swenshuai.xi }
5893*53ee8cc1Swenshuai.xi else // Non 188 mode
5894*53ee8cc1Swenshuai.xi {
5895*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_NON_188_CNT_MODE);
5896*53ee8cc1Swenshuai.xi }
5897*53ee8cc1Swenshuai.xi
5898*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Locked_PKT_Cnt);
5899*53ee8cc1Swenshuai.xi }
5900*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)5901*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_LockPktCnt_Clear(MS_U32 u32Tsif)
5902*53ee8cc1Swenshuai.xi {
5903*53ee8cc1Swenshuai.xi switch (u32Tsif)
5904*53ee8cc1Swenshuai.xi {
5905*53ee8cc1Swenshuai.xi case 0 :
5906*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
5907*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_0_CLR);
5908*53ee8cc1Swenshuai.xi break;
5909*53ee8cc1Swenshuai.xi case 1:
5910*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
5911*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_1_CLR);
5912*53ee8cc1Swenshuai.xi break;
5913*53ee8cc1Swenshuai.xi case 2:
5914*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
5915*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_LOCKED_PKT_CNT_2_CLR);
5916*53ee8cc1Swenshuai.xi break;
5917*53ee8cc1Swenshuai.xi default :
5918*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
5919*53ee8cc1Swenshuai.xi break;
5920*53ee8cc1Swenshuai.xi }
5921*53ee8cc1Swenshuai.xi }
5922*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)5923*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ClrSrcSel(TSP_SRC_SEQ eClrSrc)
5924*53ee8cc1Swenshuai.xi {
5925*53ee8cc1Swenshuai.xi switch (eClrSrc)
5926*53ee8cc1Swenshuai.xi {
5927*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX0:
5928*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX0 << CFG5_7F_CLR_SRC_SHIFT);
5929*53ee8cc1Swenshuai.xi break;
5930*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX1:
5931*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX1 << CFG5_7F_CLR_SRC_SHIFT);
5932*53ee8cc1Swenshuai.xi break;
5933*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX2:
5934*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX2 << CFG5_7F_CLR_SRC_SHIFT);
5935*53ee8cc1Swenshuai.xi break;
5936*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX3:
5937*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_PKTDMX3 << CFG5_7F_CLR_SRC_SHIFT);
5938*53ee8cc1Swenshuai.xi break;
5939*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI0:
5940*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI0 << CFG5_7F_CLR_SRC_SHIFT);
5941*53ee8cc1Swenshuai.xi break;
5942*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI1:
5943*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F, CFG5_7F_CLR_SRC_MASK, CFG5_7F_CLR_SRC_MMFI1 << CFG5_7F_CLR_SRC_SHIFT);
5944*53ee8cc1Swenshuai.xi break;
5945*53ee8cc1Swenshuai.xi default:
5946*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported Clear Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,eClrSrc);
5947*53ee8cc1Swenshuai.xi break;
5948*53ee8cc1Swenshuai.xi }
5949*53ee8cc1Swenshuai.xi }
5950*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)5951*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Src(TSP_DST_SEQ eAvType, TSP_SRC_SEQ ePktDmxId)
5952*53ee8cc1Swenshuai.xi {
5953*53ee8cc1Swenshuai.xi MS_U16 u16AvSrc = 0;
5954*53ee8cc1Swenshuai.xi
5955*53ee8cc1Swenshuai.xi switch(ePktDmxId)
5956*53ee8cc1Swenshuai.xi {
5957*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX0:
5958*53ee8cc1Swenshuai.xi u16AvSrc = AV_PKT_SRC_PKTDMX0;
5959*53ee8cc1Swenshuai.xi break;
5960*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX1:
5961*53ee8cc1Swenshuai.xi u16AvSrc = AV_PKT_SRC_PKTDMX1;
5962*53ee8cc1Swenshuai.xi break;
5963*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX2:
5964*53ee8cc1Swenshuai.xi u16AvSrc = AV_PKT_SRC_PKTDMX2;
5965*53ee8cc1Swenshuai.xi break;
5966*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX3:
5967*53ee8cc1Swenshuai.xi u16AvSrc = AV_PKT_SRC_PKTDMX3;
5968*53ee8cc1Swenshuai.xi break;
5969*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI0:
5970*53ee8cc1Swenshuai.xi u16AvSrc = AV_PKT_SRC_MMFI0;
5971*53ee8cc1Swenshuai.xi break;
5972*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI1:
5973*53ee8cc1Swenshuai.xi u16AvSrc = AV_PKT_SRC_MMFI1;
5974*53ee8cc1Swenshuai.xi break;
5975*53ee8cc1Swenshuai.xi default:
5976*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Source : %d!\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
5977*53ee8cc1Swenshuai.xi break;
5978*53ee8cc1Swenshuai.xi }
5979*53ee8cc1Swenshuai.xi
5980*53ee8cc1Swenshuai.xi switch (eAvType)
5981*53ee8cc1Swenshuai.xi {
5982*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
5983*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_SRC_MASK, u16AvSrc << CFG5_7E_VID_SRC_SHIFT);
5984*53ee8cc1Swenshuai.xi break;
5985*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
5986*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_VID_3D_SRC_MASK, u16AvSrc << CFG5_7E_VID_3D_SRC_SHIFT);
5987*53ee8cc1Swenshuai.xi break;
5988*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
5989*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDA_SRC_MASK, u16AvSrc << CFG5_7E_AUDA_SRC_SHIFT);
5990*53ee8cc1Swenshuai.xi break;
5991*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
5992*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7E, CFG5_7E_AUDB_SRC_MASK, u16AvSrc << CFG5_7E_AUDB_SRC_SHIFT);
5993*53ee8cc1Swenshuai.xi break;
5994*53ee8cc1Swenshuai.xi default:
5995*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
5996*53ee8cc1Swenshuai.xi break;
5997*53ee8cc1Swenshuai.xi }
5998*53ee8cc1Swenshuai.xi }
5999*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)6000*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Load(TSP_DST_SEQ eAvType, MS_BOOL bEn)
6001*53ee8cc1Swenshuai.xi {
6002*53ee8cc1Swenshuai.xi if(bEn == TRUE)
6003*53ee8cc1Swenshuai.xi {
6004*53ee8cc1Swenshuai.xi switch (eAvType)
6005*53ee8cc1Swenshuai.xi {
6006*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6007*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
6008*53ee8cc1Swenshuai.xi break;
6009*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6010*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
6011*53ee8cc1Swenshuai.xi break;
6012*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6013*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
6014*53ee8cc1Swenshuai.xi break;
6015*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6016*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
6017*53ee8cc1Swenshuai.xi break;
6018*53ee8cc1Swenshuai.xi default :
6019*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6020*53ee8cc1Swenshuai.xi break;
6021*53ee8cc1Swenshuai.xi }
6022*53ee8cc1Swenshuai.xi }
6023*53ee8cc1Swenshuai.xi else
6024*53ee8cc1Swenshuai.xi {
6025*53ee8cc1Swenshuai.xi switch (eAvType)
6026*53ee8cc1Swenshuai.xi {
6027*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6028*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V_PKT_CNT_LOAD);
6029*53ee8cc1Swenshuai.xi break;
6030*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6031*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_V3D_PKT_CNT_LOAD);
6032*53ee8cc1Swenshuai.xi break;
6033*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6034*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_A_PKT_CNT_LOAD);
6035*53ee8cc1Swenshuai.xi break;
6036*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6037*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7A,CFG5_7A_AD_PKT_CNT_LOAD);
6038*53ee8cc1Swenshuai.xi break;
6039*53ee8cc1Swenshuai.xi default :
6040*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6041*53ee8cc1Swenshuai.xi break;
6042*53ee8cc1Swenshuai.xi }
6043*53ee8cc1Swenshuai.xi }
6044*53ee8cc1Swenshuai.xi }
6045*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)6046*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_AvPktCnt_Get(TSP_DST_SEQ eAvType)
6047*53ee8cc1Swenshuai.xi {
6048*53ee8cc1Swenshuai.xi switch (eAvType)
6049*53ee8cc1Swenshuai.xi {
6050*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6051*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
6052*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
6053*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
6054*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
6055*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
6056*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6057*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
6058*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Av_PKT_Cnt);
6059*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6060*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_AV_PKT_SRC_SEL);
6061*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Av_PKT_Cnt1);
6062*53ee8cc1Swenshuai.xi default :
6063*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6064*53ee8cc1Swenshuai.xi return 0;
6065*53ee8cc1Swenshuai.xi }
6066*53ee8cc1Swenshuai.xi }
6067*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)6068*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_AvPktCnt_Clear(TSP_DST_SEQ eAvType)
6069*53ee8cc1Swenshuai.xi {
6070*53ee8cc1Swenshuai.xi switch (eAvType)
6071*53ee8cc1Swenshuai.xi {
6072*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6073*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
6074*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V_PKT_CNT_CLR);
6075*53ee8cc1Swenshuai.xi break;
6076*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6077*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
6078*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_V3D_PKT_CNT_CLR);
6079*53ee8cc1Swenshuai.xi break;
6080*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6081*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
6082*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_A_PKT_CNT_CLR);
6083*53ee8cc1Swenshuai.xi break;
6084*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6085*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
6086*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7C,CFG5_7C_AD_PKT_CNT_CLR);
6087*53ee8cc1Swenshuai.xi break;
6088*53ee8cc1Swenshuai.xi default :
6089*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6090*53ee8cc1Swenshuai.xi break;
6091*53ee8cc1Swenshuai.xi }
6092*53ee8cc1Swenshuai.xi }
6093*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)6094*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropDisPktCnt_Src(TSP_DST_SEQ eAvType,TSP_SRC_SEQ ePktDmxId)
6095*53ee8cc1Swenshuai.xi {
6096*53ee8cc1Swenshuai.xi MS_U16 u16AvType = 0;
6097*53ee8cc1Swenshuai.xi
6098*53ee8cc1Swenshuai.xi switch(eAvType)
6099*53ee8cc1Swenshuai.xi {
6100*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO:
6101*53ee8cc1Swenshuai.xi u16AvType = DIS_DROP_CNT_V;
6102*53ee8cc1Swenshuai.xi break;
6103*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D:
6104*53ee8cc1Swenshuai.xi u16AvType = DIS_DROP_CNT_V3D;
6105*53ee8cc1Swenshuai.xi break;
6106*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO:
6107*53ee8cc1Swenshuai.xi u16AvType = DIS_DROP_CNT_A;
6108*53ee8cc1Swenshuai.xi break;
6109*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2:
6110*53ee8cc1Swenshuai.xi u16AvType = DIS_DROP_CNT_AD;
6111*53ee8cc1Swenshuai.xi break;
6112*53ee8cc1Swenshuai.xi default:
6113*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6114*53ee8cc1Swenshuai.xi break;
6115*53ee8cc1Swenshuai.xi }
6116*53ee8cc1Swenshuai.xi
6117*53ee8cc1Swenshuai.xi switch(ePktDmxId)
6118*53ee8cc1Swenshuai.xi {
6119*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX0:
6120*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL_SHIFT));
6121*53ee8cc1Swenshuai.xi break;
6122*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX1:
6123*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_7F,CFG5_7F_PIDFLT_SRC_SEL1_MASK,(u16AvType<<CFG5_7F_PIDFLT_SRC_SEL1_SHIFT));
6124*53ee8cc1Swenshuai.xi break;
6125*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX2:
6126*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_77,CFG5_77_PIDFLT_SRC_SEL2_MASK,(u16AvType<<CFG5_77_PIDFLT_SRC_SEL2_SHIFT));
6127*53ee8cc1Swenshuai.xi break;
6128*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI0:
6129*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI0_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI0_SHIFT));
6130*53ee8cc1Swenshuai.xi break;
6131*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI1:
6132*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_78,CFG5_78_PIDFLT_SRC_SEL_MMFI1_MASK,(u16AvType<<CFG5_78_PIDFLT_SRC_SEL_MMFI1_SHIFT));
6133*53ee8cc1Swenshuai.xi break;
6134*53ee8cc1Swenshuai.xi default:
6135*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV FIFO Source : %d !\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
6136*53ee8cc1Swenshuai.xi break;
6137*53ee8cc1Swenshuai.xi }
6138*53ee8cc1Swenshuai.xi }
6139*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)6140*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn)
6141*53ee8cc1Swenshuai.xi {
6142*53ee8cc1Swenshuai.xi if(bEn == TRUE)
6143*53ee8cc1Swenshuai.xi {
6144*53ee8cc1Swenshuai.xi switch (eAvType)
6145*53ee8cc1Swenshuai.xi {
6146*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6147*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
6148*53ee8cc1Swenshuai.xi break;
6149*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6150*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
6151*53ee8cc1Swenshuai.xi break;
6152*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6153*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
6154*53ee8cc1Swenshuai.xi break;
6155*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6156*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
6157*53ee8cc1Swenshuai.xi break;
6158*53ee8cc1Swenshuai.xi default :
6159*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6160*53ee8cc1Swenshuai.xi break;
6161*53ee8cc1Swenshuai.xi }
6162*53ee8cc1Swenshuai.xi }
6163*53ee8cc1Swenshuai.xi else
6164*53ee8cc1Swenshuai.xi {
6165*53ee8cc1Swenshuai.xi switch (eAvType)
6166*53ee8cc1Swenshuai.xi {
6167*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6168*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V_LOAD);
6169*53ee8cc1Swenshuai.xi break;
6170*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6171*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_V3D_LOAD);
6172*53ee8cc1Swenshuai.xi break;
6173*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6174*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_A_LOAD);
6175*53ee8cc1Swenshuai.xi break;
6176*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6177*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DROP_PKT_CNT_AD_LOAD);
6178*53ee8cc1Swenshuai.xi break;
6179*53ee8cc1Swenshuai.xi default :
6180*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6181*53ee8cc1Swenshuai.xi break;
6182*53ee8cc1Swenshuai.xi }
6183*53ee8cc1Swenshuai.xi }
6184*53ee8cc1Swenshuai.xi }
6185*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)6186*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Load(TSP_DST_SEQ eAvType,MS_BOOL bEn,MS_BOOL bPayload)
6187*53ee8cc1Swenshuai.xi {
6188*53ee8cc1Swenshuai.xi if(bPayload)
6189*53ee8cc1Swenshuai.xi {
6190*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
6191*53ee8cc1Swenshuai.xi }
6192*53ee8cc1Swenshuai.xi else
6193*53ee8cc1Swenshuai.xi {
6194*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl3->CFG3_37,HW4_CFG37_DIS_CNTR_INC_BY_PL);
6195*53ee8cc1Swenshuai.xi }
6196*53ee8cc1Swenshuai.xi
6197*53ee8cc1Swenshuai.xi if(bEn == TRUE)
6198*53ee8cc1Swenshuai.xi {
6199*53ee8cc1Swenshuai.xi switch (eAvType)
6200*53ee8cc1Swenshuai.xi {
6201*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6202*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
6203*53ee8cc1Swenshuai.xi break;
6204*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6205*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V3D_LOAD);
6206*53ee8cc1Swenshuai.xi break;
6207*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6208*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
6209*53ee8cc1Swenshuai.xi break;
6210*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6211*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
6212*53ee8cc1Swenshuai.xi break;
6213*53ee8cc1Swenshuai.xi default :
6214*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6215*53ee8cc1Swenshuai.xi break;
6216*53ee8cc1Swenshuai.xi }
6217*53ee8cc1Swenshuai.xi }
6218*53ee8cc1Swenshuai.xi else
6219*53ee8cc1Swenshuai.xi {
6220*53ee8cc1Swenshuai.xi switch (eAvType)
6221*53ee8cc1Swenshuai.xi {
6222*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6223*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V_LOAD);
6224*53ee8cc1Swenshuai.xi break;
6225*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6226*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_V3D_LOAD);
6227*53ee8cc1Swenshuai.xi break;
6228*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6229*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_A_LOAD);
6230*53ee8cc1Swenshuai.xi break;
6231*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6232*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7B,CFG5_7B_DIS_PKT_CNT_AD_LOAD);
6233*53ee8cc1Swenshuai.xi break;
6234*53ee8cc1Swenshuai.xi default :
6235*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d \n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6236*53ee8cc1Swenshuai.xi break;
6237*53ee8cc1Swenshuai.xi }
6238*53ee8cc1Swenshuai.xi }
6239*53ee8cc1Swenshuai.xi }
6240*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId,MS_BOOL bDrop)6241*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_DropDisPktCnt_Get(TSP_SRC_SEQ ePktDmxId, MS_BOOL bDrop)
6242*53ee8cc1Swenshuai.xi {
6243*53ee8cc1Swenshuai.xi if(bDrop)
6244*53ee8cc1Swenshuai.xi {
6245*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
6246*53ee8cc1Swenshuai.xi }
6247*53ee8cc1Swenshuai.xi else
6248*53ee8cc1Swenshuai.xi {
6249*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7F,CFG5_7F_DROP_PKT_MODE);
6250*53ee8cc1Swenshuai.xi }
6251*53ee8cc1Swenshuai.xi
6252*53ee8cc1Swenshuai.xi switch (ePktDmxId)
6253*53ee8cc1Swenshuai.xi {
6254*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX0:
6255*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_0);
6256*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX1:
6257*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_1);
6258*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX2:
6259*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_2);
6260*53ee8cc1Swenshuai.xi case E_TSP_SRC_PKTDMX3:
6261*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Drop_Dis_PKT_Cnt_3);
6262*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI0:
6263*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->CFG5_0B);
6264*53ee8cc1Swenshuai.xi case E_TSP_SRC_MMFI1:
6265*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->CFG5_0C);
6266*53ee8cc1Swenshuai.xi default :
6267*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV FIFO Source : %d\n",__FILE__,__FUNCTION__,__LINE__,ePktDmxId);
6268*53ee8cc1Swenshuai.xi return 0;
6269*53ee8cc1Swenshuai.xi }
6270*53ee8cc1Swenshuai.xi }
6271*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)6272*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DropPktCnt_Clear(TSP_DST_SEQ eAvType)
6273*53ee8cc1Swenshuai.xi {
6274*53ee8cc1Swenshuai.xi switch (eAvType)
6275*53ee8cc1Swenshuai.xi {
6276*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6277*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
6278*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V_CLR);
6279*53ee8cc1Swenshuai.xi break;
6280*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6281*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
6282*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_V3D_CLR);
6283*53ee8cc1Swenshuai.xi break;
6284*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6285*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
6286*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_A_CLR);
6287*53ee8cc1Swenshuai.xi break;
6288*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6289*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
6290*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DROP_PKT_CNT_AD_CLR);
6291*53ee8cc1Swenshuai.xi break;
6292*53ee8cc1Swenshuai.xi default :
6293*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6294*53ee8cc1Swenshuai.xi break;
6295*53ee8cc1Swenshuai.xi }
6296*53ee8cc1Swenshuai.xi }
6297*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)6298*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_DisPktCnt_Clear(TSP_DST_SEQ eAvType)
6299*53ee8cc1Swenshuai.xi {
6300*53ee8cc1Swenshuai.xi switch (eAvType)
6301*53ee8cc1Swenshuai.xi {
6302*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO :
6303*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
6304*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V_CLR);
6305*53ee8cc1Swenshuai.xi break;
6306*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_VIDEO3D :
6307*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
6308*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_V3D_CLR);
6309*53ee8cc1Swenshuai.xi break;
6310*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO :
6311*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
6312*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_A_CLR);
6313*53ee8cc1Swenshuai.xi break;
6314*53ee8cc1Swenshuai.xi case E_TSP_DST_FIFO_AUDIO2 :
6315*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
6316*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_7D,CFG5_7D_DIS_PKT_CNT_AD_CLR);
6317*53ee8cc1Swenshuai.xi break;
6318*53ee8cc1Swenshuai.xi default :
6319*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported AV Type : %d !\n",__FILE__,__FUNCTION__,__LINE__,eAvType);
6320*53ee8cc1Swenshuai.xi break;
6321*53ee8cc1Swenshuai.xi }
6322*53ee8cc1Swenshuai.xi }
6323*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)6324*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Src(MS_U32 u32TsIf)
6325*53ee8cc1Swenshuai.xi {
6326*53ee8cc1Swenshuai.xi MS_U16 u16TSIF = 0;;
6327*53ee8cc1Swenshuai.xi
6328*53ee8cc1Swenshuai.xi switch(u32TsIf)
6329*53ee8cc1Swenshuai.xi {
6330*53ee8cc1Swenshuai.xi case 0:
6331*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF0;
6332*53ee8cc1Swenshuai.xi break;
6333*53ee8cc1Swenshuai.xi case 1:
6334*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF1;
6335*53ee8cc1Swenshuai.xi break;
6336*53ee8cc1Swenshuai.xi case 2:
6337*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF2;
6338*53ee8cc1Swenshuai.xi break;
6339*53ee8cc1Swenshuai.xi default:
6340*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
6341*53ee8cc1Swenshuai.xi break;
6342*53ee8cc1Swenshuai.xi }
6343*53ee8cc1Swenshuai.xi
6344*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_ERR_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_ERR_PKT_SRC_SEL_SHIFT));
6345*53ee8cc1Swenshuai.xi }
6346*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)6347*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
6348*53ee8cc1Swenshuai.xi {
6349*53ee8cc1Swenshuai.xi if(bEn == TRUE)
6350*53ee8cc1Swenshuai.xi {
6351*53ee8cc1Swenshuai.xi switch(u32TsIf)
6352*53ee8cc1Swenshuai.xi {
6353*53ee8cc1Swenshuai.xi case 0:
6354*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
6355*53ee8cc1Swenshuai.xi break;
6356*53ee8cc1Swenshuai.xi case 1:
6357*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
6358*53ee8cc1Swenshuai.xi break;
6359*53ee8cc1Swenshuai.xi case 2:
6360*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
6361*53ee8cc1Swenshuai.xi break;
6362*53ee8cc1Swenshuai.xi default:
6363*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
6364*53ee8cc1Swenshuai.xi break;
6365*53ee8cc1Swenshuai.xi }
6366*53ee8cc1Swenshuai.xi }
6367*53ee8cc1Swenshuai.xi else
6368*53ee8cc1Swenshuai.xi {
6369*53ee8cc1Swenshuai.xi switch(u32TsIf)
6370*53ee8cc1Swenshuai.xi {
6371*53ee8cc1Swenshuai.xi case 0:
6372*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_0_LOAD);
6373*53ee8cc1Swenshuai.xi break;
6374*53ee8cc1Swenshuai.xi case 1:
6375*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_1_LOAD);
6376*53ee8cc1Swenshuai.xi break;
6377*53ee8cc1Swenshuai.xi case 2:
6378*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_ERR_PKT_CNT_2_LOAD);
6379*53ee8cc1Swenshuai.xi break;
6380*53ee8cc1Swenshuai.xi default:
6381*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
6382*53ee8cc1Swenshuai.xi break;
6383*53ee8cc1Swenshuai.xi }
6384*53ee8cc1Swenshuai.xi }
6385*53ee8cc1Swenshuai.xi
6386*53ee8cc1Swenshuai.xi }
6387*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_ErrPktCnt_Get(void)6388*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_ErrPktCnt_Get(void)
6389*53ee8cc1Swenshuai.xi {
6390*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Err_PKT_Cnt);
6391*53ee8cc1Swenshuai.xi }
6392*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)6393*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_ErrPktCnt_Clear(MS_U32 u32Tsif)
6394*53ee8cc1Swenshuai.xi {
6395*53ee8cc1Swenshuai.xi switch (u32Tsif)
6396*53ee8cc1Swenshuai.xi {
6397*53ee8cc1Swenshuai.xi case 0 :
6398*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
6399*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_0_CLR);
6400*53ee8cc1Swenshuai.xi break;
6401*53ee8cc1Swenshuai.xi case 1:
6402*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
6403*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_1_CLR);
6404*53ee8cc1Swenshuai.xi break;
6405*53ee8cc1Swenshuai.xi case 2 :
6406*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
6407*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_ERR_PKT_CNT_2_CLR);
6408*53ee8cc1Swenshuai.xi break;
6409*53ee8cc1Swenshuai.xi default :
6410*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
6411*53ee8cc1Swenshuai.xi break;
6412*53ee8cc1Swenshuai.xi }
6413*53ee8cc1Swenshuai.xi }
6414*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)6415*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Src(MS_U32 u32TsIf)
6416*53ee8cc1Swenshuai.xi {
6417*53ee8cc1Swenshuai.xi MS_U16 u16TSIF = 0;;
6418*53ee8cc1Swenshuai.xi
6419*53ee8cc1Swenshuai.xi switch(u32TsIf)
6420*53ee8cc1Swenshuai.xi {
6421*53ee8cc1Swenshuai.xi case 0:
6422*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF0;
6423*53ee8cc1Swenshuai.xi break;
6424*53ee8cc1Swenshuai.xi case 1:
6425*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF1;
6426*53ee8cc1Swenshuai.xi break;
6427*53ee8cc1Swenshuai.xi case 2:
6428*53ee8cc1Swenshuai.xi u16TSIF = TSIF_SRC_SEL_TSIF2;
6429*53ee8cc1Swenshuai.xi break;
6430*53ee8cc1Swenshuai.xi default:
6431*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
6432*53ee8cc1Swenshuai.xi break;
6433*53ee8cc1Swenshuai.xi }
6434*53ee8cc1Swenshuai.xi
6435*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl5->CFG5_70,CFG5_70_INPUT_PKT_SRC_SEL_MASK,(u16TSIF << CFG5_70_INPUT_PKT_SRC_SEL_SHIT));
6436*53ee8cc1Swenshuai.xi }
6437*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)6438*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Load(MS_U32 u32TsIf,MS_BOOL bEn)
6439*53ee8cc1Swenshuai.xi {
6440*53ee8cc1Swenshuai.xi if(bEn == TRUE)
6441*53ee8cc1Swenshuai.xi {
6442*53ee8cc1Swenshuai.xi switch(u32TsIf)
6443*53ee8cc1Swenshuai.xi {
6444*53ee8cc1Swenshuai.xi case 0:
6445*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
6446*53ee8cc1Swenshuai.xi break;
6447*53ee8cc1Swenshuai.xi case 1:
6448*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
6449*53ee8cc1Swenshuai.xi break;
6450*53ee8cc1Swenshuai.xi case 2:
6451*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
6452*53ee8cc1Swenshuai.xi break;
6453*53ee8cc1Swenshuai.xi default:
6454*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
6455*53ee8cc1Swenshuai.xi break;
6456*53ee8cc1Swenshuai.xi }
6457*53ee8cc1Swenshuai.xi }
6458*53ee8cc1Swenshuai.xi else
6459*53ee8cc1Swenshuai.xi {
6460*53ee8cc1Swenshuai.xi switch(u32TsIf)
6461*53ee8cc1Swenshuai.xi {
6462*53ee8cc1Swenshuai.xi case 0:
6463*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_0_LOAD);
6464*53ee8cc1Swenshuai.xi break;
6465*53ee8cc1Swenshuai.xi case 1:
6466*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_1_LOAD);
6467*53ee8cc1Swenshuai.xi break;
6468*53ee8cc1Swenshuai.xi case 2:
6469*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_71,CFG5_71_INPUT_PKT_CNT_2_LOAD);
6470*53ee8cc1Swenshuai.xi break;
6471*53ee8cc1Swenshuai.xi default:
6472*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n",__FILE__,__FUNCTION__,__LINE__,(unsigned int)u32TsIf);
6473*53ee8cc1Swenshuai.xi break;
6474*53ee8cc1Swenshuai.xi }
6475*53ee8cc1Swenshuai.xi }
6476*53ee8cc1Swenshuai.xi }
6477*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_InputPktCnt_Get(void)6478*53ee8cc1Swenshuai.xi MS_U16 HAL_TSP_Debug_InputPktCnt_Get(void)
6479*53ee8cc1Swenshuai.xi {
6480*53ee8cc1Swenshuai.xi return REG16_R(&_RegCtrl5->Input_PKT_Cnt);
6481*53ee8cc1Swenshuai.xi }
6482*53ee8cc1Swenshuai.xi
HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)6483*53ee8cc1Swenshuai.xi void HAL_TSP_Debug_InputPktCnt_Clear(MS_U32 u32Tsif)
6484*53ee8cc1Swenshuai.xi {
6485*53ee8cc1Swenshuai.xi switch (u32Tsif)
6486*53ee8cc1Swenshuai.xi {
6487*53ee8cc1Swenshuai.xi case 0 :
6488*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
6489*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_0_CLR);
6490*53ee8cc1Swenshuai.xi break;
6491*53ee8cc1Swenshuai.xi case 1:
6492*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
6493*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_1_CLR);
6494*53ee8cc1Swenshuai.xi break;
6495*53ee8cc1Swenshuai.xi case 2 :
6496*53ee8cc1Swenshuai.xi REG16_SET(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
6497*53ee8cc1Swenshuai.xi REG16_CLR(&_RegCtrl5->CFG5_72,CFG5_72_INPUT_PKT_CNT_2_CLR);
6498*53ee8cc1Swenshuai.xi break;
6499*53ee8cc1Swenshuai.xi default :
6500*53ee8cc1Swenshuai.xi printf("[%s][%s][%d] UnSupported TSIF : %u\n\n",__FILE__,__FUNCTION__,__LINE__, (unsigned int)u32Tsif);
6501*53ee8cc1Swenshuai.xi break;
6502*53ee8cc1Swenshuai.xi }
6503*53ee8cc1Swenshuai.xi
6504*53ee8cc1Swenshuai.xi }
6505*53ee8cc1Swenshuai.xi
HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng,MS_U32 u32FQSrc)6506*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng, MS_U32 u32FQSrc)
6507*53ee8cc1Swenshuai.xi {
6508*53ee8cc1Swenshuai.xi MS_U32 u32Src = 0xFF;
6509*53ee8cc1Swenshuai.xi
6510*53ee8cc1Swenshuai.xi if(u32FQEng != 0)
6511*53ee8cc1Swenshuai.xi return FALSE;
6512*53ee8cc1Swenshuai.xi
6513*53ee8cc1Swenshuai.xi switch(u32FQSrc)
6514*53ee8cc1Swenshuai.xi {
6515*53ee8cc1Swenshuai.xi case 0: // @NOTE : mapping for Playback0 (LIVE0)
6516*53ee8cc1Swenshuai.xi u32Src = TSP_FIQ_SRC_PATH0;
6517*53ee8cc1Swenshuai.xi break;
6518*53ee8cc1Swenshuai.xi case 1: // @NOTE : mapping for Playback1 (LIVE1)
6519*53ee8cc1Swenshuai.xi u32Src = TSP_FIQ_SRC_PATH1;
6520*53ee8cc1Swenshuai.xi break;
6521*53ee8cc1Swenshuai.xi case 2: // @NOTE : mapping for Playback2 (LIVE2)
6522*53ee8cc1Swenshuai.xi u32Src = TSP_FIQ_SRC_PATH2;
6523*53ee8cc1Swenshuai.xi break;
6524*53ee8cc1Swenshuai.xi default:
6525*53ee8cc1Swenshuai.xi return FALSE;
6526*53ee8cc1Swenshuai.xi }
6527*53ee8cc1Swenshuai.xi
6528*53ee8cc1Swenshuai.xi REG16_MSK_W(&_RegCtrl6->CFG6_60, TSP_FIQ_MUX_MASK, (MS_U16)u32Src);
6529*53ee8cc1Swenshuai.xi
6530*53ee8cc1Swenshuai.xi return TRUE;
6531*53ee8cc1Swenshuai.xi }
6532*53ee8cc1Swenshuai.xi
HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)6533*53ee8cc1Swenshuai.xi MS_U32 HAL_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng)
6534*53ee8cc1Swenshuai.xi {
6535*53ee8cc1Swenshuai.xi MS_U32 u32Src = 0xFF;
6536*53ee8cc1Swenshuai.xi MS_U32 u32Ret = 0xFF;
6537*53ee8cc1Swenshuai.xi
6538*53ee8cc1Swenshuai.xi if(u32FQEng != 0)
6539*53ee8cc1Swenshuai.xi return FALSE;
6540*53ee8cc1Swenshuai.xi
6541*53ee8cc1Swenshuai.xi u32Src = (MS_U32)(REG16_R(&_RegCtrl6->CFG6_60) & TSP_FIQ_MUX_MASK);
6542*53ee8cc1Swenshuai.xi
6543*53ee8cc1Swenshuai.xi switch(u32Src)
6544*53ee8cc1Swenshuai.xi {
6545*53ee8cc1Swenshuai.xi case TSP_FIQ_SRC_PATH0:
6546*53ee8cc1Swenshuai.xi u32Ret = 0; // @NOTE : mapping for Playback0 (LIVE0)
6547*53ee8cc1Swenshuai.xi break;
6548*53ee8cc1Swenshuai.xi case TSP_FIQ_SRC_PATH1:
6549*53ee8cc1Swenshuai.xi u32Ret = 1; // @NOTE : mapping for Playback2 (LIVE2)
6550*53ee8cc1Swenshuai.xi break;
6551*53ee8cc1Swenshuai.xi case TSP_FIQ_SRC_PATH2:
6552*53ee8cc1Swenshuai.xi u32Ret = 2; // @NOTE : mapping for Playback1 (LIVE1)
6553*53ee8cc1Swenshuai.xi break;
6554*53ee8cc1Swenshuai.xi default:
6555*53ee8cc1Swenshuai.xi return FALSE;
6556*53ee8cc1Swenshuai.xi }
6557*53ee8cc1Swenshuai.xi return u32Ret;
6558*53ee8cc1Swenshuai.xi }
6559*53ee8cc1Swenshuai.xi
HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng,MS_BOOL bFltNull)6560*53ee8cc1Swenshuai.xi MS_BOOL HAL_TSP_FQ_FLT_NULL_PKT(MS_U32 u32FQEng, MS_BOOL bFltNull)
6561*53ee8cc1Swenshuai.xi {
6562*53ee8cc1Swenshuai.xi // not implement yet
6563*53ee8cc1Swenshuai.xi return TRUE;
6564*53ee8cc1Swenshuai.xi }
6565