xref: /utopia/UTPA2-700.0.x/mxlib/include/drvBDMA.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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 /*! \defgroup G_BDMA BDMA interface
95*53ee8cc1Swenshuai.xi     \ingroup  G_PERIPHERAL
96*53ee8cc1Swenshuai.xi 
97*53ee8cc1Swenshuai.xi     \brief
98*53ee8cc1Swenshuai.xi 
99*53ee8cc1Swenshuai.xi     BDMA is Byte-aligned data transfer DMA engine. It can execute data transmission between MIU to MIU,
100*53ee8cc1Swenshuai.xi     flash to MIU, SRAM to MIU?�etc.
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi     <b>Features</b>
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi     - Byte-aligned data transfer DMA engine
105*53ee8cc1Swenshuai.xi     - Address increase or decrease while DMA
106*53ee8cc1Swenshuai.xi     - Two command channels (optional). Note that when 2 command channels exist, they are processed as FIFO (First trigger, first service)
107*53ee8cc1Swenshuai.xi     - Several data width for device (1/2/4/8/16 bytes)
108*53ee8cc1Swenshuai.xi     - Bundled source device: MIU/Flash
109*53ee8cc1Swenshuai.xi     - Bundled destination device: MIU/VDMCU/DSP/TSP/HK51 1K SRAM
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi     <b> Address decreasing mode:</b> \n
112*53ee8cc1Swenshuai.xi     Avoid data overlapped on the same storage. Ex: Copy data A to B.
113*53ee8cc1Swenshuai.xi     \image html drvBDMA_pic.png
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi     <b> BDMA Block Diagram: </b> \n
116*53ee8cc1Swenshuai.xi     \image html drvBDMA_pic2.png
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi     <b> Operation Code Flow: </b> \n
119*53ee8cc1Swenshuai.xi     -# Prepare BDMA setting for each operation
120*53ee8cc1Swenshuai.xi     -# Set and start BDMA in command handle
121*53ee8cc1Swenshuai.xi     -# Get BDMA free channel
122*53ee8cc1Swenshuai.xi     -# Set setting
123*53ee8cc1Swenshuai.xi     -# Trigger BDMA
124*53ee8cc1Swenshuai.xi     -# BDMA done by polling
125*53ee8cc1Swenshuai.xi     \image html drvBDMA_pic3.png
126*53ee8cc1Swenshuai.xi 
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi     \defgroup G_BDMA_INIT Initialization Task relative
129*53ee8cc1Swenshuai.xi     \ingroup  G_BDMA
130*53ee8cc1Swenshuai.xi     \defgroup G_BDMA_COMMON Common Task relative
131*53ee8cc1Swenshuai.xi     \ingroup  G_BDMA
132*53ee8cc1Swenshuai.xi     \defgroup G_BDMA_PS Pattern search relative
133*53ee8cc1Swenshuai.xi     \ingroup  G_BDMA
134*53ee8cc1Swenshuai.xi     \defgroup G_BDMA_MOBF  MOBF relative
135*53ee8cc1Swenshuai.xi     \ingroup  G_BDMA
136*53ee8cc1Swenshuai.xi     \defgroup G_BDMA_ToBeModified BDMA api to be modified
137*53ee8cc1Swenshuai.xi     \ingroup  G_BDMA
138*53ee8cc1Swenshuai.xi     \defgroup G_BDMA_ToBeRemove BDMA api to be removed
139*53ee8cc1Swenshuai.xi     \ingroup  G_BDMA
140*53ee8cc1Swenshuai.xi */
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi #ifndef _DRVBDMA_H_
143*53ee8cc1Swenshuai.xi #define _DRVBDMA_H_
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
146*53ee8cc1Swenshuai.xi /// @file drvBDMA.h
147*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
148*53ee8cc1Swenshuai.xi /// @brief Byte DMA control driver
149*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
152*53ee8cc1Swenshuai.xi // Header Files
153*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
154*53ee8cc1Swenshuai.xi #ifdef __cplusplus
155*53ee8cc1Swenshuai.xi extern "C"
156*53ee8cc1Swenshuai.xi {
157*53ee8cc1Swenshuai.xi #endif
158*53ee8cc1Swenshuai.xi 
159*53ee8cc1Swenshuai.xi #include "MsTypes.h"
160*53ee8cc1Swenshuai.xi #include "MsDevice.h"
161*53ee8cc1Swenshuai.xi #include "UFO.h"
162*53ee8cc1Swenshuai.xi 
163*53ee8cc1Swenshuai.xi #define BDMA_UTOPIA20       (1)
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
166*53ee8cc1Swenshuai.xi // Define & data type
167*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
168*53ee8cc1Swenshuai.xi #define MSIF_BDMA_LIB_CODE	{'B','D','M','A'}    //Lib code
169*53ee8cc1Swenshuai.xi #define MSIF_BDMA_LIBVER		{'0','3'}            //LIB version
170*53ee8cc1Swenshuai.xi #define MSIF_BDMA_BUILDNUM      {'0','1'}            //Build Number
171*53ee8cc1Swenshuai.xi #define MSIF_BDMA_CHANGELIST   {'0','0','3','4','8','0','3','3'} //P4 ChangeList Number
172*53ee8cc1Swenshuai.xi 
173*53ee8cc1Swenshuai.xi #define BDMA_DRV_VERSION                /* Character String for DRV/API version             */  \
174*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
175*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
176*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
177*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
178*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
179*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
180*53ee8cc1Swenshuai.xi     MSIF_BDMA_LIB_CODE,                  /* IP__                                             */  \
181*53ee8cc1Swenshuai.xi     MSIF_BDMA_LIBVER,                    /* 0.0 ~ Z.Z                                        */  \
182*53ee8cc1Swenshuai.xi     MSIF_BDMA_BUILDNUM,                  /* 00 ~ 99                                          */  \
183*53ee8cc1Swenshuai.xi     MSIF_BDMA_CHANGELIST,                /* CL#                                              */  \
184*53ee8cc1Swenshuai.xi     MSIF_OS
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi //v: value n: shift n bits
187*53ee8cc1Swenshuai.xi #define _LShift(v, n)           ((v) << (n))
188*53ee8cc1Swenshuai.xi #define _RShift(v, n)           ((v) >> (n))
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi #define BDMA_SEARCH_ALL_MATCHED (0)
191*53ee8cc1Swenshuai.xi #define BDMA_CRC32_POLY         (0x04C11DB7)
192*53ee8cc1Swenshuai.xi #define BDMA_CRC16_POLY         (0x8005)
193*53ee8cc1Swenshuai.xi #define BDMA_CRC_SEED_0         (0)
194*53ee8cc1Swenshuai.xi #define BDMA_CRC_SEED_F         (0xFFFFFFFF)
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi /// Operation cfg
197*53ee8cc1Swenshuai.xi #define BDMA_OPCFG_DEF          		(0)
198*53ee8cc1Swenshuai.xi #define BDMA_OPCFG_INV_COPY     	(0x01)
199*53ee8cc1Swenshuai.xi #define BDMA_OPCFG_CRC_REFLECT  	(0x02)      //bit reflection of each input byte
200*53ee8cc1Swenshuai.xi #define BDMA_OPCFG_CRC_COPY     	(0x04)      //copy then crc check
201*53ee8cc1Swenshuai.xi #define BDMA_OPCFG_NOWAIT_COPY  	(0x08)      //copy then quit
202*53ee8cc1Swenshuai.xi #define BDMA_OPCFG_MOBF_PS  		(0x10)      //copy then quit
203*53ee8cc1Swenshuai.xi 
204*53ee8cc1Swenshuai.xi typedef enum _BDMA_DbgLv
205*53ee8cc1Swenshuai.xi {
206*53ee8cc1Swenshuai.xi     E_BDMA_DBGLV_NONE           //no debug message
207*53ee8cc1Swenshuai.xi     ,E_BDMA_DBGLV_PERFORMANCE   //show performance only
208*53ee8cc1Swenshuai.xi     ,E_BDMA_DBGLV_ERR_ONLY      //show error only
209*53ee8cc1Swenshuai.xi     ,E_BDMA_DBGLV_REG_DUMP      //show error & reg dump
210*53ee8cc1Swenshuai.xi     ,E_BDMA_DBGLV_INFO          //show error & informaiton
211*53ee8cc1Swenshuai.xi     ,E_BDMA_DBGLV_ALL           //show error, information & funciton name
212*53ee8cc1Swenshuai.xi }BDMA_DbgLv;
213*53ee8cc1Swenshuai.xi 
214*53ee8cc1Swenshuai.xi typedef enum _BDMA_Dev
215*53ee8cc1Swenshuai.xi {
216*53ee8cc1Swenshuai.xi     E_BDMA_DEV_MIU0
217*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_MIU1
218*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_SEARCH
219*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_CRC32
220*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_MEM_FILL
221*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_FLASH
222*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_DMDMCU
223*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_VDMCU
224*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_DSP
225*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_TSP
226*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_1KSRAM_HK51
227*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_MIU2
228*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_MIU3
229*53ee8cc1Swenshuai.xi     ,E_BDMA_DEV_NOT_SUPPORT
230*53ee8cc1Swenshuai.xi }BDMA_Dev;
231*53ee8cc1Swenshuai.xi 
232*53ee8cc1Swenshuai.xi typedef enum _BDMA_SrcDev
233*53ee8cc1Swenshuai.xi {
234*53ee8cc1Swenshuai.xi     E_BDMA_SRCDEV_MIU0          = E_BDMA_DEV_MIU0
235*53ee8cc1Swenshuai.xi     ,E_BDMA_SRCDEV_MIU1         = E_BDMA_DEV_MIU1
236*53ee8cc1Swenshuai.xi     ,E_BDMA_SRCDEV_MEM_FILL     = E_BDMA_DEV_MEM_FILL
237*53ee8cc1Swenshuai.xi     ,E_BDMA_SRCDEV_FLASH        = E_BDMA_DEV_FLASH
238*53ee8cc1Swenshuai.xi     ,E_BDMA_SRCDEV_MIU2         = E_BDMA_DEV_MIU2
239*53ee8cc1Swenshuai.xi     ,E_BDMA_SRCDEV_MIU3         = E_BDMA_DEV_MIU3
240*53ee8cc1Swenshuai.xi     ,E_BDMA_SRCDEV_NOT_SUPPORT  = E_BDMA_DEV_NOT_SUPPORT
241*53ee8cc1Swenshuai.xi }BDMA_SrcDev;
242*53ee8cc1Swenshuai.xi 
243*53ee8cc1Swenshuai.xi typedef enum _BDMA_DstDev
244*53ee8cc1Swenshuai.xi {
245*53ee8cc1Swenshuai.xi     E_BDMA_DSTDEV_MIU0          = E_BDMA_DEV_MIU0
246*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_MIU1         = E_BDMA_DEV_MIU1
247*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_SEARCH       = E_BDMA_DEV_SEARCH
248*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_CRC32        = E_BDMA_DEV_CRC32
249*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_DMDMCU       = E_BDMA_DEV_DMDMCU         //Demod
250*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_VDMCU        = E_BDMA_DEV_VDMCU          //VD
251*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_DSP          = E_BDMA_DEV_DSP
252*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_TSP          = E_BDMA_DEV_TSP
253*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_HK51_1KSRAM  = E_BDMA_DEV_1KSRAM_HK51
254*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_MIU2         = E_BDMA_DEV_MIU2
255*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_MIU3         = E_BDMA_DEV_MIU3
256*53ee8cc1Swenshuai.xi     ,E_BDMA_DSTDEV_NOT_SUPPORT  = E_BDMA_DEV_NOT_SUPPORT
257*53ee8cc1Swenshuai.xi }BDMA_DstDev;
258*53ee8cc1Swenshuai.xi 
259*53ee8cc1Swenshuai.xi #define BDMA_SET_CPYTYPE(src, dst) ((src & 0x0F) | _LShift((dst &0x0F), 8))
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi typedef enum _BDMA_CpyType
262*53ee8cc1Swenshuai.xi {
263*53ee8cc1Swenshuai.xi     E_BDMA_SDRAM2SDRAM          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_MIU0)
264*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2SDRAM1        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_MIU1)
265*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2SDRAM2        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_MIU2)
266*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2SDRAM3        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_MIU3)
267*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2DMDMCU        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_DMDMCU)
268*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2VDMCU         = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_VDMCU)
269*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2DSP           = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_DSP)
270*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2TSP           = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_TSP)
271*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM2SRAM1K_HK51   = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU0, E_BDMA_DEV_1KSRAM_HK51)
272*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12SDRAM        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_MIU0)
273*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12SDRAM1       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_MIU1)
274*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12SDRAM2       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_MIU2)
275*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12SDRAM3       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_MIU3)
276*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12DMDMCU       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_DMDMCU)
277*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12VDMCU        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_VDMCU)
278*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12DSP          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_DSP)
279*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12TSP          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_TSP)
280*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM12SRAM1K_HK51  = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU1, E_BDMA_DEV_1KSRAM_HK51)
281*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22SDRAM        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_MIU0)
282*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22SDRAM1       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_MIU1)
283*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22SDRAM2       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_MIU2)
284*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22SDRAM3       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_MIU3)
285*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22DMDMCU       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_DMDMCU)
286*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22VDMCU        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_VDMCU)
287*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22DSP          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_DSP)
288*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22TSP          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_TSP)
289*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM22SRAM1K_HK51  = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU2, E_BDMA_DEV_1KSRAM_HK51)
290*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32SDRAM        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_MIU0)
291*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32SDRAM1       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_MIU1)
292*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32SDRAM2       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_MIU2)
293*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32SDRAM3       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_MIU3)
294*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32DMDMCU       = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_DMDMCU)
295*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32VDMCU        = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_VDMCU)
296*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32DSP          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_DSP)
297*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32TSP          = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_TSP)
298*53ee8cc1Swenshuai.xi     ,E_BDMA_SDRAM32SRAM1K_HK51  = BDMA_SET_CPYTYPE(E_BDMA_DEV_MIU3, E_BDMA_DEV_1KSRAM_HK51)
299*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2SDRAM         = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_MIU0)
300*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2SDRAM1        = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_MIU1)
301*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2DMDMCU        = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_DMDMCU)
302*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2VDMCU         = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_VDMCU)
303*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2DSP           = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_DSP)
304*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2TSP           = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_TSP)
305*53ee8cc1Swenshuai.xi     ,E_BDMA_FLASH2SRAMHK51      = BDMA_SET_CPYTYPE(E_BDMA_DEV_FLASH, E_BDMA_DEV_1KSRAM_HK51)
306*53ee8cc1Swenshuai.xi     ,E_BDMA_CPYTYPE_MAX
307*53ee8cc1Swenshuai.xi }BDMA_CpyType;
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi typedef enum _BDMA_Result
310*53ee8cc1Swenshuai.xi {
311*53ee8cc1Swenshuai.xi     E_BDMA_NOT_SUPPORT = -1
312*53ee8cc1Swenshuai.xi     ,E_BDMA_FAIL = 0
313*53ee8cc1Swenshuai.xi     ,E_BDMA_OK = 1
314*53ee8cc1Swenshuai.xi     ,E_BDMA_TIMEOUT
315*53ee8cc1Swenshuai.xi     ,E_BDMA_QUEUE_FULL
316*53ee8cc1Swenshuai.xi     ,E_BDMA_BUSY
317*53ee8cc1Swenshuai.xi }BDMA_Result;
318*53ee8cc1Swenshuai.xi 
319*53ee8cc1Swenshuai.xi typedef struct _BDMA_HwInfo
320*53ee8cc1Swenshuai.xi {
321*53ee8cc1Swenshuai.xi     MS_BOOL bEnMIU1;        //MIU1
322*53ee8cc1Swenshuai.xi     MS_BOOL bEnHost;        //bdma host
323*53ee8cc1Swenshuai.xi     MS_BOOL bEnMemFill;     //memory fill
324*53ee8cc1Swenshuai.xi     MS_BOOL bEnFlsCpy;      //flash copy
325*53ee8cc1Swenshuai.xi     MS_BOOL bEnDevDw;       //bdma device data width
326*53ee8cc1Swenshuai.xi     MS_BOOL bEnDmyWrCnt;    //bdma dummy wr count
327*53ee8cc1Swenshuai.xi     MS_BOOL bEnDMDMCU;      //bdma to DeMod MCU
328*53ee8cc1Swenshuai.xi     MS_BOOL bEnTSP;         //bdma to TSP
329*53ee8cc1Swenshuai.xi     MS_BOOL bEnDSP;         //bdma to DSP
330*53ee8cc1Swenshuai.xi     MS_BOOL bEnHK51_1KSRAM; //bdma to HK51_1KSRAM
331*53ee8cc1Swenshuai.xi }BDMA_HwInfo;
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi typedef struct _BDMA_Info
334*53ee8cc1Swenshuai.xi {
335*53ee8cc1Swenshuai.xi     MS_U8       u8ChNum;
336*53ee8cc1Swenshuai.xi     MS_U16      u16ChipVer;
337*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
338*53ee8cc1Swenshuai.xi     MS_U32      u32IOMap;
339*53ee8cc1Swenshuai.xi     MS_U32      u32MIU1Base;
340*53ee8cc1Swenshuai.xi #else
341*53ee8cc1Swenshuai.xi     MS_VIRT     u32IOMap;
342*53ee8cc1Swenshuai.xi     MS_PHY      phy64MIU1Base;
343*53ee8cc1Swenshuai.xi #endif
344*53ee8cc1Swenshuai.xi     MS_S32      s32Mutex;
345*53ee8cc1Swenshuai.xi     MS_BOOL     bInit;
346*53ee8cc1Swenshuai.xi     BDMA_DbgLv  eDbgLv;
347*53ee8cc1Swenshuai.xi     BDMA_HwInfo sHwCap;
348*53ee8cc1Swenshuai.xi }BDMA_Info;
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi typedef struct _BDMA_ChStatus
351*53ee8cc1Swenshuai.xi {
352*53ee8cc1Swenshuai.xi     MS_BOOL bIsBusy;
353*53ee8cc1Swenshuai.xi     MS_BOOL bIsInt;
354*53ee8cc1Swenshuai.xi     MS_BOOL bIsFound;
355*53ee8cc1Swenshuai.xi }BDMA_ChStatus;
356*53ee8cc1Swenshuai.xi 
357*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _BDMA_Status
358*53ee8cc1Swenshuai.xi {
359*53ee8cc1Swenshuai.xi     MS_BOOL         bInit;
360*53ee8cc1Swenshuai.xi     BDMA_DbgLv      eDbgLv;
361*53ee8cc1Swenshuai.xi     BDMA_ChStatus   sChSta[2];
362*53ee8cc1Swenshuai.xi }BDMA_Status;
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi #ifdef MOBF_ENABLE
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _BDMA_MOBF_PS
367*53ee8cc1Swenshuai.xi {
368*53ee8cc1Swenshuai.xi     MS_U32 u32Pattern;
369*53ee8cc1Swenshuai.xi     MS_U32 u32ExcluBit;
370*53ee8cc1Swenshuai.xi     MS_U32 u32MobfKey;
371*53ee8cc1Swenshuai.xi }BDMA_MOBF_PS;
372*53ee8cc1Swenshuai.xi 
373*53ee8cc1Swenshuai.xi #endif
374*53ee8cc1Swenshuai.xi 
375*53ee8cc1Swenshuai.xi typedef void (*BDMA_ISR_CBF)(BDMA_Result eRet);
376*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
377*53ee8cc1Swenshuai.xi // Extern Function
378*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
381*53ee8cc1Swenshuai.xi // include utopia v2  header files here
382*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
383*53ee8cc1Swenshuai.xi #include "drvBDMA_v2.h"
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi // status check & dbg level
387*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
388*53ee8cc1Swenshuai.xi /// MOBF Encrypt
389*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
390*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
391*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
392*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
393*53ee8cc1Swenshuai.xi /// @return Others : Fail
394*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
395*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_GetLibVer(const MSIF_Version **ppVersion);
396*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
397*53ee8cc1Swenshuai.xi /// MOBF Encrypt
398*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
399*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
400*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
401*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
402*53ee8cc1Swenshuai.xi /// @return Others : Fail
403*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
404*53ee8cc1Swenshuai.xi void MDrv_BDMA_GetStatus(BDMA_Status *pStatus);
405*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
406*53ee8cc1Swenshuai.xi /// MOBF Encrypt
407*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
408*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
409*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
410*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
411*53ee8cc1Swenshuai.xi /// @return Others : Fail
412*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
413*53ee8cc1Swenshuai.xi const BDMA_Info* MDrv_BDMA_GetInfo(void);
414*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
415*53ee8cc1Swenshuai.xi /// MOBF Encrypt
416*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
417*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
418*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
419*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
420*53ee8cc1Swenshuai.xi /// @return Others : Fail
421*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
422*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_GetMinSize(void);
423*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
424*53ee8cc1Swenshuai.xi /// MOBF Encrypt
425*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
426*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
427*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
428*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
429*53ee8cc1Swenshuai.xi /// @return Others : Fail
430*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
431*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_SetDbgLevel(BDMA_DbgLv eLevel);
432*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
433*53ee8cc1Swenshuai.xi /// MOBF Encrypt
434*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_INIT
435*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
436*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
437*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
438*53ee8cc1Swenshuai.xi /// @return Others : Fail
439*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
440*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
441*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_Init(MS_U32 u32Miu1Base);
442*53ee8cc1Swenshuai.xi #else
443*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_Init(MS_PHY phy64Miu1Base);
444*53ee8cc1Swenshuai.xi #endif
445*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
446*53ee8cc1Swenshuai.xi /// MOBF Encrypt
447*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_INIT
448*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
449*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
450*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
451*53ee8cc1Swenshuai.xi /// @return Others : Fail
452*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
453*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
454*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_Search(MS_PHYADDR u32Addr, MS_U32 u32Len, MS_U32 u32Pattern, MS_U32 u32ExcluBit, BDMA_SrcDev eDev);
455*53ee8cc1Swenshuai.xi #else
456*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_Search(MS_PHY phy64Addr, MS_U32 u32Len, MS_U32 u32Pattern, MS_U32 u32ExcluBit, BDMA_SrcDev eDev);
457*53ee8cc1Swenshuai.xi #endif
458*53ee8cc1Swenshuai.xi #ifdef MOBF_ENABLE
459*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
460*53ee8cc1Swenshuai.xi /// MOBF Encrypt
461*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_PS
462*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
463*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
464*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
465*53ee8cc1Swenshuai.xi /// @return Others : Fail
466*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
467*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
468*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_MOBFSearch(MS_PHYADDR u32Addr, MS_U32 u32Len, BDMA_MOBF_PS *pMobfPsCfg, BDMA_SrcDev eDev);
469*53ee8cc1Swenshuai.xi #else
470*53ee8cc1Swenshuai.xi MS_PHY MDrv_BDMA_MOBFSearch(MS_PHY phy64Addr, MS_U32 u32Len, BDMA_MOBF_PS *pMobfPsCfg, BDMA_SrcDev eDev);
471*53ee8cc1Swenshuai.xi #endif
472*53ee8cc1Swenshuai.xi #endif
473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
474*53ee8cc1Swenshuai.xi /// MOBF Encrypt
475*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_MOBF
476*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
477*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
478*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
479*53ee8cc1Swenshuai.xi /// @return Others : Fail
480*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
481*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
482*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_CRC32(MS_PHYADDR u32Addr, MS_U32 u32Len, MS_U32 u32Poly, MS_U32 u32Seed, BDMA_SrcDev eDev, MS_BOOL bReflect);
483*53ee8cc1Swenshuai.xi #else
484*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_CRC32(MS_PHY phy64Addr, MS_U32 u32Len, MS_U32 u32Poly, MS_U32 u32Seed, BDMA_SrcDev eDev, MS_BOOL bReflect);
485*53ee8cc1Swenshuai.xi #endif
486*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
487*53ee8cc1Swenshuai.xi /// MOBF Encrypt
488*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
489*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
490*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
491*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
492*53ee8cc1Swenshuai.xi /// @return Others : Fail
493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
494*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
495*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_PatternFill(MS_PHYADDR u32Addr, MS_U32 u32Len, MS_U32 u32Pattern, BDMA_DstDev eDev);
496*53ee8cc1Swenshuai.xi #else
497*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_PatternFill(MS_PHY u32Addr, MS_U32 u32Len, MS_U32 u32Pattern, BDMA_DstDev eDev);
498*53ee8cc1Swenshuai.xi #endif
499*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
500*53ee8cc1Swenshuai.xi /// MOBF Encrypt
501*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_PS
502*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
503*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
504*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
505*53ee8cc1Swenshuai.xi /// @return Others : Fail
506*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
507*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
508*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_MemCopy(MS_PHYADDR u32SrcAddr, MS_PHYADDR u32DstAddr, MS_U32 u32Len);
509*53ee8cc1Swenshuai.xi #else
510*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_MemCopy(MS_PHY phy64SrcAddr, MS_PHY phy64DstAddr, MS_U32 u32Len);
511*53ee8cc1Swenshuai.xi #endif
512*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
513*53ee8cc1Swenshuai.xi /// MOBF Encrypt
514*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
515*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
516*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
517*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
518*53ee8cc1Swenshuai.xi /// @return Others : Fail
519*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
520*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
521*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_FlashCopy2Dram(MS_PHYADDR u32FlashAddr, MS_PHYADDR u32DramAddr, MS_U32 u32Len);
522*53ee8cc1Swenshuai.xi #else
523*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_FlashCopy2Dram(MS_PHY phy64FlashAddr, MS_PHY phy64DramAddr, MS_U32 u32Len);
524*53ee8cc1Swenshuai.xi #endif
525*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
526*53ee8cc1Swenshuai.xi /// MOBF Encrypt
527*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
528*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
529*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
530*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
531*53ee8cc1Swenshuai.xi /// @return Others : Fail
532*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
533*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
534*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_CopyHnd(MS_PHYADDR u32SrcAddr, MS_PHYADDR u32DstAddr, MS_U32 u32Len, BDMA_CpyType eCpyType, MS_U8 u8OpCfg);
535*53ee8cc1Swenshuai.xi #else
536*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_CopyHnd(MS_PHY phy64SrcAddr, MS_PHY phy64DstAddr, MS_U32 u32Len, BDMA_CpyType eCpyType, MS_U8 u8OpCfg);
537*53ee8cc1Swenshuai.xi #endif
538*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
539*53ee8cc1Swenshuai.xi /// MOBF Encrypt
540*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
541*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
542*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
543*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
544*53ee8cc1Swenshuai.xi /// @return Others : Fail
545*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
546*53ee8cc1Swenshuai.xi MS_U32 MDrv_BDMA_SetPowerState(EN_POWER_MODE u16PowerState);
547*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
548*53ee8cc1Swenshuai.xi /// MOBF Encrypt
549*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
550*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
551*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
552*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
553*53ee8cc1Swenshuai.xi /// @return Others : Fail
554*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
555*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_WaitFlashDone(void);
556*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
557*53ee8cc1Swenshuai.xi /// MOBF Encrypt
558*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_ToBeModified
559*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
560*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
561*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
562*53ee8cc1Swenshuai.xi /// @return Others : Fail
563*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
564*53ee8cc1Swenshuai.xi void MDrv_BDMA_SetSPIOffsetForMCU(void);
565*53ee8cc1Swenshuai.xi 
566*53ee8cc1Swenshuai.xi // status
567*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
568*53ee8cc1Swenshuai.xi /// MOBF Encrypt
569*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_COMMON
570*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
571*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
572*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
573*53ee8cc1Swenshuai.xi /// @return Others : Fail
574*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
575*53ee8cc1Swenshuai.xi void MDrv_BDMA_DumpCB(void *pvOpCB);
576*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
577*53ee8cc1Swenshuai.xi /// MOBF Encrypt
578*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_ToBeModified
579*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
580*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
581*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
582*53ee8cc1Swenshuai.xi /// @return Others : Fail
583*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
584*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_Stop_All(void);
585*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
586*53ee8cc1Swenshuai.xi /// MOBF Encrypt
587*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_ToBeModified
588*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
589*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
590*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
591*53ee8cc1Swenshuai.xi /// @return Others : Fail
592*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
593*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_Stop(MS_U8 u8Ch);
594*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
595*53ee8cc1Swenshuai.xi /// MOBF Encrypt
596*53ee8cc1Swenshuai.xi /// @ingroup G_BDMA_INIT
597*53ee8cc1Swenshuai.xi /// @param u32Key \b IN: Key
598*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE/FLASE
599*53ee8cc1Swenshuai.xi /// @return DRVAESDMA_OK : Success
600*53ee8cc1Swenshuai.xi /// @return Others : Fail
601*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
602*53ee8cc1Swenshuai.xi BDMA_Result MDrv_BDMA_Exit(void);
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi #ifdef __cplusplus
606*53ee8cc1Swenshuai.xi }
607*53ee8cc1Swenshuai.xi #endif
608*53ee8cc1Swenshuai.xi #endif
609