1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi // such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi // third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any
38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi // parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi // ("Services").
52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi // or otherwise:
58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi // with the said Rules.
72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi // be English.
74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi
95*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi // file halRASP.c
97*53ee8cc1Swenshuai.xi // @brief RASP HAL
98*53ee8cc1Swenshuai.xi // @author MStar Semiconductor,Inc.
99*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
100*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
101*53ee8cc1Swenshuai.xi #include <linux/module.h>
102*53ee8cc1Swenshuai.xi #endif
103*53ee8cc1Swenshuai.xi #include "MsCommon.h"
104*53ee8cc1Swenshuai.xi #include "regNDSRASP.h"
105*53ee8cc1Swenshuai.xi #include "halNDSRASP.h"
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi // Driver Compiler Option
109*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xi
112*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
113*53ee8cc1Swenshuai.xi // TSP Hardware Abstraction Layer
114*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
115*53ee8cc1Swenshuai.xi static MS_U32 _u32RegBase = 0;
116*53ee8cc1Swenshuai.xi
117*53ee8cc1Swenshuai.xi static REG_RASP* _RASPReg[RASP_NUM] = {NULL , NULL};
118*53ee8cc1Swenshuai.xi static MS_U32 _u32RASP_PidfltBase[RASP_NUM] = {NULL , NULL};
119*53ee8cc1Swenshuai.xi static MS_U32 _u32RASP_EcmPidfltBase[RASP_NUM] = {NULL , NULL};
120*53ee8cc1Swenshuai.xi static MS_U32 _u32RASP_EventMaskBase[RASP_NUM] = {NULL , NULL};
121*53ee8cc1Swenshuai.xi static MS_U32 _u32RASP_PayloadMaskBase[RASP_NUM] = {NULL , NULL};
122*53ee8cc1Swenshuai.xi static MS_U32 _g32RASPHalDbgLv = RASP_DBGLV_DEBUG;
123*53ee8cc1Swenshuai.xi
124*53ee8cc1Swenshuai.xi // Some register has write order, for example, writing PCR_L will disable PCR counter
125*53ee8cc1Swenshuai.xi // writing PCR_M trigger nothing, writing PCR_H will enable PCR counter
126*53ee8cc1Swenshuai.xi #define _HAL_REG32_W(reg, value) { \
127*53ee8cc1Swenshuai.xi do { (reg)->L = ((value) & 0x0000FFFF); \
128*53ee8cc1Swenshuai.xi (reg)->H = ((value) >> 16); } while(0); }
129*53ee8cc1Swenshuai.xi
130*53ee8cc1Swenshuai.xi #define _HAL_REG16_W(reg, value) { \
131*53ee8cc1Swenshuai.xi (reg)->data = ((value) & 0x0000FFFF); }
132*53ee8cc1Swenshuai.xi
133*53ee8cc1Swenshuai.xi
134*53ee8cc1Swenshuai.xi #define RASP_NUM_CHECK(idx) if( (MS_U32)idx >= (MS_U32)RASP_NUM ) \
135*53ee8cc1Swenshuai.xi { printf("[RASP][ERR] Rasp Engine [%d] not exist ! \n",idx); \
136*53ee8cc1Swenshuai.xi return ; }
137*53ee8cc1Swenshuai.xi
138*53ee8cc1Swenshuai.xi #define RASP_NUM_CHECK_RET(idx) if( (MS_U32)idx >= (MS_U32)RASP_NUM ) \
139*53ee8cc1Swenshuai.xi { printf("[RASP][ERR] Rasp Engine [%d] not exist ! \n",idx); \
140*53ee8cc1Swenshuai.xi return 0; }
141*53ee8cc1Swenshuai.xi
142*53ee8cc1Swenshuai.xi #define HALRASP_DBG(lv, x, args...) if (lv <= _g32RASPHalDbgLv ) \
143*53ee8cc1Swenshuai.xi { printf("%s, ",__FUNCTION__); \
144*53ee8cc1Swenshuai.xi printf(x, ##args); }
145*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
146*53ee8cc1Swenshuai.xi // Local variable
147*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
148*53ee8cc1Swenshuai.xi
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xi //K2 RASP1 MIU setting
151*53ee8cc1Swenshuai.xi static REG16* _REG_RASP1_MIU;
152*53ee8cc1Swenshuai.xi #define _REG_RASP1_MIU_BASE (0x2460)
153*53ee8cc1Swenshuai.xi #define _RASP1_MIU_EN (0x4000)
154*53ee8cc1Swenshuai.xi
155*53ee8cc1Swenshuai.xi static MS_U32 _gRaspFileIn_Addr[RASP_NUM];
156*53ee8cc1Swenshuai.xi static MS_U32 _gRaspEng_Addr[RASP_NUM];
157*53ee8cc1Swenshuai.xi
158*53ee8cc1Swenshuai.xi static MS_U32 _gChipTp_Addr;
159*53ee8cc1Swenshuai.xi static MS_U32 _gClkGen_Addr;
160*53ee8cc1Swenshuai.xi static MS_U32 _gClkGen2_Addr;
161*53ee8cc1Swenshuai.xi
162*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
163*53ee8cc1Swenshuai.xi // Forward declaration
164*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
165*53ee8cc1Swenshuai.xi
166*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
167*53ee8cc1Swenshuai.xi // Local Function
168*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
169*53ee8cc1Swenshuai.xi
HAL_RFILEIN_WriteReg_Word(MS_U32 rasp_eng,MS_U32 u32RegAddr,MS_U16 u16Data)170*53ee8cc1Swenshuai.xi void HAL_RFILEIN_WriteReg_Word(MS_U32 rasp_eng, MS_U32 u32RegAddr, MS_U16 u16Data)
171*53ee8cc1Swenshuai.xi {
172*53ee8cc1Swenshuai.xi MS_U32 u32reg;
173*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspFileIn_Addr[rasp_eng];
174*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = u16Data;
175*53ee8cc1Swenshuai.xi
176*53ee8cc1Swenshuai.xi }
177*53ee8cc1Swenshuai.xi
HAL_RFILEIN_ReadReg_Word(MS_U32 rasp_eng,MS_U32 u32RegAddr)178*53ee8cc1Swenshuai.xi MS_U16 HAL_RFILEIN_ReadReg_Word(MS_U32 rasp_eng, MS_U32 u32RegAddr)
179*53ee8cc1Swenshuai.xi {
180*53ee8cc1Swenshuai.xi MS_U32 u32reg;
181*53ee8cc1Swenshuai.xi MS_U16 u16Data;
182*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspFileIn_Addr[rasp_eng];
183*53ee8cc1Swenshuai.xi u16Data = (*(volatile MS_U16*)(u32reg));
184*53ee8cc1Swenshuai.xi
185*53ee8cc1Swenshuai.xi return u16Data;
186*53ee8cc1Swenshuai.xi }
187*53ee8cc1Swenshuai.xi
HAL_RFILEIN_WriteReg_DWord(MS_U32 rasp_eng,MS_U32 u32RegAddr,MS_U32 u32Data)188*53ee8cc1Swenshuai.xi void HAL_RFILEIN_WriteReg_DWord(MS_U32 rasp_eng, MS_U32 u32RegAddr, MS_U32 u32Data)
189*53ee8cc1Swenshuai.xi {
190*53ee8cc1Swenshuai.xi MS_U32 u32reg;
191*53ee8cc1Swenshuai.xi
192*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspFileIn_Addr[rasp_eng];
193*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = (MS_U16)(u32Data&0xffff);
194*53ee8cc1Swenshuai.xi //printf("(reg,value) = (%x,%x)\n", u32RegAddr, *(volatile MS_U16*)(u32reg) );
195*53ee8cc1Swenshuai.xi
196*53ee8cc1Swenshuai.xi u32reg += 4;
197*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = (MS_U16)((u32Data>>16)&0xffff);
198*53ee8cc1Swenshuai.xi //printf("(reg,value) = (%x,%x)\n", u32RegAddr+1, *(volatile MS_U16*)(u32reg) );
199*53ee8cc1Swenshuai.xi }
200*53ee8cc1Swenshuai.xi
HAL_RFILEIN_ReadReg_DWord(MS_U32 rasp_eng,MS_U32 u32RegAddr)201*53ee8cc1Swenshuai.xi MS_U32 HAL_RFILEIN_ReadReg_DWord(MS_U32 rasp_eng, MS_U32 u32RegAddr)
202*53ee8cc1Swenshuai.xi {
203*53ee8cc1Swenshuai.xi MS_U32 u32reg,u32Data;
204*53ee8cc1Swenshuai.xi MS_U16 u16Data1,u16Data2;
205*53ee8cc1Swenshuai.xi
206*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspFileIn_Addr[rasp_eng];
207*53ee8cc1Swenshuai.xi u16Data1 = (*(volatile MS_U16*)(u32reg));
208*53ee8cc1Swenshuai.xi
209*53ee8cc1Swenshuai.xi u32reg += 4;
210*53ee8cc1Swenshuai.xi u16Data2 = (*(volatile MS_U16*)(u32reg));
211*53ee8cc1Swenshuai.xi u32Data = (MS_U32)(u16Data1) + ( ((MS_U32)u16Data2)<<16 );
212*53ee8cc1Swenshuai.xi
213*53ee8cc1Swenshuai.xi return u32Data;
214*53ee8cc1Swenshuai.xi }
215*53ee8cc1Swenshuai.xi
HAL_RASP_WriteReg_Word(MS_U32 rasp_eng,MS_U32 u32RegAddr,MS_U16 u16Data)216*53ee8cc1Swenshuai.xi void HAL_RASP_WriteReg_Word(MS_U32 rasp_eng, MS_U32 u32RegAddr, MS_U16 u16Data)
217*53ee8cc1Swenshuai.xi {
218*53ee8cc1Swenshuai.xi MS_U32 u32reg;
219*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspEng_Addr[rasp_eng];
220*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = u16Data;
221*53ee8cc1Swenshuai.xi
222*53ee8cc1Swenshuai.xi //printf("(reg,value) = (%x,%x)\n",u32reg,u16Data);
223*53ee8cc1Swenshuai.xi }
224*53ee8cc1Swenshuai.xi
HAL_RASP_ReadReg_Word(MS_U32 rasp_eng,MS_U32 u32RegAddr)225*53ee8cc1Swenshuai.xi MS_U16 HAL_RASP_ReadReg_Word(MS_U32 rasp_eng, MS_U32 u32RegAddr)
226*53ee8cc1Swenshuai.xi {
227*53ee8cc1Swenshuai.xi MS_U32 u32reg;
228*53ee8cc1Swenshuai.xi MS_U16 u16Data;
229*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspEng_Addr[rasp_eng];
230*53ee8cc1Swenshuai.xi u16Data = (*(volatile MS_U16*)(u32reg));
231*53ee8cc1Swenshuai.xi
232*53ee8cc1Swenshuai.xi return u16Data;
233*53ee8cc1Swenshuai.xi }
234*53ee8cc1Swenshuai.xi
235*53ee8cc1Swenshuai.xi #if 0
236*53ee8cc1Swenshuai.xi void HAL_NDSRASP_WriteOtherBank_Word(MS_U32 bank, MS_U32 u32RegAddr, MS_U16 u16Data)
237*53ee8cc1Swenshuai.xi {
238*53ee8cc1Swenshuai.xi MS_U32 u32reg;
239*53ee8cc1Swenshuai.xi MS_U16 temp;
240*53ee8cc1Swenshuai.xi
241*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + bank;
242*53ee8cc1Swenshuai.xi temp = (*(volatile MS_U16*)(u32reg));
243*53ee8cc1Swenshuai.xi temp |= u16Data;
244*53ee8cc1Swenshuai.xi
245*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = temp;
246*53ee8cc1Swenshuai.xi
247*53ee8cc1Swenshuai.xi }
248*53ee8cc1Swenshuai.xi
249*53ee8cc1Swenshuai.xi void HAL_NDSRASP_MaskOtherBank_Word(MS_U32 bank, MS_U32 u32RegAddr, MS_U16 u16MaskData)
250*53ee8cc1Swenshuai.xi {
251*53ee8cc1Swenshuai.xi MS_U32 u32reg;
252*53ee8cc1Swenshuai.xi MS_U16 temp;
253*53ee8cc1Swenshuai.xi
254*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + bank;
255*53ee8cc1Swenshuai.xi temp = (*(volatile MS_U16*)(u32reg));
256*53ee8cc1Swenshuai.xi temp &= u16MaskData;
257*53ee8cc1Swenshuai.xi
258*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = temp;
259*53ee8cc1Swenshuai.xi
260*53ee8cc1Swenshuai.xi }
261*53ee8cc1Swenshuai.xi #endif
262*53ee8cc1Swenshuai.xi
HAL_RASP_WriteReg_DWord(MS_U32 rasp_eng,MS_U32 u32RegAddr,MS_U32 u32Data)263*53ee8cc1Swenshuai.xi void HAL_RASP_WriteReg_DWord(MS_U32 rasp_eng, MS_U32 u32RegAddr, MS_U32 u32Data)
264*53ee8cc1Swenshuai.xi {
265*53ee8cc1Swenshuai.xi MS_U32 u32reg;
266*53ee8cc1Swenshuai.xi
267*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspEng_Addr[rasp_eng];
268*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = (MS_U16)(u32Data&0xffff);
269*53ee8cc1Swenshuai.xi
270*53ee8cc1Swenshuai.xi u32reg += 4;
271*53ee8cc1Swenshuai.xi (*(volatile MS_U16*)(u32reg)) = (MS_U16)((u32Data>>16)&0xffff);
272*53ee8cc1Swenshuai.xi }
273*53ee8cc1Swenshuai.xi
HAL_RASP_ReadReg_DWord(MS_U32 rasp_eng,MS_U32 u32RegAddr)274*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_ReadReg_DWord(MS_U32 rasp_eng, MS_U32 u32RegAddr)
275*53ee8cc1Swenshuai.xi {
276*53ee8cc1Swenshuai.xi MS_U32 u32reg,u32Data;
277*53ee8cc1Swenshuai.xi MS_U16 u16Data1,u16Data2;
278*53ee8cc1Swenshuai.xi
279*53ee8cc1Swenshuai.xi u32reg = (u32RegAddr*4) + _gRaspEng_Addr[rasp_eng];
280*53ee8cc1Swenshuai.xi u16Data1 = (*(volatile MS_U16*)(u32reg));
281*53ee8cc1Swenshuai.xi
282*53ee8cc1Swenshuai.xi u32reg += 4;
283*53ee8cc1Swenshuai.xi u16Data2 = (*(volatile MS_U16*)(u32reg));
284*53ee8cc1Swenshuai.xi u32Data = (u16Data1) + ((MS_U32)u16Data2<<16);
285*53ee8cc1Swenshuai.xi
286*53ee8cc1Swenshuai.xi return u32Data;
287*53ee8cc1Swenshuai.xi }
288*53ee8cc1Swenshuai.xi
289*53ee8cc1Swenshuai.xi #if 0
290*53ee8cc1Swenshuai.xi static void _delay(void)
291*53ee8cc1Swenshuai.xi {
292*53ee8cc1Swenshuai.xi volatile MS_U32 i;
293*53ee8cc1Swenshuai.xi for (i = 0; i< 0xFFFF; i++);
294*53ee8cc1Swenshuai.xi }
295*53ee8cc1Swenshuai.xi #endif
296*53ee8cc1Swenshuai.xi
297*53ee8cc1Swenshuai.xi #ifdef REG32__
_HAL_REG32_R(REG32 * reg)298*53ee8cc1Swenshuai.xi static MS_U32 _HAL_REG32_R(REG32 *reg)
299*53ee8cc1Swenshuai.xi {
300*53ee8cc1Swenshuai.xi MS_U32 value = 0;
301*53ee8cc1Swenshuai.xi value = (reg)->H << 16;
302*53ee8cc1Swenshuai.xi value |= (reg)->L;
303*53ee8cc1Swenshuai.xi return value;
304*53ee8cc1Swenshuai.xi }
305*53ee8cc1Swenshuai.xi #endif
306*53ee8cc1Swenshuai.xi
_HAL_REG16_R(REG16 * reg)307*53ee8cc1Swenshuai.xi static MS_U16 _HAL_REG16_R(REG16 *reg)
308*53ee8cc1Swenshuai.xi {
309*53ee8cc1Swenshuai.xi MS_U16 value;
310*53ee8cc1Swenshuai.xi value = (reg)->data;
311*53ee8cc1Swenshuai.xi return value;
312*53ee8cc1Swenshuai.xi }
313*53ee8cc1Swenshuai.xi
314*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
315*53ee8cc1Swenshuai.xi // For MISC part
316*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
HAL_NDSRASP_SetBank(MS_U32 u32BankAddr)317*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetBank(MS_U32 u32BankAddr)
318*53ee8cc1Swenshuai.xi {
319*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ALERT,"u32BankAddr = %x\n",u32BankAddr);
320*53ee8cc1Swenshuai.xi _u32RegBase = u32BankAddr;
321*53ee8cc1Swenshuai.xi _RASPReg[0] = (REG_RASP*)(_u32RegBase + RASP0_BANK0_REG_CTRL_BASE);
322*53ee8cc1Swenshuai.xi _u32RASP_PidfltBase[0] = _u32RegBase + RASP0_BANK0_PIDFLT_BASE;
323*53ee8cc1Swenshuai.xi _u32RASP_EventMaskBase[0] = _u32RegBase + RASP0_BANK1_EVENT_MASK_BASE;
324*53ee8cc1Swenshuai.xi _u32RASP_PayloadMaskBase[0] = _u32RegBase + RASP0_BANK1_PAYLOAD_MASK_BASE;
325*53ee8cc1Swenshuai.xi _u32RASP_EcmPidfltBase[0] = _u32RegBase + RASP0_BANK1_ECM_PIDFLT_BASE;
326*53ee8cc1Swenshuai.xi
327*53ee8cc1Swenshuai.xi _RASPReg[1] = (REG_RASP*)(_u32RegBase + RASP1_BANK0_REG_CTRL_BASE);
328*53ee8cc1Swenshuai.xi _u32RASP_PidfltBase[1] = _u32RegBase + RASP1_BANK0_PIDFLT_BASE;
329*53ee8cc1Swenshuai.xi _u32RASP_EventMaskBase[1] = _u32RegBase + RASP1_BANK1_EVENT_MASK_BASE;
330*53ee8cc1Swenshuai.xi _u32RASP_PayloadMaskBase[1] = _u32RegBase + RASP1_BANK1_PAYLOAD_MASK_BASE;
331*53ee8cc1Swenshuai.xi _u32RASP_EcmPidfltBase[1] = _u32RegBase + RASP1_BANK1_ECM_PIDFLT_BASE;
332*53ee8cc1Swenshuai.xi //K2 RASP1 MIU setting
333*53ee8cc1Swenshuai.xi _REG_RASP1_MIU = (REG16*)(_u32RegBase + _REG_RASP1_MIU_BASE);
334*53ee8cc1Swenshuai.xi
335*53ee8cc1Swenshuai.xi _gRaspFileIn_Addr[0] = _u32RegBase + REG_RASP0_FILE_BASE;
336*53ee8cc1Swenshuai.xi _gRaspFileIn_Addr[1] = _u32RegBase + REG_RASP1_FILE_BASE;
337*53ee8cc1Swenshuai.xi
338*53ee8cc1Swenshuai.xi _gRaspEng_Addr[0] = _u32RegBase + REG_RASP0_BASE;
339*53ee8cc1Swenshuai.xi _gRaspEng_Addr[1] = _u32RegBase + REG_RASP1_BASE;
340*53ee8cc1Swenshuai.xi
341*53ee8cc1Swenshuai.xi _gChipTp_Addr = _u32RegBase + REG_CHIPTOP_RP_BASE;
342*53ee8cc1Swenshuai.xi _gClkGen_Addr = _u32RegBase + REG_CLKGEN_RP_BASE;
343*53ee8cc1Swenshuai.xi _gClkGen2_Addr = _u32RegBase + REG_CLKGEN2_BASE;
344*53ee8cc1Swenshuai.xi }
345*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Str2MIU_Reset(MS_U32 u32RASPEng)346*53ee8cc1Swenshuai.xi static void HAL_NDSRASP_Str2MIU_Reset(MS_U32 u32RASPEng)
347*53ee8cc1Swenshuai.xi {
348*53ee8cc1Swenshuai.xi MS_U16 HWCtrl1;
349*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL1);
350*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 | RASP_STR2MIU_RST_WADDR));
351*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
352*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 & ~(RASP_STR2MIU_RST_WADDR)) );
353*53ee8cc1Swenshuai.xi }
354*53ee8cc1Swenshuai.xi
HAL_NDSRASP_ECM2MIU_Reset(MS_U32 u32RASPEng)355*53ee8cc1Swenshuai.xi static void HAL_NDSRASP_ECM2MIU_Reset(MS_U32 u32RASPEng)
356*53ee8cc1Swenshuai.xi {
357*53ee8cc1Swenshuai.xi MS_U16 HWCtrl3;
358*53ee8cc1Swenshuai.xi HWCtrl3 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL3);
359*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 | RASP_ECM2MIU_RST_WADDR));
360*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
361*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 & ~(RASP_ECM2MIU_RST_WADDR)) );
362*53ee8cc1Swenshuai.xi }
363*53ee8cc1Swenshuai.xi
HAL_NDSRASP_PAYLD2MIU_Reset(MS_U32 u32RASPEng)364*53ee8cc1Swenshuai.xi static void HAL_NDSRASP_PAYLD2MIU_Reset(MS_U32 u32RASPEng)
365*53ee8cc1Swenshuai.xi {
366*53ee8cc1Swenshuai.xi MS_U16 HWCtrl3;
367*53ee8cc1Swenshuai.xi HWCtrl3 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL3);
368*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 | RASP_PAYLD2MIU_RST_WADDR));
369*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
370*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 & ~(RASP_PAYLD2MIU_RST_WADDR)) );
371*53ee8cc1Swenshuai.xi }
372*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Init(MS_U32 u32RASPEng)373*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Init(MS_U32 u32RASPEng)
374*53ee8cc1Swenshuai.xi {
375*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x\n", u32RASPEng);
376*53ee8cc1Swenshuai.xi
377*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
378*53ee8cc1Swenshuai.xi #if 1
379*53ee8cc1Swenshuai.xi MS_U32 addr;
380*53ee8cc1Swenshuai.xi addr = _u32RegBase + (0x161300*2 + 0x00*4); //$ enable MIUCrossbar
381*53ee8cc1Swenshuai.xi (*((volatile MS_U16*)(addr))) = 0x000f;
382*53ee8cc1Swenshuai.xi
383*53ee8cc1Swenshuai.xi addr = _u32RegBase + (0x161300*2 + 0x1b*4); //$ enable gate clock
384*53ee8cc1Swenshuai.xi (*((volatile MS_U16*)(addr))) = 0x0003;
385*53ee8cc1Swenshuai.xi #endif
386*53ee8cc1Swenshuai.xi
387*53ee8cc1Swenshuai.xi
388*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0;
389*53ee8cc1Swenshuai.xi //Clear all ctrl
390*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, 0x0);
391*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, 0x0);
392*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, 0x0);
393*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, 0x0);
394*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL4, 0x0);
395*53ee8cc1Swenshuai.xi
396*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_CORPT_PKTSIZE, (RASP_PKT_SIZE_188<<RASP_PKT_SHIFT) );
397*53ee8cc1Swenshuai.xi
398*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, RASP_SW_RESET);
399*53ee8cc1Swenshuai.xi
400*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL0);
401*53ee8cc1Swenshuai.xi
402*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 | RASP_RISING_SYNC_DETECT|RASP_FALLING_VALID_DETECT) );
403*53ee8cc1Swenshuai.xi
404*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, RASP_SERIAL_EXT_SYNC_1T);
405*53ee8cc1Swenshuai.xi
406*53ee8cc1Swenshuai.xi #if 0
407*53ee8cc1Swenshuai.xi //need to change....
408*53ee8cc1Swenshuai.xi if(u32RASPEng == 1)
409*53ee8cc1Swenshuai.xi {
410*53ee8cc1Swenshuai.xi //K2 RASP1 MIU setting
411*53ee8cc1Swenshuai.xi _HAL_REG16_W((REG16*)_REG_RASP1_MIU, SET_FLAG1(_HAL_REG16_R((REG16*)_REG_RASP1_MIU), _RASP1_MIU_EN));
412*53ee8cc1Swenshuai.xi }
413*53ee8cc1Swenshuai.xi #endif
414*53ee8cc1Swenshuai.xi
415*53ee8cc1Swenshuai.xi MS_U16 i;
416*53ee8cc1Swenshuai.xi for(i=0;i<=RASP_PIDFLT_NUM;i++)
417*53ee8cc1Swenshuai.xi HAL_NDSRASP_SetPidflt(u32RASPEng, i, 0x1fff);
418*53ee8cc1Swenshuai.xi
419*53ee8cc1Swenshuai.xi
420*53ee8cc1Swenshuai.xi HAL_NDSRASP_Str2MIU_Reset(u32RASPEng);
421*53ee8cc1Swenshuai.xi
422*53ee8cc1Swenshuai.xi MS_U16 HWCtrl1;
423*53ee8cc1Swenshuai.xi
424*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL1);
425*53ee8cc1Swenshuai.xi HWCtrl1 |= (RASP_ALT_TS_SIZE_EN | RASP_STR2MIU_EN | RASP_PINGPONG_EN);
426*53ee8cc1Swenshuai.xi //HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, HWCtrl1);
427*53ee8cc1Swenshuai.xi
428*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL0);
429*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 | RASP_TSIF2_ENABLE) );
430*53ee8cc1Swenshuai.xi
431*53ee8cc1Swenshuai.xi HAL_NDSRASP_SetECM_Init_1(u32RASPEng);
432*53ee8cc1Swenshuai.xi
433*53ee8cc1Swenshuai.xi }
434*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Exit(MS_U32 u32RASPEng)435*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Exit(MS_U32 u32RASPEng)
436*53ee8cc1Swenshuai.xi {
437*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "uRASPEng = %x\n", u32RASPEng);
438*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
439*53ee8cc1Swenshuai.xi
440*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0;
441*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL0);
442*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 & ~RASP_SW_RESET));
443*53ee8cc1Swenshuai.xi
444*53ee8cc1Swenshuai.xi //need to change....
445*53ee8cc1Swenshuai.xi if(u32RASPEng == 1)
446*53ee8cc1Swenshuai.xi {
447*53ee8cc1Swenshuai.xi //K2 RASP1 MIU setting
448*53ee8cc1Swenshuai.xi _HAL_REG16_W((REG16*)_REG_RASP1_MIU, RESET_FLAG1(_HAL_REG16_R((REG16*)_REG_RASP1_MIU), _RASP1_MIU_EN));
449*53ee8cc1Swenshuai.xi }
450*53ee8cc1Swenshuai.xi }
451*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Pvr_Enable(MS_U32 u32RASPEng)452*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Pvr_Enable(MS_U32 u32RASPEng)
453*53ee8cc1Swenshuai.xi {
454*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "uRASPEng = %x\n", u32RASPEng);
455*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
456*53ee8cc1Swenshuai.xi
457*53ee8cc1Swenshuai.xi HAL_NDSRASP_Str2MIU_Reset(u32RASPEng);
458*53ee8cc1Swenshuai.xi
459*53ee8cc1Swenshuai.xi MS_U16 HWCtrl1;
460*53ee8cc1Swenshuai.xi
461*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL1);
462*53ee8cc1Swenshuai.xi HWCtrl1 |= (RASP_ALT_TS_SIZE_EN | RASP_STR2MIU_EN | RASP_PINGPONG_EN);
463*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, HWCtrl1);
464*53ee8cc1Swenshuai.xi
465*53ee8cc1Swenshuai.xi HAL_NDSRASP_Str2MIU_Reset(u32RASPEng);
466*53ee8cc1Swenshuai.xi
467*53ee8cc1Swenshuai.xi //MS_U16 HWCtrl0;
468*53ee8cc1Swenshuai.xi //HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL0);
469*53ee8cc1Swenshuai.xi //HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 | RASP_TSIF2_ENABLE) );
470*53ee8cc1Swenshuai.xi }
471*53ee8cc1Swenshuai.xi
472*53ee8cc1Swenshuai.xi
HAL_NDSRASP_ECM_Enable(MS_U32 u32RASPEng,MS_BOOL enable)473*53ee8cc1Swenshuai.xi void HAL_NDSRASP_ECM_Enable(MS_U32 u32RASPEng , MS_BOOL enable )
474*53ee8cc1Swenshuai.xi {
475*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x, enable = %d\n", u32RASPEng,enable);
476*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
477*53ee8cc1Swenshuai.xi
478*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2,HWCtrl3;
479*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL2);
480*53ee8cc1Swenshuai.xi HWCtrl3 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL3);
481*53ee8cc1Swenshuai.xi
482*53ee8cc1Swenshuai.xi if (enable)
483*53ee8cc1Swenshuai.xi {
484*53ee8cc1Swenshuai.xi HAL_NDSRASP_ECM2MIU_Reset(u32RASPEng);
485*53ee8cc1Swenshuai.xi
486*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 | RASP_ECM_BURST_LEN) );
487*53ee8cc1Swenshuai.xi
488*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 | RASP_ECM2MIU_EN) );
489*53ee8cc1Swenshuai.xi }
490*53ee8cc1Swenshuai.xi else
491*53ee8cc1Swenshuai.xi {
492*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 & (~RASP_ECM2MIU_EN)) );
493*53ee8cc1Swenshuai.xi }
494*53ee8cc1Swenshuai.xi }
495*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Payload_Enable(MS_U32 u32RASPEng,MS_BOOL enable)496*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Payload_Enable(MS_U32 u32RASPEng ,MS_BOOL enable )
497*53ee8cc1Swenshuai.xi {
498*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, enable = %d\n", u32RASPEng,enable);
499*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
500*53ee8cc1Swenshuai.xi
501*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2,HWCtrl3;
502*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
503*53ee8cc1Swenshuai.xi HWCtrl3 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL3);
504*53ee8cc1Swenshuai.xi
505*53ee8cc1Swenshuai.xi #if 1
506*53ee8cc1Swenshuai.xi if (enable)
507*53ee8cc1Swenshuai.xi {
508*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 | RASP_PAYLD2MIU_RST_WADDR) );
509*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
510*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 & (~RASP_PAYLD2MIU_RST_WADDR)) );
511*53ee8cc1Swenshuai.xi
512*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 | RASP_PAYLOAD_BURST_LEN) );
513*53ee8cc1Swenshuai.xi
514*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 | RASP_PAYLD2MIU_EN | RASP_PAYLD2MIU_PINGPONE) );
515*53ee8cc1Swenshuai.xi }
516*53ee8cc1Swenshuai.xi else
517*53ee8cc1Swenshuai.xi {
518*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 & (~RASP_PAYLD2MIU_EN)) );
519*53ee8cc1Swenshuai.xi }
520*53ee8cc1Swenshuai.xi #else
521*53ee8cc1Swenshuai.xi if (enable)
522*53ee8cc1Swenshuai.xi {
523*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
524*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3), RASP_PAYLD2MIU_RST_WADDR));
525*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
526*53ee8cc1Swenshuai.xi RESET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3), RASP_PAYLD2MIU_RST_WADDR));
527*53ee8cc1Swenshuai.xi
528*53ee8cc1Swenshuai.xi //timo
529*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL2,
530*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL2), RASP_PAYLOAD_BURST_LEN));
531*53ee8cc1Swenshuai.xi
532*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
533*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3), RASP_PAYLD2MIU_EN));
534*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
535*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3), RASP_PAYLD2MIU_PINGPONE));
536*53ee8cc1Swenshuai.xi }
537*53ee8cc1Swenshuai.xi else
538*53ee8cc1Swenshuai.xi {
539*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
540*53ee8cc1Swenshuai.xi RESET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3), RASP_PAYLD2MIU_EN));
541*53ee8cc1Swenshuai.xi
542*53ee8cc1Swenshuai.xi }
543*53ee8cc1Swenshuai.xi #endif
544*53ee8cc1Swenshuai.xi }
545*53ee8cc1Swenshuai.xi
546*53ee8cc1Swenshuai.xi
547*53ee8cc1Swenshuai.xi
548*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Stop(MS_U32 u32RASPEng)549*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Stop(MS_U32 u32RASPEng)
550*53ee8cc1Swenshuai.xi {
551*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x\n", u32RASPEng);
552*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
553*53ee8cc1Swenshuai.xi MS_U16 HWCtrl1;
554*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL1);
555*53ee8cc1Swenshuai.xi
556*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 & (~RASP_STR2MIU_EN)) );
557*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 & (~RASP_TSIF2_ENABLE)) );
558*53ee8cc1Swenshuai.xi }
559*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Pause(MS_U32 u32RASPEng,MS_BOOL bPause)560*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Pause(MS_U32 u32RASPEng , MS_BOOL bPause)
561*53ee8cc1Swenshuai.xi {
562*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x, bPause = %d\n", u32RASPEng,bPause);
563*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
564*53ee8cc1Swenshuai.xi MS_U16 HWCtrl1;
565*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL1);
566*53ee8cc1Swenshuai.xi
567*53ee8cc1Swenshuai.xi if (bPause)
568*53ee8cc1Swenshuai.xi {
569*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 & (~RASP_STR2MIU_EN)) );
570*53ee8cc1Swenshuai.xi }
571*53ee8cc1Swenshuai.xi else
572*53ee8cc1Swenshuai.xi {
573*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 | RASP_STR2MIU_RST_WADDR) );
574*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
575*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 & (~RASP_STR2MIU_RST_WADDR)) );
576*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 | RASP_STR2MIU_EN) );
577*53ee8cc1Swenshuai.xi }
578*53ee8cc1Swenshuai.xi }
579*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Rec_PID(MS_U32 u32RASPEng,MS_BOOL bSet)580*53ee8cc1Swenshuai.xi void HAL_NDSRASP_Rec_PID(MS_U32 u32RASPEng , MS_BOOL bSet)
581*53ee8cc1Swenshuai.xi {
582*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x, bSet = %d\n", u32RASPEng,bSet);
583*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
584*53ee8cc1Swenshuai.xi MS_U16 HWCtrl1;
585*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL1);
586*53ee8cc1Swenshuai.xi if (bSet)
587*53ee8cc1Swenshuai.xi {
588*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 | RASP_REC_PID) );
589*53ee8cc1Swenshuai.xi }
590*53ee8cc1Swenshuai.xi else
591*53ee8cc1Swenshuai.xi {
592*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (HWCtrl1 & (~RASP_REC_PID)) );
593*53ee8cc1Swenshuai.xi }
594*53ee8cc1Swenshuai.xi }
595*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SWReset(MS_U32 u32RASPEng)596*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SWReset(MS_U32 u32RASPEng)
597*53ee8cc1Swenshuai.xi {
598*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x\n", u32RASPEng);
599*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
600*53ee8cc1Swenshuai.xi
601*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0;
602*53ee8cc1Swenshuai.xi
603*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
604*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng,REG_RASP_HW_CTRL0, (HWCtrl0|RASP_SW_RESET) );
605*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
606*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng,REG_RASP_HW_CTRL0, HWCtrl0 );
607*53ee8cc1Swenshuai.xi }
608*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetCorptData(MS_U32 u32RASPEng,MS_U16 u16From,MS_U16 u16To,MS_U8 u8Data)609*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetCorptData(MS_U32 u32RASPEng , MS_U16 u16From ,MS_U16 u16To , MS_U8 u8Data)
610*53ee8cc1Swenshuai.xi {
611*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
612*53ee8cc1Swenshuai.xi #if 1
613*53ee8cc1Swenshuai.xi MS_U16 CorptData = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_CORPT_PKTSIZE);
614*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_CORRUPTION, (u16From&RASP_FROMTO_MASK) | ((u16To&RASP_FROMTO_MASK)<< RASP_TO_SHIFT) );
615*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_CORPT_PKTSIZE, ((CorptData & 0xff00) | u8Data) );
616*53ee8cc1Swenshuai.xi #else
617*53ee8cc1Swenshuai.xi // set corrupt data //
618*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_CorptFromTo, ((u16To << RASP_TO_SHIFT )&RASP_FROMTO_MASK)|(u16From&RASP_FROMTO_MASK) );
619*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_CorptData_PktSize2,
620*53ee8cc1Swenshuai.xi _HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_CorptData_PktSize2)|u8Data);
621*53ee8cc1Swenshuai.xi #endif
622*53ee8cc1Swenshuai.xi }
623*53ee8cc1Swenshuai.xi
624*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetCorptFlt(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_BOOL Enable)625*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetCorptFlt(MS_U32 u32RASPEng , MS_U16 u16Fltid, MS_BOOL Enable)
626*53ee8cc1Swenshuai.xi {
627*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, u16Fltid = %d(0x%x), Enable = %d\n", u32RASPEng,u16Fltid,u16Fltid,Enable);
628*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
629*53ee8cc1Swenshuai.xi
630*53ee8cc1Swenshuai.xi #if 1
631*53ee8cc1Swenshuai.xi MS_U16 PidFlt = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_PIDFLT_N(u16Fltid));
632*53ee8cc1Swenshuai.xi if(Enable)
633*53ee8cc1Swenshuai.xi {
634*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PIDFLT_N(u16Fltid), (PidFlt | RASP_PID_PKT_CORPT_EN));
635*53ee8cc1Swenshuai.xi }
636*53ee8cc1Swenshuai.xi else
637*53ee8cc1Swenshuai.xi {
638*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PIDFLT_N(u16Fltid), (PidFlt & (~RASP_PID_PKT_CORPT_EN)) );
639*53ee8cc1Swenshuai.xi }
640*53ee8cc1Swenshuai.xi #else
641*53ee8cc1Swenshuai.xi MS_U32 _u32PidfltReg = _u32RASP_PidfltBase[u32RASPEng] + (u16Fltid*0x04);
642*53ee8cc1Swenshuai.xi
643*53ee8cc1Swenshuai.xi if(Enable)
644*53ee8cc1Swenshuai.xi {
645*53ee8cc1Swenshuai.xi _HAL_REG16_W((REG16 *)_u32PidfltReg, SET_FLAG1(_HAL_REG16_R((REG16 *)_u32PidfltReg), RASP_PID_PKT_CORPT_EN));
646*53ee8cc1Swenshuai.xi }
647*53ee8cc1Swenshuai.xi else
648*53ee8cc1Swenshuai.xi {
649*53ee8cc1Swenshuai.xi _HAL_REG16_W((REG16 *)_u32PidfltReg, RESET_FLAG1(_HAL_REG16_R((REG16 *)_u32PidfltReg), RASP_PID_PKT_CORPT_EN));
650*53ee8cc1Swenshuai.xi }
651*53ee8cc1Swenshuai.xi #endif
652*53ee8cc1Swenshuai.xi
653*53ee8cc1Swenshuai.xi }
654*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetPidflt(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_U16 u16Pid)655*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPidflt(MS_U32 u32RASPEng , MS_U16 u16Fltid , MS_U16 u16Pid)
656*53ee8cc1Swenshuai.xi {
657*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, u16Fltid = %d(0x%x), u16Pid = %x\n", u32RASPEng,u16Fltid,u16Fltid,u16Pid);
658*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
659*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng,REG_RASP_PIDFLT_N(u16Fltid),u16Pid);
660*53ee8cc1Swenshuai.xi }
661*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetPidflt(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_U16 * u16Pid)662*53ee8cc1Swenshuai.xi void HAL_NDSRASP_GetPidflt(MS_U32 u32RASPEng , MS_U16 u16Fltid , MS_U16 *u16Pid)
663*53ee8cc1Swenshuai.xi {
664*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, u16Fltid = %d(0x%x)\n", u32RASPEng,u16Fltid,u16Fltid);
665*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
666*53ee8cc1Swenshuai.xi *u16Pid = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_PIDFLT_N(u16Fltid));
667*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u16Pid = 0x%x\n", *u16Pid);
668*53ee8cc1Swenshuai.xi }
669*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetEcmPidflt(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_U16 u16Pid)670*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetEcmPidflt(MS_U32 u32RASPEng , MS_U16 u16Fltid , MS_U16 u16Pid)
671*53ee8cc1Swenshuai.xi {
672*53ee8cc1Swenshuai.xi
673*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, u16Fltid = %d(0x%x) u16Pid = %x\n", u32RASPEng,u16Fltid,u16Fltid,u16Pid);
674*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
675*53ee8cc1Swenshuai.xi
676*53ee8cc1Swenshuai.xi MS_U16 LockCtrlReg;
677*53ee8cc1Swenshuai.xi u16Pid = u16Pid | 0xE000; //
678*53ee8cc1Swenshuai.xi
679*53ee8cc1Swenshuai.xi if(u16Fltid <= 3)
680*53ee8cc1Swenshuai.xi {
681*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_PID_N(u16Fltid), u16Pid);
682*53ee8cc1Swenshuai.xi LockCtrlReg = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_ECM_LOCK_CTRL);
683*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_LOCK_CTRL, (LockCtrlReg | (0x1<<(4*u16Fltid)) ) );
684*53ee8cc1Swenshuai.xi }
685*53ee8cc1Swenshuai.xi else if(u16Fltid == 4)
686*53ee8cc1Swenshuai.xi {
687*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_PID_4, u16Pid);
688*53ee8cc1Swenshuai.xi LockCtrlReg = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_ECM45_LOCK_CTRL);
689*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM45_LOCK_CTRL, (LockCtrlReg | (0x1) ) );
690*53ee8cc1Swenshuai.xi }
691*53ee8cc1Swenshuai.xi else if(u16Fltid == 5)
692*53ee8cc1Swenshuai.xi {
693*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_PID_5, u16Pid);
694*53ee8cc1Swenshuai.xi LockCtrlReg = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_ECM45_LOCK_CTRL);
695*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM45_LOCK_CTRL, (LockCtrlReg | (0x1<<4) ) );
696*53ee8cc1Swenshuai.xi }
697*53ee8cc1Swenshuai.xi
698*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_TID, 0x8180); //odd,even
699*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_LOCK_CTRL, 0x7777);
700*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM45_LOCK_CTRL, 0x77);
701*53ee8cc1Swenshuai.xi
702*53ee8cc1Swenshuai.xi }
703*53ee8cc1Swenshuai.xi
HAL_NDSRASP_ReadEcmPidflt(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_U16 * pu16Pid)704*53ee8cc1Swenshuai.xi void HAL_NDSRASP_ReadEcmPidflt(MS_U32 u32RASPEng , MS_U16 u16Fltid , MS_U16 *pu16Pid)
705*53ee8cc1Swenshuai.xi {
706*53ee8cc1Swenshuai.xi
707*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, u16Fltid = %d(0x%x)\n", u32RASPEng,u16Fltid,u16Fltid);
708*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
709*53ee8cc1Swenshuai.xi
710*53ee8cc1Swenshuai.xi if(u16Fltid <= 3)
711*53ee8cc1Swenshuai.xi *pu16Pid = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_ECM_PID_N(u16Fltid));
712*53ee8cc1Swenshuai.xi else if(u16Fltid == 4)
713*53ee8cc1Swenshuai.xi *pu16Pid = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_ECM_PID_4);
714*53ee8cc1Swenshuai.xi else if(u16Fltid == 5)
715*53ee8cc1Swenshuai.xi *pu16Pid = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_ECM_PID_5);
716*53ee8cc1Swenshuai.xi
717*53ee8cc1Swenshuai.xi }
718*53ee8cc1Swenshuai.xi
719*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetECM_Init_1(MS_U32 u32RASPEng)720*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECM_Init_1(MS_U32 u32RASPEng)
721*53ee8cc1Swenshuai.xi {
722*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x\n", u32RASPEng);
723*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
724*53ee8cc1Swenshuai.xi #if 1
725*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_CA_INT, 0x0007);
726*53ee8cc1Swenshuai.xi //MsOS_DelayTaskUs(10);
727*53ee8cc1Swenshuai.xi //HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_INT_STATE, 0xff);
728*53ee8cc1Swenshuai.xi #else
729*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_Ecm_reg_18,0X0007);
730*53ee8cc1Swenshuai.xi #endif
731*53ee8cc1Swenshuai.xi }
732*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetECM_Init_2(MS_U32 u32RASPEng)733*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECM_Init_2(MS_U32 u32RASPEng)
734*53ee8cc1Swenshuai.xi {
735*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x\n", u32RASPEng);
736*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
737*53ee8cc1Swenshuai.xi #if 1
738*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_TID, 0x8180); //odd,even
739*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_LOCK_CTRL, 0x7777);
740*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM45_LOCK_CTRL, 0x77);
741*53ee8cc1Swenshuai.xi #else
742*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_Ecm_reg_16 ,0X8180);
743*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_Ecm_reg_17 ,0X7777);
744*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_Ecm_reg_32 ,0X0077);
745*53ee8cc1Swenshuai.xi #endif
746*53ee8cc1Swenshuai.xi }
747*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetECM_GetHW(MS_U32 u32RASPEng)748*53ee8cc1Swenshuai.xi MS_U16 HAL_NDSRASP_SetECM_GetHW(MS_U32 u32RASPEng)
749*53ee8cc1Swenshuai.xi {
750*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x\n", u32RASPEng);
751*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
752*53ee8cc1Swenshuai.xi
753*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_ECM_INT_STATE);
754*53ee8cc1Swenshuai.xi }
755*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetECM_ResetHW(MS_U32 u32RASPEng,MS_U16 IntStatus)756*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECM_ResetHW(MS_U32 u32RASPEng, MS_U16 IntStatus)
757*53ee8cc1Swenshuai.xi {
758*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
759*53ee8cc1Swenshuai.xi
760*53ee8cc1Swenshuai.xi //HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_INT_STATE, 0xFFFF);
761*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_INT_STATE, IntStatus);
762*53ee8cc1Swenshuai.xi //MsOS_DelayTaskUs(10);
763*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_ECM_INT_STATE, 0x0000);
764*53ee8cc1Swenshuai.xi }
765*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetEventMask(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_U32 u32Mask)766*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetEventMask(MS_U32 u32RASPEng , MS_U16 u16Fltid, MS_U32 u32Mask)
767*53ee8cc1Swenshuai.xi {
768*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x, u16Fltid = %d(0x%x) u32Mask = %x\n",u32RASPEng,u16Fltid,u16Fltid,u32Mask);
769*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
770*53ee8cc1Swenshuai.xi #if 1
771*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(u32RASPEng,REG_RASP_EVENT_MASK_N(u16Fltid),u32Mask);
772*53ee8cc1Swenshuai.xi #else
773*53ee8cc1Swenshuai.xi MS_U32 _u32EventMaskReg = _u32RASP_EventMaskBase[u32RASPEng] + (u16Fltid*0x08);
774*53ee8cc1Swenshuai.xi _HAL_REG32_W((REG32 *)_u32EventMaskReg, u32Mask);
775*53ee8cc1Swenshuai.xi #endif
776*53ee8cc1Swenshuai.xi }
777*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetPayloadMask(MS_U32 u32RASPEng,MS_U16 u16Fltid,MS_U32 u32Mask)778*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPayloadMask(MS_U32 u32RASPEng , MS_U16 u16Fltid, MS_U32 u32Mask)
779*53ee8cc1Swenshuai.xi {
780*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x, u16Fltid = %d(0x%x) u32Mask = %x\n", u32RASPEng,u16Fltid,u16Fltid,u32Mask);
781*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
782*53ee8cc1Swenshuai.xi #if 1
783*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(u32RASPEng,REG_RASP_PAYLOAD_MASK_N(u16Fltid),u32Mask);
784*53ee8cc1Swenshuai.xi #else
785*53ee8cc1Swenshuai.xi MS_U32 _u32PayloadMaskReg = _u32RASP_PayloadMaskBase[u32RASPEng] + (u16Fltid*0x08);
786*53ee8cc1Swenshuai.xi _HAL_REG32_W((REG32 *)_u32PayloadMaskReg, u32Mask);
787*53ee8cc1Swenshuai.xi #endif
788*53ee8cc1Swenshuai.xi }
789*53ee8cc1Swenshuai.xi
790*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetPayloadPacketMode(MS_U32 u32RASPEng,MS_BOOL bDisable192)791*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPayloadPacketMode(MS_U32 u32RASPEng, MS_BOOL bDisable192)
792*53ee8cc1Swenshuai.xi {
793*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x\n", u32RASPEng);
794*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
795*53ee8cc1Swenshuai.xi
796*53ee8cc1Swenshuai.xi MS_U16 HW_CTRL3;
797*53ee8cc1Swenshuai.xi HW_CTRL3 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL3);
798*53ee8cc1Swenshuai.xi
799*53ee8cc1Swenshuai.xi if (bDisable192)
800*53ee8cc1Swenshuai.xi {
801*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HW_CTRL3 | RASP_PAYLD2_PKT_192_DIS /*| RASP_ECMPKT_192_DIS */) );
802*53ee8cc1Swenshuai.xi }
803*53ee8cc1Swenshuai.xi
804*53ee8cc1Swenshuai.xi else
805*53ee8cc1Swenshuai.xi {
806*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HW_CTRL3 & ~(RASP_PAYLD2_PKT_192_DIS /* |RASP_ECMPKT_192_DIS */)) );
807*53ee8cc1Swenshuai.xi }
808*53ee8cc1Swenshuai.xi
809*53ee8cc1Swenshuai.xi }
810*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetECMPacketMode(MS_U32 u32RASPEng,MS_BOOL bDisable192)811*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECMPacketMode(MS_U32 u32RASPEng, MS_BOOL bDisable192)
812*53ee8cc1Swenshuai.xi {
813*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x\n", u32RASPEng);
814*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
815*53ee8cc1Swenshuai.xi
816*53ee8cc1Swenshuai.xi MS_U16 HW_CTRL3;
817*53ee8cc1Swenshuai.xi HW_CTRL3 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL3);
818*53ee8cc1Swenshuai.xi
819*53ee8cc1Swenshuai.xi if (bDisable192)
820*53ee8cc1Swenshuai.xi {
821*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HW_CTRL3 | RASP_ECMPKT_192_DIS /*| RASP_ECMPKT_192_DIS */) );
822*53ee8cc1Swenshuai.xi }
823*53ee8cc1Swenshuai.xi
824*53ee8cc1Swenshuai.xi else
825*53ee8cc1Swenshuai.xi {
826*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HW_CTRL3 & ~(RASP_ECMPKT_192_DIS /* |RASP_ECMPKT_192_DIS */)) );
827*53ee8cc1Swenshuai.xi }
828*53ee8cc1Swenshuai.xi
829*53ee8cc1Swenshuai.xi }
830*53ee8cc1Swenshuai.xi
831*53ee8cc1Swenshuai.xi
832*53ee8cc1Swenshuai.xi #if 0
833*53ee8cc1Swenshuai.xi
834*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetStr2Miu_StartAddr(MS_U32 u32RASPEng , MS_U32 u32StartAddr0, MS_U32 u32StartAddr1)
835*53ee8cc1Swenshuai.xi {
836*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
837*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
838*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Head,MIU(u32StartAddr0));
839*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Head2,MIU(u32StartAddr1));
840*53ee8cc1Swenshuai.xi }
841*53ee8cc1Swenshuai.xi
842*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetStr2Miu_MidAddr(MS_U32 u32RASPEng , MS_U32 u32MidAddr0, MS_U32 u32MidAddr1)
843*53ee8cc1Swenshuai.xi {
844*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
845*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
846*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Mid,MIU(u32MidAddr0));
847*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Mid2,MIU(u32MidAddr1));
848*53ee8cc1Swenshuai.xi }
849*53ee8cc1Swenshuai.xi
850*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetStr2Miu_EndAddr(MS_U32 u32RASPEng , MS_U32 u32EndAddr0, MS_U32 u32EndAddr1)
851*53ee8cc1Swenshuai.xi {
852*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
853*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
854*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Tail,MIU(u32EndAddr0));
855*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Tail2,MIU(u32EndAddr1));
856*53ee8cc1Swenshuai.xi }
857*53ee8cc1Swenshuai.xi
858*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPayload_StartAddr(MS_U32 u32RASPEng , MS_U32 u32StartAddr0, MS_U32 u32StartAddr1)
859*53ee8cc1Swenshuai.xi {
860*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
861*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Payload2miu_Head,MIU(u32StartAddr0));
862*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Payload2miu_Head2,MIU(u32StartAddr1));
863*53ee8cc1Swenshuai.xi }
864*53ee8cc1Swenshuai.xi
865*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPayload_MidAddr(MS_U32 u32RASPEng , MS_U32 u32MidAddr0, MS_U32 u32MidAddr1)
866*53ee8cc1Swenshuai.xi {
867*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
868*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Payload2miu_Mid,MIU(u32MidAddr0));
869*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Payload2miu_Mid2,MIU(u32MidAddr1));
870*53ee8cc1Swenshuai.xi }
871*53ee8cc1Swenshuai.xi
872*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPayload_EndAddr(MS_U32 u32RASPEng , MS_U32 u32EndAddr0, MS_U32 u32EndAddr1)
873*53ee8cc1Swenshuai.xi {
874*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
875*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Payload2miu_Tail,MIU(u32EndAddr0));
876*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Payload2miu_Tail2,MIU(u32EndAddr1));
877*53ee8cc1Swenshuai.xi }
878*53ee8cc1Swenshuai.xi
879*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECM_StartAddr(MS_U32 u32RASPEng , MS_U32 u32StartAddr)
880*53ee8cc1Swenshuai.xi {
881*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
882*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Ecm2miu_Head,MIU(u32StartAddr));
883*53ee8cc1Swenshuai.xi }
884*53ee8cc1Swenshuai.xi
885*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECM_MidAddr(MS_U32 u32RASPEng , MS_U32 u32MidAddr)
886*53ee8cc1Swenshuai.xi {
887*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
888*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Ecm2miu_Mid,MIU(u32MidAddr));
889*53ee8cc1Swenshuai.xi }
890*53ee8cc1Swenshuai.xi
891*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECM_EndAddr(MS_U32 u32RASPEng , MS_U32 u32EndAddr)
892*53ee8cc1Swenshuai.xi {
893*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
894*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_Ecm2miu_Tail,MIU(u32EndAddr));
895*53ee8cc1Swenshuai.xi }
896*53ee8cc1Swenshuai.xi #endif
897*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetWritePtr(MS_U32 u32RASPEng)898*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetWritePtr(MS_U32 u32RASPEng)
899*53ee8cc1Swenshuai.xi {
900*53ee8cc1Swenshuai.xi MS_U32 WritePtr;
901*53ee8cc1Swenshuai.xi
902*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
903*53ee8cc1Swenshuai.xi MS_U16 HWCtrl4;
904*53ee8cc1Swenshuai.xi
905*53ee8cc1Swenshuai.xi HWCtrl4 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL4);
906*53ee8cc1Swenshuai.xi #if 1
907*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng,REG_RASP_HW_CTRL4, (HWCtrl4 | RASP_TS_STR2MI_WP_LD_DIS) );
908*53ee8cc1Swenshuai.xi WritePtr = (HAL_RASP_ReadReg_DWord(u32RASPEng,REG_RASP_STR2MIU_MID1_L) << 4 );
909*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng,REG_RASP_HW_CTRL4, (HWCtrl4 & (~RASP_TS_STR2MI_WP_LD_DIS)) );
910*53ee8cc1Swenshuai.xi #else
911*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4,
912*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4) , RASP_TS_STR2MI_WP_LD_DIS));
913*53ee8cc1Swenshuai.xi
914*53ee8cc1Swenshuai.xi WritePtr = ((_HAL_REG32_R(&_RASPReg[u32RASPEng][0].RASP_Str2miu_Mid)) << 4);
915*53ee8cc1Swenshuai.xi
916*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4,
917*53ee8cc1Swenshuai.xi RESET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4) , RASP_TS_STR2MI_WP_LD_DIS));
918*53ee8cc1Swenshuai.xi #endif
919*53ee8cc1Swenshuai.xi //HALRASP_DBG(RASP_DBGLV_INFO, "RASPEng = %x, WritePtr = %x\n", u32RASPEng,WritePtr);
920*53ee8cc1Swenshuai.xi return WritePtr;
921*53ee8cc1Swenshuai.xi }
922*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetPayloadWritePtr(MS_U32 u32RASPEng)923*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetPayloadWritePtr(MS_U32 u32RASPEng)
924*53ee8cc1Swenshuai.xi {
925*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
926*53ee8cc1Swenshuai.xi return (HAL_RASP_ReadReg_DWord(u32RASPEng,REG_RASP_PAYLOAD2MIU_MID1_L) << 4 );
927*53ee8cc1Swenshuai.xi }
928*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetECMWritePtr(MS_U32 u32RASPEng)929*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetECMWritePtr(MS_U32 u32RASPEng)
930*53ee8cc1Swenshuai.xi {
931*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
932*53ee8cc1Swenshuai.xi return (HAL_RASP_ReadReg_DWord(u32RASPEng,REG_RASP_ECM2MIU_MID1_L) << 4 );
933*53ee8cc1Swenshuai.xi }
934*53ee8cc1Swenshuai.xi
935*53ee8cc1Swenshuai.xi
936*53ee8cc1Swenshuai.xi //change the BOOL bSet to MS_U32, the packet size maybe more than two choice
HAL_NDSRASP_SetStrPacketMode(MS_U32 u32RASPEng,MS_BOOL bSet)937*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetStrPacketMode(MS_U32 u32RASPEng , MS_BOOL bSet)
938*53ee8cc1Swenshuai.xi {
939*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
940*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
941*53ee8cc1Swenshuai.xi
942*53ee8cc1Swenshuai.xi MS_U16 u16RegCtrl4,u16RegCtrl1;
943*53ee8cc1Swenshuai.xi u16RegCtrl4 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL4);
944*53ee8cc1Swenshuai.xi if (bSet)
945*53ee8cc1Swenshuai.xi {
946*53ee8cc1Swenshuai.xi u16RegCtrl4 |= RASP_STREAM_192_EN;
947*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL4, u16RegCtrl4);
948*53ee8cc1Swenshuai.xi
949*53ee8cc1Swenshuai.xi //set the burst length.
950*53ee8cc1Swenshuai.xi u16RegCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL1);
951*53ee8cc1Swenshuai.xi u16RegCtrl1 = (u16RegCtrl1 & (~RASP_BURST_LEN_MASK)) | ( 0x02 <<RASP_BURST_LEN_SHIFT) ;
952*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, u16RegCtrl1);
953*53ee8cc1Swenshuai.xi }
954*53ee8cc1Swenshuai.xi else
955*53ee8cc1Swenshuai.xi {
956*53ee8cc1Swenshuai.xi u16RegCtrl4 &= (~RASP_STREAM_192_EN);
957*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL4, u16RegCtrl4);
958*53ee8cc1Swenshuai.xi
959*53ee8cc1Swenshuai.xi }
960*53ee8cc1Swenshuai.xi }
961*53ee8cc1Swenshuai.xi
962*53ee8cc1Swenshuai.xi
HAL_NDSRASP_PowerCtrl(MS_U32 u32RASPEng,MS_BOOL bSet)963*53ee8cc1Swenshuai.xi void HAL_NDSRASP_PowerCtrl(MS_U32 u32RASPEng , MS_BOOL bSet)
964*53ee8cc1Swenshuai.xi {
965*53ee8cc1Swenshuai.xi
966*53ee8cc1Swenshuai.xi }
967*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetPVRTimeStamp(MS_U32 u32RASPEng)968*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetPVRTimeStamp(MS_U32 u32RASPEng)
969*53ee8cc1Swenshuai.xi {
970*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
971*53ee8cc1Swenshuai.xi //return _HAL_REG32_R(&_RASPReg[u32RASPEng][0].RASP_StrLPCR1);
972*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_STR_LPCR1_L);
973*53ee8cc1Swenshuai.xi }
974*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetECMTimeStamp(MS_U32 u32RASPEng)975*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetECMTimeStamp(MS_U32 u32RASPEng)
976*53ee8cc1Swenshuai.xi {
977*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
978*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_DWord(u32RASPEng,REG_RASP_ECM_LPCR1_L);
979*53ee8cc1Swenshuai.xi }
980*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetPayloadTimeStamp(MS_U32 u32RASPEng)981*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetPayloadTimeStamp(MS_U32 u32RASPEng)
982*53ee8cc1Swenshuai.xi {
983*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
984*53ee8cc1Swenshuai.xi //return _HAL_REG32_R(&_RASPReg[u32RASPEng][0].RASP_PayLPCR1);
985*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_PAY_LPCR1_L);
986*53ee8cc1Swenshuai.xi }
987*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetPVRTimeStamp(MS_U32 u32RASPEng,MS_U32 u32Stamp)988*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPVRTimeStamp(MS_U32 u32RASPEng , MS_U32 u32Stamp)
989*53ee8cc1Swenshuai.xi {
990*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
991*53ee8cc1Swenshuai.xi
992*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(u32RASPEng, REG_RASP_STR_LPCR1_BUF_L, u32Stamp);
993*53ee8cc1Swenshuai.xi MS_U16 HWCtrl4;
994*53ee8cc1Swenshuai.xi
995*53ee8cc1Swenshuai.xi HWCtrl4 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL4);
996*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL4, (HWCtrl4 | RASP_STREAM_LPCR_WLD));
997*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
998*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL4, (HWCtrl4 & (~RASP_STREAM_LPCR_WLD)));
999*53ee8cc1Swenshuai.xi }
1000*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetECMTimeStamp(MS_U32 u32RASPEng,MS_U32 u32Stamp)1001*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetECMTimeStamp(MS_U32 u32RASPEng , MS_U32 u32Stamp)
1002*53ee8cc1Swenshuai.xi {
1003*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
1004*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(u32RASPEng, REG_RASP_ECM_LPCR1_BUF_L, u32Stamp);
1005*53ee8cc1Swenshuai.xi
1006*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_EcmLPCR1Buf , u32Stamp);
1007*53ee8cc1Swenshuai.xi
1008*53ee8cc1Swenshuai.xi MS_U16 HWCtrl3;
1009*53ee8cc1Swenshuai.xi
1010*53ee8cc1Swenshuai.xi HWCtrl3 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL3);
1011*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 | RASP_ECM2MIU_LPCR_WT));
1012*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1013*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HWCtrl3 & (~RASP_ECM2MIU_LPCR_WT)));
1014*53ee8cc1Swenshuai.xi }
1015*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetPayloadTimeStamp(MS_U32 u32RASPEng,MS_U32 u32Stamp)1016*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetPayloadTimeStamp(MS_U32 u32RASPEng , MS_U32 u32Stamp)
1017*53ee8cc1Swenshuai.xi {
1018*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
1019*53ee8cc1Swenshuai.xi #if 1
1020*53ee8cc1Swenshuai.xi MS_U16 HW_CTRL3;
1021*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(u32RASPEng, REG_RASP_PAY_LPCR1_BUF_L, u32Stamp);
1022*53ee8cc1Swenshuai.xi
1023*53ee8cc1Swenshuai.xi HW_CTRL3 = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL3);
1024*53ee8cc1Swenshuai.xi
1025*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HW_CTRL3 | RASP_PAYLD2MIU_LPCR_WT) );
1026*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL3, (HW_CTRL3 & (~RASP_PAYLD2MIU_LPCR_WT)) );
1027*53ee8cc1Swenshuai.xi
1028*53ee8cc1Swenshuai.xi #else
1029*53ee8cc1Swenshuai.xi _HAL_REG32_W(&_RASPReg[u32RASPEng][0].RASP_PayLPCR1Buf , u32Stamp);
1030*53ee8cc1Swenshuai.xi
1031*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
1032*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3) , RASP_PAYLD2MIU_LPCR_WT));
1033*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3,
1034*53ee8cc1Swenshuai.xi RESET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL3) , RASP_PAYLD2MIU_LPCR_WT));
1035*53ee8cc1Swenshuai.xi #endif
1036*53ee8cc1Swenshuai.xi }
1037*53ee8cc1Swenshuai.xi
1038*53ee8cc1Swenshuai.xi
1039*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetWaterMark(MS_U32 u32RASPEng)1040*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetWaterMark(MS_U32 u32RASPEng)
1041*53ee8cc1Swenshuai.xi {
1042*53ee8cc1Swenshuai.xi }
1043*53ee8cc1Swenshuai.xi
1044*53ee8cc1Swenshuai.xi #if 0 //EEGII: REFINED API ==>HAL_NDSRASP_EVENT_SetThreshold, HAL_NDSRASP_SetTime_Timeout
1045*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetTimerWaterMark(MS_U32 u32RASPEng, MS_U16 u16TimerWaterMask)
1046*53ee8cc1Swenshuai.xi {
1047*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2;
1048*53ee8cc1Swenshuai.xi
1049*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
1050*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 | (u16TimerWaterMask<<RASP_INT_TIMER_SHIFT)) );
1051*53ee8cc1Swenshuai.xi }
1052*53ee8cc1Swenshuai.xi
1053*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetEventWaterMark(MS_U32 u32RASPEng, MS_U16 u16EventWaterMask)
1054*53ee8cc1Swenshuai.xi {
1055*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2;
1056*53ee8cc1Swenshuai.xi
1057*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
1058*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 | (u16EventWaterMask<<RASP_INT_EVENT_SHIFT)) );
1059*53ee8cc1Swenshuai.xi }
1060*53ee8cc1Swenshuai.xi #endif
1061*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetTSIF(MS_U32 u32RASPEng,MS_BOOL bPara,MS_BOOL bExtSync,MS_BOOL bDataSWP)1062*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetTSIF(MS_U32 u32RASPEng , MS_BOOL bPara, MS_BOOL bExtSync, MS_BOOL bDataSWP)
1063*53ee8cc1Swenshuai.xi {
1064*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
1065*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0,HWCtrl1;
1066*53ee8cc1Swenshuai.xi
1067*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_DEBUG, "RASPEng = 0x%x, bPara = %d, bExtSync = %d, bDataSWP = %d\n",u32RASPEng, bPara, bExtSync, bDataSWP);
1068*53ee8cc1Swenshuai.xi
1069*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
1070*53ee8cc1Swenshuai.xi HWCtrl1 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL1);
1071*53ee8cc1Swenshuai.xi
1072*53ee8cc1Swenshuai.xi if (bPara)
1073*53ee8cc1Swenshuai.xi {
1074*53ee8cc1Swenshuai.xi HWCtrl0 |= RASP_TSIF2_PARA_SEL;
1075*53ee8cc1Swenshuai.xi }
1076*53ee8cc1Swenshuai.xi else
1077*53ee8cc1Swenshuai.xi {
1078*53ee8cc1Swenshuai.xi HWCtrl0 &= (~RASP_TSIF2_PARA_SEL);
1079*53ee8cc1Swenshuai.xi HWCtrl0 |= (RASP_RISING_SYNC_DETECT | RASP_FALLING_VALID_DETECT);
1080*53ee8cc1Swenshuai.xi
1081*53ee8cc1Swenshuai.xi HWCtrl1 |= 0x0400;
1082*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, HWCtrl1);
1083*53ee8cc1Swenshuai.xi
1084*53ee8cc1Swenshuai.xi MS_U16 PktSet;
1085*53ee8cc1Swenshuai.xi PktSet = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_PKT_SET);
1086*53ee8cc1Swenshuai.xi PktSet |= 0x0080;
1087*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, PktSet);
1088*53ee8cc1Swenshuai.xi }
1089*53ee8cc1Swenshuai.xi
1090*53ee8cc1Swenshuai.xi if (bExtSync)
1091*53ee8cc1Swenshuai.xi {
1092*53ee8cc1Swenshuai.xi HWCtrl0 |= RASP_TSIF2_EXT_SYNC;
1093*53ee8cc1Swenshuai.xi }
1094*53ee8cc1Swenshuai.xi else
1095*53ee8cc1Swenshuai.xi {
1096*53ee8cc1Swenshuai.xi HWCtrl0 &= (~RASP_TSIF2_EXT_SYNC);
1097*53ee8cc1Swenshuai.xi }
1098*53ee8cc1Swenshuai.xi
1099*53ee8cc1Swenshuai.xi if (bDataSWP)
1100*53ee8cc1Swenshuai.xi {
1101*53ee8cc1Swenshuai.xi HWCtrl0 |= RASP_TSIF2_DATA_SWP;
1102*53ee8cc1Swenshuai.xi }
1103*53ee8cc1Swenshuai.xi else
1104*53ee8cc1Swenshuai.xi {
1105*53ee8cc1Swenshuai.xi HWCtrl0 &= (~RASP_TSIF2_DATA_SWP);
1106*53ee8cc1Swenshuai.xi }
1107*53ee8cc1Swenshuai.xi
1108*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_DEBUG, "RASPEng = 0x%x, HWCtrl0 = %x, HWCtrl1 = %x\n",u32RASPEng, HWCtrl0, HWCtrl1);
1109*53ee8cc1Swenshuai.xi
1110*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, HWCtrl0);
1111*53ee8cc1Swenshuai.xi }
1112*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetTSIF(MS_U32 u32RASPEng,MS_BOOL * pbPara,MS_BOOL * pbExtSync,MS_BOOL * pbDataSWP)1113*53ee8cc1Swenshuai.xi void HAL_NDSRASP_GetTSIF(MS_U32 u32RASPEng , MS_BOOL* pbPara, MS_BOOL* pbExtSync, MS_BOOL* pbDataSWP)
1114*53ee8cc1Swenshuai.xi {
1115*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
1116*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0;
1117*53ee8cc1Swenshuai.xi
1118*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
1119*53ee8cc1Swenshuai.xi
1120*53ee8cc1Swenshuai.xi *pbPara = (HWCtrl0 & RASP_TSIF2_PARA_SEL)? 1:0;
1121*53ee8cc1Swenshuai.xi
1122*53ee8cc1Swenshuai.xi *pbExtSync = (HWCtrl0 & RASP_TSIF2_EXT_SYNC)? 1:0;
1123*53ee8cc1Swenshuai.xi
1124*53ee8cc1Swenshuai.xi *pbDataSWP = (HWCtrl0 & RASP_TSIF2_DATA_SWP)? 1:0;
1125*53ee8cc1Swenshuai.xi }
1126*53ee8cc1Swenshuai.xi
1127*53ee8cc1Swenshuai.xi #define REG16(addr) (*(volatile unsigned short *) (addr)) //temporary hardcode
1128*53ee8cc1Swenshuai.xi
1129*53ee8cc1Swenshuai.xi //bank 0x101E
1130*53ee8cc1Swenshuai.xi #define CHIP_REG(addr) (*((volatile MS_U16*)(_gChipTp_Addr + ((addr)<<2))))
1131*53ee8cc1Swenshuai.xi
1132*53ee8cc1Swenshuai.xi //0x100A
1133*53ee8cc1Swenshuai.xi #define CLKGEN2_REG(addr) (*((volatile MS_U16*)(_gClkGen2_Addr + ((addr)<<2))))
1134*53ee8cc1Swenshuai.xi
1135*53ee8cc1Swenshuai.xi //0x100B
1136*53ee8cc1Swenshuai.xi #define CLKGEN0_REG(addr) (*((volatile MS_U16*)(_gClkGen_Addr + ((addr)<<2))))
1137*53ee8cc1Swenshuai.xi
1138*53ee8cc1Swenshuai.xi
1139*53ee8cc1Swenshuai.xi
HAL_NDSRASP_Livein_Config(MS_U32 rasp_eng,RASP_LIVEIN_SRC_e InputSrc)1140*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_Livein_Config(MS_U32 rasp_eng, RASP_LIVEIN_SRC_e InputSrc)
1141*53ee8cc1Swenshuai.xi {
1142*53ee8cc1Swenshuai.xi MS_U16 u16Reg;
1143*53ee8cc1Swenshuai.xi
1144*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_DEBUG,"InputSrc = %d\n",InputSrc);
1145*53ee8cc1Swenshuai.xi //pad set to TS0
1146*53ee8cc1Swenshuai.xi u16Reg = CHIP_REG(0x39);
1147*53ee8cc1Swenshuai.xi u16Reg &= ~(0xf<<(rasp_eng*4));
1148*53ee8cc1Swenshuai.xi u16Reg |= (InputSrc<<(rasp_eng*4));
1149*53ee8cc1Swenshuai.xi CHIP_REG(0x39) = u16Reg;
1150*53ee8cc1Swenshuai.xi
1151*53ee8cc1Swenshuai.xi
1152*53ee8cc1Swenshuai.xi u16Reg = CLKGEN2_REG(0x02+rasp_eng);
1153*53ee8cc1Swenshuai.xi u16Reg &= (~0x001f);
1154*53ee8cc1Swenshuai.xi u16Reg |= (InputSrc<<2);
1155*53ee8cc1Swenshuai.xi CLKGEN2_REG(0x02+rasp_eng) = u16Reg;
1156*53ee8cc1Swenshuai.xi
1157*53ee8cc1Swenshuai.xi
1158*53ee8cc1Swenshuai.xi u16Reg = CLKGEN0_REG(0x29);
1159*53ee8cc1Swenshuai.xi u16Reg &= ~(0x3F00);
1160*53ee8cc1Swenshuai.xi u16Reg |= (InputSrc<<10);
1161*53ee8cc1Swenshuai.xi CLKGEN0_REG(0x26) = u16Reg;
1162*53ee8cc1Swenshuai.xi
1163*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_DEBUG, "RASPEng = 0x%x, CHIP_REG(0x39) = %x, CLKGEN2_REG = %x\n",rasp_eng, CHIP_REG(0x39), CLKGEN2_REG(0x02+rasp_eng));
1164*53ee8cc1Swenshuai.xi
1165*53ee8cc1Swenshuai.xi return TRUE;
1166*53ee8cc1Swenshuai.xi }
1167*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetFileinStart(MS_U32 u32RASPEng,MS_BOOL bEn)1168*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetFileinStart(MS_U32 u32RASPEng , MS_BOOL bEn)
1169*53ee8cc1Swenshuai.xi {
1170*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
1171*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
1172*53ee8cc1Swenshuai.xi //jamietest, FileIn Enable is always 0 on Keres
1173*53ee8cc1Swenshuai.xi
1174*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0;
1175*53ee8cc1Swenshuai.xi
1176*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
1177*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 & (~RASP_FILEIN_EN)) );
1178*53ee8cc1Swenshuai.xi
1179*53ee8cc1Swenshuai.xi if (bEn)
1180*53ee8cc1Swenshuai.xi {
1181*53ee8cc1Swenshuai.xi //Set RASP buffer full level to 0b100
1182*53ee8cc1Swenshuai.xi HAL_NDSRASP_SetBufferBlockLevel(u32RASPEng, 0x4);
1183*53ee8cc1Swenshuai.xi }
1184*53ee8cc1Swenshuai.xi else
1185*53ee8cc1Swenshuai.xi {
1186*53ee8cc1Swenshuai.xi HAL_NDSRASP_SetBufferBlockLevel(u32RASPEng, 0x0);
1187*53ee8cc1Swenshuai.xi }
1188*53ee8cc1Swenshuai.xi }
1189*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetFileinStart(MS_U32 u32RASPEng)1190*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_GetFileinStart(MS_U32 u32RASPEng)
1191*53ee8cc1Swenshuai.xi {
1192*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1193*53ee8cc1Swenshuai.xi if(HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0) & RASP_FILEIN_EN)
1194*53ee8cc1Swenshuai.xi return TRUE;
1195*53ee8cc1Swenshuai.xi else
1196*53ee8cc1Swenshuai.xi return FALSE;
1197*53ee8cc1Swenshuai.xi }
1198*53ee8cc1Swenshuai.xi
HAL_NDSRASP_INT_GetHW(MS_U32 u32RASPEng)1199*53ee8cc1Swenshuai.xi MS_U16 HAL_NDSRASP_INT_GetHW(MS_U32 u32RASPEng)
1200*53ee8cc1Swenshuai.xi {
1201*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1202*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_INT_STATUS);
1203*53ee8cc1Swenshuai.xi }
1204*53ee8cc1Swenshuai.xi
HAL_NDSRASP_INT_ClrHW(MS_U32 u32RASPEng,MS_U16 u16Mask)1205*53ee8cc1Swenshuai.xi void HAL_NDSRASP_INT_ClrHW(MS_U32 u32RASPEng, MS_U16 u16Mask)
1206*53ee8cc1Swenshuai.xi {
1207*53ee8cc1Swenshuai.xi RASP_NUM_CHECK(u32RASPEng);
1208*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_INT_CLR, u16Mask);
1209*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(1);
1210*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_INT_CLR, 0x0000);
1211*53ee8cc1Swenshuai.xi }
1212*53ee8cc1Swenshuai.xi
HAL_NDSRASP_INT_Enable(MS_U32 u32RASPEng,MS_U16 u16Mask)1213*53ee8cc1Swenshuai.xi void HAL_NDSRASP_INT_Enable(MS_U32 u32RASPEng, MS_U16 u16Mask)
1214*53ee8cc1Swenshuai.xi {
1215*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_INT_ENABLE, u16Mask );
1216*53ee8cc1Swenshuai.xi }
1217*53ee8cc1Swenshuai.xi
HAL_NDSRASP_INT_Disable(MS_U32 u32RASPEng,MS_U16 u16Mask)1218*53ee8cc1Swenshuai.xi void HAL_NDSRASP_INT_Disable(MS_U32 u32RASPEng, MS_U16 u16Mask)
1219*53ee8cc1Swenshuai.xi {
1220*53ee8cc1Swenshuai.xi MS_U16 IntEn;
1221*53ee8cc1Swenshuai.xi
1222*53ee8cc1Swenshuai.xi IntEn = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_INT_ENABLE);
1223*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_INT_ENABLE, (IntEn & (~u16Mask)) );
1224*53ee8cc1Swenshuai.xi }
1225*53ee8cc1Swenshuai.xi
1226*53ee8cc1Swenshuai.xi
HAL_NDSRASP_EVENT_EventWM_Enable(MS_U32 u32RASPEng,MS_BOOL enable)1227*53ee8cc1Swenshuai.xi void HAL_NDSRASP_EVENT_EventWM_Enable(MS_U32 u32RASPEng, MS_BOOL enable)
1228*53ee8cc1Swenshuai.xi {
1229*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0,HWCtrl2;
1230*53ee8cc1Swenshuai.xi
1231*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
1232*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
1233*53ee8cc1Swenshuai.xi
1234*53ee8cc1Swenshuai.xi if (enable)
1235*53ee8cc1Swenshuai.xi {
1236*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 | RASP_REC_EVENT_FIFO_EN) );
1237*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 | RASP_INT_EVENT_EN) );
1238*53ee8cc1Swenshuai.xi }
1239*53ee8cc1Swenshuai.xi else
1240*53ee8cc1Swenshuai.xi {
1241*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 & (~RASP_REC_EVENT_FIFO_EN)) );
1242*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 & (~RASP_INT_EVENT_EN)) );
1243*53ee8cc1Swenshuai.xi }
1244*53ee8cc1Swenshuai.xi }
1245*53ee8cc1Swenshuai.xi
HAL_NDSRASP_EVENT_SetEventThreshold(MS_U32 u32RASPEng,MS_U32 u32threshold)1246*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_EVENT_SetEventThreshold(MS_U32 u32RASPEng, MS_U32 u32threshold)
1247*53ee8cc1Swenshuai.xi {
1248*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2;
1249*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ERR, "Rasp ID [0x%x]\n", u32RASPEng);
1250*53ee8cc1Swenshuai.xi
1251*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1252*53ee8cc1Swenshuai.xi
1253*53ee8cc1Swenshuai.xi if (u32threshold > 31)
1254*53ee8cc1Swenshuai.xi {
1255*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ERR, "THRESHOLD Value exceeds maximum value\n");
1256*53ee8cc1Swenshuai.xi return FALSE;
1257*53ee8cc1Swenshuai.xi }
1258*53ee8cc1Swenshuai.xi
1259*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
1260*53ee8cc1Swenshuai.xi
1261*53ee8cc1Swenshuai.xi HWCtrl2 &= (~RASP_INT_EVENT_MASK);
1262*53ee8cc1Swenshuai.xi u32threshold <<= RASP_INT_EVENT_SHIFT;
1263*53ee8cc1Swenshuai.xi u32threshold &= RASP_INT_EVENT_MASK;
1264*53ee8cc1Swenshuai.xi
1265*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, HWCtrl2 | u32threshold );
1266*53ee8cc1Swenshuai.xi return TRUE;
1267*53ee8cc1Swenshuai.xi
1268*53ee8cc1Swenshuai.xi }
1269*53ee8cc1Swenshuai.xi
HAL_NDSRASP_EVENT_TimeWM_Enable(MS_U32 u32RASPEng,MS_BOOL enable)1270*53ee8cc1Swenshuai.xi void HAL_NDSRASP_EVENT_TimeWM_Enable(MS_U32 u32RASPEng, MS_BOOL enable)
1271*53ee8cc1Swenshuai.xi {
1272*53ee8cc1Swenshuai.xi
1273*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2;
1274*53ee8cc1Swenshuai.xi //MS_U16 HWCtrl0;
1275*53ee8cc1Swenshuai.xi
1276*53ee8cc1Swenshuai.xi //HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
1277*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
1278*53ee8cc1Swenshuai.xi
1279*53ee8cc1Swenshuai.xi if (enable)
1280*53ee8cc1Swenshuai.xi {
1281*53ee8cc1Swenshuai.xi //HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 | RASP_REC_EVENT_FIFO_EN) );
1282*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 | RASP_INT_TIMER_EN) );
1283*53ee8cc1Swenshuai.xi }
1284*53ee8cc1Swenshuai.xi else
1285*53ee8cc1Swenshuai.xi {
1286*53ee8cc1Swenshuai.xi //HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 & (~RASP_REC_EVENT_FIFO_EN)) );
1287*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, (HWCtrl2 & (~RASP_INT_TIMER_EN)) );
1288*53ee8cc1Swenshuai.xi }
1289*53ee8cc1Swenshuai.xi
1290*53ee8cc1Swenshuai.xi }
1291*53ee8cc1Swenshuai.xi
HAL_NDSRASP_EVENT_SetTimerThreshold(MS_U32 u32RASPEng,MS_U16 u16timeout)1292*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_EVENT_SetTimerThreshold(MS_U32 u32RASPEng, MS_U16 u16timeout)
1293*53ee8cc1Swenshuai.xi {
1294*53ee8cc1Swenshuai.xi MS_U16 HWCtrl2;
1295*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ERR, "Rasp ID [0x%x]\n", u32RASPEng);
1296*53ee8cc1Swenshuai.xi
1297*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1298*53ee8cc1Swenshuai.xi
1299*53ee8cc1Swenshuai.xi if (u16timeout > 3)
1300*53ee8cc1Swenshuai.xi {
1301*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ERR, "TIMEOUT Value exceeds maximum value\n");
1302*53ee8cc1Swenshuai.xi return FALSE;
1303*53ee8cc1Swenshuai.xi }
1304*53ee8cc1Swenshuai.xi
1305*53ee8cc1Swenshuai.xi HWCtrl2 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL2);
1306*53ee8cc1Swenshuai.xi
1307*53ee8cc1Swenshuai.xi HWCtrl2 &= (~RASP_INT_TIMER_MASK);
1308*53ee8cc1Swenshuai.xi u16timeout <<= RASP_INT_TIMER_SHIFT;
1309*53ee8cc1Swenshuai.xi u16timeout &= RASP_INT_TIMER_MASK;
1310*53ee8cc1Swenshuai.xi
1311*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL2, HWCtrl2 | u16timeout );
1312*53ee8cc1Swenshuai.xi return TRUE;
1313*53ee8cc1Swenshuai.xi
1314*53ee8cc1Swenshuai.xi }
1315*53ee8cc1Swenshuai.xi
HAL_NDSRASP_EVENT_GetEventNum(MS_U32 u32RASPEng)1316*53ee8cc1Swenshuai.xi MS_U16 HAL_NDSRASP_EVENT_GetEventNum(MS_U32 u32RASPEng)
1317*53ee8cc1Swenshuai.xi {
1318*53ee8cc1Swenshuai.xi MS_U16 FifoStatus = 0 ;
1319*53ee8cc1Swenshuai.xi
1320*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1321*53ee8cc1Swenshuai.xi FifoStatus = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_EVENTLOG_STATUS);
1322*53ee8cc1Swenshuai.xi
1323*53ee8cc1Swenshuai.xi //Current amount of stored evens in the FIFO
1324*53ee8cc1Swenshuai.xi return (FifoStatus & RASP_EVENT_FIFO_NUM_MASK);
1325*53ee8cc1Swenshuai.xi }
1326*53ee8cc1Swenshuai.xi
HAL_NDSRASP_EVENT_GetEventDescriptor(MS_U32 u32RASPEng,MS_U32 * DataArray,MS_U32 ArrSize)1327*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_EVENT_GetEventDescriptor(MS_U32 u32RASPEng,MS_U32 *DataArray , MS_U32 ArrSize )
1328*53ee8cc1Swenshuai.xi {
1329*53ee8cc1Swenshuai.xi MS_U16 FifoStatus = 0;
1330*53ee8cc1Swenshuai.xi
1331*53ee8cc1Swenshuai.xi FifoStatus = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_EVENTLOG_STATUS);
1332*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "FifoStatus = [%x]\n", (MS_U32)FifoStatus);
1333*53ee8cc1Swenshuai.xi
1334*53ee8cc1Swenshuai.xi if (FifoStatus & RASP_EVENT_FIFO_NUM_MASK)
1335*53ee8cc1Swenshuai.xi {
1336*53ee8cc1Swenshuai.xi HAL_NDSRASP_EVENT_EFrame_Read(u32RASPEng); // read event from event FIFO
1337*53ee8cc1Swenshuai.xi
1338*53ee8cc1Swenshuai.xi if (ArrSize >= 5 )
1339*53ee8cc1Swenshuai.xi {
1340*53ee8cc1Swenshuai.xi // [NOTE] NDS structure for 20 bytes..
1341*53ee8cc1Swenshuai.xi DataArray[0] = HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_EVENT_DESCR_L);
1342*53ee8cc1Swenshuai.xi DataArray[1] = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_EVENT_PKT_PID);
1343*53ee8cc1Swenshuai.xi DataArray[2] = HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_EVENT_PKT_NUM_L);
1344*53ee8cc1Swenshuai.xi DataArray[3] = HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_EVENT_PKT_TIMER_L);
1345*53ee8cc1Swenshuai.xi DataArray[4] = HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_EVENT_PKT_PCR_L);
1346*53ee8cc1Swenshuai.xi //DataArray[5] = FifoStatus;
1347*53ee8cc1Swenshuai.xi return TRUE;
1348*53ee8cc1Swenshuai.xi }
1349*53ee8cc1Swenshuai.xi else
1350*53ee8cc1Swenshuai.xi {
1351*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ERR, "Even descriptor size not enough.\n");
1352*53ee8cc1Swenshuai.xi return FALSE;
1353*53ee8cc1Swenshuai.xi }
1354*53ee8cc1Swenshuai.xi }
1355*53ee8cc1Swenshuai.xi else
1356*53ee8cc1Swenshuai.xi {
1357*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_ERR, "No event in Event FIFO.\n");
1358*53ee8cc1Swenshuai.xi return FALSE;
1359*53ee8cc1Swenshuai.xi }
1360*53ee8cc1Swenshuai.xi
1361*53ee8cc1Swenshuai.xi return FALSE;
1362*53ee8cc1Swenshuai.xi }
1363*53ee8cc1Swenshuai.xi
1364*53ee8cc1Swenshuai.xi //Reset Event Counter in Event FIFO
HAL_NDSRASP_EVENT_RstCounter(MS_U32 u32RASPEng)1365*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_EVENT_RstCounter(MS_U32 u32RASPEng)
1366*53ee8cc1Swenshuai.xi {
1367*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
1368*53ee8cc1Swenshuai.xi
1369*53ee8cc1Swenshuai.xi MS_U32 addr;
1370*53ee8cc1Swenshuai.xi
1371*53ee8cc1Swenshuai.xi addr = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_PKT_SET);
1372*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, (addr & ~RASP_PKT_RESET_NUMBER));
1373*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, (addr | RASP_PKT_RESET_NUMBER));
1374*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, (addr & ~RASP_PKT_RESET_NUMBER));
1375*53ee8cc1Swenshuai.xi
1376*53ee8cc1Swenshuai.xi return TRUE;
1377*53ee8cc1Swenshuai.xi }
1378*53ee8cc1Swenshuai.xi
1379*53ee8cc1Swenshuai.xi //Reset Event Timer in Event FIFO
HAL_NDSRASP_EVENT_RstTimer(MS_U32 u32RASPEng)1380*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_EVENT_RstTimer(MS_U32 u32RASPEng)
1381*53ee8cc1Swenshuai.xi {
1382*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
1383*53ee8cc1Swenshuai.xi
1384*53ee8cc1Swenshuai.xi MS_U32 addr;
1385*53ee8cc1Swenshuai.xi
1386*53ee8cc1Swenshuai.xi addr = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_PKT_SET);
1387*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, (addr & ~RASP_PKT_RESET_TIMER));
1388*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, (addr | RASP_PKT_RESET_TIMER));
1389*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_PKT_SET, (addr & ~RASP_PKT_RESET_TIMER));
1390*53ee8cc1Swenshuai.xi
1391*53ee8cc1Swenshuai.xi return TRUE;
1392*53ee8cc1Swenshuai.xi }
1393*53ee8cc1Swenshuai.xi
1394*53ee8cc1Swenshuai.xi // It reads event FIFO into offset 0x50-0x0x59. Per read, event buffer level decreased.
HAL_NDSRASP_EVENT_EFrame_Read(MS_U32 u32RASPEng)1395*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_EVENT_EFrame_Read(MS_U32 u32RASPEng)
1396*53ee8cc1Swenshuai.xi {
1397*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
1398*53ee8cc1Swenshuai.xi
1399*53ee8cc1Swenshuai.xi MS_U32 addr;
1400*53ee8cc1Swenshuai.xi
1401*53ee8cc1Swenshuai.xi addr = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_HW_CTRL1);
1402*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (addr & ~RASP_EVENT_FIFO_READ));
1403*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (addr | RASP_EVENT_FIFO_READ));
1404*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL1, (addr & ~RASP_EVENT_FIFO_READ));
1405*53ee8cc1Swenshuai.xi
1406*53ee8cc1Swenshuai.xi return TRUE;
1407*53ee8cc1Swenshuai.xi }
1408*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetDataSwap(MS_U32 u32RASPEng,MS_BOOL bEn)1409*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetDataSwap(MS_U32 u32RASPEng, MS_BOOL bEn)
1410*53ee8cc1Swenshuai.xi {
1411*53ee8cc1Swenshuai.xi MS_U16 HWCtrl0;
1412*53ee8cc1Swenshuai.xi
1413*53ee8cc1Swenshuai.xi HWCtrl0 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL0);
1414*53ee8cc1Swenshuai.xi
1415*53ee8cc1Swenshuai.xi if(bEn)
1416*53ee8cc1Swenshuai.xi {
1417*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 | RASP_TSIF2_DATA_SWP) );
1418*53ee8cc1Swenshuai.xi }
1419*53ee8cc1Swenshuai.xi else
1420*53ee8cc1Swenshuai.xi {
1421*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL0, (HWCtrl0 & (~RASP_TSIF2_DATA_SWP)) );
1422*53ee8cc1Swenshuai.xi }
1423*53ee8cc1Swenshuai.xi }
1424*53ee8cc1Swenshuai.xi
1425*53ee8cc1Swenshuai.xi
1426*53ee8cc1Swenshuai.xi //TODO:what this function for
HAL_NDSRASP_SetStream_47_48(MS_U32 u32RASPEng,MS_U32 StreamSel)1427*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_SetStream_47_48(MS_U32 u32RASPEng, MS_U32 StreamSel)
1428*53ee8cc1Swenshuai.xi {
1429*53ee8cc1Swenshuai.xi if(0x47 == StreamSel)
1430*53ee8cc1Swenshuai.xi {
1431*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4,
1432*53ee8cc1Swenshuai.xi RESET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4), RASP_AUTO_STREAM_47_48)); // '0' for 47, '1' for 48
1433*53ee8cc1Swenshuai.xi return TRUE;
1434*53ee8cc1Swenshuai.xi }
1435*53ee8cc1Swenshuai.xi else if(0x48 == StreamSel)
1436*53ee8cc1Swenshuai.xi {
1437*53ee8cc1Swenshuai.xi _HAL_REG16_W(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4,
1438*53ee8cc1Swenshuai.xi SET_FLAG1(_HAL_REG16_R(&_RASPReg[u32RASPEng][0].RASP_HW_CTRL4), RASP_AUTO_STREAM_47_48));// '0' for 47, '1' for 48
1439*53ee8cc1Swenshuai.xi return TRUE;
1440*53ee8cc1Swenshuai.xi }
1441*53ee8cc1Swenshuai.xi else
1442*53ee8cc1Swenshuai.xi {
1443*53ee8cc1Swenshuai.xi return FALSE;
1444*53ee8cc1Swenshuai.xi }
1445*53ee8cc1Swenshuai.xi }
1446*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetPktTimer(MS_U32 u32RASPEng)1447*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetPktTimer(MS_U32 u32RASPEng)
1448*53ee8cc1Swenshuai.xi {
1449*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1450*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_PKT_TIMER_L);
1451*53ee8cc1Swenshuai.xi }
1452*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetPktNum(MS_U32 u32RASPEng)1453*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetPktNum(MS_U32 u32RASPEng)
1454*53ee8cc1Swenshuai.xi {
1455*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1456*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_PKT_NUM_L);
1457*53ee8cc1Swenshuai.xi }
1458*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetEcmPktNum(MS_U32 u32RASPEng)1459*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetEcmPktNum(MS_U32 u32RASPEng)
1460*53ee8cc1Swenshuai.xi {
1461*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1462*53ee8cc1Swenshuai.xi return HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_ECM_PACKET_NUM_L);
1463*53ee8cc1Swenshuai.xi }
1464*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetBufferBlockLevel(MS_U32 u32RASPEng,MS_U32 bufBlockLv)1465*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetBufferBlockLevel(MS_U32 u32RASPEng, MS_U32 bufBlockLv)
1466*53ee8cc1Swenshuai.xi {
1467*53ee8cc1Swenshuai.xi MS_U16 HWCtrl4;
1468*53ee8cc1Swenshuai.xi
1469*53ee8cc1Swenshuai.xi HWCtrl4 = HAL_RASP_ReadReg_Word(u32RASPEng,REG_RASP_HW_CTRL4);
1470*53ee8cc1Swenshuai.xi
1471*53ee8cc1Swenshuai.xi HWCtrl4 &= (~RASP_TS_FF_FULL_SEL_MASK);
1472*53ee8cc1Swenshuai.xi HWCtrl4 |= (bufBlockLv<<RASP_TS_FF_FULL_SEL_SHFT);
1473*53ee8cc1Swenshuai.xi
1474*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(u32RASPEng, REG_RASP_HW_CTRL4, HWCtrl4 );
1475*53ee8cc1Swenshuai.xi }
1476*53ee8cc1Swenshuai.xi
HAL_NDSRASP_GetEVENT_Status(MS_U32 u32RASPEng,MS_U16 * pEventLog,MS_U32 * pEventDescr)1477*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_GetEVENT_Status(MS_U32 u32RASPEng, MS_U16 *pEventLog , MS_U32 *pEventDescr) // [NOTE] NDS structure for 20 bytes..
1478*53ee8cc1Swenshuai.xi {
1479*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(u32RASPEng);
1480*53ee8cc1Swenshuai.xi *pEventLog = HAL_RASP_ReadReg_Word(u32RASPEng, REG_RASP_EVENTLOG_STATUS);
1481*53ee8cc1Swenshuai.xi *pEventDescr = HAL_RASP_ReadReg_DWord(u32RASPEng, REG_RASP_EVENT_DESCR_L);
1482*53ee8cc1Swenshuai.xi return TRUE;
1483*53ee8cc1Swenshuai.xi }
1484*53ee8cc1Swenshuai.xi
HAL_NDSRASP_FileIn_Init(MS_U32 u32RASPEng,MS_U8 u8PacketLength)1485*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_FileIn_Init(MS_U32 u32RASPEng, MS_U8 u8PacketLength)
1486*53ee8cc1Swenshuai.xi {
1487*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
1488*53ee8cc1Swenshuai.xi MS_U16 i;
1489*53ee8cc1Swenshuai.xi MS_U32 addr;
1490*53ee8cc1Swenshuai.xi
1491*53ee8cc1Swenshuai.xi
1492*53ee8cc1Swenshuai.xi //for(i=0 ; i<2; i++)
1493*53ee8cc1Swenshuai.xi i = u32RASPEng;
1494*53ee8cc1Swenshuai.xi {
1495*53ee8cc1Swenshuai.xi // reset
1496*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_RESET, REG_RFILEIN_RESET_ALL);
1497*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1498*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_RESET, 0x0000);
1499*53ee8cc1Swenshuai.xi
1500*53ee8cc1Swenshuai.xi
1501*53ee8cc1Swenshuai.xi //188 mode, Filein enable
1502*53ee8cc1Swenshuai.xi addr = HAL_RFILEIN_ReadReg_Word(i, REG_RFILEIN_CTRL_0);
1503*53ee8cc1Swenshuai.xi addr &= ~REG_RFILEIN_PKT_CHK_SIZE;
1504*53ee8cc1Swenshuai.xi
1505*53ee8cc1Swenshuai.xi if (188 == u8PacketLength)
1506*53ee8cc1Swenshuai.xi {
1507*53ee8cc1Swenshuai.xi addr |= (RASP_RFILEIN_PORT_SEL_FILE|RASP_RFILEIN_ALIGN_EN|RASP_RFILEIN_INPUT_EN /*| REG_RFILEIN_PKT_CHK_SIZE_188*/); //test, moving it to different api: NDS_RASP_SetFileIn_PktSize
1508*53ee8cc1Swenshuai.xi }
1509*53ee8cc1Swenshuai.xi
1510*53ee8cc1Swenshuai.xi else if (192 == u8PacketLength)
1511*53ee8cc1Swenshuai.xi {
1512*53ee8cc1Swenshuai.xi addr |= (RASP_RFILEIN_PORT_SEL_FILE|RASP_RFILEIN_ALIGN_EN|RASP_RFILEIN_INPUT_EN /*| REG_RFILEIN_PKT_CHK_SIZE_192*/);
1513*53ee8cc1Swenshuai.xi }
1514*53ee8cc1Swenshuai.xi
1515*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_CTRL_0, addr);
1516*53ee8cc1Swenshuai.xi
1517*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "offset CTRL_0 [0x%x]\n", (MS_U32)HAL_RFILEIN_ReadReg_Word(i, REG_RFILEIN_CTRL_0) );
1518*53ee8cc1Swenshuai.xi
1519*53ee8cc1Swenshuai.xi //auto flush
1520*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_CTRL_1, HAL_RFILEIN_ReadReg_Word(i,REG_RFILEIN_CTRL_1) | REG_RFILEIN_FLUSH_AUTO);
1521*53ee8cc1Swenshuai.xi }
1522*53ee8cc1Swenshuai.xi
1523*53ee8cc1Swenshuai.xi // MIU Xbar
1524*53ee8cc1Swenshuai.xi //addr = 0xbf000000 + (0x161300*2 + 0x00*4);
1525*53ee8cc1Swenshuai.xi //(*((volatile MS_U16*)(addr))) = 0x0F;
1526*53ee8cc1Swenshuai.xi
1527*53ee8cc1Swenshuai.xi
1528*53ee8cc1Swenshuai.xi return TRUE;
1529*53ee8cc1Swenshuai.xi }
1530*53ee8cc1Swenshuai.xi
1531*53ee8cc1Swenshuai.xi
HAL_NDSRASP_LiveIn_Init(MS_U32 u32RASPEng,MS_U8 u8PacketLength)1532*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_LiveIn_Init(MS_U32 u32RASPEng, MS_U8 u8PacketLength)
1533*53ee8cc1Swenshuai.xi {
1534*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x \n",u32RASPEng);
1535*53ee8cc1Swenshuai.xi MS_U16 i;
1536*53ee8cc1Swenshuai.xi MS_U32 addr;
1537*53ee8cc1Swenshuai.xi
1538*53ee8cc1Swenshuai.xi
1539*53ee8cc1Swenshuai.xi for(i=0 ; i<2; i++)
1540*53ee8cc1Swenshuai.xi {
1541*53ee8cc1Swenshuai.xi // reset
1542*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_RESET, REG_RFILEIN_RESET_ALL);
1543*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1544*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_RESET, 0x0000);
1545*53ee8cc1Swenshuai.xi
1546*53ee8cc1Swenshuai.xi
1547*53ee8cc1Swenshuai.xi //188 mode, Filein disable
1548*53ee8cc1Swenshuai.xi addr = HAL_RFILEIN_ReadReg_Word(i, REG_RFILEIN_CTRL_0);
1549*53ee8cc1Swenshuai.xi addr &= ~(RASP_RFILEIN_PORT_SEL_FILE|RASP_RFILEIN_ALIGN_EN|RASP_RFILEIN_INPUT_EN /* | REG_RFILEIN_PKT_CHK_SIZE*/); //disable filein
1550*53ee8cc1Swenshuai.xi
1551*53ee8cc1Swenshuai.xi #if 0
1552*53ee8cc1Swenshuai.xi if (188==u8PacketLength){
1553*53ee8cc1Swenshuai.xi addr |= REG_RFILEIN_PKT_CHK_SIZE_188; //188
1554*53ee8cc1Swenshuai.xi }
1555*53ee8cc1Swenshuai.xi else if (192==u8PacketLength){
1556*53ee8cc1Swenshuai.xi addr |= REG_RFILEIN_PKT_CHK_SIZE_192;
1557*53ee8cc1Swenshuai.xi }
1558*53ee8cc1Swenshuai.xi #endif
1559*53ee8cc1Swenshuai.xi
1560*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_CTRL_0, addr);
1561*53ee8cc1Swenshuai.xi
1562*53ee8cc1Swenshuai.xi //auto flush
1563*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(i, REG_RFILEIN_CTRL_1, HAL_RFILEIN_ReadReg_Word(i,REG_RFILEIN_CTRL_1) | REG_RFILEIN_FLUSH_AUTO);
1564*53ee8cc1Swenshuai.xi
1565*53ee8cc1Swenshuai.xi }
1566*53ee8cc1Swenshuai.xi
1567*53ee8cc1Swenshuai.xi // MIU Xbar
1568*53ee8cc1Swenshuai.xi //addr = 0xbf000000 + (0x161300*2 + 0x00*4);
1569*53ee8cc1Swenshuai.xi //(*((volatile MS_U16*)(addr))) = 0x0F;
1570*53ee8cc1Swenshuai.xi
1571*53ee8cc1Swenshuai.xi return TRUE;
1572*53ee8cc1Swenshuai.xi }
1573*53ee8cc1Swenshuai.xi
HAL_RASP_SetFileIn_Config(MS_U32 RaspEng,MS_U32 StartAddr,MS_U32 FileInSize)1574*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_SetFileIn_Config(MS_U32 RaspEng, MS_U32 StartAddr, MS_U32 FileInSize)
1575*53ee8cc1Swenshuai.xi {
1576*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, StartAddr = %x, FileInSize = %x\n", RaspEng, StartAddr, FileInSize);
1577*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1578*53ee8cc1Swenshuai.xi
1579*53ee8cc1Swenshuai.xi
1580*53ee8cc1Swenshuai.xi HAL_NDSRASP_FileIn_Init(RaspEng, 188);
1581*53ee8cc1Swenshuai.xi
1582*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_ADDR_L, (MS_U16) (StartAddr&0xFFFF));
1583*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_ADDR_H, (MS_U16) ((StartAddr>>16)&0xFFFF));
1584*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_SIZE_L, (MS_U16) (FileInSize&0xFFFF));
1585*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_SIZE_H, (MS_U16) ((FileInSize>>16)&0xFFFF));
1586*53ee8cc1Swenshuai.xi return TRUE;
1587*53ee8cc1Swenshuai.xi }
1588*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_Start(MS_U32 RaspEng)1589*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_Start(MS_U32 RaspEng)
1590*53ee8cc1Swenshuai.xi {
1591*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "%s: RaspEng = 0x%x\n", __FUNCTION__, RaspEng);
1592*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1593*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_START, RASP_FILEIN_START);
1594*53ee8cc1Swenshuai.xi return TRUE;
1595*53ee8cc1Swenshuai.xi }
1596*53ee8cc1Swenshuai.xi
HAL_RASP_SetFileIn_Timer(MS_U32 RaspEng,MS_U16 u16Timer)1597*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_SetFileIn_Timer(MS_U32 RaspEng, MS_U16 u16Timer)
1598*53ee8cc1Swenshuai.xi {
1599*53ee8cc1Swenshuai.xi
1600*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, u16Timer = %x\n", RaspEng,u16Timer);
1601*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1602*53ee8cc1Swenshuai.xi
1603*53ee8cc1Swenshuai.xi /*FileIn speed. By Byte delay*/
1604*53ee8cc1Swenshuai.xi MS_U16 u16Reg;
1605*53ee8cc1Swenshuai.xi u16Reg = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CTRL_0);
1606*53ee8cc1Swenshuai.xi u16Reg |= 0x0400;
1607*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_0, u16Reg);
1608*53ee8cc1Swenshuai.xi
1609*53ee8cc1Swenshuai.xi //file timer
1610*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_TIMER, u16Timer);
1611*53ee8cc1Swenshuai.xi
1612*53ee8cc1Swenshuai.xi return TRUE;
1613*53ee8cc1Swenshuai.xi }
1614*53ee8cc1Swenshuai.xi
1615*53ee8cc1Swenshuai.xi
1616*53ee8cc1Swenshuai.xi //TODO: this API not necessary, flowset and filein_packetmode can do it
HAL_RASP_SetFileIn_PktSize(MS_U32 RaspEng,MS_U16 PktSize)1617*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_SetFileIn_PktSize(MS_U32 RaspEng, MS_U16 PktSize)
1618*53ee8cc1Swenshuai.xi {
1619*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, PktSize = %x\n", RaspEng,PktSize);
1620*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1621*53ee8cc1Swenshuai.xi MS_U16 u16Reg;
1622*53ee8cc1Swenshuai.xi
1623*53ee8cc1Swenshuai.xi u16Reg = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CTRL_0);
1624*53ee8cc1Swenshuai.xi
1625*53ee8cc1Swenshuai.xi if(PktSize == 188)
1626*53ee8cc1Swenshuai.xi {
1627*53ee8cc1Swenshuai.xi // 188-Mode
1628*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_0, u16Reg | REG_RFILEIN_PKT_CHK_SIZE_188 ); //hard code first
1629*53ee8cc1Swenshuai.xi }
1630*53ee8cc1Swenshuai.xi else if(PktSize == 192)
1631*53ee8cc1Swenshuai.xi {
1632*53ee8cc1Swenshuai.xi // 192-Mode
1633*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_0, u16Reg | REG_RFILEIN_PKT_CHK_SIZE_192); //hard code first
1634*53ee8cc1Swenshuai.xi }
1635*53ee8cc1Swenshuai.xi
1636*53ee8cc1Swenshuai.xi return TRUE;
1637*53ee8cc1Swenshuai.xi }
1638*53ee8cc1Swenshuai.xi
HAL_RASP_IsFileIn_Done(MS_U32 RaspEng)1639*53ee8cc1Swenshuai.xi MS_BOOL HAL_RASP_IsFileIn_Done(MS_U32 RaspEng)
1640*53ee8cc1Swenshuai.xi {
1641*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1642*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1643*53ee8cc1Swenshuai.xi
1644*53ee8cc1Swenshuai.xi MS_U16 u16FileInStatus = 0;
1645*53ee8cc1Swenshuai.xi MS_U16 u16CMDQStatus = 0;
1646*53ee8cc1Swenshuai.xi
1647*53ee8cc1Swenshuai.xi // trigger
1648*53ee8cc1Swenshuai.xi u16FileInStatus = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_START);
1649*53ee8cc1Swenshuai.xi u16FileInStatus &= 0x1;
1650*53ee8cc1Swenshuai.xi
1651*53ee8cc1Swenshuai.xi u16CMDQStatus = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CMDQ_STATUS);
1652*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "FileInStat[%x], CMDQStat[%x]\n", (MS_U32)u16FileInStatus, (MS_U32)u16CMDQStatus);
1653*53ee8cc1Swenshuai.xi
1654*53ee8cc1Swenshuai.xi if( (u16FileInStatus == 0) && (u16CMDQStatus & RFILEIN_CMD_FIFO_EMPTY) )
1655*53ee8cc1Swenshuai.xi {
1656*53ee8cc1Swenshuai.xi return TRUE;
1657*53ee8cc1Swenshuai.xi }
1658*53ee8cc1Swenshuai.xi else
1659*53ee8cc1Swenshuai.xi {
1660*53ee8cc1Swenshuai.xi return FALSE;
1661*53ee8cc1Swenshuai.xi }
1662*53ee8cc1Swenshuai.xi
1663*53ee8cc1Swenshuai.xi }
1664*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_IsCMDQ_Full(MS_U32 RaspEng)1665*53ee8cc1Swenshuai.xi MS_BOOL HAL_RASP_FileIn_IsCMDQ_Full (MS_U32 RaspEng)
1666*53ee8cc1Swenshuai.xi
1667*53ee8cc1Swenshuai.xi {
1668*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1669*53ee8cc1Swenshuai.xi MS_U16 u16CMDQStatus = 0;
1670*53ee8cc1Swenshuai.xi
1671*53ee8cc1Swenshuai.xi u16CMDQStatus = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CMDQ_STATUS);
1672*53ee8cc1Swenshuai.xi if( u16CMDQStatus & RFILEIN_CMD_FIFO_FULL )
1673*53ee8cc1Swenshuai.xi {
1674*53ee8cc1Swenshuai.xi return TRUE;
1675*53ee8cc1Swenshuai.xi }
1676*53ee8cc1Swenshuai.xi else
1677*53ee8cc1Swenshuai.xi {
1678*53ee8cc1Swenshuai.xi return FALSE;
1679*53ee8cc1Swenshuai.xi }
1680*53ee8cc1Swenshuai.xi
1681*53ee8cc1Swenshuai.xi }
1682*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_IsCMDQ_Empty(MS_U32 RaspEng)1683*53ee8cc1Swenshuai.xi MS_BOOL HAL_RASP_FileIn_IsCMDQ_Empty (MS_U32 RaspEng)
1684*53ee8cc1Swenshuai.xi
1685*53ee8cc1Swenshuai.xi {
1686*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1687*53ee8cc1Swenshuai.xi MS_U16 u16CMDQStatus = 0;
1688*53ee8cc1Swenshuai.xi
1689*53ee8cc1Swenshuai.xi u16CMDQStatus = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CMDQ_STATUS);
1690*53ee8cc1Swenshuai.xi if( u16CMDQStatus & RFILEIN_CMD_FIFO_EMPTY )
1691*53ee8cc1Swenshuai.xi {
1692*53ee8cc1Swenshuai.xi return TRUE;
1693*53ee8cc1Swenshuai.xi }
1694*53ee8cc1Swenshuai.xi else
1695*53ee8cc1Swenshuai.xi {
1696*53ee8cc1Swenshuai.xi return FALSE;
1697*53ee8cc1Swenshuai.xi }
1698*53ee8cc1Swenshuai.xi }
1699*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_GetCmdQueueLevel(MS_U32 RaspEng,MS_U8 * CmdQLvl)1700*53ee8cc1Swenshuai.xi MS_BOOL HAL_RASP_FileIn_GetCmdQueueLevel (MS_U32 RaspEng, MS_U8 *CmdQLvl)
1701*53ee8cc1Swenshuai.xi
1702*53ee8cc1Swenshuai.xi {
1703*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1704*53ee8cc1Swenshuai.xi MS_U16 u16CMDQStatus = 0;
1705*53ee8cc1Swenshuai.xi
1706*53ee8cc1Swenshuai.xi u16CMDQStatus = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CMDQ_STATUS);
1707*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "CMDQStatus = %x\n", (MS_U32)u16CMDQStatus);
1708*53ee8cc1Swenshuai.xi
1709*53ee8cc1Swenshuai.xi u16CMDQStatus &= RFILEIN_CMD_WR_LEVEL_MASK;
1710*53ee8cc1Swenshuai.xi u16CMDQStatus >>= 8;
1711*53ee8cc1Swenshuai.xi
1712*53ee8cc1Swenshuai.xi *CmdQLvl = (MS_U8) u16CMDQStatus;
1713*53ee8cc1Swenshuai.xi return TRUE;
1714*53ee8cc1Swenshuai.xi }
1715*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_GetEmptyNum(MS_U32 RaspEng,MS_U8 * CmdQLvl)1716*53ee8cc1Swenshuai.xi MS_BOOL HAL_RASP_FileIn_GetEmptyNum (MS_U32 RaspEng, MS_U8 *CmdQLvl)
1717*53ee8cc1Swenshuai.xi
1718*53ee8cc1Swenshuai.xi {
1719*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1720*53ee8cc1Swenshuai.xi MS_U16 u16CMDQStatus = 0;
1721*53ee8cc1Swenshuai.xi
1722*53ee8cc1Swenshuai.xi u16CMDQStatus = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CMDQ_STATUS);
1723*53ee8cc1Swenshuai.xi u16CMDQStatus &= RFILEIN_CMD_WR_COUNT_MASK;
1724*53ee8cc1Swenshuai.xi
1725*53ee8cc1Swenshuai.xi *CmdQLvl = (MS_U8) (16 - u16CMDQStatus); //we have 16slots in CMDQ
1726*53ee8cc1Swenshuai.xi return TRUE;
1727*53ee8cc1Swenshuai.xi }
1728*53ee8cc1Swenshuai.xi
1729*53ee8cc1Swenshuai.xi
1730*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_Flush(MS_U32 RaspEng)1731*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_Flush(MS_U32 RaspEng)
1732*53ee8cc1Swenshuai.xi {
1733*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1734*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1735*53ee8cc1Swenshuai.xi
1736*53ee8cc1Swenshuai.xi MS_U16 u16Reg;
1737*53ee8cc1Swenshuai.xi
1738*53ee8cc1Swenshuai.xi // flush data
1739*53ee8cc1Swenshuai.xi u16Reg = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CTRL_1);
1740*53ee8cc1Swenshuai.xi
1741*53ee8cc1Swenshuai.xi u16Reg &= ~REG_RFILEIN_FLUSH;
1742*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, u16Reg);
1743*53ee8cc1Swenshuai.xi
1744*53ee8cc1Swenshuai.xi u16Reg |= REG_RFILEIN_FLUSH;
1745*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, u16Reg);
1746*53ee8cc1Swenshuai.xi
1747*53ee8cc1Swenshuai.xi u16Reg &= ~REG_RFILEIN_FLUSH;
1748*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, u16Reg);
1749*53ee8cc1Swenshuai.xi
1750*53ee8cc1Swenshuai.xi return TRUE;
1751*53ee8cc1Swenshuai.xi }
1752*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_BlockTimeStamp(MS_U32 RaspEng,MS_BOOL enbl)1753*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_BlockTimeStamp(MS_U32 RaspEng, MS_BOOL enbl)
1754*53ee8cc1Swenshuai.xi {
1755*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1756*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1757*53ee8cc1Swenshuai.xi
1758*53ee8cc1Swenshuai.xi MS_U16 u16Reg, u16Reg2, u16Reg3, u16Reg4;
1759*53ee8cc1Swenshuai.xi
1760*53ee8cc1Swenshuai.xi u16Reg = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CTRL_0);
1761*53ee8cc1Swenshuai.xi
1762*53ee8cc1Swenshuai.xi if(enbl)
1763*53ee8cc1Swenshuai.xi {
1764*53ee8cc1Swenshuai.xi u16Reg |= RASP_RFILEIN_PKT192_EN; //enable 192, but timestamp blocked
1765*53ee8cc1Swenshuai.xi u16Reg &= ~RASP_RFILEIN_PKT192_BLK_DIS; //enable timestamp block scheme
1766*53ee8cc1Swenshuai.xi
1767*53ee8cc1Swenshuai.xi // patch, 20150519
1768*53ee8cc1Swenshuai.xi u16Reg2 = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CTRL_1);
1769*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16Reg2|REG_RFILEIN_LPCR2_LOAD|REG_RFILEIN_TIMER_192FIX) ); //4 please remain it as set, HW patch
1770*53ee8cc1Swenshuai.xi
1771*53ee8cc1Swenshuai.xi //set RST_PKT_TSTAMP to reset packet timestamp to zero, and check
1772*53ee8cc1Swenshuai.xi u16Reg2 = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_CTRL_1);
1773*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16Reg2 | REG_RFILEIN_RST_PKT_TSTAMP) );
1774*53ee8cc1Swenshuai.xi
1775*53ee8cc1Swenshuai.xi u16Reg3 = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_STREAM_TIMESTAMP_L);
1776*53ee8cc1Swenshuai.xi u16Reg4 = HAL_RFILEIN_ReadReg_Word(RaspEng, REG_RFILEIN_STREAM_TIMESTAMP_H);
1777*53ee8cc1Swenshuai.xi if ( (u16Reg3 == 0x0) && (u16Reg4 == 0x0) )
1778*53ee8cc1Swenshuai.xi {
1779*53ee8cc1Swenshuai.xi printf("==========bank, 0x2f[0], 0x30[0]\n");
1780*53ee8cc1Swenshuai.xi //if equal to zero, reset RST_PKT_TSTAMP register
1781*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16Reg2 & ~REG_RFILEIN_RST_PKT_TSTAMP) );
1782*53ee8cc1Swenshuai.xi }
1783*53ee8cc1Swenshuai.xi else
1784*53ee8cc1Swenshuai.xi {
1785*53ee8cc1Swenshuai.xi printf("==========bank, 0x2f[%x], 0x30[%x], FAIL\n", (MS_U32)u16Reg3, (MS_U32)u16Reg4);
1786*53ee8cc1Swenshuai.xi }
1787*53ee8cc1Swenshuai.xi // patch ends, 20150519
1788*53ee8cc1Swenshuai.xi
1789*53ee8cc1Swenshuai.xi }
1790*53ee8cc1Swenshuai.xi else
1791*53ee8cc1Swenshuai.xi {
1792*53ee8cc1Swenshuai.xi u16Reg &= ~RASP_RFILEIN_PKT192_EN; //disable 192
1793*53ee8cc1Swenshuai.xi u16Reg |= RASP_RFILEIN_PKT192_BLK_DIS; //disable timestamp block scheme
1794*53ee8cc1Swenshuai.xi }
1795*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_0, u16Reg);
1796*53ee8cc1Swenshuai.xi
1797*53ee8cc1Swenshuai.xi return TRUE;
1798*53ee8cc1Swenshuai.xi }
1799*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_SetPlaybackTimeStamp(MS_U32 RaspEng,MS_U32 u32Stamp)1800*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_SetPlaybackTimeStamp(MS_U32 RaspEng , MS_U32 u32Stamp)
1801*53ee8cc1Swenshuai.xi {
1802*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1803*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1804*53ee8cc1Swenshuai.xi MS_U16 HWCtrl4;
1805*53ee8cc1Swenshuai.xi
1806*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_DWord(RaspEng, REG_RFILEIN_LPCR2_BUF_L, u32Stamp);
1807*53ee8cc1Swenshuai.xi HWCtrl4 = HAL_RFILEIN_ReadReg_Word(RaspEng,REG_RFILEIN_CTRL_1);
1808*53ee8cc1Swenshuai.xi
1809*53ee8cc1Swenshuai.xi //send initial value to lpcr2 timer
1810*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (HWCtrl4 | REG_RFILEIN_LPCR2_WLD) );
1811*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1812*53ee8cc1Swenshuai.xi
1813*53ee8cc1Swenshuai.xi //Read lpcr2 initial timer before start
1814*53ee8cc1Swenshuai.xi HAL_RASP_FileIn_GetPlaybackTimeStamp(RaspEng);
1815*53ee8cc1Swenshuai.xi
1816*53ee8cc1Swenshuai.xi //start lpcr2 timer
1817*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (HWCtrl4 & ~REG_RFILEIN_LPCR2_WLD) );
1818*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1819*53ee8cc1Swenshuai.xi
1820*53ee8cc1Swenshuai.xi return TRUE;
1821*53ee8cc1Swenshuai.xi }
1822*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_GetPlaybackTimeStamp(MS_U32 RaspEng)1823*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_GetPlaybackTimeStamp(MS_U32 RaspEng)
1824*53ee8cc1Swenshuai.xi {
1825*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1826*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1827*53ee8cc1Swenshuai.xi
1828*53ee8cc1Swenshuai.xi MS_U16 u16value;
1829*53ee8cc1Swenshuai.xi MS_U32 u32TimeStamp;
1830*53ee8cc1Swenshuai.xi
1831*53ee8cc1Swenshuai.xi u16value = HAL_RFILEIN_ReadReg_Word(RaspEng,REG_RFILEIN_CTRL_1);
1832*53ee8cc1Swenshuai.xi
1833*53ee8cc1Swenshuai.xi //update 90k ctr for read
1834*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16value | REG_RFILEIN_LPCR2_LOAD));
1835*53ee8cc1Swenshuai.xi
1836*53ee8cc1Swenshuai.xi //latch 90k ctr
1837*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16value & (~REG_RFILEIN_LPCR2_LOAD) ));
1838*53ee8cc1Swenshuai.xi
1839*53ee8cc1Swenshuai.xi //get counter
1840*53ee8cc1Swenshuai.xi u32TimeStamp = HAL_RFILEIN_ReadReg_DWord(RaspEng, REG_RFILEIN_LPCR2_RD_L);
1841*53ee8cc1Swenshuai.xi
1842*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32TimeStamp = 0x%x\n", u32TimeStamp);
1843*53ee8cc1Swenshuai.xi return u32TimeStamp;
1844*53ee8cc1Swenshuai.xi
1845*53ee8cc1Swenshuai.xi }
1846*53ee8cc1Swenshuai.xi
1847*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_Timer(MS_U32 RaspEng,MS_BOOL bEnFileinTimer,MS_U16 u16TimerValue)1848*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_Timer(MS_U32 RaspEng, MS_BOOL bEnFileinTimer, MS_U16 u16TimerValue)
1849*53ee8cc1Swenshuai.xi {
1850*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, TimerValue = 0x%x\n", RaspEng, (MS_U32)u16TimerValue);
1851*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1852*53ee8cc1Swenshuai.xi
1853*53ee8cc1Swenshuai.xi MS_U16 u16value, u16value2;
1854*53ee8cc1Swenshuai.xi
1855*53ee8cc1Swenshuai.xi u16value = HAL_RFILEIN_ReadReg_Word(RaspEng,REG_RFILEIN_CTRL_0);
1856*53ee8cc1Swenshuai.xi
1857*53ee8cc1Swenshuai.xi if (TRUE == bEnFileinTimer)
1858*53ee8cc1Swenshuai.xi {
1859*53ee8cc1Swenshuai.xi //enable delay timer
1860*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_0, (u16value | RASP_RFILEIN_TIMER_EN));
1861*53ee8cc1Swenshuai.xi
1862*53ee8cc1Swenshuai.xi //set timer value
1863*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_TIMER, u16TimerValue );
1864*53ee8cc1Swenshuai.xi
1865*53ee8cc1Swenshuai.xi //patch, since Kris
1866*53ee8cc1Swenshuai.xi u16value2 = HAL_RFILEIN_ReadReg_Word(RaspEng,REG_RFILEIN_CTRL_1);
1867*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, u16value2 | REG_RFILEIN_TIMER_192FIX );
1868*53ee8cc1Swenshuai.xi }
1869*53ee8cc1Swenshuai.xi else
1870*53ee8cc1Swenshuai.xi {
1871*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_0, (u16value & ~RASP_RFILEIN_TIMER_EN));
1872*53ee8cc1Swenshuai.xi }
1873*53ee8cc1Swenshuai.xi
1874*53ee8cc1Swenshuai.xi return TRUE;
1875*53ee8cc1Swenshuai.xi
1876*53ee8cc1Swenshuai.xi }
1877*53ee8cc1Swenshuai.xi
HAL_RASP_FileIn_Reset_TStamp(MS_U32 RaspEng,MS_BOOL bResetPktTimeStamp)1878*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_FileIn_Reset_TStamp(MS_U32 RaspEng, MS_BOOL bResetPktTimeStamp)
1879*53ee8cc1Swenshuai.xi {
1880*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x\n", RaspEng);
1881*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1882*53ee8cc1Swenshuai.xi
1883*53ee8cc1Swenshuai.xi MS_U16 u16value;
1884*53ee8cc1Swenshuai.xi
1885*53ee8cc1Swenshuai.xi u16value = HAL_RFILEIN_ReadReg_Word(RaspEng,REG_RFILEIN_CTRL_1);
1886*53ee8cc1Swenshuai.xi
1887*53ee8cc1Swenshuai.xi if (TRUE == bResetPktTimeStamp)
1888*53ee8cc1Swenshuai.xi {
1889*53ee8cc1Swenshuai.xi //@ IMPORTANT: Initialize timestamp latch buffer to zero
1890*53ee8cc1Swenshuai.xi //@ IMPORTANT: In normal scenario, timestamp latch buffer is updated by Filein packet timestamp
1891*53ee8cc1Swenshuai.xi
1892*53ee8cc1Swenshuai.xi //HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16value & ~REG_RFILEIN_RST_PKT_TSTAMP));
1893*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16value | REG_RFILEIN_RST_PKT_TSTAMP));
1894*53ee8cc1Swenshuai.xi //HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16value & ~REG_RFILEIN_RST_PKT_TSTAMP));
1895*53ee8cc1Swenshuai.xi }
1896*53ee8cc1Swenshuai.xi else
1897*53ee8cc1Swenshuai.xi {
1898*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_Word(RaspEng, REG_RFILEIN_CTRL_1, (u16value & ~REG_RFILEIN_RST_PKT_TSTAMP));
1899*53ee8cc1Swenshuai.xi }
1900*53ee8cc1Swenshuai.xi
1901*53ee8cc1Swenshuai.xi return TRUE;
1902*53ee8cc1Swenshuai.xi
1903*53ee8cc1Swenshuai.xi }
1904*53ee8cc1Swenshuai.xi
1905*53ee8cc1Swenshuai.xi
1906*53ee8cc1Swenshuai.xi /**************************************************************************************************************************/
1907*53ee8cc1Swenshuai.xi
1908*53ee8cc1Swenshuai.xi
HAL_RASP_SetPVRDstBuf(MS_U32 RaspEng,MS_U32 u32StartAddr0,MS_U32 u32EndAddr0,MS_U32 u32StartAddr1,MS_U32 u32EndAddr1)1909*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_SetPVRDstBuf(MS_U32 RaspEng, MS_U32 u32StartAddr0, MS_U32 u32EndAddr0, MS_U32 u32StartAddr1, MS_U32 u32EndAddr1)
1910*53ee8cc1Swenshuai.xi {
1911*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, u32StartAddr0 = %x, u32EndAddr0 = %x\n", RaspEng,u32StartAddr0,u32EndAddr0);
1912*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1913*53ee8cc1Swenshuai.xi
1914*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_STR2MIU_HEAD1_L, MIU(u32StartAddr0));
1915*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_STR2MIU_MID1_L, MIU(u32EndAddr0));
1916*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_STR2MIU_TAIL1_L, MIU(u32EndAddr0));
1917*53ee8cc1Swenshuai.xi
1918*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_STR2MIU_HEAD2_L, MIU(u32StartAddr1));
1919*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_STR2MIU_MID2_L, MIU(u32EndAddr1));
1920*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_STR2MIU_TAIL2_L, MIU(u32EndAddr1));
1921*53ee8cc1Swenshuai.xi
1922*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1923*53ee8cc1Swenshuai.xi HAL_NDSRASP_Str2MIU_Reset(RaspEng);
1924*53ee8cc1Swenshuai.xi return TRUE;
1925*53ee8cc1Swenshuai.xi }
1926*53ee8cc1Swenshuai.xi
HAL_RASP_SetPayloadDstBuf(MS_U32 RaspEng,MS_U32 u32StartAddr0,MS_U32 u32MidAddr0,MS_U32 u32EndAddr0,MS_U32 u32StartAddr1,MS_U32 u32MidAddr1,MS_U32 u32EndAddr1)1927*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_SetPayloadDstBuf(MS_U32 RaspEng, MS_U32 u32StartAddr0, MS_U32 u32MidAddr0, MS_U32 u32EndAddr0, MS_U32 u32StartAddr1, MS_U32 u32MidAddr1, MS_U32 u32EndAddr1)
1928*53ee8cc1Swenshuai.xi {
1929*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, u32StartAddr0 = %x, u32EndAddr0 = %x\n",RaspEng,u32StartAddr0,u32EndAddr0);
1930*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1931*53ee8cc1Swenshuai.xi
1932*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_PAYLOAD2MIU_HEAD1_L, MIU(u32StartAddr0));
1933*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_PAYLOAD2MIU_MID1_L, MIU(u32MidAddr0));
1934*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_PAYLOAD2MIU_TAIL1_L, MIU(u32EndAddr0));
1935*53ee8cc1Swenshuai.xi
1936*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_PAYLOAD2MIU_HEAD2_L, MIU(u32StartAddr1));
1937*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_PAYLOAD2MIU_MID2_L, MIU(u32MidAddr1));
1938*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_PAYLOAD2MIU_TAIL2_L, MIU(u32EndAddr1));
1939*53ee8cc1Swenshuai.xi
1940*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1941*53ee8cc1Swenshuai.xi HAL_NDSRASP_PAYLD2MIU_Reset(RaspEng);
1942*53ee8cc1Swenshuai.xi return TRUE;
1943*53ee8cc1Swenshuai.xi }
1944*53ee8cc1Swenshuai.xi
HAL_RASP_SetECMDstBuf(MS_U32 RaspEng,MS_U32 u32StartAddr0,MS_U32 u32MidAddr0,MS_U32 u32EndAddr0)1945*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_SetECMDstBuf(MS_U32 RaspEng, MS_U32 u32StartAddr0, MS_U32 u32MidAddr0, MS_U32 u32EndAddr0)
1946*53ee8cc1Swenshuai.xi {
1947*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, u32StartAddr0 = %x, u32EndAddr0 = %x\n",RaspEng,u32StartAddr0,u32EndAddr0);
1948*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1949*53ee8cc1Swenshuai.xi
1950*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_ECM2MIU_HEAD1_L, MIU(u32StartAddr0));
1951*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_ECM2MIU_MID1_L, MIU(u32MidAddr0));
1952*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_DWord(RaspEng, REG_RASP_ECM2MIU_TAIL1_L, MIU(u32EndAddr0));
1953*53ee8cc1Swenshuai.xi
1954*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
1955*53ee8cc1Swenshuai.xi //HAL_NDSRASP_ECM2MIU_Reset(RaspEng);
1956*53ee8cc1Swenshuai.xi return TRUE;
1957*53ee8cc1Swenshuai.xi }
1958*53ee8cc1Swenshuai.xi
1959*53ee8cc1Swenshuai.xi
HAL_RASP_RecOpenPid(MS_U32 RaspEng,MS_U16 Pid,MS_U8 RaspFltId)1960*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_RecOpenPid(MS_U32 RaspEng, MS_U16 Pid, MS_U8 RaspFltId)
1961*53ee8cc1Swenshuai.xi {
1962*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "RaspEng = 0x%x, Pid = %x, RaspFltId = %x\n", RaspEng,Pid,RaspFltId);
1963*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
1964*53ee8cc1Swenshuai.xi
1965*53ee8cc1Swenshuai.xi MS_U16 u16Reg;
1966*53ee8cc1Swenshuai.xi
1967*53ee8cc1Swenshuai.xi // enable record....
1968*53ee8cc1Swenshuai.xi u16Reg = HAL_RASP_ReadReg_Word(RaspEng, REG_RASP_HW_CTRL1);
1969*53ee8cc1Swenshuai.xi
1970*53ee8cc1Swenshuai.xi if(u16Reg & RASP_REC_PID)
1971*53ee8cc1Swenshuai.xi {
1972*53ee8cc1Swenshuai.xi //already enable...skip...
1973*53ee8cc1Swenshuai.xi }
1974*53ee8cc1Swenshuai.xi else
1975*53ee8cc1Swenshuai.xi {
1976*53ee8cc1Swenshuai.xi u16Reg |= RASP_REC_PID;
1977*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL1, u16Reg);
1978*53ee8cc1Swenshuai.xi }
1979*53ee8cc1Swenshuai.xi
1980*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_PIDFLT_N(RaspFltId), Pid);
1981*53ee8cc1Swenshuai.xi
1982*53ee8cc1Swenshuai.xi return TRUE;
1983*53ee8cc1Swenshuai.xi }
1984*53ee8cc1Swenshuai.xi
HAL_RASP_DisableRec(MS_U32 RaspEng)1985*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_DisableRec(MS_U32 RaspEng)
1986*53ee8cc1Swenshuai.xi {
1987*53ee8cc1Swenshuai.xi MS_U16 u16Reg;
1988*53ee8cc1Swenshuai.xi
1989*53ee8cc1Swenshuai.xi // dsiable record....
1990*53ee8cc1Swenshuai.xi u16Reg = HAL_RASP_ReadReg_Word(RaspEng, REG_RASP_HW_CTRL1);
1991*53ee8cc1Swenshuai.xi u16Reg &= (~RASP_REC_PID);
1992*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL1, u16Reg);
1993*53ee8cc1Swenshuai.xi
1994*53ee8cc1Swenshuai.xi return TRUE;
1995*53ee8cc1Swenshuai.xi }
1996*53ee8cc1Swenshuai.xi
1997*53ee8cc1Swenshuai.xi //ask Stephen what is the real trigger start register...
HAL_NDSRASP_SetFileinConfig(MS_U32 RaspEng,MS_BOOL bFileIn,MS_U16 BlockLevel)1998*53ee8cc1Swenshuai.xi MS_BOOL HAL_NDSRASP_SetFileinConfig(MS_U32 RaspEng, MS_BOOL bFileIn, MS_U16 BlockLevel)
1999*53ee8cc1Swenshuai.xi {
2000*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO,"RaspEng = %x, bFileIn = %d, BlockLevel = %x\n",RaspEng, bFileIn, BlockLevel);
2001*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
2002*53ee8cc1Swenshuai.xi
2003*53ee8cc1Swenshuai.xi MS_U16 u16RegCtrl0, u16RegBlockLevel;
2004*53ee8cc1Swenshuai.xi
2005*53ee8cc1Swenshuai.xi // read control 0....
2006*53ee8cc1Swenshuai.xi u16RegCtrl0 = HAL_RASP_ReadReg_Word(RaspEng, REG_RASP_HW_CTRL0);
2007*53ee8cc1Swenshuai.xi u16RegBlockLevel = HAL_RASP_ReadReg_Word(RaspEng, REG_RASP_HW_CTRL4);
2008*53ee8cc1Swenshuai.xi
2009*53ee8cc1Swenshuai.xi if(bFileIn)
2010*53ee8cc1Swenshuai.xi {
2011*53ee8cc1Swenshuai.xi u16RegCtrl0 &= (~RASP_FILEIN_EN);
2012*53ee8cc1Swenshuai.xi
2013*53ee8cc1Swenshuai.xi u16RegBlockLevel = (u16RegBlockLevel & ~RASP_TS_FF_FULL_SEL_MASK) | (BlockLevel<<RASP_TS_FF_FULL_SEL_SHFT);
2014*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL4, u16RegBlockLevel);
2015*53ee8cc1Swenshuai.xi }
2016*53ee8cc1Swenshuai.xi else
2017*53ee8cc1Swenshuai.xi {
2018*53ee8cc1Swenshuai.xi //u16RegCtrl0 |= RASP_FILEIN_EN;
2019*53ee8cc1Swenshuai.xi u16RegCtrl0 &= (~RASP_FILEIN_EN); // always 0 on keres
2020*53ee8cc1Swenshuai.xi
2021*53ee8cc1Swenshuai.xi u16RegBlockLevel = (u16RegBlockLevel & ~RASP_TS_FF_FULL_SEL_MASK);
2022*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL4, u16RegBlockLevel);
2023*53ee8cc1Swenshuai.xi }
2024*53ee8cc1Swenshuai.xi
2025*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL0, u16RegCtrl0);
2026*53ee8cc1Swenshuai.xi
2027*53ee8cc1Swenshuai.xi
2028*53ee8cc1Swenshuai.xi
2029*53ee8cc1Swenshuai.xi return TRUE;
2030*53ee8cc1Swenshuai.xi }
2031*53ee8cc1Swenshuai.xi
HAL_RASP_Close(MS_U32 RaspEng)2032*53ee8cc1Swenshuai.xi MS_U32 HAL_RASP_Close(MS_U32 RaspEng)
2033*53ee8cc1Swenshuai.xi {
2034*53ee8cc1Swenshuai.xi HALRASP_DBG(RASP_DBGLV_INFO, "u32RASPEng = 0x%x\n", RaspEng);
2035*53ee8cc1Swenshuai.xi RASP_NUM_CHECK_RET(RaspEng);
2036*53ee8cc1Swenshuai.xi
2037*53ee8cc1Swenshuai.xi MS_U16 u16RegCtrl0;
2038*53ee8cc1Swenshuai.xi
2039*53ee8cc1Swenshuai.xi // read control 0....
2040*53ee8cc1Swenshuai.xi u16RegCtrl0 = HAL_RASP_ReadReg_Word(RaspEng, REG_RASP_HW_CTRL0);
2041*53ee8cc1Swenshuai.xi u16RegCtrl0 |= RASP_SW_RESET;
2042*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL0, u16RegCtrl0);
2043*53ee8cc1Swenshuai.xi
2044*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
2045*53ee8cc1Swenshuai.xi u16RegCtrl0 &= (~RASP_SW_RESET);
2046*53ee8cc1Swenshuai.xi
2047*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_HW_CTRL0, u16RegCtrl0);
2048*53ee8cc1Swenshuai.xi
2049*53ee8cc1Swenshuai.xi if(RaspEng == 1)
2050*53ee8cc1Swenshuai.xi {
2051*53ee8cc1Swenshuai.xi //K2 RASP1 MIU setting
2052*53ee8cc1Swenshuai.xi _HAL_REG16_W((REG16*)_REG_RASP1_MIU, RESET_FLAG1(_HAL_REG16_R((REG16*)_REG_RASP1_MIU), _RASP1_MIU_EN));
2053*53ee8cc1Swenshuai.xi }
2054*53ee8cc1Swenshuai.xi
2055*53ee8cc1Swenshuai.xi return TRUE;
2056*53ee8cc1Swenshuai.xi }
2057*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetDbgLevel(MS_U32 level)2058*53ee8cc1Swenshuai.xi void HAL_NDSRASP_SetDbgLevel(MS_U32 level)
2059*53ee8cc1Swenshuai.xi {
2060*53ee8cc1Swenshuai.xi _g32RASPHalDbgLv = level;
2061*53ee8cc1Swenshuai.xi }
2062*53ee8cc1Swenshuai.xi
2063*53ee8cc1Swenshuai.xi
HAL_NDSRASP_SetExtendConfig(MS_U32 RaspEng,MS_U16 type,MS_U16 extendbytes,MS_U16 syncbyte)2064*53ee8cc1Swenshuai.xi MS_U32 HAL_NDSRASP_SetExtendConfig(MS_U32 RaspEng, MS_U16 type, MS_U16 extendbytes, MS_U16 syncbyte)
2065*53ee8cc1Swenshuai.xi {
2066*53ee8cc1Swenshuai.xi MS_U16 Reg;
2067*53ee8cc1Swenshuai.xi
2068*53ee8cc1Swenshuai.xi Reg = 0x204;
2069*53ee8cc1Swenshuai.xi Reg = (Reg&(~0x1f0)) | ((extendbytes&0x1f)<<4);
2070*53ee8cc1Swenshuai.xi printf("RASP HW Config 0 is %x\n",Reg);
2071*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_DWord(RaspEng, 5, 0x2C4);
2072*53ee8cc1Swenshuai.xi
2073*53ee8cc1Swenshuai.xi
2074*53ee8cc1Swenshuai.xi //Reg = ((extendbytes + 188)<<0x8) | (syncbyte&0xff);
2075*53ee8cc1Swenshuai.xi printf("sync byte reg is %x\n",syncbyte);
2076*53ee8cc1Swenshuai.xi HAL_RFILEIN_WriteReg_DWord(RaspEng, 0xb, (syncbyte&0xff));
2077*53ee8cc1Swenshuai.xi
2078*53ee8cc1Swenshuai.xi #if 0
2079*53ee8cc1Swenshuai.xi Reg = ((extendbytes + 188) + (syncbyte<<0x8));
2080*53ee8cc1Swenshuai.xi HAL_RASP_WriteReg_Word(RaspEng, REG_RASP_CONFIG_TSIF2, Reg);
2081*53ee8cc1Swenshuai.xi #endif
2082*53ee8cc1Swenshuai.xi return TRUE;
2083*53ee8cc1Swenshuai.xi }
2084*53ee8cc1Swenshuai.xi
2085*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
2086*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetPayload_MidAddr);
2087*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_INT_Enable);
2088*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetECM_StartAddr);
2089*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetPayload_EndAddr);
2090*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_EVENT_TimeWM_Enable);
2091*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_GetPktTimer);
2092*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetPayloadMask);
2093*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetTimerWaterMark);
2094*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_GetPidflt);
2095*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetECM_MidAddr);
2096*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_Payload_Enable);
2097*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetEventMask);
2098*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetEventWaterMark);
2099*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetPayload_StartAddr);
2100*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetCorptFlt);
2101*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_EVENT_EventWM_Enable);
2102*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetCorptData);
2103*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SWReset);
2104*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_EVENT_GetEventNum);
2105*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_EVENT_GetEventDescriptor);
2106*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_ECM_Enable);
2107*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_INT_ClrHW);
2108*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_GetPktNum);
2109*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_GetEcmPktNum);
2110*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetECM_EndAddr);
2111*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_INT_GetHW);
2112*53ee8cc1Swenshuai.xi EXPORT_SYMBOL(HAL_NDSRASP_SetEcmPidflt);
2113*53ee8cc1Swenshuai.xi #endif
2114*53ee8cc1Swenshuai.xi
2115*53ee8cc1Swenshuai.xi
2116