xref: /utopia/UTPA2-700.0.x/modules/ojpd_vdec_v2/hal/maxim/jpd_ex/halJPD.c (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 
95*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi /// file    halJPD.c
98*53ee8cc1Swenshuai.xi /// @brief  JPD hal interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
104*53ee8cc1Swenshuai.xi //  Include Files
105*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi // Common Definition
107*53ee8cc1Swenshuai.xi #include "MsCommon.h"
108*53ee8cc1Swenshuai.xi #include "MsOS.h"
109*53ee8cc1Swenshuai.xi #include "halCHIP.h"
110*53ee8cc1Swenshuai.xi // Internal Definition
111*53ee8cc1Swenshuai.xi //#include "regCHIP.h"
112*53ee8cc1Swenshuai.xi #include "drvMMIO.h" //get RIU base
113*53ee8cc1Swenshuai.xi #include "osalJPD.h"
114*53ee8cc1Swenshuai.xi #include "drvJPD.h"
115*53ee8cc1Swenshuai.xi #include "regJPD.h"
116*53ee8cc1Swenshuai.xi #include "halJPD.h"
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi // MJPEG
120*53ee8cc1Swenshuai.xi #define USE_FW_HVD      1
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi #if USE_FW_HVD
123*53ee8cc1Swenshuai.xi #include "../hvd_ex/fwHVD_if.h"
124*53ee8cc1Swenshuai.xi #define JPD_FW_VERSION  "JPD.FW.00130062"
125*53ee8cc1Swenshuai.xi #else
126*53ee8cc1Swenshuai.xi #include "fwJPD.h"
127*53ee8cc1Swenshuai.xi #endif
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi // For MVD Power On
130*53ee8cc1Swenshuai.xi void HAL_MVD_RegSetBase(MS_U32 u32Base);
131*53ee8cc1Swenshuai.xi void HAL_MVD_PowerCtrl(MS_BOOL bOn);
132*53ee8cc1Swenshuai.xi void HAL_MVD_SetSyncClk(MS_BOOL bEnable);
133*53ee8cc1Swenshuai.xi MS_BOOL HAL_MVD_RstHW(void);
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
136*53ee8cc1Swenshuai.xi //  Driver Compiler Options
137*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
138*53ee8cc1Swenshuai.xi #define HAL_JPD_ENABLE      1
139*53ee8cc1Swenshuai.xi #define HAL_JPD_DISABLE     0
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi #define HAL_JPD_MUTEX_SUPPORT   HAL_JPD_ENABLE
142*53ee8cc1Swenshuai.xi #define HAL_JPD_MIU_PROTECT     HAL_JPD_ENABLE
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
146*53ee8cc1Swenshuai.xi //  Local Defines
147*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
148*53ee8cc1Swenshuai.xi #define JPD_EVENT_ALL       0x7F
149*53ee8cc1Swenshuai.xi 
150*53ee8cc1Swenshuai.xi #define __HAL_JPD_DelayMs(x)      do { MS_U32 ticks=0; while((ticks++)>(x*10)); } while(0)
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi #define JPD_RIU_MAP u32JPDRiuBaseAdd  //obtain in init
153*53ee8cc1Swenshuai.xi 
154*53ee8cc1Swenshuai.xi #define JPD_DEBUG_HAL_MSG(format, args...)  do{if(_u8JPDHalDbgLevel & E_JPD_DEBUG_HAL_MSG) printf(format, ##args);}while(0)
155*53ee8cc1Swenshuai.xi #define JPD_DEBUG_HAL_ERR(format, args...)  do{if(_u8JPDHalDbgLevel & E_JPD_DEBUG_HAL_ERR) printf(format, ##args);}while(0)
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi #ifndef READ_BYTE
158*53ee8cc1Swenshuai.xi #define READ_BYTE(_reg)             (*(volatile MS_U8*)(_reg))
159*53ee8cc1Swenshuai.xi #define READ_WORD(_reg)             (*(volatile MS_U16*)(_reg))
160*53ee8cc1Swenshuai.xi #define READ_LONG(_reg)             (*(volatile MS_U32*)(_reg))
161*53ee8cc1Swenshuai.xi #define WRITE_BYTE(_reg, _val)      { (*((volatile MS_U8*)(_reg))) = (MS_U8)(_val); }
162*53ee8cc1Swenshuai.xi #define WRITE_WORD(_reg, _val)      { (*((volatile MS_U16*)(_reg))) = (MS_U16)(_val); }
163*53ee8cc1Swenshuai.xi #define WRITE_LONG(_reg, _val)      { (*((volatile MS_U32*)(_reg))) = (MS_U32)(_val); }
164*53ee8cc1Swenshuai.xi #endif
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi #define JPD_READ_BYTE(addr)         READ_BYTE( (JPD_RIU_MAP + (addr)) )
167*53ee8cc1Swenshuai.xi #define JPD_READ_WORD(addr)         READ_WORD( (JPD_RIU_MAP + (addr)) )
168*53ee8cc1Swenshuai.xi #define JPD_WRITE_BYTE(addr, val)   WRITE_BYTE( (JPD_RIU_MAP + (addr)), (val) )
169*53ee8cc1Swenshuai.xi #define JPD_WRITE_WORD(addr, val)   WRITE_WORD( (JPD_RIU_MAP + (addr)), (val) )
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi #define JPD_MACRO_START     do {
172*53ee8cc1Swenshuai.xi #define JPD_MACRO_END       } while (0)
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi #define __HAL_JPD_ReadByte( u32Reg )   JPD_READ_BYTE(((u32Reg) << 1) - ((u32Reg) & 1))
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi #define __HAL_JPD_Read2Byte( u32Reg )    (JPD_READ_WORD((u32Reg)<<1))
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi #define __HAL_JPD_Read4Byte( u32Reg )   ( (MS_U32)JPD_READ_WORD((u32Reg)<<1) | ((MS_U32)JPD_READ_WORD(((u32Reg)+2)<<1)<<16 ) )
179*53ee8cc1Swenshuai.xi 
180*53ee8cc1Swenshuai.xi #define __HAL_JPD_ReadBit( u32Reg, u8Mask )   (JPD_READ_BYTE(((u32Reg)<<1) - ((u32Reg) & 1)) & (u8Mask))
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi #define __HAL_JPD_WriteBit( u32Reg, bEnable, u8Mask ) \
183*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
184*53ee8cc1Swenshuai.xi     JPD_WRITE_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) , (bEnable) ? (JPD_READ_BYTE(  (((u32Reg) <<1) - ((u32Reg) & 1))  ) |  (u8Mask)) : \
185*53ee8cc1Swenshuai.xi                                 (JPD_READ_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) ) & ~(u8Mask))); \
186*53ee8cc1Swenshuai.xi     JPD_MACRO_END
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi #define __HAL_JPD_WriteByte( u32Reg, u8Val ) \
189*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
190*53ee8cc1Swenshuai.xi     JPD_WRITE_BYTE(((u32Reg) << 1) - ((u32Reg) & 1), (u8Val)); \
191*53ee8cc1Swenshuai.xi     JPD_MACRO_END
192*53ee8cc1Swenshuai.xi 
193*53ee8cc1Swenshuai.xi #define __HAL_JPD_Write2Byte( u32Reg, u16Val ) \
194*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
195*53ee8cc1Swenshuai.xi     if ( ((u32Reg) & 0x01) ) \
196*53ee8cc1Swenshuai.xi     { \
197*53ee8cc1Swenshuai.xi         JPD_WRITE_BYTE(((u32Reg) << 1) - 1, (MS_U8)((u16Val))); \
198*53ee8cc1Swenshuai.xi         JPD_WRITE_BYTE(((u32Reg) + 1) << 1, (MS_U8)((u16Val) >> 8)); \
199*53ee8cc1Swenshuai.xi     } \
200*53ee8cc1Swenshuai.xi     else \
201*53ee8cc1Swenshuai.xi     { \
202*53ee8cc1Swenshuai.xi         JPD_WRITE_WORD( ((u32Reg)<<1) ,  u16Val); \
203*53ee8cc1Swenshuai.xi     } \
204*53ee8cc1Swenshuai.xi     JPD_MACRO_END
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi #define __HAL_JPD_Write4Byte( u32Reg, u32Val ) \
207*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
208*53ee8cc1Swenshuai.xi     if ((u32Reg) & 0x01) \
209*53ee8cc1Swenshuai.xi     { \
210*53ee8cc1Swenshuai.xi         JPD_WRITE_BYTE( ((u32Reg) << 1) - 1 ,  (u32Val)); \
211*53ee8cc1Swenshuai.xi         JPD_WRITE_WORD( ((u32Reg) + 1)<<1 , ( (u32Val) >> 8)); \
212*53ee8cc1Swenshuai.xi         JPD_WRITE_BYTE( (((u32Reg) + 3) << 1) ,  ((u32Val) >> 24)); \
213*53ee8cc1Swenshuai.xi     } \
214*53ee8cc1Swenshuai.xi     else \
215*53ee8cc1Swenshuai.xi     { \
216*53ee8cc1Swenshuai.xi         JPD_WRITE_WORD( (u32Reg)<<1 , (u32Val)); \
217*53ee8cc1Swenshuai.xi         JPD_WRITE_WORD(  ((u32Reg) + 2)<<1 ,  ((u32Val) >> 16)); \
218*53ee8cc1Swenshuai.xi     } \
219*53ee8cc1Swenshuai.xi     JPD_MACRO_END
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi //JPD mutex
222*53ee8cc1Swenshuai.xi #if (HAL_JPD_MUTEX_SUPPORT == HAL_JPD_ENABLE)
223*53ee8cc1Swenshuai.xi static MS_S32 _s32JPDMutexID = -1;
224*53ee8cc1Swenshuai.xi MS_U8 strJPD[10] = "JPD_Mutex";
225*53ee8cc1Swenshuai.xi 
226*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexCreate() \
227*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
228*53ee8cc1Swenshuai.xi     if( _s32JPDMutexID < 0 ) \
229*53ee8cc1Swenshuai.xi     { \
230*53ee8cc1Swenshuai.xi         _s32JPDMutexID = OSAL_JPD_MutexCreate( strJPD ); \
231*53ee8cc1Swenshuai.xi     } \
232*53ee8cc1Swenshuai.xi     JPD_MACRO_END
233*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexDelete() \
234*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
235*53ee8cc1Swenshuai.xi     if( _s32JPDMutexID >= 0 ) \
236*53ee8cc1Swenshuai.xi     { \
237*53ee8cc1Swenshuai.xi         OSAL_JPD_MutexDelete(_s32JPDMutexID); \
238*53ee8cc1Swenshuai.xi         _s32JPDMutexID = -1; \
239*53ee8cc1Swenshuai.xi     } \
240*53ee8cc1Swenshuai.xi     JPD_MACRO_END
241*53ee8cc1Swenshuai.xi #define  __HAL_JPD_MutexEntry() \
242*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
243*53ee8cc1Swenshuai.xi     if( _s32JPDMutexID >= 0 ) \
244*53ee8cc1Swenshuai.xi     { \
245*53ee8cc1Swenshuai.xi         if (!OSAL_JPD_MutexObtain(_s32JPDMutexID, OSAL_JPD_MUTEX_TIMEOUT)) \
246*53ee8cc1Swenshuai.xi         { \
247*53ee8cc1Swenshuai.xi             JPD_DEBUG_HAL_MSG("[HAL JPD][%s][%06d] Mutex taking timeout\n", __FUNCTION__, __LINE__); \
248*53ee8cc1Swenshuai.xi         } \
249*53ee8cc1Swenshuai.xi     } \
250*53ee8cc1Swenshuai.xi     JPD_MACRO_END
251*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexExit() \
252*53ee8cc1Swenshuai.xi     JPD_MACRO_START \
253*53ee8cc1Swenshuai.xi     if( _s32JPDMutexID >= 0 ) \
254*53ee8cc1Swenshuai.xi     { \
255*53ee8cc1Swenshuai.xi         OSAL_JPD_MutexRelease(_s32JPDMutexID); \
256*53ee8cc1Swenshuai.xi     } \
257*53ee8cc1Swenshuai.xi     JPD_MACRO_END
258*53ee8cc1Swenshuai.xi #else //HAL_JPD_MUTEX_SUPPORT
259*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexCreate()
260*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexDelete()
261*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexEntry()
262*53ee8cc1Swenshuai.xi #define __HAL_JPD_MutexExit()
263*53ee8cc1Swenshuai.xi #endif //HAL_JPD_MUTEX_SUPPORT
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi #define MAX_MJPEG_DEC_NUM 2
266*53ee8cc1Swenshuai.xi 
267*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
268*53ee8cc1Swenshuai.xi //  Local Structurs
269*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
270*53ee8cc1Swenshuai.xi 
271*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
272*53ee8cc1Swenshuai.xi //  Global Variables
273*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
274*53ee8cc1Swenshuai.xi MS_U32 u32JPDRiuBaseAdd = 0x0;
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
277*53ee8cc1Swenshuai.xi //  Local Variables
278*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
279*53ee8cc1Swenshuai.xi static MS_U8 _pu8HalVer[] = JPD_HAL_VERSION;
280*53ee8cc1Swenshuai.xi static MS_U8 _pu8FwVer[] = JPD_FW_VERSION;
281*53ee8cc1Swenshuai.xi static MS_U8 _u8JPDHalDbgLevel = E_JPD_DEBUG_HAL_NONE;
282*53ee8cc1Swenshuai.xi 
283*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
284*53ee8cc1Swenshuai.xi //  Debug Functions
285*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
286*53ee8cc1Swenshuai.xi 
287*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
288*53ee8cc1Swenshuai.xi //  Local Functions
289*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
_HAL_JPD_SetMIUProtectMask(MS_BOOL bEnable)290*53ee8cc1Swenshuai.xi static void _HAL_JPD_SetMIUProtectMask(MS_BOOL bEnable)
291*53ee8cc1Swenshuai.xi {
292*53ee8cc1Swenshuai.xi #if (HAL_JPD_MIU_PROTECT == HAL_JPD_ENABLE)
293*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(JPD_MIU0_RQ2_MASK+1, bEnable, JPD_MIU0_CLIENT_JPD);
294*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(JPD_MIU1_RQ2_MASK+1, bEnable, JPD_MIU1_CLIENT_JPD);
295*53ee8cc1Swenshuai.xi 
296*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("_HAL_JPD_SetMIUProtectMask MIU0 : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_MIU0_RQ2_MASK));
297*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("_HAL_JPD_SetMIUProtectMask MIU1 : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_MIU1_RQ2_MASK));
298*53ee8cc1Swenshuai.xi #endif
299*53ee8cc1Swenshuai.xi     return;
300*53ee8cc1Swenshuai.xi }
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi #if 0
303*53ee8cc1Swenshuai.xi MS_U8 _JPD_ReadByte(MS_U16 u16Reg)
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi     if ((u16Reg % 2) == 0) // low byte
306*53ee8cc1Swenshuai.xi     {
307*53ee8cc1Swenshuai.xi         return _LOWBYTE(_RIU_REG16(JPD_RIU_MAP+((u16Reg)*2)));
308*53ee8cc1Swenshuai.xi     }
309*53ee8cc1Swenshuai.xi     else // high byte
310*53ee8cc1Swenshuai.xi     {
311*53ee8cc1Swenshuai.xi         u16Reg -= 1;
312*53ee8cc1Swenshuai.xi         return _HIGHBYTE(_RIU_REG16(JPD_RIU_MAP+((u16Reg)*2)));
313*53ee8cc1Swenshuai.xi     }
314*53ee8cc1Swenshuai.xi }
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi void _JPD_WriteByte(MS_U16 u16Reg, MS_U8 u8Value)
317*53ee8cc1Swenshuai.xi {
318*53ee8cc1Swenshuai.xi     if ((u16Reg % 2) == 0) // low byte
319*53ee8cc1Swenshuai.xi     {
320*53ee8cc1Swenshuai.xi         _RIU_REG16(JPD_RIU_MAP+((u16Reg)*2))
321*53ee8cc1Swenshuai.xi             =  u8Value | (_RIU_REG16(JPD_RIU_MAP+((u16Reg)*2))&0xFF00);
322*53ee8cc1Swenshuai.xi     }
323*53ee8cc1Swenshuai.xi     else // high byte
324*53ee8cc1Swenshuai.xi     {
325*53ee8cc1Swenshuai.xi         u16Reg -= 1 ;
326*53ee8cc1Swenshuai.xi         _RIU_REG16(JPD_RIU_MAP+((u16Reg)*2))
327*53ee8cc1Swenshuai.xi             =  (u8Value<<8) | (_RIU_REG16(JPD_RIU_MAP+((u16Reg)*2))&0x00FF);
328*53ee8cc1Swenshuai.xi     }
329*53ee8cc1Swenshuai.xi }
330*53ee8cc1Swenshuai.xi 
331*53ee8cc1Swenshuai.xi MS_U16 _JPD_Read2Byte(MS_U16 u16Reg)
332*53ee8cc1Swenshuai.xi {
333*53ee8cc1Swenshuai.xi     MS_U16 u16RegData;
334*53ee8cc1Swenshuai.xi 
335*53ee8cc1Swenshuai.xi     if ((u16Reg % 2) == 0) // low byte
336*53ee8cc1Swenshuai.xi     {
337*53ee8cc1Swenshuai.xi        u16RegData = _RIU_REG16(JPD_RIU_MAP+((u16Reg)*2));
338*53ee8cc1Swenshuai.xi     }
339*53ee8cc1Swenshuai.xi     else // high byte
340*53ee8cc1Swenshuai.xi     {
341*53ee8cc1Swenshuai.xi        //0x2F05
342*53ee8cc1Swenshuai.xi         u16Reg = u16Reg - 1;
343*53ee8cc1Swenshuai.xi         u16RegData = _HIGHBYTE(_RIU_REG16(JPD_RIU_MAP+((u16Reg)*2)));
344*53ee8cc1Swenshuai.xi         u16Reg = u16Reg + 2;
345*53ee8cc1Swenshuai.xi         u16RegData |= _LOWBYTE(_RIU_REG16(JPD_RIU_MAP+((u16Reg)*2)));
346*53ee8cc1Swenshuai.xi     }
347*53ee8cc1Swenshuai.xi 
348*53ee8cc1Swenshuai.xi     return (u16RegData);
349*53ee8cc1Swenshuai.xi }
350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi void _JPD_Write2Byte(MS_U16 u16Reg, MS_U16 u16Value)
352*53ee8cc1Swenshuai.xi {
353*53ee8cc1Swenshuai.xi     if ((u16Reg % 2) == 0) // low byte
354*53ee8cc1Swenshuai.xi     {
355*53ee8cc1Swenshuai.xi         _RIU_REG16(JPD_RIU_MAP + ((u16Reg)*2)) = u16Value;
356*53ee8cc1Swenshuai.xi     }
357*53ee8cc1Swenshuai.xi     else // high byte
358*53ee8cc1Swenshuai.xi     {
359*53ee8cc1Swenshuai.xi         _JPD_WriteByte(u16Reg, (MS_U8)(u16Value&0x00FF));
360*53ee8cc1Swenshuai.xi         _JPD_WriteByte(u16Reg+1, (MS_U8)(u16Value>>8));
361*53ee8cc1Swenshuai.xi     }
362*53ee8cc1Swenshuai.xi }
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi MS_U32 _JPD_Read4Byte(MS_U16 u16Reg)
365*53ee8cc1Swenshuai.xi {
366*53ee8cc1Swenshuai.xi     MS_U32 u32RegData = 0;
367*53ee8cc1Swenshuai.xi 
368*53ee8cc1Swenshuai.xi     if ((u16Reg % 2) == 0) // low byte
369*53ee8cc1Swenshuai.xi     {
370*53ee8cc1Swenshuai.xi         u32RegData |= _JPD_Read2Byte(u16Reg);
371*53ee8cc1Swenshuai.xi         u32RegData |= (_JPD_Read2Byte(u16Reg+2) << 16);
372*53ee8cc1Swenshuai.xi     }
373*53ee8cc1Swenshuai.xi     else // high byte
374*53ee8cc1Swenshuai.xi     {
375*53ee8cc1Swenshuai.xi         u32RegData |= _JPD_ReadByte(u16Reg);
376*53ee8cc1Swenshuai.xi         u32RegData |= (_JPD_Read2Byte(u16Reg+1) << 8);
377*53ee8cc1Swenshuai.xi         u32RegData |= (_JPD_ReadByte(u16Reg+3) << 24);
378*53ee8cc1Swenshuai.xi     }
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi     return (u32RegData);
381*53ee8cc1Swenshuai.xi }
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi void _JPD_Write4Byte(MS_U16 u16Reg, MS_U32 u32Value)
384*53ee8cc1Swenshuai.xi {
385*53ee8cc1Swenshuai.xi     if ((u16Reg % 2) == 0) // low byte
386*53ee8cc1Swenshuai.xi     {
387*53ee8cc1Swenshuai.xi         _JPD_Write2Byte(u16Reg, (MS_U16)u32Value);
388*53ee8cc1Swenshuai.xi         _JPD_Write2Byte(u16Reg+2, (MS_U16)(u32Value>>16));
389*53ee8cc1Swenshuai.xi     }
390*53ee8cc1Swenshuai.xi     else // high byte
391*53ee8cc1Swenshuai.xi     {
392*53ee8cc1Swenshuai.xi         _JPD_WriteByte(u16Reg, (MS_U8)(u32Value));
393*53ee8cc1Swenshuai.xi         _JPD_Write2Byte(u16Reg+1, (MS_U16)(u32Value>>8));
394*53ee8cc1Swenshuai.xi         _JPD_WriteByte(u16Reg+3, (MS_U8)(u32Value>>24));
395*53ee8cc1Swenshuai.xi     }
396*53ee8cc1Swenshuai.xi }
397*53ee8cc1Swenshuai.xi 
398*53ee8cc1Swenshuai.xi /******************************************************************************/
399*53ee8cc1Swenshuai.xi ///
400*53ee8cc1Swenshuai.xi ///@param value \b IN
401*53ee8cc1Swenshuai.xi ///@param value \b OUT
402*53ee8cc1Swenshuai.xi ///@return status
403*53ee8cc1Swenshuai.xi /******************************************************************************/
404*53ee8cc1Swenshuai.xi void __HAL_JPD_Write4Byte(MS_U16 u16Reg, MS_U32 u32Value)
405*53ee8cc1Swenshuai.xi {
406*53ee8cc1Swenshuai.xi     _JPD_Write4Byte(u16Reg, u32Value);
407*53ee8cc1Swenshuai.xi 
408*53ee8cc1Swenshuai.xi     if(_u8JPDHalDbgLevel & E_JPD_DEBUG_HAL_REG)
409*53ee8cc1Swenshuai.xi     {
410*53ee8cc1Swenshuai.xi         MS_U32 read_value = _JPD_Read4Byte(u16Reg);
411*53ee8cc1Swenshuai.xi         if(u32Value != read_value)
412*53ee8cc1Swenshuai.xi             printf("Write Four Byte Failed!! Reg = 0x%04X, write_value = 0x%lX, read_value = 0x%lX\n", u16Reg, u32Value, read_value);
413*53ee8cc1Swenshuai.xi     }
414*53ee8cc1Swenshuai.xi //    WRITE_LONG(u16Reg, u32Value);
415*53ee8cc1Swenshuai.xi }
416*53ee8cc1Swenshuai.xi 
417*53ee8cc1Swenshuai.xi /******************************************************************************/
418*53ee8cc1Swenshuai.xi ///
419*53ee8cc1Swenshuai.xi ///@param value \b IN
420*53ee8cc1Swenshuai.xi ///@param value \b OUT
421*53ee8cc1Swenshuai.xi ///@return status
422*53ee8cc1Swenshuai.xi /******************************************************************************/
423*53ee8cc1Swenshuai.xi MS_U32 __HAL_JPD_Read4Byte(MS_U16 u16Reg)
424*53ee8cc1Swenshuai.xi {
425*53ee8cc1Swenshuai.xi     return _JPD_Read4Byte(u16Reg);
426*53ee8cc1Swenshuai.xi //    return READ_LONG(u16Reg);
427*53ee8cc1Swenshuai.xi }
428*53ee8cc1Swenshuai.xi 
429*53ee8cc1Swenshuai.xi /******************************************************************************/
430*53ee8cc1Swenshuai.xi ///
431*53ee8cc1Swenshuai.xi ///@param value \b IN
432*53ee8cc1Swenshuai.xi ///@param value \b OUT
433*53ee8cc1Swenshuai.xi ///@return status
434*53ee8cc1Swenshuai.xi /******************************************************************************/
435*53ee8cc1Swenshuai.xi void __HAL_JPD_Write2Byte(MS_U16 u16Reg, MS_U16 u16Value)
436*53ee8cc1Swenshuai.xi {
437*53ee8cc1Swenshuai.xi     _JPD_Write2Byte(u16Reg, u16Value);
438*53ee8cc1Swenshuai.xi 
439*53ee8cc1Swenshuai.xi     if(_u8JPDHalDbgLevel & E_JPD_DEBUG_HAL_REG)
440*53ee8cc1Swenshuai.xi     {
441*53ee8cc1Swenshuai.xi         MS_U16 read_value = _JPD_Read2Byte(u16Reg);
442*53ee8cc1Swenshuai.xi         if(u16Value != read_value)
443*53ee8cc1Swenshuai.xi             printf("Write Two Byte Failed!! Reg = 0x%04X, write_value = 0x%04X, read_value = 0x%04X\n", u16Reg, u16Value, read_value);
444*53ee8cc1Swenshuai.xi     }
445*53ee8cc1Swenshuai.xi //    WRITE_WORD(u16Reg, u16Value);
446*53ee8cc1Swenshuai.xi }
447*53ee8cc1Swenshuai.xi 
448*53ee8cc1Swenshuai.xi /******************************************************************************/
449*53ee8cc1Swenshuai.xi ///
450*53ee8cc1Swenshuai.xi ///@param value \b IN
451*53ee8cc1Swenshuai.xi ///@param value \b OUT
452*53ee8cc1Swenshuai.xi ///@return status
453*53ee8cc1Swenshuai.xi /******************************************************************************/
454*53ee8cc1Swenshuai.xi MS_U16 __HAL_JPD_Read2Byte(MS_U16 u16Reg)
455*53ee8cc1Swenshuai.xi {
456*53ee8cc1Swenshuai.xi     return _JPD_Read2Byte(u16Reg);
457*53ee8cc1Swenshuai.xi //    return READ_WORD(u16Reg);
458*53ee8cc1Swenshuai.xi }
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi /******************************************************************************/
461*53ee8cc1Swenshuai.xi ///
462*53ee8cc1Swenshuai.xi ///@param value \b IN
463*53ee8cc1Swenshuai.xi ///@param value \b OUT
464*53ee8cc1Swenshuai.xi ///@return status
465*53ee8cc1Swenshuai.xi /******************************************************************************/
466*53ee8cc1Swenshuai.xi void __HAL_JPD_WriteByte(MS_U16 u16Reg, MS_U8 u8Value)
467*53ee8cc1Swenshuai.xi {
468*53ee8cc1Swenshuai.xi     _JPD_WriteByte(u16Reg, u8Value);
469*53ee8cc1Swenshuai.xi 
470*53ee8cc1Swenshuai.xi     if(_u8JPDHalDbgLevel & E_JPD_DEBUG_HAL_REG)
471*53ee8cc1Swenshuai.xi     {
472*53ee8cc1Swenshuai.xi         MS_U8 read_value = _JPD_ReadByte(u16Reg);
473*53ee8cc1Swenshuai.xi         if(u8Value != read_value)
474*53ee8cc1Swenshuai.xi             printf("Write Two Byte Failed!! Reg = 0x%04X, write_value = 0x%04X, read_value = 0x%04X\n", u16Reg, u8Value, read_value);
475*53ee8cc1Swenshuai.xi     }
476*53ee8cc1Swenshuai.xi //    WRITE_BYTE(u16Reg, u8Value);
477*53ee8cc1Swenshuai.xi }
478*53ee8cc1Swenshuai.xi 
479*53ee8cc1Swenshuai.xi /******************************************************************************/
480*53ee8cc1Swenshuai.xi ///
481*53ee8cc1Swenshuai.xi ///@param value \b IN
482*53ee8cc1Swenshuai.xi ///@param value \b OUT
483*53ee8cc1Swenshuai.xi ///@return status
484*53ee8cc1Swenshuai.xi /******************************************************************************/
485*53ee8cc1Swenshuai.xi MS_U8 __HAL_JPD_ReadByte(MS_U16 u16Reg)
486*53ee8cc1Swenshuai.xi {
487*53ee8cc1Swenshuai.xi     return _JPD_ReadByte(u16Reg);
488*53ee8cc1Swenshuai.xi //    return READ_BYTE(u16Reg);
489*53ee8cc1Swenshuai.xi }
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi /******************************************************************************/
492*53ee8cc1Swenshuai.xi ///
493*53ee8cc1Swenshuai.xi ///@param value \b IN
494*53ee8cc1Swenshuai.xi ///@param value \b OUT
495*53ee8cc1Swenshuai.xi ///@return status
496*53ee8cc1Swenshuai.xi /******************************************************************************/
497*53ee8cc1Swenshuai.xi void __HAL_JPD_WriteBit(MS_U16 u16Reg, MS_BOOL status, MS_U8 u8Bit)
498*53ee8cc1Swenshuai.xi {
499*53ee8cc1Swenshuai.xi     MS_U8 u8Tmp = __HAL_JPD_ReadByte(u16Reg);
500*53ee8cc1Swenshuai.xi     if (status)
501*53ee8cc1Swenshuai.xi         u8Tmp |= u8Bit;
502*53ee8cc1Swenshuai.xi     else
503*53ee8cc1Swenshuai.xi         u8Tmp &= (~u8Bit);
504*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteByte(u16Reg, u8Tmp);
505*53ee8cc1Swenshuai.xi }
506*53ee8cc1Swenshuai.xi 
507*53ee8cc1Swenshuai.xi /******************************************************************************/
508*53ee8cc1Swenshuai.xi ///
509*53ee8cc1Swenshuai.xi ///@param value \b IN
510*53ee8cc1Swenshuai.xi ///@param value \b OUT
511*53ee8cc1Swenshuai.xi ///@return status
512*53ee8cc1Swenshuai.xi /******************************************************************************/
513*53ee8cc1Swenshuai.xi MS_U8 __HAL_JPD_ReadBit(MS_U16 u16Reg, MS_U8 u8Bit)
514*53ee8cc1Swenshuai.xi {
515*53ee8cc1Swenshuai.xi     MS_U8 u8Tmp = __HAL_JPD_ReadByte(u16Reg);
516*53ee8cc1Swenshuai.xi     return (u8Tmp & u8Bit);
517*53ee8cc1Swenshuai.xi }
518*53ee8cc1Swenshuai.xi #endif
519*53ee8cc1Swenshuai.xi 
520*53ee8cc1Swenshuai.xi 
521*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
522*53ee8cc1Swenshuai.xi //  Global Functions
523*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_JPD_SelectOJPD()524*53ee8cc1Swenshuai.xi void HAL_JPD_SelectOJPD()
525*53ee8cc1Swenshuai.xi {
526*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(JPD_MIU_GROUP2_I64+1, 1, JPD_MIU0_CLIENT_JPD_CS2);
527*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(JPD_MIU_GROUP2_I64+1, 1, JPD_MIU0_CLIENT_JPD_CS3);
528*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 0, NJPD_TOP_MARB_P0_ENABLE);
529*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 0, NJPD_TOP_MARB_P1_ENABLE);
530*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P2_ENABLE);
531*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P0_W_BYPASS_ENABLE);
532*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P1_W_BYPASS_ENABLE);
533*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P2_W_BYPASS_ENABLE);
534*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P0_R_BYPASS_ENABLE);
535*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE+1, 1, NJPD_TOP_MARB_P1_R_BYPASS_ENABLE);
536*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD1_TOP_MARB_PORT_ENABLE+1, 1, NJPD_TOP_MARB_P2_R_BYPASS_ENABLE);
537*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 0, NJPD_TOP_MARB_P0_ENABLE);
538*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 0, NJPD_TOP_MARB_P1_ENABLE);
539*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P2_ENABLE);
540*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P0_W_BYPASS_ENABLE);
541*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P1_W_BYPASS_ENABLE);
542*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P2_W_BYPASS_ENABLE);
543*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE, 1, NJPD_TOP_MARB_P0_R_BYPASS_ENABLE);
544*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE+1, 1, NJPD_TOP_MARB_P1_R_BYPASS_ENABLE);
545*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_NJPD2_TOP_MARB_PORT_ENABLE+1, 1, NJPD_TOP_MARB_P2_R_BYPASS_ENABLE);
546*53ee8cc1Swenshuai.xi 
547*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_NJPD1_SPARE00, 0x7B);
548*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_NJPD2_SPARE00, 0x7B);
549*53ee8cc1Swenshuai.xi 
550*53ee8cc1Swenshuai.xi }
551*53ee8cc1Swenshuai.xi 
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi /******************************************************************************/
554*53ee8cc1Swenshuai.xi ///
555*53ee8cc1Swenshuai.xi ///@param value \b IN
556*53ee8cc1Swenshuai.xi ///@param value \b OUT
557*53ee8cc1Swenshuai.xi ///@return status
558*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMIU(MS_U8 u8Idx)559*53ee8cc1Swenshuai.xi void HAL_JPD_SetMIU(MS_U8 u8Idx)
560*53ee8cc1Swenshuai.xi {
561*53ee8cc1Swenshuai.xi #if (ENABLE_TEST_18_miu_sel_128M==true) \
562*53ee8cc1Swenshuai.xi     ||(ENABLE_TEST_18_miu_sel_64M==true) \
563*53ee8cc1Swenshuai.xi     ||(ENABLE_TEST_18_miu_sel_32M==true)
564*53ee8cc1Swenshuai.xi     // This code is reserved for verification code TEST_18_miu_sel
565*53ee8cc1Swenshuai.xi     // The value of BK_JPD_MCONFIG+1 would be modified at JPEG_StartDecode
566*53ee8cc1Swenshuai.xi     // So we need to modify there too.
567*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(JPD_MIU1_MIU_SEL2+1, 1,JPD_MIU1_CLIENT_JPD);
568*53ee8cc1Swenshuai.xi //        __HAL_JPD_WriteBit(BK_JPD_MCONFIG+1, 0, JPD_MIU_SEL);     // 0 1
569*53ee8cc1Swenshuai.xi     #if (ENABLE_TEST_18_miu_sel_128M==true)
570*53ee8cc1Swenshuai.xi         __HAL_JPD_WriteBit(BK_JPD_MCONFIG+1, 1, JPD_MIU_SEL);     // 0 1 0 1
571*53ee8cc1Swenshuai.xi     #elif (ENABLE_TEST_18_miu_sel_64M==true)
572*53ee8cc1Swenshuai.xi         __HAL_JPD_WriteBit(BK_JPD_MCONFIG+1, 2, JPD_MIU_SEL);     // 0 1 0 1 0 1 0 1
573*53ee8cc1Swenshuai.xi     #else
574*53ee8cc1Swenshuai.xi         __HAL_JPD_WriteBit(BK_JPD_MCONFIG+1, 3, JPD_MIU_SEL);     //  0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
575*53ee8cc1Swenshuai.xi     #endif
576*53ee8cc1Swenshuai.xi #else
577*53ee8cc1Swenshuai.xi     if(0 == __HAL_JPD_ReadBit(JPD_MIU1_MIU_SEL2+1, JPD_MIU1_CLIENT_JPD))
578*53ee8cc1Swenshuai.xi     {
579*53ee8cc1Swenshuai.xi         if(u8Idx)
580*53ee8cc1Swenshuai.xi         {
581*53ee8cc1Swenshuai.xi             __HAL_JPD_WriteBit(JPD_MIU0_MIU_SEL2+1, 1, JPD_MIU0_CLIENT_JPD);
582*53ee8cc1Swenshuai.xi             JPD_DEBUG_HAL_MSG("HAL_JPD_SetMIU : JPD_MIU0_MIU_SEL2 : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_MIU0_MIU_SEL2));
583*53ee8cc1Swenshuai.xi         }
584*53ee8cc1Swenshuai.xi         else
585*53ee8cc1Swenshuai.xi         {
586*53ee8cc1Swenshuai.xi             __HAL_JPD_WriteBit(JPD_MIU0_MIU_SEL2+1, 0, JPD_MIU0_CLIENT_JPD);
587*53ee8cc1Swenshuai.xi             JPD_DEBUG_HAL_MSG("HAL_JPD_SetMIU : JPD_MIU0_MIU_SEL2 : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_MIU0_MIU_SEL2));
588*53ee8cc1Swenshuai.xi         }
589*53ee8cc1Swenshuai.xi     }
590*53ee8cc1Swenshuai.xi     else
591*53ee8cc1Swenshuai.xi     {
592*53ee8cc1Swenshuai.xi         __HAL_JPD_WriteBit(BK_JPD_MCONFIG+1, 0, JPD_MIU_SEL);
593*53ee8cc1Swenshuai.xi         JPD_DEBUG_HAL_MSG("HAL_JPD_SetMIU : miu_hw_msel_en is active, BK_JPD_MCONFIG : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MCONFIG));
594*53ee8cc1Swenshuai.xi     }
595*53ee8cc1Swenshuai.xi 
596*53ee8cc1Swenshuai.xi #endif
597*53ee8cc1Swenshuai.xi }
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi /******************************************************************************/
600*53ee8cc1Swenshuai.xi ///
601*53ee8cc1Swenshuai.xi ///@param value \b IN
602*53ee8cc1Swenshuai.xi ///@param value \b OUT
603*53ee8cc1Swenshuai.xi ///@return status
604*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Set_S_Config(MS_U16 u16Value)605*53ee8cc1Swenshuai.xi void HAL_JPD_Set_S_Config(MS_U16 u16Value)
606*53ee8cc1Swenshuai.xi {
607*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Set_S_Config : 0x%04X\n", u16Value);
608*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_SCONFIG, u16Value);
609*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Get_S_Config : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_SCONFIG));
610*53ee8cc1Swenshuai.xi }
611*53ee8cc1Swenshuai.xi 
612*53ee8cc1Swenshuai.xi /******************************************************************************/
613*53ee8cc1Swenshuai.xi ///
614*53ee8cc1Swenshuai.xi ///@param value \b IN
615*53ee8cc1Swenshuai.xi ///@param value \b OUT
616*53ee8cc1Swenshuai.xi ///@return status
617*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Get_S_Config(void)618*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_Get_S_Config(void)
619*53ee8cc1Swenshuai.xi {
620*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_SCONFIG);
621*53ee8cc1Swenshuai.xi }
622*53ee8cc1Swenshuai.xi 
623*53ee8cc1Swenshuai.xi /******************************************************************************/
624*53ee8cc1Swenshuai.xi ///
625*53ee8cc1Swenshuai.xi ///@param value \b IN
626*53ee8cc1Swenshuai.xi ///@param value \b OUT
627*53ee8cc1Swenshuai.xi ///@return status
628*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Set_M_Config(MS_U16 u16Value)629*53ee8cc1Swenshuai.xi void HAL_JPD_Set_M_Config(MS_U16 u16Value)
630*53ee8cc1Swenshuai.xi {
631*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Set_M_Config : 0x%04X\n", u16Value);
632*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_MCONFIG, u16Value);
633*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Get_M_Config : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MCONFIG));
634*53ee8cc1Swenshuai.xi }
635*53ee8cc1Swenshuai.xi 
636*53ee8cc1Swenshuai.xi /******************************************************************************/
637*53ee8cc1Swenshuai.xi ///
638*53ee8cc1Swenshuai.xi ///@param value \b IN
639*53ee8cc1Swenshuai.xi ///@param value \b OUT
640*53ee8cc1Swenshuai.xi ///@return status
641*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Get_M_Config(void)642*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_Get_M_Config(void)
643*53ee8cc1Swenshuai.xi {
644*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_MCONFIG);
645*53ee8cc1Swenshuai.xi }
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi /******************************************************************************/
648*53ee8cc1Swenshuai.xi ///
649*53ee8cc1Swenshuai.xi ///@param value \b IN
650*53ee8cc1Swenshuai.xi ///@param value \b OUT
651*53ee8cc1Swenshuai.xi ///@return status
652*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetIntEn(MS_U16 u16Value)653*53ee8cc1Swenshuai.xi void HAL_JPD_SetIntEn(MS_U16 u16Value)
654*53ee8cc1Swenshuai.xi {
655*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetIntEn : 0x%04X\n", u16Value);
656*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_INTEN, u16Value);
657*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetIntEn : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_INTEN));
658*53ee8cc1Swenshuai.xi }
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi /******************************************************************************/
661*53ee8cc1Swenshuai.xi ///
662*53ee8cc1Swenshuai.xi ///@param value \b IN
663*53ee8cc1Swenshuai.xi ///@param value \b OUT
664*53ee8cc1Swenshuai.xi ///@return status
665*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMRCBufFloorLow(MS_U16 u16Value)666*53ee8cc1Swenshuai.xi void HAL_JPD_SetMRCBufFloorLow(MS_U16 u16Value)
667*53ee8cc1Swenshuai.xi {
668*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMRCBufFloorLow : 0x%04X\n", u16Value);
669*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RBUF_FLOOR_L, u16Value);
670*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetMRCBufFloorLow : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RBUF_FLOOR_L));
671*53ee8cc1Swenshuai.xi }
672*53ee8cc1Swenshuai.xi 
673*53ee8cc1Swenshuai.xi /******************************************************************************/
674*53ee8cc1Swenshuai.xi ///
675*53ee8cc1Swenshuai.xi ///@param value \b IN
676*53ee8cc1Swenshuai.xi ///@param value \b OUT
677*53ee8cc1Swenshuai.xi ///@return status
678*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMRCBufFloorHigh(MS_U16 u16Value)679*53ee8cc1Swenshuai.xi void HAL_JPD_SetMRCBufFloorHigh(MS_U16 u16Value)
680*53ee8cc1Swenshuai.xi {
681*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMRCBufFloorHigh : 0x%04X\n", u16Value);
682*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RBUF_FLOOR_H, u16Value);
683*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetMRCBufFloorHigh : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RBUF_FLOOR_H));
684*53ee8cc1Swenshuai.xi }
685*53ee8cc1Swenshuai.xi 
686*53ee8cc1Swenshuai.xi /******************************************************************************/
687*53ee8cc1Swenshuai.xi ///
688*53ee8cc1Swenshuai.xi ///@param value \b IN
689*53ee8cc1Swenshuai.xi ///@param value \b OUT
690*53ee8cc1Swenshuai.xi ///@return status
691*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMRCBufCeilLow(MS_U16 u16Value)692*53ee8cc1Swenshuai.xi void HAL_JPD_SetMRCBufCeilLow(MS_U16 u16Value)
693*53ee8cc1Swenshuai.xi {
694*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMRCBufCeilLow : 0x%04X\n", u16Value);
695*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RBUF_CEIL_L, u16Value);
696*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetMRCBufCeilLow : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RBUF_CEIL_L));
697*53ee8cc1Swenshuai.xi }
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi /******************************************************************************/
700*53ee8cc1Swenshuai.xi ///
701*53ee8cc1Swenshuai.xi ///@param value \b IN
702*53ee8cc1Swenshuai.xi ///@param value \b OUT
703*53ee8cc1Swenshuai.xi ///@return status
704*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMRCBufCeilHigh(MS_U16 u16Value)705*53ee8cc1Swenshuai.xi void HAL_JPD_SetMRCBufCeilHigh(MS_U16 u16Value)
706*53ee8cc1Swenshuai.xi {
707*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMRCBufCeilHigh : 0x%04X\n", u16Value);
708*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RBUF_CEIL_H, u16Value);
709*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetMRCBufCeilHigh : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RBUF_CEIL_H));
710*53ee8cc1Swenshuai.xi }
711*53ee8cc1Swenshuai.xi 
712*53ee8cc1Swenshuai.xi /******************************************************************************/
713*53ee8cc1Swenshuai.xi ///
714*53ee8cc1Swenshuai.xi ///@param value \b IN
715*53ee8cc1Swenshuai.xi ///@param value \b OUT
716*53ee8cc1Swenshuai.xi ///@return status
717*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetRCSMAddrLow(MS_U16 u16Value)718*53ee8cc1Swenshuai.xi void HAL_JPD_SetRCSMAddrLow(MS_U16 u16Value)
719*53ee8cc1Swenshuai.xi {
720*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetRCSMAddrLow : 0x%04X\n", u16Value);
721*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RCSMADR_L, u16Value);
722*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetRCSMAddrLow : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RCSMADR_L));
723*53ee8cc1Swenshuai.xi }
724*53ee8cc1Swenshuai.xi 
725*53ee8cc1Swenshuai.xi /******************************************************************************/
726*53ee8cc1Swenshuai.xi ///
727*53ee8cc1Swenshuai.xi ///@param value \b IN
728*53ee8cc1Swenshuai.xi ///@param value \b OUT
729*53ee8cc1Swenshuai.xi ///@return status
730*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetRCSMAddrHigh(MS_U16 u16Value)731*53ee8cc1Swenshuai.xi void HAL_JPD_SetRCSMAddrHigh(MS_U16 u16Value)
732*53ee8cc1Swenshuai.xi {
733*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetRCSMAddrHigh : 0x%04X\n", u16Value);
734*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RCSMADR_H, u16Value);
735*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetRCSMAddrHigh : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RCSMADR_H));
736*53ee8cc1Swenshuai.xi }
737*53ee8cc1Swenshuai.xi 
738*53ee8cc1Swenshuai.xi /******************************************************************************/
739*53ee8cc1Swenshuai.xi ///
740*53ee8cc1Swenshuai.xi ///@param value \b IN
741*53ee8cc1Swenshuai.xi ///@param value \b OUT
742*53ee8cc1Swenshuai.xi ///@return status
743*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMWCBufStAddrLow(MS_U16 u16Value)744*53ee8cc1Swenshuai.xi void HAL_JPD_SetMWCBufStAddrLow(MS_U16 u16Value)
745*53ee8cc1Swenshuai.xi {
746*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMWCBufStAddrLow : 0x%04X\n", u16Value);
747*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_MWBF_SADR_L, u16Value);
748*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetMWCBufStAddrLow : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MWBF_SADR_L));
749*53ee8cc1Swenshuai.xi }
750*53ee8cc1Swenshuai.xi 
751*53ee8cc1Swenshuai.xi /******************************************************************************/
752*53ee8cc1Swenshuai.xi ///
753*53ee8cc1Swenshuai.xi ///@param value \b IN
754*53ee8cc1Swenshuai.xi ///@param value \b OUT
755*53ee8cc1Swenshuai.xi ///@return status
756*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMWCBufStAddrHigh(MS_U16 u16Value)757*53ee8cc1Swenshuai.xi void HAL_JPD_SetMWCBufStAddrHigh(MS_U16 u16Value)
758*53ee8cc1Swenshuai.xi {
759*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMWCBufStAddrHigh : 0x%04X\n", u16Value);
760*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_MWBF_SADR_H, u16Value);
761*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetMWCBufStAddrHigh : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MWBF_SADR_H));
762*53ee8cc1Swenshuai.xi }
763*53ee8cc1Swenshuai.xi 
764*53ee8cc1Swenshuai.xi /******************************************************************************/
765*53ee8cc1Swenshuai.xi ///
766*53ee8cc1Swenshuai.xi ///@param value \b IN
767*53ee8cc1Swenshuai.xi ///@param value \b OUT
768*53ee8cc1Swenshuai.xi ///@return status
769*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetPic_H(MS_U16 u16Value)770*53ee8cc1Swenshuai.xi void HAL_JPD_SetPic_H(MS_U16 u16Value)
771*53ee8cc1Swenshuai.xi {
772*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetPic_H : 0x%04X\n", u16Value);
773*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_PIC_H, u16Value);
774*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetPic_H : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_PIC_H));
775*53ee8cc1Swenshuai.xi }
776*53ee8cc1Swenshuai.xi 
777*53ee8cc1Swenshuai.xi /******************************************************************************/
778*53ee8cc1Swenshuai.xi ///
779*53ee8cc1Swenshuai.xi ///@param value \b IN
780*53ee8cc1Swenshuai.xi ///@param value \b OUT
781*53ee8cc1Swenshuai.xi ///@return status
782*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetPic_V(MS_U16 u16Value)783*53ee8cc1Swenshuai.xi void HAL_JPD_SetPic_V(MS_U16 u16Value)
784*53ee8cc1Swenshuai.xi {
785*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetPic_V : 0x%04X\n", u16Value);
786*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_PIC_V, u16Value);
787*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetPic_V : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_PIC_V));
788*53ee8cc1Swenshuai.xi }
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi /******************************************************************************/
791*53ee8cc1Swenshuai.xi ///
792*53ee8cc1Swenshuai.xi ///@param value \b IN
793*53ee8cc1Swenshuai.xi ///@param value \b OUT
794*53ee8cc1Swenshuai.xi ///@return status
795*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetEventFlag(MS_U16 u16Value)796*53ee8cc1Swenshuai.xi void HAL_JPD_SetEventFlag(MS_U16 u16Value)
797*53ee8cc1Swenshuai.xi {
798*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetEventFlag : 0x%04X\n", u16Value);
799*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_EVENTFLAG, u16Value);
800*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetEventFlag : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_EVENTFLAG));
801*53ee8cc1Swenshuai.xi }
802*53ee8cc1Swenshuai.xi 
803*53ee8cc1Swenshuai.xi /******************************************************************************/
804*53ee8cc1Swenshuai.xi ///
805*53ee8cc1Swenshuai.xi ///@param value \b IN
806*53ee8cc1Swenshuai.xi ///@param value \b OUT
807*53ee8cc1Swenshuai.xi ///@return status
808*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetEventFlag(void)809*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetEventFlag(void)
810*53ee8cc1Swenshuai.xi {
811*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_EVENTFLAG);
812*53ee8cc1Swenshuai.xi }
813*53ee8cc1Swenshuai.xi 
814*53ee8cc1Swenshuai.xi /******************************************************************************/
815*53ee8cc1Swenshuai.xi ///
816*53ee8cc1Swenshuai.xi ///@param value \b IN
817*53ee8cc1Swenshuai.xi ///@param value \b OUT
818*53ee8cc1Swenshuai.xi ///@return status
819*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetROI_H(MS_U16 u16Value)820*53ee8cc1Swenshuai.xi void HAL_JPD_SetROI_H(MS_U16 u16Value)
821*53ee8cc1Swenshuai.xi {
822*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetROI_H : 0x%04X\n", u16Value);
823*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_ROI_H, u16Value);
824*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetROI_H : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_ROI_H));
825*53ee8cc1Swenshuai.xi }
826*53ee8cc1Swenshuai.xi 
827*53ee8cc1Swenshuai.xi /******************************************************************************/
828*53ee8cc1Swenshuai.xi ///
829*53ee8cc1Swenshuai.xi ///@param value \b IN
830*53ee8cc1Swenshuai.xi ///@param value \b OUT
831*53ee8cc1Swenshuai.xi ///@return status
832*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetROI_V(MS_U16 u16Value)833*53ee8cc1Swenshuai.xi void HAL_JPD_SetROI_V(MS_U16 u16Value)
834*53ee8cc1Swenshuai.xi {
835*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetROI_V : 0x%04X\n", u16Value);
836*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_ROI_V, u16Value);
837*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetROI_V : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_ROI_V));
838*53ee8cc1Swenshuai.xi }
839*53ee8cc1Swenshuai.xi 
840*53ee8cc1Swenshuai.xi /******************************************************************************/
841*53ee8cc1Swenshuai.xi ///
842*53ee8cc1Swenshuai.xi ///@param value \b IN
843*53ee8cc1Swenshuai.xi ///@param value \b OUT
844*53ee8cc1Swenshuai.xi ///@return status
845*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetROIWidth(MS_U16 u16Value)846*53ee8cc1Swenshuai.xi void HAL_JPD_SetROIWidth(MS_U16 u16Value)
847*53ee8cc1Swenshuai.xi {
848*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetROIWidth : 0x%04X\n", u16Value);
849*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_ROI_WIDTH, u16Value);
850*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetROIWidth : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_ROI_WIDTH));
851*53ee8cc1Swenshuai.xi }
852*53ee8cc1Swenshuai.xi 
853*53ee8cc1Swenshuai.xi /******************************************************************************/
854*53ee8cc1Swenshuai.xi ///
855*53ee8cc1Swenshuai.xi ///@param value \b IN
856*53ee8cc1Swenshuai.xi ///@param value \b OUT
857*53ee8cc1Swenshuai.xi ///@return status
858*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetROIHeight(MS_U16 u16Value)859*53ee8cc1Swenshuai.xi void HAL_JPD_SetROIHeight(MS_U16 u16Value)
860*53ee8cc1Swenshuai.xi {
861*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetROIHeight : 0x%04X\n", u16Value);
862*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_ROI_HEIGHT, u16Value);
863*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetROIHeight : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_ROI_HEIGHT));
864*53ee8cc1Swenshuai.xi }
865*53ee8cc1Swenshuai.xi 
866*53ee8cc1Swenshuai.xi #if 0 // Unused function
867*53ee8cc1Swenshuai.xi /******************************************************************************/
868*53ee8cc1Swenshuai.xi ///
869*53ee8cc1Swenshuai.xi ///@param value \b IN
870*53ee8cc1Swenshuai.xi ///@param value \b OUT
871*53ee8cc1Swenshuai.xi ///@return status
872*53ee8cc1Swenshuai.xi /******************************************************************************/
873*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetCurMadrLow(void)
874*53ee8cc1Swenshuai.xi {
875*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_CUR_MADR_L);
876*53ee8cc1Swenshuai.xi }
877*53ee8cc1Swenshuai.xi 
878*53ee8cc1Swenshuai.xi /******************************************************************************/
879*53ee8cc1Swenshuai.xi ///
880*53ee8cc1Swenshuai.xi ///@param value \b IN
881*53ee8cc1Swenshuai.xi ///@param value \b OUT
882*53ee8cc1Swenshuai.xi ///@return status
883*53ee8cc1Swenshuai.xi /******************************************************************************/
884*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetCurMadrHigh(void)
885*53ee8cc1Swenshuai.xi {
886*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_CUR_MADR_H);
887*53ee8cc1Swenshuai.xi }
888*53ee8cc1Swenshuai.xi #endif
889*53ee8cc1Swenshuai.xi 
890*53ee8cc1Swenshuai.xi /******************************************************************************/
891*53ee8cc1Swenshuai.xi ///
892*53ee8cc1Swenshuai.xi ///@param value \b IN
893*53ee8cc1Swenshuai.xi ///@param value \b OUT
894*53ee8cc1Swenshuai.xi ///@return status
895*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetClock(MS_U16 u16Value)896*53ee8cc1Swenshuai.xi void HAL_JPD_SetClock(MS_U16 u16Value)
897*53ee8cc1Swenshuai.xi {
898*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetClock : 0x%04X\n", u16Value);
899*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(JPD_CLOCK, u16Value);
900*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetClock : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_CLOCK));
901*53ee8cc1Swenshuai.xi }
902*53ee8cc1Swenshuai.xi 
903*53ee8cc1Swenshuai.xi /******************************************************************************/
904*53ee8cc1Swenshuai.xi ///
905*53ee8cc1Swenshuai.xi ///@param value \b IN
906*53ee8cc1Swenshuai.xi ///@param value \b OUT
907*53ee8cc1Swenshuai.xi ///@return status
908*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetClock(void)909*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetClock(void)
910*53ee8cc1Swenshuai.xi {
911*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(JPD_CLOCK);
912*53ee8cc1Swenshuai.xi }
913*53ee8cc1Swenshuai.xi 
914*53ee8cc1Swenshuai.xi /******************************************************************************/
915*53ee8cc1Swenshuai.xi ///
916*53ee8cc1Swenshuai.xi ///@param value \b IN
917*53ee8cc1Swenshuai.xi ///@param value \b OUT
918*53ee8cc1Swenshuai.xi ///@return status
919*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_PowerOn(void)920*53ee8cc1Swenshuai.xi void HAL_JPD_PowerOn(void)
921*53ee8cc1Swenshuai.xi {
922*53ee8cc1Swenshuai.xi     MS_U16 u16reg_val;
923*53ee8cc1Swenshuai.xi     //u16reg_val = MDrv_Read2Byte(_u16JPDClock_Addr);
924*53ee8cc1Swenshuai.xi     u16reg_val = __HAL_JPD_Read2Byte(JPD_CLOCK);
925*53ee8cc1Swenshuai.xi     u16reg_val = u16reg_val & 0xFFF2;
926*53ee8cc1Swenshuai.xi     u16reg_val |= 0x000C;  // set JPD disable [8] : 0, [3:2] : 11 192MHz
927*53ee8cc1Swenshuai.xi     //MDrv_Write2Byte(_u16JPDClock_Addr, reg_val);
928*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_PowerOn : SetClock : 0x%04X\n", u16reg_val);
929*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(JPD_CLOCK, u16reg_val);
930*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_PowerOn : GetClock : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_CLOCK));
931*53ee8cc1Swenshuai.xi 
932*53ee8cc1Swenshuai.xi     HAL_JPD_SelectOJPD();
933*53ee8cc1Swenshuai.xi     #if 0 // DEBUG
934*53ee8cc1Swenshuai.xi     printf ("   TSP STC : = 0x%lx\n", (MS_U32)(__HAL_JPD_Read2Byte(REG_TSP_STC_L) | (__HAL_JPD_Read2Byte(REG_TSP_STC_H) << 16))/90);
935*53ee8cc1Swenshuai.xi     #endif
936*53ee8cc1Swenshuai.xi }
937*53ee8cc1Swenshuai.xi 
938*53ee8cc1Swenshuai.xi /******************************************************************************/
939*53ee8cc1Swenshuai.xi ///
940*53ee8cc1Swenshuai.xi ///@param value \b IN
941*53ee8cc1Swenshuai.xi ///@param value \b OUT
942*53ee8cc1Swenshuai.xi ///@return status
943*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_PowerOff(void)944*53ee8cc1Swenshuai.xi void HAL_JPD_PowerOff(void)
945*53ee8cc1Swenshuai.xi {
946*53ee8cc1Swenshuai.xi     MS_U16 u16reg_val;
947*53ee8cc1Swenshuai.xi     //u16reg_val = MDrv_Read2Byte(_u16JPDClock_Addr);
948*53ee8cc1Swenshuai.xi     u16reg_val = __HAL_JPD_Read2Byte(JPD_CLOCK);
949*53ee8cc1Swenshuai.xi     u16reg_val = u16reg_val & 0xFFF2;
950*53ee8cc1Swenshuai.xi     u16reg_val |= 0x000D;  // set JPD disable [8] : 1, [3:2] : 11 192MHz
951*53ee8cc1Swenshuai.xi     //MDrv_Write2Byte(_u16JPDClock_Addr, reg_val);
952*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_PowerOff : SetClock : 0x%04X\n", u16reg_val);
953*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(JPD_CLOCK, u16reg_val);
954*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_PowerOff : GetClock : 0x%04X\n", __HAL_JPD_Read2Byte(JPD_CLOCK));
955*53ee8cc1Swenshuai.xi }
956*53ee8cc1Swenshuai.xi 
957*53ee8cc1Swenshuai.xi /******************************************************************************/
958*53ee8cc1Swenshuai.xi ///
959*53ee8cc1Swenshuai.xi ///@param value \b IN
960*53ee8cc1Swenshuai.xi ///@param value \b OUT
961*53ee8cc1Swenshuai.xi ///@return status
962*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_InitRegBase(void)963*53ee8cc1Swenshuai.xi void HAL_JPD_InitRegBase(void)
964*53ee8cc1Swenshuai.xi {
965*53ee8cc1Swenshuai.xi     MS_U32 u32NonPMBankSize;
966*53ee8cc1Swenshuai.xi     if(!MDrv_MMIO_GetBASE(&u32JPDRiuBaseAdd, &u32NonPMBankSize, MS_MODULE_JPD))
967*53ee8cc1Swenshuai.xi     {
968*53ee8cc1Swenshuai.xi         JPD_DEBUG_HAL_ERR("Get RIUreg base Failed!!!\n");
969*53ee8cc1Swenshuai.xi     }
970*53ee8cc1Swenshuai.xi     else
971*53ee8cc1Swenshuai.xi     {
972*53ee8cc1Swenshuai.xi         JPD_DEBUG_HAL_MSG("RIUreg base = 0x%lX, length = %lu\n", u32JPDRiuBaseAdd, u32NonPMBankSize);
973*53ee8cc1Swenshuai.xi     }
974*53ee8cc1Swenshuai.xi }
975*53ee8cc1Swenshuai.xi 
976*53ee8cc1Swenshuai.xi /******************************************************************************/
977*53ee8cc1Swenshuai.xi ///
978*53ee8cc1Swenshuai.xi ///@param value \b IN
979*53ee8cc1Swenshuai.xi ///@param value \b OUT
980*53ee8cc1Swenshuai.xi ///@return none
981*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_CreateMutex(void)982*53ee8cc1Swenshuai.xi void HAL_JPD_CreateMutex(void)
983*53ee8cc1Swenshuai.xi {
984*53ee8cc1Swenshuai.xi     __HAL_JPD_MutexCreate();
985*53ee8cc1Swenshuai.xi }
986*53ee8cc1Swenshuai.xi 
987*53ee8cc1Swenshuai.xi /******************************************************************************/
988*53ee8cc1Swenshuai.xi ///
989*53ee8cc1Swenshuai.xi ///@param value \b IN
990*53ee8cc1Swenshuai.xi ///@param value \b OUT
991*53ee8cc1Swenshuai.xi ///@return none
992*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_DeleteMutex(void)993*53ee8cc1Swenshuai.xi void HAL_JPD_DeleteMutex(void)
994*53ee8cc1Swenshuai.xi {
995*53ee8cc1Swenshuai.xi     __HAL_JPD_MutexDelete();
996*53ee8cc1Swenshuai.xi }
997*53ee8cc1Swenshuai.xi 
998*53ee8cc1Swenshuai.xi /******************************************************************************/
999*53ee8cc1Swenshuai.xi ///
1000*53ee8cc1Swenshuai.xi ///@param value \b IN
1001*53ee8cc1Swenshuai.xi ///@param value \b OUT
1002*53ee8cc1Swenshuai.xi ///@return status
1003*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetRSTIntv(MS_U16 u16Value)1004*53ee8cc1Swenshuai.xi void HAL_JPD_SetRSTIntv(MS_U16 u16Value)
1005*53ee8cc1Swenshuai.xi {
1006*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetRSTIntv : 0x%04X\n", u16Value);
1007*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_RSTINTV, u16Value);
1008*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_GetRSTIntv : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_RSTINTV));
1009*53ee8cc1Swenshuai.xi }
1010*53ee8cc1Swenshuai.xi 
1011*53ee8cc1Swenshuai.xi /******************************************************************************/
1012*53ee8cc1Swenshuai.xi ///
1013*53ee8cc1Swenshuai.xi ///@param value \b IN
1014*53ee8cc1Swenshuai.xi ///@param value \b OUT
1015*53ee8cc1Swenshuai.xi ///@return status
1016*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetCurVidx(void)1017*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetCurVidx(void)
1018*53ee8cc1Swenshuai.xi {
1019*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_CUR_VIDX);
1020*53ee8cc1Swenshuai.xi }
1021*53ee8cc1Swenshuai.xi 
1022*53ee8cc1Swenshuai.xi /******************************************************************************/
1023*53ee8cc1Swenshuai.xi ///
1024*53ee8cc1Swenshuai.xi ///@param value \b IN
1025*53ee8cc1Swenshuai.xi ///@param value \b OUT
1026*53ee8cc1Swenshuai.xi ///@return status
1027*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Set_TID_Addr(MS_U16 u16Value)1028*53ee8cc1Swenshuai.xi void HAL_JPD_Set_TID_Addr(MS_U16 u16Value)
1029*53ee8cc1Swenshuai.xi {
1030*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Set_TID_Addr : 0x%04X\n", u16Value);
1031*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_TID_ADR, u16Value);
1032*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Get_TID_Addr : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_TID_ADR));
1033*53ee8cc1Swenshuai.xi }
1034*53ee8cc1Swenshuai.xi 
1035*53ee8cc1Swenshuai.xi /******************************************************************************/
1036*53ee8cc1Swenshuai.xi ///
1037*53ee8cc1Swenshuai.xi ///@param value \b IN
1038*53ee8cc1Swenshuai.xi ///@param value \b OUT
1039*53ee8cc1Swenshuai.xi ///@return status
1040*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Set_TID_Dat(MS_U16 u16Value)1041*53ee8cc1Swenshuai.xi void HAL_JPD_Set_TID_Dat(MS_U16 u16Value)
1042*53ee8cc1Swenshuai.xi {
1043*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_TID_DAT, u16Value);
1044*53ee8cc1Swenshuai.xi }
1045*53ee8cc1Swenshuai.xi 
HAL_JPD_Get_TID_Dat(void)1046*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_Get_TID_Dat(void)
1047*53ee8cc1Swenshuai.xi {
1048*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_TID_DAT);
1049*53ee8cc1Swenshuai.xi }
1050*53ee8cc1Swenshuai.xi 
1051*53ee8cc1Swenshuai.xi /******************************************************************************/
1052*53ee8cc1Swenshuai.xi ///
1053*53ee8cc1Swenshuai.xi ///@param value \b IN
1054*53ee8cc1Swenshuai.xi ///@param value \b OUT
1055*53ee8cc1Swenshuai.xi ///@return none
1056*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetDbgLevel(MS_U8 u8DbgLevel)1057*53ee8cc1Swenshuai.xi void HAL_JPD_SetDbgLevel(MS_U8 u8DbgLevel)
1058*53ee8cc1Swenshuai.xi {
1059*53ee8cc1Swenshuai.xi     _u8JPDHalDbgLevel = u8DbgLevel;
1060*53ee8cc1Swenshuai.xi }
1061*53ee8cc1Swenshuai.xi 
1062*53ee8cc1Swenshuai.xi /******************************************************************************/
1063*53ee8cc1Swenshuai.xi ///
1064*53ee8cc1Swenshuai.xi ///@param value \b IN
1065*53ee8cc1Swenshuai.xi ///@param value \b OUT
1066*53ee8cc1Swenshuai.xi ///@return none
1067*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetLibVer(JPD_HAL_Version * pHalVer)1068*53ee8cc1Swenshuai.xi void HAL_JPD_GetLibVer(JPD_HAL_Version *pHalVer)
1069*53ee8cc1Swenshuai.xi {
1070*53ee8cc1Swenshuai.xi     pHalVer->pu8HalVer = _pu8HalVer;
1071*53ee8cc1Swenshuai.xi     pHalVer->pu8FwVer = _pu8FwVer;
1072*53ee8cc1Swenshuai.xi }
1073*53ee8cc1Swenshuai.xi 
1074*53ee8cc1Swenshuai.xi /******************************************************************************/
1075*53ee8cc1Swenshuai.xi ///Reset JPD
1076*53ee8cc1Swenshuai.xi ///@param value \b IN
1077*53ee8cc1Swenshuai.xi ///@param value \b OUT
1078*53ee8cc1Swenshuai.xi ///@return none
1079*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_Rst(void)1080*53ee8cc1Swenshuai.xi void HAL_JPD_Rst(void)
1081*53ee8cc1Swenshuai.xi {
1082*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Rst : start!!\n");
1083*53ee8cc1Swenshuai.xi     _HAL_JPD_SetMIUProtectMask(TRUE);
1084*53ee8cc1Swenshuai.xi     //mif reset is high active
1085*53ee8cc1Swenshuai.xi     HAL_JPD_Set_M_Config(HAL_JPD_Get_M_Config() | JPD_MIF_RST);
1086*53ee8cc1Swenshuai.xi     HAL_JPD_Set_M_Config(HAL_JPD_Get_M_Config() & ~JPD_MIF_RST);
1087*53ee8cc1Swenshuai.xi     // reset event flag
1088*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_EVENTFLAG, JPD_EVENT_ALL);
1089*53ee8cc1Swenshuai.xi     // reset : low active
1090*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_SCONFIG, 0);
1091*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_SCONFIG, JPD_SWRST);
1092*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_INTEN, JPD_EVENT_ALL);
1093*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("Get S-config : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_SCONFIG));
1094*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("Get M-config : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MCONFIG));
1095*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL Get INTEN : 0x%04X\n",  __HAL_JPD_Read2Byte(BK_JPD_INTEN));
1096*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL Get EVENTFLAG : 0x%04X\n",  __HAL_JPD_Read2Byte(BK_JPD_EVENTFLAG));
1097*53ee8cc1Swenshuai.xi     _HAL_JPD_SetMIUProtectMask(FALSE);
1098*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Rst : end!!\n");
1099*53ee8cc1Swenshuai.xi }
1100*53ee8cc1Swenshuai.xi 
1101*53ee8cc1Swenshuai.xi /******************************************************************************/
1102*53ee8cc1Swenshuai.xi ///
1103*53ee8cc1Swenshuai.xi ///@param value \b IN
1104*53ee8cc1Swenshuai.xi ///@param value \b OUT
1105*53ee8cc1Swenshuai.xi ///@return none
1106*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetMWBuffLineNum(MS_U16 u16Value)1107*53ee8cc1Swenshuai.xi void HAL_JPD_SetMWBuffLineNum(MS_U16 u16Value)
1108*53ee8cc1Swenshuai.xi {
1109*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetMWBuffLineNum : 0x%04X\n", u16Value);
1110*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_MWBF_LINE_NUM, u16Value);
1111*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_Get_MWBF_LINE_NUM : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MWBF_LINE_NUM));
1112*53ee8cc1Swenshuai.xi }
1113*53ee8cc1Swenshuai.xi 
1114*53ee8cc1Swenshuai.xi /******************************************************************************/
1115*53ee8cc1Swenshuai.xi ///
1116*53ee8cc1Swenshuai.xi ///@param value \b IN
1117*53ee8cc1Swenshuai.xi ///@param value \b OUT
1118*53ee8cc1Swenshuai.xi ///@return status
1119*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetCurMRCAddr(void)1120*53ee8cc1Swenshuai.xi MS_U32 HAL_JPD_GetCurMRCAddr(void)
1121*53ee8cc1Swenshuai.xi {
1122*53ee8cc1Swenshuai.xi     MS_U32 curMRCAddr = ((__HAL_JPD_Read2Byte(BK_JPD_CUR_MADR_H) << 16) | __HAL_JPD_Read2Byte(BK_JPD_CUR_MADR_L));
1123*53ee8cc1Swenshuai.xi 
1124*53ee8cc1Swenshuai.xi     return curMRCAddr;
1125*53ee8cc1Swenshuai.xi }
1126*53ee8cc1Swenshuai.xi 
1127*53ee8cc1Swenshuai.xi /******************************************************************************/
1128*53ee8cc1Swenshuai.xi ///
1129*53ee8cc1Swenshuai.xi ///@param value \b IN
1130*53ee8cc1Swenshuai.xi ///@param value \b OUT
1131*53ee8cc1Swenshuai.xi ///@return status
1132*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetCurRow(void)1133*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetCurRow(void)
1134*53ee8cc1Swenshuai.xi {
1135*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_CUR_ROWP);
1136*53ee8cc1Swenshuai.xi }
1137*53ee8cc1Swenshuai.xi 
1138*53ee8cc1Swenshuai.xi /******************************************************************************/
1139*53ee8cc1Swenshuai.xi ///
1140*53ee8cc1Swenshuai.xi ///@param value \b IN
1141*53ee8cc1Swenshuai.xi ///@param value \b OUT
1142*53ee8cc1Swenshuai.xi ///@return status
1143*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetCurCol(void)1144*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetCurCol(void)
1145*53ee8cc1Swenshuai.xi {
1146*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_CUR_CLNP);
1147*53ee8cc1Swenshuai.xi }
1148*53ee8cc1Swenshuai.xi 
1149*53ee8cc1Swenshuai.xi /******************************************************************************/
1150*53ee8cc1Swenshuai.xi ///
1151*53ee8cc1Swenshuai.xi ///@param value \b IN
1152*53ee8cc1Swenshuai.xi ///@param value \b OUT
1153*53ee8cc1Swenshuai.xi ///@return none
1154*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetWriteProtect(MS_BOOL enable)1155*53ee8cc1Swenshuai.xi void HAL_JPD_SetWriteProtect(MS_BOOL enable)
1156*53ee8cc1Swenshuai.xi {
1157*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_JPD_MCONFIG+1, enable, JPD_MWC_WPEN);
1158*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetWriteProtect : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MCONFIG));
1159*53ee8cc1Swenshuai.xi }
1160*53ee8cc1Swenshuai.xi 
1161*53ee8cc1Swenshuai.xi #if (JPD_SUPPORT_AUTO_PROTECT==true)
1162*53ee8cc1Swenshuai.xi /******************************************************************************/
1163*53ee8cc1Swenshuai.xi ///
1164*53ee8cc1Swenshuai.xi ///@param value \b IN
1165*53ee8cc1Swenshuai.xi ///@param value \b OUT
1166*53ee8cc1Swenshuai.xi ///@return none
1167*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetAutoProtect(MS_BOOL enable)1168*53ee8cc1Swenshuai.xi void HAL_JPD_SetAutoProtect(MS_BOOL enable)
1169*53ee8cc1Swenshuai.xi {
1170*53ee8cc1Swenshuai.xi     __HAL_JPD_WriteBit(BK_JPD_AUTO_PROTECT, enable, JPD_AUTO_PROTECT);
1171*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetAutoProtect : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_AUTO_PROTECT));
1172*53ee8cc1Swenshuai.xi }
1173*53ee8cc1Swenshuai.xi 
1174*53ee8cc1Swenshuai.xi /******************************************************************************/
1175*53ee8cc1Swenshuai.xi ///
1176*53ee8cc1Swenshuai.xi ///@param value \b IN
1177*53ee8cc1Swenshuai.xi ///@param value \b OUT
1178*53ee8cc1Swenshuai.xi ///@return status
1179*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetWPENAddrHigh(MS_U16 u16Value)1180*53ee8cc1Swenshuai.xi void HAL_JPD_SetWPENAddrHigh(MS_U16 u16Value)
1181*53ee8cc1Swenshuai.xi {
1182*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetWPENAddrHigh : 0x%04X\n", u16Value);
1183*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_MWC_WPEN_H, u16Value);
1184*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetWPENAddrHigh : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MWC_WPEN_H));
1185*53ee8cc1Swenshuai.xi }
1186*53ee8cc1Swenshuai.xi 
1187*53ee8cc1Swenshuai.xi /******************************************************************************/
1188*53ee8cc1Swenshuai.xi ///
1189*53ee8cc1Swenshuai.xi ///@param value \b IN
1190*53ee8cc1Swenshuai.xi ///@param value \b OUT
1191*53ee8cc1Swenshuai.xi ///@return status
1192*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetWPENAddrLow(MS_U16 u16Value)1193*53ee8cc1Swenshuai.xi void HAL_JPD_SetWPENAddrLow(MS_U16 u16Value)
1194*53ee8cc1Swenshuai.xi {
1195*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetWPENAddrLow : 0x%04X\n", u16Value);
1196*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_MWC_WPEN_L, u16Value);
1197*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetWPENAddrLow : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_MWC_WPEN_L));
1198*53ee8cc1Swenshuai.xi }
1199*53ee8cc1Swenshuai.xi #endif
1200*53ee8cc1Swenshuai.xi 
1201*53ee8cc1Swenshuai.xi /******************************************************************************/
1202*53ee8cc1Swenshuai.xi ///
1203*53ee8cc1Swenshuai.xi ///@param value \b IN
1204*53ee8cc1Swenshuai.xi ///@param value \b OUT
1205*53ee8cc1Swenshuai.xi ///@return status
1206*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_SetSpare(MS_U16 u16Value)1207*53ee8cc1Swenshuai.xi void HAL_JPD_SetSpare(MS_U16 u16Value)
1208*53ee8cc1Swenshuai.xi {
1209*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetSpare : 0x%04X\n", u16Value);
1210*53ee8cc1Swenshuai.xi     __HAL_JPD_Write2Byte(BK_JPD_SPARE, u16Value);
1211*53ee8cc1Swenshuai.xi     JPD_DEBUG_HAL_MSG("HAL_JPD_SetSpare : 0x%04X\n", __HAL_JPD_Read2Byte(BK_JPD_SPARE));
1212*53ee8cc1Swenshuai.xi }
1213*53ee8cc1Swenshuai.xi 
1214*53ee8cc1Swenshuai.xi /******************************************************************************/
1215*53ee8cc1Swenshuai.xi ///
1216*53ee8cc1Swenshuai.xi ///@param value \b IN
1217*53ee8cc1Swenshuai.xi ///@param value \b OUT
1218*53ee8cc1Swenshuai.xi ///@return status
1219*53ee8cc1Swenshuai.xi /******************************************************************************/
HAL_JPD_GetSpare(void)1220*53ee8cc1Swenshuai.xi MS_U16 HAL_JPD_GetSpare(void)
1221*53ee8cc1Swenshuai.xi {
1222*53ee8cc1Swenshuai.xi     return __HAL_JPD_Read2Byte(BK_JPD_SPARE);
1223*53ee8cc1Swenshuai.xi }
1224*53ee8cc1Swenshuai.xi 
1225*53ee8cc1Swenshuai.xi 
1226