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) 2006-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi
95*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi // file halTCF.c
97*53ee8cc1Swenshuai.xi // @brief TCF HAL
98*53ee8cc1Swenshuai.xi // @author MStar Semiconductor,Inc.
99*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
100*53ee8cc1Swenshuai.xi
101*53ee8cc1Swenshuai.xi #include <string.h>
102*53ee8cc1Swenshuai.xi #include "MsCommon.h"
103*53ee8cc1Swenshuai.xi #include "halTCF.h"
104*53ee8cc1Swenshuai.xi #include "regTCF.h"
105*53ee8cc1Swenshuai.xi
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi // Debug Function
109*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
110*53ee8cc1Swenshuai.xi #define _TCF_DBG(fmt, args...) //printf("\033[32m""[DBG]"fmt"\033[m", ## args)
111*53ee8cc1Swenshuai.xi #define _TCF_ERR(fmt, args...) printf("\033[31m""[ERR]"fmt"\033[m", ## args)
112*53ee8cc1Swenshuai.xi
113*53ee8cc1Swenshuai.xi
114*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
115*53ee8cc1Swenshuai.xi // Internal Variable
116*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
117*53ee8cc1Swenshuai.xi static MS_U32 _u32NonPmBankAddr = 0;
118*53ee8cc1Swenshuai.xi static REG_CFCtrl *_CFCtrl = (REG_CFCtrl*)CF_BASE;
119*53ee8cc1Swenshuai.xi static REG_CFKECtrl *_CFKECtrl = (REG_CFKECtrl*)CFKE_BASE;
120*53ee8cc1Swenshuai.xi static REG_CRIKLCtrl *_CRIKLCtrl = (REG_CRIKLCtrl*)CRI_KL_BASE;
121*53ee8cc1Swenshuai.xi
122*53ee8cc1Swenshuai.xi static MS_U16 u16KeyPara[4] = {0}; // Key Parameter-- shared by DSCMB Key, AESDMA Key
123*53ee8cc1Swenshuai.xi
124*53ee8cc1Swenshuai.xi
125*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
126*53ee8cc1Swenshuai.xi // Macro of bit operations
127*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
_REG32_W(REG32 * reg,MS_U32 value)128*53ee8cc1Swenshuai.xi void _REG32_W(REG32 *reg, MS_U32 value)
129*53ee8cc1Swenshuai.xi {
130*53ee8cc1Swenshuai.xi (*((volatile MS_U32*)(reg))) = value;
131*53ee8cc1Swenshuai.xi }
132*53ee8cc1Swenshuai.xi
_REG32_R(REG32 * reg)133*53ee8cc1Swenshuai.xi MS_U32 _REG32_R(REG32 *reg)
134*53ee8cc1Swenshuai.xi {
135*53ee8cc1Swenshuai.xi MS_U32 value = (*(volatile MS_U32*)(reg));
136*53ee8cc1Swenshuai.xi return value;
137*53ee8cc1Swenshuai.xi }
138*53ee8cc1Swenshuai.xi
139*53ee8cc1Swenshuai.xi
140*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
141*53ee8cc1Swenshuai.xi // Inline Function
142*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
HAL_TCF_SetBank(MS_U32 u32NonPmBankAddr)143*53ee8cc1Swenshuai.xi void HAL_TCF_SetBank(MS_U32 u32NonPmBankAddr)
144*53ee8cc1Swenshuai.xi {
145*53ee8cc1Swenshuai.xi _u32NonPmBankAddr = u32NonPmBankAddr;
146*53ee8cc1Swenshuai.xi /// CF
147*53ee8cc1Swenshuai.xi _CFCtrl = (REG_CFCtrl*) (_u32NonPmBankAddr + CF_BASE);
148*53ee8cc1Swenshuai.xi /// CFKE
149*53ee8cc1Swenshuai.xi _CFKECtrl = (REG_CFKECtrl*) (_u32NonPmBankAddr + CFKE_BASE);
150*53ee8cc1Swenshuai.xi
151*53ee8cc1Swenshuai.xi /// CRIKL
152*53ee8cc1Swenshuai.xi _CRIKLCtrl = (REG_CRIKLCtrl*) (_u32NonPmBankAddr + CRI_KL_BASE);
153*53ee8cc1Swenshuai.xi }
154*53ee8cc1Swenshuai.xi
HAL_TCF_Clk(MS_BOOL bEnable)155*53ee8cc1Swenshuai.xi void HAL_TCF_Clk(MS_BOOL bEnable)
156*53ee8cc1Swenshuai.xi {
157*53ee8cc1Swenshuai.xi REG32 *Reg32_Clk_CF = (REG32*)(_u32NonPmBankAddr + CLKGEN0_BASE + REG_CLK_TCF_SEL);
158*53ee8cc1Swenshuai.xi
159*53ee8cc1Swenshuai.xi if(bEnable){
160*53ee8cc1Swenshuai.xi _TCF_DBG("[%s] Enable CF Clock!!\n", __FUNCTION__);
161*53ee8cc1Swenshuai.xi _REG32_W( Reg32_Clk_CF, (_REG32_R( Reg32_Clk_CF)|TCF_CLK_54_MHZ));
162*53ee8cc1Swenshuai.xi }
163*53ee8cc1Swenshuai.xi else{
164*53ee8cc1Swenshuai.xi _TCF_DBG("[%s] Disable CF Clock!!\n", __FUNCTION__);
165*53ee8cc1Swenshuai.xi _REG32_W( Reg32_Clk_CF, (_REG32_R( Reg32_Clk_CF)&~TCF_CLK_54_MHZ));
166*53ee8cc1Swenshuai.xi }
167*53ee8cc1Swenshuai.xi }
168*53ee8cc1Swenshuai.xi
169*53ee8cc1Swenshuai.xi
170*53ee8cc1Swenshuai.xi // CF
171*53ee8cc1Swenshuai.xi //
HAL_CF_Version_Info(HAL_CF_VERSION_INFO * _pstTransStatus)172*53ee8cc1Swenshuai.xi void HAL_CF_Version_Info(HAL_CF_VERSION_INFO *_pstTransStatus)
173*53ee8cc1Swenshuai.xi {
174*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFCtrl[0].Cf_Version);
175*53ee8cc1Swenshuai.xi
176*53ee8cc1Swenshuai.xi _pstTransStatus->_u8ManufacturerId = ((u32Value & CF_VERSION_MANUFACTURER_ID_MASK) >> CF_VERSION_MANUFACTURER_ID_POS);
177*53ee8cc1Swenshuai.xi _pstTransStatus->_u8NetlistVersion = ((u32Value & CF_VERSION_NETLIST_VERSION_MASK) >> CF_VERSION_NETLIST_VERSION_POS);
178*53ee8cc1Swenshuai.xi _pstTransStatus->_u8VersionEpoch = ((u32Value & CF_VERSION_VERSION_EPOCH_MASK) >> CF_VERSION_VERSION_EPOCH_POS);
179*53ee8cc1Swenshuai.xi _pstTransStatus->_u8VersionBuildId = ((u32Value & CF_VERSION_BUILD_ID_MASK) >> CF_VERSION_BUILD_ID_POS);
180*53ee8cc1Swenshuai.xi }
181*53ee8cc1Swenshuai.xi
HAL_CF_Trans_Status(HAL_CF_TRANS_STATUS * _pstStatus)182*53ee8cc1Swenshuai.xi void HAL_CF_Trans_Status(HAL_CF_TRANS_STATUS *_pstStatus)
183*53ee8cc1Swenshuai.xi {
184*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFCtrl[0].Cf_Status);
185*53ee8cc1Swenshuai.xi
186*53ee8cc1Swenshuai.xi _pstStatus->_eTransStatus = ((u32Value & CF_TRANS_STATUS_MASK) >> CF_TRANS_STATUS_POS);
187*53ee8cc1Swenshuai.xi _pstStatus->_u8UseNvmKey = ((u32Value & CF_USE_NVMKEY_MASK) >> CF_USE_NVMKEY_POS);
188*53ee8cc1Swenshuai.xi _pstStatus->_eOperationType = ((u32Value & CF_OPERATION_TYPE_MASK) >> CF_OPERATION_TYPE_POS);
189*53ee8cc1Swenshuai.xi _pstStatus->_eDecmSrc = ((u32Value & CF_DECM_SOURCE_MASK) >> CF_DECM_SOURCE_POS);
190*53ee8cc1Swenshuai.xi _pstStatus->_eOutputUsage = ((u32Value & CF_OUTPUT_USAGE_MASK) >> CF_OUTPUT_USAGE_POS);
191*53ee8cc1Swenshuai.xi _pstStatus->_u8ProductRange = ((u32Value & CF_PRODUCT_RANGE_MASK) >> CF_PRODUCT_RANGE_POS);
192*53ee8cc1Swenshuai.xi _pstStatus->_u8ProductOffset = ((u32Value & CF_PRODUCT_OFFSET_MASK) >> CF_PRODUCT_OFFSET_POS);
193*53ee8cc1Swenshuai.xi }
194*53ee8cc1Swenshuai.xi
HAL_CF_Cf_Status(HAL_CF_CF_STATUS * _pstCfStatus)195*53ee8cc1Swenshuai.xi void HAL_CF_Cf_Status(HAL_CF_CF_STATUS *_pstCfStatus)
196*53ee8cc1Swenshuai.xi {
197*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFCtrl[0].Cf_Status);
198*53ee8cc1Swenshuai.xi _pstCfStatus->_eNvmStatus = ((u32Value & CF_NVM_STATUS_MASK) >> CF_NVM_STATUS_POS);
199*53ee8cc1Swenshuai.xi _pstCfStatus->_eDiffStatus = ((u32Value & CF_DIFF_STATUS_MASK) >> CF_DIFF_STATUS_POS);
200*53ee8cc1Swenshuai.xi
201*53ee8cc1Swenshuai.xi u32Value= _REG32_R( &_CFCtrl[0].Cf_Platform);
202*53ee8cc1Swenshuai.xi if( ((_REG32_R( &_CFCtrl[0].Cf_Version) & CF_VERSION_NETLIST_VERSION_MASK) >> CF_VERSION_NETLIST_VERSION_POS) == 0 ) // Netlist Version 0
203*53ee8cc1Swenshuai.xi {
204*53ee8cc1Swenshuai.xi _pstCfStatus->_u8RecentReset = ((u32Value & CF_PLATFORM_RECENT_RESET_MASK) >> CF_PLATFORM_RECENT_RESET_POS);
205*53ee8cc1Swenshuai.xi _pstCfStatus->_u8CfAlert = ((u32Value & CF_PLATFORM_CF_ALERT_MASK) >> CF_PLATFORM_CF_ALERT_POS);
206*53ee8cc1Swenshuai.xi // Netlist Version 0 has no development mode bit.
207*53ee8cc1Swenshuai.xi _pstCfStatus->_u8DevelopmentMode = 0x0;
208*53ee8cc1Swenshuai.xi // Netlist Version 0 has a different Fuse Activate and Fuse Block positions.
209*53ee8cc1Swenshuai.xi _pstCfStatus->_u8FuseActivate = ((u32Value & 0x00200000) >> 21);
210*53ee8cc1Swenshuai.xi _pstCfStatus->_u8FuseBlock = ((u32Value & 0x00100000) >> 20);
211*53ee8cc1Swenshuai.xi }
212*53ee8cc1Swenshuai.xi else
213*53ee8cc1Swenshuai.xi {
214*53ee8cc1Swenshuai.xi _pstCfStatus->_u8RecentReset = ((u32Value & CF_PLATFORM_RECENT_RESET_MASK) >> CF_PLATFORM_RECENT_RESET_POS);
215*53ee8cc1Swenshuai.xi _pstCfStatus->_u8CfAlert = ((u32Value & CF_PLATFORM_CF_ALERT_MASK) >> CF_PLATFORM_CF_ALERT_POS);
216*53ee8cc1Swenshuai.xi _pstCfStatus->_u8DevelopmentMode = ((u32Value & CF_PLATFORM_DEVELOPMENT_MODE_MASK) >> CF_PLATFORM_DEVELOPMENT_MODE_POS);
217*53ee8cc1Swenshuai.xi _pstCfStatus->_u8FuseActivate = ((u32Value & CF_PLATFORM_CF_ACTIVATED_MASK) >> CF_PLATFORM_CF_ACTIVATED_POS);
218*53ee8cc1Swenshuai.xi _pstCfStatus->_u8FuseBlock = ((u32Value & 0x00000080) >> 7);
219*53ee8cc1Swenshuai.xi }
220*53ee8cc1Swenshuai.xi }
221*53ee8cc1Swenshuai.xi
HAL_CF_Cf_FeatureVector(HAL_CF_FEATURE_VECTOR * _pstCfFeature)222*53ee8cc1Swenshuai.xi void HAL_CF_Cf_FeatureVector(HAL_CF_FEATURE_VECTOR *_pstCfFeature)
223*53ee8cc1Swenshuai.xi {
224*53ee8cc1Swenshuai.xi _pstCfFeature->_u32FeatureVector= _REG32_R( &_CFCtrl[0].Cf_Feature);
225*53ee8cc1Swenshuai.xi }
226*53ee8cc1Swenshuai.xi
HAL_CF_Get_Trans_Status(void)227*53ee8cc1Swenshuai.xi MS_U8 HAL_CF_Get_Trans_Status(void)
228*53ee8cc1Swenshuai.xi {
229*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFCtrl[0].Cf_Status);
230*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s] === Trans_Status= 0x%08lx ===\n", __FUNCTION__, u32Value);
231*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CF_TRANS_STATUS_MASK) >> CF_TRANS_STATUS_POS);
232*53ee8cc1Swenshuai.xi }
233*53ee8cc1Swenshuai.xi
HAL_CF_Get_Operation_Type(void)234*53ee8cc1Swenshuai.xi MS_U8 HAL_CF_Get_Operation_Type(void)
235*53ee8cc1Swenshuai.xi {
236*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFCtrl[0].Cf_Status);
237*53ee8cc1Swenshuai.xi
238*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CF_OPERATION_TYPE_MASK) >> CF_OPERATION_TYPE_POS);
239*53ee8cc1Swenshuai.xi }
240*53ee8cc1Swenshuai.xi
HAL_CF_Get_CwcValid(void)241*53ee8cc1Swenshuai.xi MS_U8 HAL_CF_Get_CwcValid(void)
242*53ee8cc1Swenshuai.xi {
243*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFCtrl[0].Cf_Platform);
244*53ee8cc1Swenshuai.xi
245*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CF_PLATFORM_CWC_VALID_MASK) >> CF_PLATFORM_CWC_VALID_POS);
246*53ee8cc1Swenshuai.xi }
247*53ee8cc1Swenshuai.xi
HAL_CF_Read_Input(void)248*53ee8cc1Swenshuai.xi MS_U32 HAL_CF_Read_Input(void)
249*53ee8cc1Swenshuai.xi {
250*53ee8cc1Swenshuai.xi return _REG32_R( &_CFCtrl[0].Cf_Input);
251*53ee8cc1Swenshuai.xi }
252*53ee8cc1Swenshuai.xi
HAL_CF_Read_Output(void)253*53ee8cc1Swenshuai.xi MS_U32 HAL_CF_Read_Output(void)
254*53ee8cc1Swenshuai.xi {
255*53ee8cc1Swenshuai.xi return _REG32_R( &_CFCtrl[0].Cf_Output);
256*53ee8cc1Swenshuai.xi }
257*53ee8cc1Swenshuai.xi
HAL_CF_Write_Input(MS_U32 u32Cmd)258*53ee8cc1Swenshuai.xi void HAL_CF_Write_Input(MS_U32 u32Cmd)
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi _REG32_W( &_CFCtrl[0].Cf_Input, u32Cmd);
261*53ee8cc1Swenshuai.xi }
262*53ee8cc1Swenshuai.xi
HAL_CF_Write_Output(MS_U32 u32Cmd)263*53ee8cc1Swenshuai.xi void HAL_CF_Write_Output(MS_U32 u32Cmd)
264*53ee8cc1Swenshuai.xi {
265*53ee8cc1Swenshuai.xi _REG32_W( &_CFCtrl[0].Cf_Output, u32Cmd);
266*53ee8cc1Swenshuai.xi }
267*53ee8cc1Swenshuai.xi
268*53ee8cc1Swenshuai.xi #define _CF_TRANS_STATUS_BUSY_OP 0x4
HAL_CF_Get_CF_IsFinished(void)269*53ee8cc1Swenshuai.xi MS_U8 HAL_CF_Get_CF_IsFinished(void)
270*53ee8cc1Swenshuai.xi {
271*53ee8cc1Swenshuai.xi if( HAL_CF_Get_Trans_Status()==_CF_TRANS_STATUS_BUSY_OP ){
272*53ee8cc1Swenshuai.xi return FALSE;
273*53ee8cc1Swenshuai.xi }
274*53ee8cc1Swenshuai.xi else{
275*53ee8cc1Swenshuai.xi return TRUE;
276*53ee8cc1Swenshuai.xi }
277*53ee8cc1Swenshuai.xi }
278*53ee8cc1Swenshuai.xi
279*53ee8cc1Swenshuai.xi
280*53ee8cc1Swenshuai.xi // CFKE
281*53ee8cc1Swenshuai.xi //
HAL_CFKE_Get_OperationStatus(void)282*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_OperationStatus(void)
283*53ee8cc1Swenshuai.xi {
284*53ee8cc1Swenshuai.xi // CFKE_STATUS [31:28]
285*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
286*53ee8cc1Swenshuai.xi
287*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_OPERATION_STATUS_MASK) >> CFKE_OPERATION_STATUS_POS);
288*53ee8cc1Swenshuai.xi }
HAL_CFKE_Get_OperationCount(void)289*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_OperationCount(void)
290*53ee8cc1Swenshuai.xi {
291*53ee8cc1Swenshuai.xi // CFKE_STATUS [27:20]
292*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
293*53ee8cc1Swenshuai.xi
294*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_OPERATION_COUNT_MASK) >> CFKE_OPERATION_COUNT_POS);
295*53ee8cc1Swenshuai.xi }
HAL_CFKE_Get_ErrorCode(void)296*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_ErrorCode(void)
297*53ee8cc1Swenshuai.xi {
298*53ee8cc1Swenshuai.xi // CFKE_STATUS [19:16]
299*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
300*53ee8cc1Swenshuai.xi
301*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_ERROR_CODE_MASK) >> CFKE_ERROR_CODE_POS);
302*53ee8cc1Swenshuai.xi }
HAL_CFKE_Get_OperationType(void)303*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_OperationType(void)
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi // CFKE_STATUS [15:12]
306*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
307*53ee8cc1Swenshuai.xi
308*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_OPERATION_TYPE_MASK) >> CFKE_OPERATION_TYPE_POS);
309*53ee8cc1Swenshuai.xi }
HAL_CFKE_Get_DiffAllowNonUnw(void)310*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_DiffAllowNonUnw(void)
311*53ee8cc1Swenshuai.xi {
312*53ee8cc1Swenshuai.xi // CFKE_STATUS [3]
313*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
314*53ee8cc1Swenshuai.xi
315*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_DIFF_ALLOW_NON_UNW_MASK) >> CFKE_DIFF_ALLOW_NON_UNW_POS);
316*53ee8cc1Swenshuai.xi }
HAL_CFKE_Get_DiffAllowCk(void)317*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_DiffAllowCk(void)
318*53ee8cc1Swenshuai.xi {
319*53ee8cc1Swenshuai.xi // CFKE_STATUS [2]
320*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
321*53ee8cc1Swenshuai.xi
322*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_DIFF_ALLOW_CK_MASK) >> CFKE_DIFF_ALLOW_CK_POS);
323*53ee8cc1Swenshuai.xi }
HAL_CFKE_Get_DiffContentOutputAllowed(void)324*53ee8cc1Swenshuai.xi MS_U8 HAL_CFKE_Get_DiffContentOutputAllowed(void)
325*53ee8cc1Swenshuai.xi {
326*53ee8cc1Swenshuai.xi // CFKE_STATUS [1:0]
327*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Status);
328*53ee8cc1Swenshuai.xi
329*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_DIFF_CONTENT_OUTPUT_ALLOWED_MASK) >> CFKE_DIFF_CONTENT_OUTPUT_ALLOWED_POS);
330*53ee8cc1Swenshuai.xi }
331*53ee8cc1Swenshuai.xi
332*53ee8cc1Swenshuai.xi
HAL_CFKE_Read_Command(void)333*53ee8cc1Swenshuai.xi MS_U32 HAL_CFKE_Read_Command(void)
334*53ee8cc1Swenshuai.xi {
335*53ee8cc1Swenshuai.xi return _REG32_R( &_CFKECtrl[0].Cfke_Command);
336*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_Command(MS_U32 u32Cmd)337*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_Command(MS_U32 u32Cmd)
338*53ee8cc1Swenshuai.xi {
339*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
340*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Command, u32Cmd);
341*53ee8cc1Swenshuai.xi }
342*53ee8cc1Swenshuai.xi
343*53ee8cc1Swenshuai.xi
HAL_CFKE_Read_Platform(void)344*53ee8cc1Swenshuai.xi MS_U32 HAL_CFKE_Read_Platform(void)
345*53ee8cc1Swenshuai.xi {
346*53ee8cc1Swenshuai.xi return _REG32_R( &_CFKECtrl[0].Cfke_Platform);
347*53ee8cc1Swenshuai.xi }
348*53ee8cc1Swenshuai.xi
HAL_CFKE_IsTransactionDone(void)349*53ee8cc1Swenshuai.xi MS_BOOL HAL_CFKE_IsTransactionDone(void)
350*53ee8cc1Swenshuai.xi {
351*53ee8cc1Swenshuai.xi // CFKE_PLATFORM [30]
352*53ee8cc1Swenshuai.xi MS_U32 u32Value= _REG32_R( &_CFKECtrl[0].Cfke_Platform);
353*53ee8cc1Swenshuai.xi
354*53ee8cc1Swenshuai.xi return (MS_U8)((u32Value & CFKE_TRANSACTION_DONE_MASK) >> CFKE_TRANSACTION_DONE_POS);
355*53ee8cc1Swenshuai.xi }
356*53ee8cc1Swenshuai.xi
357*53ee8cc1Swenshuai.xi
HAL_CFKE_Read_UnwPath(void)358*53ee8cc1Swenshuai.xi MS_U32 HAL_CFKE_Read_UnwPath(void)
359*53ee8cc1Swenshuai.xi {
360*53ee8cc1Swenshuai.xi return _REG32_R( &_CFKECtrl[0].Cfke_Unw_Path);
361*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_UnwPath(MS_U32 u32Cmd)362*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_UnwPath(MS_U32 u32Cmd)
363*53ee8cc1Swenshuai.xi {
364*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
365*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Unw_Path, u32Cmd);
366*53ee8cc1Swenshuai.xi }
367*53ee8cc1Swenshuai.xi
368*53ee8cc1Swenshuai.xi
HAL_CFKE_Read_Validator0(void)369*53ee8cc1Swenshuai.xi MS_U32 HAL_CFKE_Read_Validator0(void)
370*53ee8cc1Swenshuai.xi {
371*53ee8cc1Swenshuai.xi return _REG32_R( &_CFKECtrl[0].Cfke_Validator_0);
372*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_Validator0(MS_U32 u32Cmd)373*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_Validator0(MS_U32 u32Cmd)
374*53ee8cc1Swenshuai.xi {
375*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
376*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Validator_0, u32Cmd);
377*53ee8cc1Swenshuai.xi }
378*53ee8cc1Swenshuai.xi
379*53ee8cc1Swenshuai.xi
HAL_CFKE_Read_Validator1(void)380*53ee8cc1Swenshuai.xi MS_U32 HAL_CFKE_Read_Validator1(void)
381*53ee8cc1Swenshuai.xi {
382*53ee8cc1Swenshuai.xi return _REG32_R( &_CFKECtrl[0].Cfke_Validator_1);
383*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_Validator1(MS_U32 u32Cmd)384*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_Validator1(MS_U32 u32Cmd)
385*53ee8cc1Swenshuai.xi {
386*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
387*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Validator_1, u32Cmd);
388*53ee8cc1Swenshuai.xi }
389*53ee8cc1Swenshuai.xi
390*53ee8cc1Swenshuai.xi
HAL_CFKE_Write_SlotA(MS_U32 u32Cmd)391*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_SlotA(MS_U32 u32Cmd)
392*53ee8cc1Swenshuai.xi {
393*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
394*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Slot_A, u32Cmd);
395*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_SlotB(MS_U32 u32Cmd)396*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_SlotB(MS_U32 u32Cmd)
397*53ee8cc1Swenshuai.xi {
398*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
399*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Slot_B, u32Cmd);
400*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_SlotC(MS_U32 u32Cmd)401*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_SlotC(MS_U32 u32Cmd)
402*53ee8cc1Swenshuai.xi {
403*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
404*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Slot_C, u32Cmd);
405*53ee8cc1Swenshuai.xi }
HAL_CFKE_Write_SlotD(MS_U32 u32Cmd)406*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_SlotD(MS_U32 u32Cmd)
407*53ee8cc1Swenshuai.xi {
408*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
409*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_Slot_D, u32Cmd);
410*53ee8cc1Swenshuai.xi }
411*53ee8cc1Swenshuai.xi
HAL_CFKE_Write_UserHash(MS_U32 u32Cmd)412*53ee8cc1Swenshuai.xi void HAL_CFKE_Write_UserHash(MS_U32 u32Cmd)
413*53ee8cc1Swenshuai.xi {
414*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u32Cmd= 0x%08lx\n", __FUNCTION__, __LINE__, u32Cmd);
415*53ee8cc1Swenshuai.xi _REG32_W( &_CFKECtrl[0].Cfke_User_Hash, u32Cmd);
416*53ee8cc1Swenshuai.xi }
417*53ee8cc1Swenshuai.xi
418*53ee8cc1Swenshuai.xi
419*53ee8cc1Swenshuai.xi // CRIKL
420*53ee8cc1Swenshuai.xi //
HAL_CRIKL_Read_CfStatus(void)421*53ee8cc1Swenshuai.xi MS_U32 HAL_CRIKL_Read_CfStatus(void)
422*53ee8cc1Swenshuai.xi {
423*53ee8cc1Swenshuai.xi MS_U32 u32Val = 0;
424*53ee8cc1Swenshuai.xi
425*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cfstatusout_h)&0xffff)<<16;
426*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cfstatusout_l)&0xffff);
427*53ee8cc1Swenshuai.xi return u32Val;
428*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_CfkeStatus(void)429*53ee8cc1Swenshuai.xi MS_U32 HAL_CRIKL_Read_CfkeStatus(void)
430*53ee8cc1Swenshuai.xi {
431*53ee8cc1Swenshuai.xi MS_U32 u32Val = 0;
432*53ee8cc1Swenshuai.xi
433*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cfkestatusout_h)&0xffff)<<16;
434*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cfkestatusout_l)&0xffff);
435*53ee8cc1Swenshuai.xi return u32Val;
436*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_CfPlatform(void)437*53ee8cc1Swenshuai.xi MS_U32 HAL_CRIKL_Read_CfPlatform(void)
438*53ee8cc1Swenshuai.xi {
439*53ee8cc1Swenshuai.xi MS_U32 u32Val = 0;
440*53ee8cc1Swenshuai.xi
441*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cfplatformout_h)&0xffff)<<16;
442*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cfplatformout_l)&0xffff);
443*53ee8cc1Swenshuai.xi return u32Val;
444*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_CfFeature(void)445*53ee8cc1Swenshuai.xi MS_U32 HAL_CRIKL_Read_CfFeature(void)
446*53ee8cc1Swenshuai.xi {
447*53ee8cc1Swenshuai.xi MS_U32 u32Val = 0;
448*53ee8cc1Swenshuai.xi
449*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cffeatureout_h)&0xffff)<<16;
450*53ee8cc1Swenshuai.xi u32Val |= (_REG32_R( &_CRIKLCtrl[0].reg_cffeatureout_l)&0xffff);
451*53ee8cc1Swenshuai.xi return u32Val;
452*53ee8cc1Swenshuai.xi }
453*53ee8cc1Swenshuai.xi
HAL_CRIKL_Set_KTIndex(MS_U8 eScmbCtl,MS_U8 u8DscmbId)454*53ee8cc1Swenshuai.xi void HAL_CRIKL_Set_KTIndex( MS_U8 eScmbCtl, MS_U8 u8DscmbId)
455*53ee8cc1Swenshuai.xi {
456*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u16KtIdx= 0x%1x%1x\n", __FUNCTION__, __LINE__, eScmbCtl, u8DscmbId);
457*53ee8cc1Swenshuai.xi
458*53ee8cc1Swenshuai.xi MS_U16 u16KtIdx = 0;
459*53ee8cc1Swenshuai.xi u16KtIdx |= eScmbCtl << CRI_KT_SCMB_CTL_POS;
460*53ee8cc1Swenshuai.xi u16KtIdx |= u8DscmbId;
461*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_kt_index, (MS_U32)u16KtIdx);
462*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KTPara_High_HalfWord(MS_U16 u16HalfWord)463*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KTPara_High_HalfWord(MS_U16 u16HalfWord)
464*53ee8cc1Swenshuai.xi {
465*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
466*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_kt_para_63_48, (MS_U32)u16HalfWord);
467*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KTPara_2nd_HalfWord(MS_U16 u16HalfWord)468*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KTPara_2nd_HalfWord(MS_U16 u16HalfWord)
469*53ee8cc1Swenshuai.xi {
470*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
471*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_kt_para_47_32, (MS_U32)u16HalfWord);
472*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KTPara_3rd_HalfWord(MS_U16 u16HalfWord)473*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KTPara_3rd_HalfWord(MS_U16 u16HalfWord)
474*53ee8cc1Swenshuai.xi {
475*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
476*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_kt_para_31_16, (MS_U32)u16HalfWord);
477*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KTPara_Low_HalfWord(MS_U16 u16HalfWord)478*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KTPara_Low_HalfWord(MS_U16 u16HalfWord)
479*53ee8cc1Swenshuai.xi {
480*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
481*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_kt_para_15_00, (MS_U32)u16HalfWord);
482*53ee8cc1Swenshuai.xi }
483*53ee8cc1Swenshuai.xi
HAL_CRIKL_Read_KTIndex(void)484*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KTIndex(void)
485*53ee8cc1Swenshuai.xi {
486*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_kt_index))&0xFFFF;
487*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KTPara_High_HalfWord(void)488*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KTPara_High_HalfWord(void)
489*53ee8cc1Swenshuai.xi {
490*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_kt_para_63_48))&0xFFFF;
491*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KTPara_2nd_HalfWord(void)492*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KTPara_2nd_HalfWord(void)
493*53ee8cc1Swenshuai.xi {
494*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_kt_para_47_32))&0xFFFF;
495*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KTPara_3rd_HalfWord(void)496*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KTPara_3rd_HalfWord(void)
497*53ee8cc1Swenshuai.xi {
498*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_kt_para_31_16))&0xFFFF;
499*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KTPara_Low_HalfWord(void)500*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KTPara_Low_HalfWord(void)
501*53ee8cc1Swenshuai.xi {
502*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_kt_para_15_00))&0xFFFF;
503*53ee8cc1Swenshuai.xi }
504*53ee8cc1Swenshuai.xi
505*53ee8cc1Swenshuai.xi
506*53ee8cc1Swenshuai.xi
HAL_CRIKL_Set_KSIndex(MS_U8 u8KsIdx)507*53ee8cc1Swenshuai.xi void HAL_CRIKL_Set_KSIndex(MS_U8 u8KsIdx)
508*53ee8cc1Swenshuai.xi {
509*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] u16KsIdx= 0x%02x\n", __FUNCTION__, __LINE__, u8KsIdx);
510*53ee8cc1Swenshuai.xi
511*53ee8cc1Swenshuai.xi MS_U16 u16KsIdx = 0;
512*53ee8cc1Swenshuai.xi u16KsIdx |= (u8KsIdx&CRI_KS_IDX_VAL_MASK);
513*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_ks_index, (MS_U32)u16KsIdx);
514*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KSPara_High_HalfWord(MS_U16 u16HalfWord)515*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KSPara_High_HalfWord(MS_U16 u16HalfWord)
516*53ee8cc1Swenshuai.xi {
517*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
518*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_ks_para_63_48, (MS_U32)u16HalfWord);
519*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KSPara_2nd_HalfWord(MS_U16 u16HalfWord)520*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KSPara_2nd_HalfWord(MS_U16 u16HalfWord)
521*53ee8cc1Swenshuai.xi {
522*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
523*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_ks_para_47_32, (MS_U32)u16HalfWord);
524*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KSPara_3rd_HalfWord(MS_U16 u16HalfWord)525*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KSPara_3rd_HalfWord(MS_U16 u16HalfWord)
526*53ee8cc1Swenshuai.xi {
527*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
528*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_ks_para_31_16, (MS_U32)u16HalfWord);
529*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KSPara_Low_HalfWord(MS_U16 u16HalfWord)530*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KSPara_Low_HalfWord(MS_U16 u16HalfWord)
531*53ee8cc1Swenshuai.xi {
532*53ee8cc1Swenshuai.xi //_TCF_DBG("[%s][%d] u16HalfWord= 0x%08x\n", __FUNCTION__, __LINE__, u16HalfWord);
533*53ee8cc1Swenshuai.xi _REG32_W( &_CRIKLCtrl[0].reg_cri_ks_para_15_00, (MS_U32)u16HalfWord);
534*53ee8cc1Swenshuai.xi }
535*53ee8cc1Swenshuai.xi
HAL_CRIKL_Read_KSIndex(void)536*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KSIndex(void)
537*53ee8cc1Swenshuai.xi {
538*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_ks_index))&0xFFFF;
539*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KSPara_High_HalfWord(void)540*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KSPara_High_HalfWord(void)
541*53ee8cc1Swenshuai.xi {
542*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_ks_para_63_48))&0xFFFF;
543*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KSPara_2nd_HalfWord(void)544*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KSPara_2nd_HalfWord(void)
545*53ee8cc1Swenshuai.xi {
546*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_ks_para_47_32))&0xFFFF;
547*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KSPara_3rd_HalfWord(void)548*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KSPara_3rd_HalfWord(void)
549*53ee8cc1Swenshuai.xi {
550*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_ks_para_31_16))&0xFFFF;
551*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Read_KSPara_Low_HalfWord(void)552*53ee8cc1Swenshuai.xi MS_U16 HAL_CRIKL_Read_KSPara_Low_HalfWord(void)
553*53ee8cc1Swenshuai.xi {
554*53ee8cc1Swenshuai.xi return (_REG32_R( &_CRIKLCtrl[0].reg_cri_ks_para_15_00))&0xFFFF;
555*53ee8cc1Swenshuai.xi }
556*53ee8cc1Swenshuai.xi
HAL_CRIKL_Reset_KeyPara(void)557*53ee8cc1Swenshuai.xi void HAL_CRIKL_Reset_KeyPara(void)
558*53ee8cc1Swenshuai.xi {
559*53ee8cc1Swenshuai.xi memset( (void*)u16KeyPara, 0x0, sizeof(u16KeyPara));
560*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Write_KeyPara(MS_BOOL bDscmbKey)561*53ee8cc1Swenshuai.xi void HAL_CRIKL_Write_KeyPara(MS_BOOL bDscmbKey)
562*53ee8cc1Swenshuai.xi {
563*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] Setup %s Parameter\n", __FUNCTION__, __LINE__, (bDscmbKey)? "Key Table":"Key Slot");
564*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] >>> 0x%04X\n", __FUNCTION__, __LINE__, u16KeyPara[3]);
565*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] >>> 0x%04X\n", __FUNCTION__, __LINE__, u16KeyPara[2]);
566*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] >>> 0x%04X\n", __FUNCTION__, __LINE__, u16KeyPara[1]);
567*53ee8cc1Swenshuai.xi _TCF_DBG("[%s][%d] >>> 0x%04X\n", __FUNCTION__, __LINE__, u16KeyPara[0]);
568*53ee8cc1Swenshuai.xi
569*53ee8cc1Swenshuai.xi if(bDscmbKey){
570*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KTPara_High_HalfWord( u16KeyPara[3]);
571*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KTPara_2nd_HalfWord( u16KeyPara[2]);
572*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KTPara_3rd_HalfWord( u16KeyPara[1]);
573*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KTPara_Low_HalfWord( u16KeyPara[0]);
574*53ee8cc1Swenshuai.xi }
575*53ee8cc1Swenshuai.xi else{
576*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KSPara_High_HalfWord( u16KeyPara[3]);
577*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KSPara_2nd_HalfWord( u16KeyPara[2]);
578*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KSPara_3rd_HalfWord( u16KeyPara[1]);
579*53ee8cc1Swenshuai.xi HAL_CRIKL_Write_KSPara_Low_HalfWord( u16KeyPara[0]);
580*53ee8cc1Swenshuai.xi }
581*53ee8cc1Swenshuai.xi }
582*53ee8cc1Swenshuai.xi
HAL_CRIKL_Setup_VendorNo(MS_BOOL bDscmbKey,MS_U8 u8VendorNo)583*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_VendorNo(MS_BOOL bDscmbKey, MS_U8 u8VendorNo)
584*53ee8cc1Swenshuai.xi {
585*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
586*53ee8cc1Swenshuai.xi u16KeyPara[3] |= u8VendorNo << CRI_KT_VENDOR_NO_POS;
587*53ee8cc1Swenshuai.xi }
588*53ee8cc1Swenshuai.xi else{ // Key Slot
589*53ee8cc1Swenshuai.xi u16KeyPara[3] |= u8VendorNo << CRI_KS_VENDOR_NO_POS;
590*53ee8cc1Swenshuai.xi }
591*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_VendorAtt(MS_BOOL bDscmbKey,MS_U16 u16VendorAtt)592*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_VendorAtt(MS_BOOL bDscmbKey, MS_U16 u16VendorAtt)
593*53ee8cc1Swenshuai.xi {
594*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
595*53ee8cc1Swenshuai.xi u16KeyPara[3] |= ((u16VendorAtt&CRI_KT_VENDOR_ATT_H_VAL_MASK)>>CRI_KT_VENDOR_ATT_L_OFFSET) << CRI_KT_VENDOR_ATT_H_POS;
596*53ee8cc1Swenshuai.xi u16KeyPara[2] |= (u16VendorAtt&CRI_KT_VENDOR_ATT_L_VAL_MASK) << CRI_KT_VENDOR_ATT_L_POS;
597*53ee8cc1Swenshuai.xi }
598*53ee8cc1Swenshuai.xi else{ // Key Slot
599*53ee8cc1Swenshuai.xi u16KeyPara[3] |= ((u16VendorAtt&CRI_KS_VENDOR_ATT_H_VAL_MASK)>>CRI_KS_VENDOR_ATT_L_OFFSET) << CRI_KS_VENDOR_ATT_H_POS;
600*53ee8cc1Swenshuai.xi u16KeyPara[2] |= (u16VendorAtt&CRI_KS_VENDOR_ATT_L_VAL_MASK) << CRI_KS_VENDOR_ATT_L_POS;
601*53ee8cc1Swenshuai.xi }
602*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_OutputAllowed(MS_BOOL bDscmbKey,MS_U8 u8OutputAllowed)603*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_OutputAllowed(MS_BOOL bDscmbKey, MS_U8 u8OutputAllowed)
604*53ee8cc1Swenshuai.xi {
605*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
606*53ee8cc1Swenshuai.xi u16KeyPara[2] |= u8OutputAllowed << CRI_KT_OUTPUT_ALLOWED_POS;
607*53ee8cc1Swenshuai.xi }
608*53ee8cc1Swenshuai.xi else{ // Key Slot
609*53ee8cc1Swenshuai.xi u16KeyPara[2] |= u8OutputAllowed << CRI_KS_OUTPUT_ALLOWED_POS;
610*53ee8cc1Swenshuai.xi }
611*53ee8cc1Swenshuai.xi }
612*53ee8cc1Swenshuai.xi
HAL_CRIKL_Setup_bMultiEng(MS_BOOL bDscmbKey,MS_BOOL bMultiEng)613*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_bMultiEng(MS_BOOL bDscmbKey, MS_BOOL bMultiEng)
614*53ee8cc1Swenshuai.xi {
615*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
616*53ee8cc1Swenshuai.xi u16KeyPara[2] |= ((bMultiEng)? 1:0) << CRI_KT_MULTI_ENG_POS;
617*53ee8cc1Swenshuai.xi }
618*53ee8cc1Swenshuai.xi else{ // Key Slot
619*53ee8cc1Swenshuai.xi u16KeyPara[2] |= ((bMultiEng)? 1:0) << CRI_KS_MULTI_ENG_POS;
620*53ee8cc1Swenshuai.xi }
621*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_bLsb64(MS_BOOL bDscmbKey,MS_BOOL bLsb64)622*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_bLsb64(MS_BOOL bDscmbKey, MS_BOOL bLsb64)
623*53ee8cc1Swenshuai.xi {
624*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
625*53ee8cc1Swenshuai.xi u16KeyPara[2] |= ((bLsb64)? 1:0) << CRI_KT_LSB64_POS;
626*53ee8cc1Swenshuai.xi }
627*53ee8cc1Swenshuai.xi else{ // Key Slot
628*53ee8cc1Swenshuai.xi u16KeyPara[2] |= ((bLsb64)? 1:0) << CRI_KS_LSB64_POS;
629*53ee8cc1Swenshuai.xi }
630*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_KeySize(MS_BOOL bDscmbKey,MS_U8 eKeySize)631*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_KeySize(MS_BOOL bDscmbKey, MS_U8 eKeySize)
632*53ee8cc1Swenshuai.xi {
633*53ee8cc1Swenshuai.xi MS_U8 u8Pos = 0;
634*53ee8cc1Swenshuai.xi
635*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
636*53ee8cc1Swenshuai.xi switch(eKeySize){
637*53ee8cc1Swenshuai.xi case 0: u8Pos = CRI_KT_KEY_SIZE_64_POS; break;
638*53ee8cc1Swenshuai.xi case 1: u8Pos = CRI_KT_KEY_SIZE_128_POS; break;
639*53ee8cc1Swenshuai.xi case 2: u8Pos = CRI_KT_KEY_SIZE_192_POS; break;
640*53ee8cc1Swenshuai.xi case 3: u8Pos = CRI_KT_KEY_SIZE_256_POS; break;
641*53ee8cc1Swenshuai.xi default: break;
642*53ee8cc1Swenshuai.xi }
643*53ee8cc1Swenshuai.xi }
644*53ee8cc1Swenshuai.xi else{ // Key Slot
645*53ee8cc1Swenshuai.xi switch(eKeySize){
646*53ee8cc1Swenshuai.xi case 0: u8Pos = CRI_KS_KEY_SIZE_64_POS; break;
647*53ee8cc1Swenshuai.xi case 1: u8Pos = CRI_KS_KEY_SIZE_128_POS; break;
648*53ee8cc1Swenshuai.xi case 2: u8Pos = CRI_KS_KEY_SIZE_192_POS; break;
649*53ee8cc1Swenshuai.xi case 3: u8Pos = CRI_KS_KEY_SIZE_256_POS; break;
650*53ee8cc1Swenshuai.xi default: break;
651*53ee8cc1Swenshuai.xi }
652*53ee8cc1Swenshuai.xi }
653*53ee8cc1Swenshuai.xi
654*53ee8cc1Swenshuai.xi u16KeyPara[2] |= 1 << u8Pos;
655*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_KeyEngine(MS_BOOL bDscmbKey,MS_U8 u8KeyEng)656*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_KeyEngine(MS_BOOL bDscmbKey, MS_U8 u8KeyEng)
657*53ee8cc1Swenshuai.xi {
658*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
659*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_NPD*/0x80&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_NPD_POS;}
660*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_MULTI2*/0x40&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_MULTI2_POS;}
661*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_CSAV2*/0x20&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_CSAV2_POS;}
662*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_CSAV3*/0x10&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_CSAV3_POS;}
663*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_ASA*/0x08&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_ASA_POS;}
664*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_DES*/0x04&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_DES_POS;}
665*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_TDES*/0x02&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_TDES_POS;}
666*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_AES*/0x01&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KT_ENG_AES_POS;}
667*53ee8cc1Swenshuai.xi }
668*53ee8cc1Swenshuai.xi else{ // Key Slot
669*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_NPD*/0x80&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_NPD_POS;}
670*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_MULTI2*/0x40&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_MULTI2_POS;}
671*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_CSAV2*/0x20&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_CSAV2_POS;}
672*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_CSAV3*/0x10&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_CSAV3_POS;}
673*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_ASA*/0x08&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_ASA_POS;}
674*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_DES*/0x04&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_DES_POS;}
675*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_TDES*/0x02&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_TDES_POS;}
676*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_ENG_AES*/0x01&u8KeyEng ) { u16KeyPara[1] |= 1 << CRI_KS_ENG_AES_POS;}
677*53ee8cc1Swenshuai.xi }
678*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_Drop(MS_BOOL bDscmbKey,MS_U8 u8Drop)679*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_Drop(MS_BOOL bDscmbKey, MS_U8 u8Drop)
680*53ee8cc1Swenshuai.xi {
681*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
682*53ee8cc1Swenshuai.xi u16KeyPara[1] |= u8Drop << CRI_KT_DROP_POS;
683*53ee8cc1Swenshuai.xi }
684*53ee8cc1Swenshuai.xi else{ // Key Slot
685*53ee8cc1Swenshuai.xi u16KeyPara[1] |= u8Drop << CRI_KS_DROP_POS;
686*53ee8cc1Swenshuai.xi }
687*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_Cnt(MS_BOOL bDscmbKey,MS_U8 u8Cnt)688*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_Cnt(MS_BOOL bDscmbKey, MS_U8 u8Cnt)
689*53ee8cc1Swenshuai.xi {
690*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
691*53ee8cc1Swenshuai.xi u16KeyPara[1] |= u8Cnt << CRI_KT_CNT_POS;
692*53ee8cc1Swenshuai.xi }
693*53ee8cc1Swenshuai.xi else{ // Key Slot
694*53ee8cc1Swenshuai.xi u16KeyPara[1] |= u8Cnt << CRI_KS_CNT_POS;
695*53ee8cc1Swenshuai.xi }
696*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_KeyDest(MS_BOOL bDscmbKey,MS_U8 u8KeyDest)697*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_KeyDest(MS_BOOL bDscmbKey, MS_U8 u8KeyDest)
698*53ee8cc1Swenshuai.xi {
699*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
700*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_DEST_AESDMA*/0x4&u8KeyDest ) { u16KeyPara[0] |= 1 << CRI_KT_DEST_AESDMA_POS;}
701*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_DEST_PVR*/0x2&u8KeyDest ) { u16KeyPara[0] |= 1 << CRI_KT_DEST_PVR_POS;}
702*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_DEST_CIPHER*/0x1&u8KeyDest ) { u16KeyPara[0] |= 1 << CRI_KT_DEST_CIPHER_POS;}
703*53ee8cc1Swenshuai.xi }
704*53ee8cc1Swenshuai.xi else{ // Key Slot
705*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_DEST_AESDMA*/0x4&u8KeyDest ) { u16KeyPara[0] |= 1 << CRI_KS_DEST_AESDMA_POS;}
706*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_DEST_PVR*/0x2&u8KeyDest ) { u16KeyPara[0] |= 1 << CRI_KS_DEST_PVR_POS;}
707*53ee8cc1Swenshuai.xi if( /*CRIKL_KL_DEST_CIPHER*/0x1&u8KeyDest ) { u16KeyPara[0] |= 1 << CRI_KS_DEST_CIPHER_POS;}
708*53ee8cc1Swenshuai.xi }
709*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_OpType(MS_BOOL bDscmbKey,MS_U8 u8Op)710*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_OpType(MS_BOOL bDscmbKey, MS_U8 u8Op)
711*53ee8cc1Swenshuai.xi {
712*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
713*53ee8cc1Swenshuai.xi switch(u8Op){
714*53ee8cc1Swenshuai.xi case 0: break;
715*53ee8cc1Swenshuai.xi case 1: u16KeyPara[0] |= 1 << CRI_KT_DECRYPT_POS; break;
716*53ee8cc1Swenshuai.xi case 2: u16KeyPara[0] |= 1 << CRI_KT_ENCRYPT_POS; break;
717*53ee8cc1Swenshuai.xi default: break;
718*53ee8cc1Swenshuai.xi }
719*53ee8cc1Swenshuai.xi }
720*53ee8cc1Swenshuai.xi else{ // Key Slot
721*53ee8cc1Swenshuai.xi switch(u8Op){
722*53ee8cc1Swenshuai.xi case 0: break;
723*53ee8cc1Swenshuai.xi case 1: u16KeyPara[0] |= 1 << CRI_KS_DECRYPT_POS; break;
724*53ee8cc1Swenshuai.xi case 2: u16KeyPara[0] |= 1 << CRI_KS_ENCRYPT_POS; break;
725*53ee8cc1Swenshuai.xi default: break;
726*53ee8cc1Swenshuai.xi }
727*53ee8cc1Swenshuai.xi }
728*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_KteSel(MS_BOOL bDscmbKey,MS_U8 eKteSel)729*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_KteSel(MS_BOOL bDscmbKey, MS_U8 eKteSel)
730*53ee8cc1Swenshuai.xi {
731*53ee8cc1Swenshuai.xi MS_U8 u8Pos = 0;
732*53ee8cc1Swenshuai.xi
733*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
734*53ee8cc1Swenshuai.xi switch(eKteSel){
735*53ee8cc1Swenshuai.xi case 0: u8Pos = CRI_KT_KTE_0; break;
736*53ee8cc1Swenshuai.xi case 1: u8Pos = CRI_KT_KTE_1; break;
737*53ee8cc1Swenshuai.xi case 2: u8Pos = CRI_KT_KTE_2; break;
738*53ee8cc1Swenshuai.xi case 3: u8Pos = CRI_KT_KTE_3; break;
739*53ee8cc1Swenshuai.xi default: break;
740*53ee8cc1Swenshuai.xi }
741*53ee8cc1Swenshuai.xi }
742*53ee8cc1Swenshuai.xi else{ // Key Slot
743*53ee8cc1Swenshuai.xi switch(eKteSel){
744*53ee8cc1Swenshuai.xi case 0: u8Pos = CRI_KS_KTE_0; break;
745*53ee8cc1Swenshuai.xi case 1: u8Pos = CRI_KS_KTE_1; break;
746*53ee8cc1Swenshuai.xi case 2: u8Pos = CRI_KS_KTE_2; break;
747*53ee8cc1Swenshuai.xi case 3: u8Pos = CRI_KS_KTE_3; break;
748*53ee8cc1Swenshuai.xi default: break;
749*53ee8cc1Swenshuai.xi }
750*53ee8cc1Swenshuai.xi }
751*53ee8cc1Swenshuai.xi
752*53ee8cc1Swenshuai.xi u16KeyPara[0] |= 1 << u8Pos;
753*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_bLock(MS_BOOL bDscmbKey,MS_BOOL bLock)754*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_bLock(MS_BOOL bDscmbKey, MS_BOOL bLock)
755*53ee8cc1Swenshuai.xi {
756*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
757*53ee8cc1Swenshuai.xi u16KeyPara[0] |= ((bLock)? 1:0) << CRI_KT_LOCK;
758*53ee8cc1Swenshuai.xi }
759*53ee8cc1Swenshuai.xi else{ // Key Slot
760*53ee8cc1Swenshuai.xi u16KeyPara[0] |= ((bLock)? 1:0) << CRI_KS_LOCK;
761*53ee8cc1Swenshuai.xi }
762*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_bParaValid(MS_BOOL bDscmbKey,MS_BOOL bParaValid)763*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_bParaValid(MS_BOOL bDscmbKey, MS_BOOL bParaValid)
764*53ee8cc1Swenshuai.xi {
765*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
766*53ee8cc1Swenshuai.xi u16KeyPara[0] |= ((bParaValid)? 1:0) << CRI_KT_PARA_VLA;
767*53ee8cc1Swenshuai.xi }
768*53ee8cc1Swenshuai.xi else{ // Key Slot
769*53ee8cc1Swenshuai.xi u16KeyPara[0] |= ((bParaValid)? 1:0) << CRI_KS_PARA_VLA;
770*53ee8cc1Swenshuai.xi }
771*53ee8cc1Swenshuai.xi }
HAL_CRIKL_Setup_bKlEn(MS_BOOL bDscmbKey,MS_BOOL bKlEn)772*53ee8cc1Swenshuai.xi void HAL_CRIKL_Setup_bKlEn(MS_BOOL bDscmbKey, MS_BOOL bKlEn)
773*53ee8cc1Swenshuai.xi {
774*53ee8cc1Swenshuai.xi if(bDscmbKey){ // Key Table
775*53ee8cc1Swenshuai.xi u16KeyPara[0] |= ((bKlEn)? 1:0) << CRI_KT_KL_EN;
776*53ee8cc1Swenshuai.xi }
777*53ee8cc1Swenshuai.xi else{ // Key Slot
778*53ee8cc1Swenshuai.xi u16KeyPara[0] |= ((bKlEn)? 1:0) << CRI_KS_KL_EN;
779*53ee8cc1Swenshuai.xi }
780*53ee8cc1Swenshuai.xi }
781*53ee8cc1Swenshuai.xi
782