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-2008 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 // Include Files
98*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
99*53ee8cc1Swenshuai.xi #include "MsCommon.h"
100*53ee8cc1Swenshuai.xi #include "MsTypes.h"
101*53ee8cc1Swenshuai.xi #include "regSEAL.h"
102*53ee8cc1Swenshuai.xi #include "halSEAL.h"
103*53ee8cc1Swenshuai.xi #include "drvSEAL.h"
104*53ee8cc1Swenshuai.xi #include "halCHIP.h"
105*53ee8cc1Swenshuai.xi
106*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
107*53ee8cc1Swenshuai.xi // Driver Compiler Options
108*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
109*53ee8cc1Swenshuai.xi
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
112*53ee8cc1Swenshuai.xi // Local Defines
113*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
114*53ee8cc1Swenshuai.xi #define HAL_SEAL_DBG(x) //x
115*53ee8cc1Swenshuai.xi #define HAL_SEAL_ERR(x, args...) {printf(x, ##args);}\
116*53ee8cc1Swenshuai.xi
117*53ee8cc1Swenshuai.xi //Non PM IP group
118*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP0 \
119*53ee8cc1Swenshuai.xi E_SEAL_RIU_DBG_PROT_NONPM, \
120*53ee8cc1Swenshuai.xi E_SEAL_FUART1_PROT_NONPM, \
121*53ee8cc1Swenshuai.xi E_SEAL_URDMA1_PROT_NONPM, \
122*53ee8cc1Swenshuai.xi E_SEAL_VD_MHEG5_PROT_NONPM, \
123*53ee8cc1Swenshuai.xi E_SEAL_MAU1_PROT_NONPM, \
124*53ee8cc1Swenshuai.xi E_SEAL_HIREG_PROT_NONPM, \
125*53ee8cc1Swenshuai.xi E_SEAL_POR_STATUS_PROT_NONPM, \
126*53ee8cc1Swenshuai.xi E_SEAL_INTR_CPUINT_PROT_NONPM, \
127*53ee8cc1Swenshuai.xi E_SEAL_MIU2_PROT_NONPM, \
128*53ee8cc1Swenshuai.xi E_SEAL_USB0_PROT_NONPM, \
129*53ee8cc1Swenshuai.xi E_SEAL_USB1_PROT_NONPM, \
130*53ee8cc1Swenshuai.xi E_SEAL_UPLL0_PROT_NONPM, \
131*53ee8cc1Swenshuai.xi E_SEAL_BDMA_CH0_PROT_NONPM, \
132*53ee8cc1Swenshuai.xi E_SEAL_BDMA_CH1_PROT_NONPM, \
133*53ee8cc1Swenshuai.xi E_SEAL_UART0_PROT_NONPM, \
134*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN2_PROT_NONPM
135*53ee8cc1Swenshuai.xi
136*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP1 \
137*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN0_PROT_NONPM, \
138*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_PROT_NONPM, \
139*53ee8cc1Swenshuai.xi E_SEAL_UHC1_PROT_NONPM, \
140*53ee8cc1Swenshuai.xi E_SEAL_MHEG5_PROT_NONPM, \
141*53ee8cc1Swenshuai.xi E_SEAL_INTR_CTRL1_PROT_NONPM, \
142*53ee8cc1Swenshuai.xi E_SEAL_MVD_PROT_NONPM, \
143*53ee8cc1Swenshuai.xi E_SEAL_MIU_PROT_NONPM, \
144*53ee8cc1Swenshuai.xi E_SEAL_MVOPSUB_PROT_NONPM, \
145*53ee8cc1Swenshuai.xi E_SEAL_MVOP_PROT_NONPM, \
146*53ee8cc1Swenshuai.xi E_SEAL_TSP0_PROT_NONPM, \
147*53ee8cc1Swenshuai.xi E_SEAL_TSP1_PROT_NONPM, \
148*53ee8cc1Swenshuai.xi E_SEAL_JPD_PROT_NONPM, \
149*53ee8cc1Swenshuai.xi E_SEAL_SEMAPH_PROT_NONPM, \
150*53ee8cc1Swenshuai.xi E_SEAL_MAU0_PROT_NONPM, \
151*53ee8cc1Swenshuai.xi E_SEAL_L3_AXI_PROT_NONPM, \
152*53ee8cc1Swenshuai.xi E_SEAL_INTR_CTRL_PROT_NONPM
153*53ee8cc1Swenshuai.xi
154*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP2 \
155*53ee8cc1Swenshuai.xi E_SEAL_HVD_PROT_NONPM, \
156*53ee8cc1Swenshuai.xi E_SEAL_TSP2_PROT_NONPM, \
157*53ee8cc1Swenshuai.xi E_SEAL_MCU_ARM_PROT_NONPM, \
158*53ee8cc1Swenshuai.xi E_SEAL_CHIP_PROT_NONPM, \
159*53ee8cc1Swenshuai.xi E_SEAL_GOP_PROT_NONPM, \
160*53ee8cc1Swenshuai.xi E_SEAL_EMAC0_PROT_NONPM, \
161*53ee8cc1Swenshuai.xi E_SEAL_EMAC1_PROT_NONPM, \
162*53ee8cc1Swenshuai.xi E_SEAL_EMAC2_PROT_NONPM, \
163*53ee8cc1Swenshuai.xi E_SEAL_EMAC3_PROT_NONPM, \
164*53ee8cc1Swenshuai.xi E_SEAL_UHC0_PROT_NONPM, \
165*53ee8cc1Swenshuai.xi E_SEAL_ADC_ATOP_PROT_NONPM, \
166*53ee8cc1Swenshuai.xi E_SEAL_ADC_DTOP_PROT_NONPM, \
167*53ee8cc1Swenshuai.xi E_SEAL_GE0_PROT_NONPM, \
168*53ee8cc1Swenshuai.xi E_SEAL_SMART_PROT_NONPM, \
169*53ee8cc1Swenshuai.xi E_SEAL_CI_PROT_NONPM, \
170*53ee8cc1Swenshuai.xi E_SEAL_CHIPGPIO_PROT_NONPM
171*53ee8cc1Swenshuai.xi
172*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP3 \
173*53ee8cc1Swenshuai.xi E_SEAL_VP6_PROT_NONPM, \
174*53ee8cc1Swenshuai.xi E_SEAL_LDM_DMA0_PROT_NONPM, \
175*53ee8cc1Swenshuai.xi E_SEAL_LDM_DMA1_PROT_NONPM, \
176*53ee8cc1Swenshuai.xi E_SEAL_SC0_PROT_NONPM, \
177*53ee8cc1Swenshuai.xi E_SEAL_SC1_PROT_NONPM, \
178*53ee8cc1Swenshuai.xi E_SEAL_SC2_PROT_NONPM, \
179*53ee8cc1Swenshuai.xi E_SEAL_SC3_PROT_NONPM, \
180*53ee8cc1Swenshuai.xi E_SEAL_SC4_PROT_NONPM, \
181*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN1_PROT_NONPM, \
182*53ee8cc1Swenshuai.xi E_SEAL_MAILBOX_PROT_NONPM, \
183*53ee8cc1Swenshuai.xi E_SEAL_MIIC_PROT_NONPM, \
184*53ee8cc1Swenshuai.xi E_SEAL_PCM_PROT_NONPM, \
185*53ee8cc1Swenshuai.xi E_SEAL_VDMCU51_IF_PROT_NONPM, \
186*53ee8cc1Swenshuai.xi E_SEAL_DMDMCU51_IF_PROT_NONPM, \
187*53ee8cc1Swenshuai.xi E_SEAL_VDMCU51_1_IF_PROT_NONPM, \
188*53ee8cc1Swenshuai.xi E_SEAL_URDMA_PROT_NONPM
189*53ee8cc1Swenshuai.xi
190*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP4 \
191*53ee8cc1Swenshuai.xi E_SEAL_AFEC_PROT_NONPM, \
192*53ee8cc1Swenshuai.xi E_SEAL_COMB_PROT_NONPM, \
193*53ee8cc1Swenshuai.xi E_SEAL_VBI_PROT_NONPM, \
194*53ee8cc1Swenshuai.xi E_SEAL_SCM_PROT_NONPM, \
195*53ee8cc1Swenshuai.xi E_SEAL_UTMI2_PROT_NONPM, \
196*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_PROT_NONPM, \
197*53ee8cc1Swenshuai.xi E_SEAL_UTMI1_PROT_NONPM, \
198*53ee8cc1Swenshuai.xi E_SEAL_UTMI_PROT_NONPM, \
199*53ee8cc1Swenshuai.xi E_SEAL_VE_0_PROT_NONPM, \
200*53ee8cc1Swenshuai.xi E_SEAL_REG_PIU_NONPM_PROT_NONPM, \
201*53ee8cc1Swenshuai.xi E_SEAL_ADC_ATOPB_PROT_NONPM, \
202*53ee8cc1Swenshuai.xi E_SEAL_VE_1_PROT_NONPM, \
203*53ee8cc1Swenshuai.xi E_SEAL_VE_2_PROT_NONPM, \
204*53ee8cc1Swenshuai.xi E_SEAL_SC_GP1_NONPM, \
205*53ee8cc1Swenshuai.xi E_SEAL_CHIPGPIO1_NONPM, \
206*53ee8cc1Swenshuai.xi E_SEAL_MPIF_PROT_NONPM
207*53ee8cc1Swenshuai.xi
208*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP5 \
209*53ee8cc1Swenshuai.xi E_SEAL_GPD_PROT_NONPM, \
210*53ee8cc1Swenshuai.xi E_SEAL_UART1_PROT_NONPM, \
211*53ee8cc1Swenshuai.xi E_SEAL_FUART_PROT_NONPM, \
212*53ee8cc1Swenshuai.xi E_SEAL_GE1_PROT_NONPM, \
213*53ee8cc1Swenshuai.xi E_SEAL_GPU_NONPM, \
214*53ee8cc1Swenshuai.xi E_SEAL_TS_SAMPLE_NONPM, \
215*53ee8cc1Swenshuai.xi E_SEAL_NR_HSD_PROT_NONPM, \
216*53ee8cc1Swenshuai.xi E_SEAL_ANA_MISC2_NONPM, \
217*53ee8cc1Swenshuai.xi E_SEAL_ANA_MISC_PROT_NONPM, \
218*53ee8cc1Swenshuai.xi E_SEAL_ANA_MISC_GMAC_PROT_NONPM, \
219*53ee8cc1Swenshuai.xi E_SEAL_MIU_ATOP_PROT_NONPM, \
220*53ee8cc1Swenshuai.xi E_SEAL_NR_PROT_NONPM, \
221*53ee8cc1Swenshuai.xi E_SEAL_DI_PROT_NONPM, \
222*53ee8cc1Swenshuai.xi E_SEAL_MFE0_PROT_NONPM, \
223*53ee8cc1Swenshuai.xi E_SEAL_MFE1_PROT_NONPM, \
224*53ee8cc1Swenshuai.xi E_SEAL_ADC_DTOPB_PROT_NONPM
225*53ee8cc1Swenshuai.xi
226*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP6 \
227*53ee8cc1Swenshuai.xi E_SEAL_NFIE0_PROT_NONPM, \
228*53ee8cc1Swenshuai.xi E_SEAL_NFIE1_PROT_NONPM, \
229*53ee8cc1Swenshuai.xi E_SEAL_NFIE2_PROT_NONPM, \
230*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIc_PROT_NONPM, \
231*53ee8cc1Swenshuai.xi E_SEAL_VIVALDId_PROT_NONPM, \
232*53ee8cc1Swenshuai.xi E_SEAL_MIIC0_PROT_NONPM, \
233*53ee8cc1Swenshuai.xi E_SEAL_MIIC1_PROT_NONPM, \
234*53ee8cc1Swenshuai.xi E_SEAL_MIIC2_PROT_NONPM, \
235*53ee8cc1Swenshuai.xi E_SEAL_MIIC3_PROT_NONPM, \
236*53ee8cc1Swenshuai.xi E_SEAL_MOD2_PROT_NONPM, \
237*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN_DMD_PROT_NONPM, \
238*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_0_PROT_NONPM, \
239*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_1_PROT_NONPM, \
240*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_2_PROT_NONPM, \
241*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_3_PROT_NONPM, \
242*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_4_PROT_NONPM
243*53ee8cc1Swenshuai.xi
244*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP7 \
245*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_5_PROT_NONPM, \
246*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_6_PROT_NONPM, \
247*53ee8cc1Swenshuai.xi E_SEAL_DEMOD_7_PROT_NONPM, \
248*53ee8cc1Swenshuai.xi E_SEAL_DMD_ANA_MISC_PROT_NONPM, \
249*53ee8cc1Swenshuai.xi E_SEAL_AUR20_PROT_NONPM, \
250*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI0_PROT_NONPM, \
251*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI1_PROT_NONPM, \
252*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI2_PROT_NONPM, \
253*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI3_PROT_NONPM, \
254*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI4_PROT_NONPM, \
255*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI5_PROT_NONPM, \
256*53ee8cc1Swenshuai.xi E_SEAL_AU_MAU_NONPM, \
257*53ee8cc1Swenshuai.xi E_SEAL_AU_GDMA_NONPM, \
258*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN_SC_FE, \
259*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN_SC_BE, \
260*53ee8cc1Swenshuai.xi E_SEAL_CLKGEN_SC_GP2
261*53ee8cc1Swenshuai.xi
262*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP8 \
263*53ee8cc1Swenshuai.xi E_SEAL_SC_GPLUS, \
264*53ee8cc1Swenshuai.xi E_SEAL_USB2_PROT_NONPM, \
265*53ee8cc1Swenshuai.xi E_SEAL_UHC2_PROT_NONPM, \
266*53ee8cc1Swenshuai.xi E_SEAL_TSO_PROT_NONPM, \
267*53ee8cc1Swenshuai.xi E_SEAL_DRM_SECURE_PROT_NONPM, \
268*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB2_PROT_NONPM, \
269*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB3_PROT_NONPM, \
270*53ee8cc1Swenshuai.xi E_SEAL_GPD0_PROT_NONPM, \
271*53ee8cc1Swenshuai.xi E_SEAL_GPD1_PROT_NONPM, \
272*53ee8cc1Swenshuai.xi E_SEAL_GOP0G_0_PROT_NONPM, \
273*53ee8cc1Swenshuai.xi E_SEAL_GOP0G_1_PROT_NONPM, \
274*53ee8cc1Swenshuai.xi E_SEAL_GOP0G_ST_PROT_NONPM, \
275*53ee8cc1Swenshuai.xi E_SEAL_GOP1G_0_PROT_NONPM, \
276*53ee8cc1Swenshuai.xi E_SEAL_GOP1G_1_PROT_NONPM, \
277*53ee8cc1Swenshuai.xi E_SEAL_GOP1G_ST_PROT_NONPM, \
278*53ee8cc1Swenshuai.xi E_SEAL_GOP2G_0_PROT_NONPM
279*53ee8cc1Swenshuai.xi
280*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP9 \
281*53ee8cc1Swenshuai.xi E_SEAL_GOP2G_1_PROT_NONPM, \
282*53ee8cc1Swenshuai.xi E_SEAL_GOP2G_ST_PROT_NONPM, \
283*53ee8cc1Swenshuai.xi E_SEAL_GOP3G_0_PROT_NONPM, \
284*53ee8cc1Swenshuai.xi E_SEAL_GOP3G_1_PROT_NONPM, \
285*53ee8cc1Swenshuai.xi E_SEAL_GOP3G_ST_PROT_NONPM, \
286*53ee8cc1Swenshuai.xi E_SEAL_GOPD_PROT_NONPM, \
287*53ee8cc1Swenshuai.xi E_SEAL_SDIO0_PROT_NONPM, \
288*53ee8cc1Swenshuai.xi E_SEAL_SPARE1_PROT_NONPM, \
289*53ee8cc1Swenshuai.xi E_SEAL_SPARE3_PROT_NONPM, \
290*53ee8cc1Swenshuai.xi E_SEAL_MIU_ARB256_PROT_NONPM, \
291*53ee8cc1Swenshuai.xi E_SEAL_TZPC_NONPM2_NONPM, \
292*53ee8cc1Swenshuai.xi E_SEAL_GOP4G_0_PROT_NONPM, \
293*53ee8cc1Swenshuai.xi E_SEAL_MIIC4_PROT_NONPM, \
294*53ee8cc1Swenshuai.xi E_SEAL_MIIC5_PROT_NONPM, \
295*53ee8cc1Swenshuai.xi E_SEAL_GOP4G_1_PROT_NONPM, \
296*53ee8cc1Swenshuai.xi E_SEAL_GOP4G_ST_PROT_NONPM
297*53ee8cc1Swenshuai.xi
298*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP10 \
299*53ee8cc1Swenshuai.xi E_SEAL_COMBO_PHY2_P0_PROT_NONPM, \
300*53ee8cc1Swenshuai.xi E_SEAL_SDIO1_PROT_NONPM, \
301*53ee8cc1Swenshuai.xi E_SEAL_SDIO2_PROT_NONPM, \
302*53ee8cc1Swenshuai.xi E_SEAL_SEC_R2_PROT_NONPM, \
303*53ee8cc1Swenshuai.xi E_SEAL_SEC_MAU0_PROT_NONPM, \
304*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB4_PROT_NONPM, \
305*53ee8cc1Swenshuai.xi E_SEAL_MOBF_PROT_NONPM, \
306*53ee8cc1Swenshuai.xi E_SEAL_DC_SCL_PROT_NONPM, \
307*53ee8cc1Swenshuai.xi E_SEAL_JPD1_PROT_NONPM, \
308*53ee8cc1Swenshuai.xi E_SEAL_JPD2_PROT_NONPM, \
309*53ee8cc1Swenshuai.xi E_SEAL_JPD3_PROT_NONPM, \
310*53ee8cc1Swenshuai.xi E_SEAL_CMDQ_PROT_NONPM, \
311*53ee8cc1Swenshuai.xi E_SEAL_USBBC0_PROT_NONPM, \
312*53ee8cc1Swenshuai.xi E_SEAL_USBBC1_PROT_NONPM, \
313*53ee8cc1Swenshuai.xi E_SEAL_USBBC2_PROT_NONPM, \
314*53ee8cc1Swenshuai.xi E_SEAL_SECURERANGE0_PROT_NONPM
315*53ee8cc1Swenshuai.xi
316*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP11 \
317*53ee8cc1Swenshuai.xi E_SEAL_SECURERANGE1_PROT_NONPM, \
318*53ee8cc1Swenshuai.xi E_SEAL_TZPC_NONPM_PROT_NONPM, \
319*53ee8cc1Swenshuai.xi E_SEAL_NFIE3_PROT_NONPM, \
320*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB5_PROT_NONPM, \
321*53ee8cc1Swenshuai.xi E_SEAL_TSO1_NONPM, \
322*53ee8cc1Swenshuai.xi E_SEAL_EMMC_PLL_PROT_NONPM, \
323*53ee8cc1Swenshuai.xi E_SEAL_MSC_PROT_NONPM, \
324*53ee8cc1Swenshuai.xi E_SEAL_MSC1_NONPM, \
325*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_CODEC_PROT_NONPM, \
326*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_VIV_PROT_NONPM, \
327*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_CPU_PROT_NONPM, \
328*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_GPU_PROT_NONPM, \
329*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_DEMOD_PROT_NONPM, \
330*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_TSP_PROT_NONPM, \
331*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_DVI_PROT_NONPM, \
332*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_EVD_PROT_NONPM
333*53ee8cc1Swenshuai.xi
334*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP12 \
335*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_SC0_PROT_NONPM, \
336*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_SC1_PROT_NONPM, \
337*53ee8cc1Swenshuai.xi E_SEAL_PATGEN_SC2_PROT_NONPM, \
338*53ee8cc1Swenshuai.xi E_SEAL_PAD_MUX_NONPM, \
339*53ee8cc1Swenshuai.xi E_SEAL_COMB1_PROT_NONPM, \
340*53ee8cc1Swenshuai.xi E_SEAL_COMB2_PROT_NONPM, \
341*53ee8cc1Swenshuai.xi E_SEAL_COMB3_PROT_NONPM, \
342*53ee8cc1Swenshuai.xi E_SEAL_COMB4_PROT_NONPM, \
343*53ee8cc1Swenshuai.xi E_SEAL_COMB5_PROT_NONPM, \
344*53ee8cc1Swenshuai.xi E_SEAL_MSPI0_PROT_NONPM, \
345*53ee8cc1Swenshuai.xi E_SEAL_MSPI1_PROT_NONPM, \
346*53ee8cc1Swenshuai.xi E_SEAL_MSPI_MCARD_PROT_NONPM, \
347*53ee8cc1Swenshuai.xi E_SEAL_DMD_MCU2_PROT_NONPM, \
348*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI6_PROT_NONPM, \
349*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI7_PROT_NONPM, \
350*53ee8cc1Swenshuai.xi E_SEAL_GMAC0_PROT_NONPM
351*53ee8cc1Swenshuai.xi
352*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP13 \
353*53ee8cc1Swenshuai.xi E_SEAL_GMAC1_PROT_NONPM, \
354*53ee8cc1Swenshuai.xi E_SEAL_GMAC2_PROT_NONPM, \
355*53ee8cc1Swenshuai.xi E_SEAL_GMAC3_PROT_NONPM, \
356*53ee8cc1Swenshuai.xi E_SEAL_GMAC4_PROT_NONPM, \
357*53ee8cc1Swenshuai.xi E_SEAL_PCM2_PROT_NONPM, \
358*53ee8cc1Swenshuai.xi E_SEAL_TSP3_PROT_NONPM, \
359*53ee8cc1Swenshuai.xi E_SEAL_EVD_NONPM, \
360*53ee8cc1Swenshuai.xi E_SEAL_DYN_SCL_PROT_NONPM, \
361*53ee8cc1Swenshuai.xi E_SEAL_VP9_TOP_PROT_NONPM, \
362*53ee8cc1Swenshuai.xi E_SEAL_GPU_PLL_PROT_NONPM, \
363*53ee8cc1Swenshuai.xi E_SEAL_MIU_ARB_SC_NONPM, \
364*53ee8cc1Swenshuai.xi E_SEAL_MIU_ARB2_SC_NONPM, \
365*53ee8cc1Swenshuai.xi E_SEAL_CODEC_MRQ_PROT_NONPM, \
366*53ee8cc1Swenshuai.xi E_SEAL_MIU_ARB_NONPM, \
367*53ee8cc1Swenshuai.xi E_SEAL_MIU_ATOP2_PROT_NONPM, \
368*53ee8cc1Swenshuai.xi E_SEAL_MIU_ARB2_NONPM
369*53ee8cc1Swenshuai.xi
370*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP14 \
371*53ee8cc1Swenshuai.xi E_SEAL_GE2_NONPM, \
372*53ee8cc1Swenshuai.xi E_SEAL_GE3_NONPM, \
373*53ee8cc1Swenshuai.xi E_SEAL_AU_R2_1_NONPM, \
374*53ee8cc1Swenshuai.xi E_SEAL_AU_MAU_1_NONPM, \
375*53ee8cc1Swenshuai.xi E_SEAL_AU_GDMA_1_NONPM, \
376*53ee8cc1Swenshuai.xi E_SEAL_VD_EVD_R2_NONPM, \
377*53ee8cc1Swenshuai.xi E_SEAL_MAU_EVD_NONPM, \
378*53ee8cc1Swenshuai.xi E_SEAL_HIREG_EVD_PROT_NONPM, \
379*53ee8cc1Swenshuai.xi E_SEAL_MAU1_LV2_0_NONPM, \
380*53ee8cc1Swenshuai.xi E_SEAL_MAU1_LV2_1_NONPM, \
381*53ee8cc1Swenshuai.xi E_SEAL_MAU_EVD_LV2_0_NONPM, \
382*53ee8cc1Swenshuai.xi E_SEAL_MAU_EVD_LV2_1_NONPM, \
383*53ee8cc1Swenshuai.xi E_SEAL_SEC_MAU_LV2_0_NONPM, \
384*53ee8cc1Swenshuai.xi E_SEAL_SEC_MAU_LV2_1_NONPM, \
385*53ee8cc1Swenshuai.xi E_SEAL_TSP5_NONPM, \
386*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI8_PROT_NONPM
387*53ee8cc1Swenshuai.xi
388*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP15 \
389*53ee8cc1Swenshuai.xi E_SEAL_VIVALDI9_PROT_NONPM, \
390*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIa_0_PROT_NONPM, \
391*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIa_1_PROT_NONPM, \
392*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIa_2_PROT_NONPM, \
393*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIa_3_PROT_NONPM, \
394*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIb_0_PROT_NONPM, \
395*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIb_1_PROT_NONPM, \
396*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIb_2_PROT_NONPM, \
397*53ee8cc1Swenshuai.xi E_SEAL_VIVALDIb_3_PROT_NONPM , \
398*53ee8cc1Swenshuai.xi E_SEAL_COMBO_PHY0_P0_PROT_NONPM, \
399*53ee8cc1Swenshuai.xi E_SEAL_COMBO_PHY1_P0_PROT_NONPM, \
400*53ee8cc1Swenshuai.xi E_SEAL_DVI_DTOP_DUAL_P0_PROT_NONPM, \
401*53ee8cc1Swenshuai.xi E_SEAL_DVI_RSV_DUAL_P0_PROT_NONPM, \
402*53ee8cc1Swenshuai.xi E_SEAL_HDCP_DUAL_P0_PROT_NONPM, \
403*53ee8cc1Swenshuai.xi E_SEAL_HDMI_DUAL_0_PROT_NONPM, \
404*53ee8cc1Swenshuai.xi E_SEAL_HDMI2_DUAL_0_PROT_NONPM
405*53ee8cc1Swenshuai.xi
406*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP16 \
407*53ee8cc1Swenshuai.xi E_SEAL_HDMI3_DUAL_0_PROT_NONPM, \
408*53ee8cc1Swenshuai.xi E_SEAL_HDCPKEY_PROT_NONPM, \
409*53ee8cc1Swenshuai.xi E_SEAL_COMBO_GP_TOP_PROT_NONPM, \
410*53ee8cc1Swenshuai.xi E_SEAL_SECURE_TZPC_PROT_NONPM, \
411*53ee8cc1Swenshuai.xi E_SEAL_X32_GPUAPB0_NONPM, \
412*53ee8cc1Swenshuai.xi E_SEAL_X32_GPUAPB1_NONPM, \
413*53ee8cc1Swenshuai.xi E_SEAL_X32_GPUAPB2_NONPM, \
414*53ee8cc1Swenshuai.xi E_SEAL_X32_EMAC0_NONPM, \
415*53ee8cc1Swenshuai.xi E_SEAL_X32_EMAC1_NONPM, \
416*53ee8cc1Swenshuai.xi E_SEAL_X32_EMAC2_NONPM, \
417*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
418*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
419*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
420*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
421*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
422*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
423*53ee8cc1Swenshuai.xi
424*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP17 \
425*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
426*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
427*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
428*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
429*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
430*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
431*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
432*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
433*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
434*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
435*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
436*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
437*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
438*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
439*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
440*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
441*53ee8cc1Swenshuai.xi
442*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP18 \
443*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
444*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
445*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
446*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
447*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
448*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
449*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
450*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
451*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
452*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
453*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
454*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
455*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
456*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
457*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
458*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
459*53ee8cc1Swenshuai.xi
460*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP19 \
461*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
462*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
463*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
464*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
465*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
466*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
467*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
468*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
469*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
470*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
471*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
472*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
473*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
474*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
475*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
476*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
477*53ee8cc1Swenshuai.xi
478*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP20 \
479*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
480*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
481*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
482*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
483*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
484*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
485*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
486*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
487*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
488*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
489*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
490*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
491*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
492*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
493*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
494*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
495*53ee8cc1Swenshuai.xi
496*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP21 \
497*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
498*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
499*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
500*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
501*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
502*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
503*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
504*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
505*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
506*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
507*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
508*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
509*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
510*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
511*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
512*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
513*53ee8cc1Swenshuai.xi
514*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP22 \
515*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
516*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
517*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
518*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
519*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
520*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
521*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
522*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
523*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
524*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
525*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
526*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
527*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
528*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
529*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
530*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
531*53ee8cc1Swenshuai.xi
532*53ee8cc1Swenshuai.xi #define SEAL_NON_PM_GROUP23 \
533*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
534*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
535*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
536*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
537*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
538*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
539*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
540*53ee8cc1Swenshuai.xi E_SEAL_DDI_1_PROT_NONPM, \
541*53ee8cc1Swenshuai.xi E_SEAL_DDI_0_PROT_NONPM, \
542*53ee8cc1Swenshuai.xi E_SEAL_DIP_1_PROT_NONPM, \
543*53ee8cc1Swenshuai.xi E_SEAL_DIP_0_PROT_NONPM, \
544*53ee8cc1Swenshuai.xi E_SEAL_PDW1_PROT_NONPM, \
545*53ee8cc1Swenshuai.xi E_SEAL_PDW0_PROT_NONPM, \
546*53ee8cc1Swenshuai.xi E_SEAL_DWIN1_PROT_NONPM, \
547*53ee8cc1Swenshuai.xi E_SEAL_DWIN0_PROT_NONPM, \
548*53ee8cc1Swenshuai.xi E_SEAL_DIP_PROT_NONPM
549*53ee8cc1Swenshuai.xi
550*53ee8cc1Swenshuai.xi //PM IP group
551*53ee8cc1Swenshuai.xi #define SEAL_PM_GROUP0 \
552*53ee8cc1Swenshuai.xi E_SEAL_RIU_DBG_PROT_PM, \
553*53ee8cc1Swenshuai.xi E_SEAL_MENULOAD_PROT_PM, \
554*53ee8cc1Swenshuai.xi E_SEAL_GDMA_PROT_PM, \
555*53ee8cc1Swenshuai.xi E_SEAL_DDC_PROT_PM, \
556*53ee8cc1Swenshuai.xi E_SEAL_PM_PATGEN_PROT_PM, \
557*53ee8cc1Swenshuai.xi E_SEAL_PM_POR_PROT_PM, \
558*53ee8cc1Swenshuai.xi E_SEAL_ISP_PROT_PM, \
559*53ee8cc1Swenshuai.xi E_SEAL_FSP_PROT_PM, \
560*53ee8cc1Swenshuai.xi E_SEAL_QSPI_PROT_PM, \
561*53ee8cc1Swenshuai.xi E_SEAL_PM_SLEEP_PROT_PM, \
562*53ee8cc1Swenshuai.xi E_SEAL_PM_GPIO_PROT_PM, \
563*53ee8cc1Swenshuai.xi E_SEAL_MCU_PROT_PM, \
564*53ee8cc1Swenshuai.xi E_SEAL_PM_CEC_PROT_PM, \
565*53ee8cc1Swenshuai.xi E_SEAL_PM_RTC0_PROT_PM, \
566*53ee8cc1Swenshuai.xi E_SEAL_PM_RTC1_PROT_PM, \
567*53ee8cc1Swenshuai.xi E_SEAL_PM_SAR_PROT_PM
568*53ee8cc1Swenshuai.xi
569*53ee8cc1Swenshuai.xi #define SEAL_PM_GROUP1 \
570*53ee8cc1Swenshuai.xi E_SEAL_PM_AV_LINK_PROT_PM, \
571*53ee8cc1Swenshuai.xi E_SEAL_PM_TOP_PROT_PM, \
572*53ee8cc1Swenshuai.xi E_SEAL_MHL_CBUS_PROT_PM, \
573*53ee8cc1Swenshuai.xi E_SEAL_EFUSE_PROT_PM, \
574*53ee8cc1Swenshuai.xi E_SEAL_IRQ_PROT_PM, \
575*53ee8cc1Swenshuai.xi E_SEAL_CACHE_PROT_PM, \
576*53ee8cc1Swenshuai.xi E_SEAL_XDMIU_PROT_PM, \
577*53ee8cc1Swenshuai.xi E_SEAL_PM_MISC_PROT_PM, \
578*53ee8cc1Swenshuai.xi E_SEAL_PM_MHL_CBUS_PROT_PM, \
579*53ee8cc1Swenshuai.xi E_SEAL_WDT_PROT_PM, \
580*53ee8cc1Swenshuai.xi E_SEAL_TIMER0_PROT_PM, \
581*53ee8cc1Swenshuai.xi E_SEAL_TIMER1_PROT_PM, \
582*53ee8cc1Swenshuai.xi E_SEAL_TIMER2_PROT_PM, \
583*53ee8cc1Swenshuai.xi E_SEAL_ALBANY0_PROT_PM, \
584*53ee8cc1Swenshuai.xi E_SEAL_ALBANY1_PROT_PM, \
585*53ee8cc1Swenshuai.xi E_SEAL_ALBANY2_PROT_PM
586*53ee8cc1Swenshuai.xi
587*53ee8cc1Swenshuai.xi #define SEAL_PM_GROUP2 \
588*53ee8cc1Swenshuai.xi E_SEAL_DID_KEY_PROT_PM, \
589*53ee8cc1Swenshuai.xi E_SEAL_TZPC_PROT_PM, \
590*53ee8cc1Swenshuai.xi E_SEAL_REG_PIU_MISC_0_PROT_PM, \
591*53ee8cc1Swenshuai.xi E_SEAL_IR_PROT_PM, \
592*53ee8cc1Swenshuai.xi E_SEAL_PM_SPARE0_PROT_PM, \
593*53ee8cc1Swenshuai.xi E_SEAL_PM_SPARE1_PROT_PM, \
594*53ee8cc1Swenshuai.xi E_SEAL_SCDC_0_PROT_PM, \
595*53ee8cc1Swenshuai.xi E_SEAL_SCDC_1_PROT_PM, \
596*53ee8cc1Swenshuai.xi E_SEAL_SCDC_2_PROT_PM, \
597*53ee8cc1Swenshuai.xi E_SEAL_SCDC_3_PROT_PM, \
598*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
599*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
600*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
601*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
602*53ee8cc1Swenshuai.xi E_SEAL_DUMMY, \
603*53ee8cc1Swenshuai.xi E_SEAL_DUMMY
604*53ee8cc1Swenshuai.xi
605*53ee8cc1Swenshuai.xi //processor group
606*53ee8cc1Swenshuai.xi #define SEAL_PROCESSOR_GROUP0 \
607*53ee8cc1Swenshuai.xi E_SEAL_DBBUS, \
608*53ee8cc1Swenshuai.xi E_SEAL_MCU51, \
609*53ee8cc1Swenshuai.xi E_SEAL_CPU2, \
610*53ee8cc1Swenshuai.xi E_SEAL_VD_R2, \
611*53ee8cc1Swenshuai.xi E_SEAL_SECURE_R2, \
612*53ee8cc1Swenshuai.xi E_SEAL_SC, \
613*53ee8cc1Swenshuai.xi E_SEAL_CMDQ, \
614*53ee8cc1Swenshuai.xi E_SEAL_HEMCU ,\
615*53ee8cc1Swenshuai.xi E_SEAL_PROCESSOR_NUM,\
616*53ee8cc1Swenshuai.xi
617*53ee8cc1Swenshuai.xi //lock group
618*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP_DUMMY \
619*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
620*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
621*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
622*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
623*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
624*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
625*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
626*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
627*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
628*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
629*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
630*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
631*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
632*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
633*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
634*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY
635*53ee8cc1Swenshuai.xi
636*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP0 \
637*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_DIPW, \
638*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_DIPW, \
639*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_DIPR, \
640*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_DIPR, \
641*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_LCL_R2_WR_PROTN_0, \
642*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_LCL_R2_WR_PROTN_1, \
643*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_LCL_R2_WR_PROTN_2, \
644*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_LCL_R2_WR_PROTN_3, \
645*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_SCL_R2_WR_PROTN_0, \
646*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_SCL_R2_WR_PROTN_1, \
647*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_SCL_R2_WR_PROTN_2, \
648*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_SCL_R2_WR_PROTN_3, \
649*53ee8cc1Swenshuai.xi E_SEAL_SECURE_R2_WR_PROTN_0, \
650*53ee8cc1Swenshuai.xi E_SEAL_SECURE_R2_WR_PROTN_1, \
651*53ee8cc1Swenshuai.xi E_SEAL_SECURE_R2_WR_PROTN_2, \
652*53ee8cc1Swenshuai.xi E_SEAL_SECURE_R2_WR_PROTN_3
653*53ee8cc1Swenshuai.xi
654*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP1 \
655*53ee8cc1Swenshuai.xi E_SEAL_CIPHERENG_WP_SYSKEY, \
656*53ee8cc1Swenshuai.xi E_SEAL_CIPHERENG_RP_SYSKEY, \
657*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_WP_RIV0, \
658*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_RP_RIV0, \
659*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_WP_RIV1, \
660*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_RP_RIV1, \
661*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_WP_WDATA, \
662*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_RP_WDATA, \
663*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_WP_RIV2, \
664*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_RP_RIV2, \
665*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_WP_RIV3, \
666*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_RP_RIV3, \
667*53ee8cc1Swenshuai.xi E_SEAL_SC2_WP_SCM_M, \
668*53ee8cc1Swenshuai.xi E_SEAL_SC2_RP_SCM_M, \
669*53ee8cc1Swenshuai.xi E_SEAL_MVOP_WP_TLB, \
670*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_PAS_PROTN
671*53ee8cc1Swenshuai.xi
672*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP2 \
673*53ee8cc1Swenshuai.xi E_SEAL_DSCRMB_RP_RDATA, \
674*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
675*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
676*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
677*53ee8cc1Swenshuai.xi E_SEAL_RNG_PROTECT, \
678*53ee8cc1Swenshuai.xi E_SEAL_RSA_PROTECT, \
679*53ee8cc1Swenshuai.xi E_SEAL_SHA_PROTECT, \
680*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
681*53ee8cc1Swenshuai.xi E_SEAL_EVD_R2_WR_PROTN_0, \
682*53ee8cc1Swenshuai.xi E_SEAL_EVD_R2_WR_PROTN_1, \
683*53ee8cc1Swenshuai.xi E_SEAL_EVD_R2_WR_PROTN_2, \
684*53ee8cc1Swenshuai.xi E_SEAL_EVD_R2_WR_PROTN_3, \
685*53ee8cc1Swenshuai.xi E_SEAL_HVD_R2_WR_PROTN_0, \
686*53ee8cc1Swenshuai.xi E_SEAL_HVD_R2_WR_PROTN_1, \
687*53ee8cc1Swenshuai.xi E_SEAL_HVD_R2_WR_PROTN_2, \
688*53ee8cc1Swenshuai.xi E_SEAL_HVD_R2_WR_PROTN_3
689*53ee8cc1Swenshuai.xi
690*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP3 \
691*53ee8cc1Swenshuai.xi E_SEAL_HVD_ES0_BUF, \
692*53ee8cc1Swenshuai.xi E_SEAL_HVD_ES1_BUF, \
693*53ee8cc1Swenshuai.xi E_SEAL_HVD_ES2_BUF, \
694*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
695*53ee8cc1Swenshuai.xi E_SEAL_MFE0_ES_BUF, \
696*53ee8cc1Swenshuai.xi E_SEAL_MVD_WR_PROTN_0, \
697*53ee8cc1Swenshuai.xi E_SEAL_MVD_WR_PROTN_1, \
698*53ee8cc1Swenshuai.xi E_SEAL_MVD_WR_PROTN_2, \
699*53ee8cc1Swenshuai.xi E_SEAL_EVD_0_WR_PROTN_0, \
700*53ee8cc1Swenshuai.xi E_SEAL_EVD_1_WR_PROTN_0, \
701*53ee8cc1Swenshuai.xi E_SEAL_MHEG5_WR_PROTN_0, \
702*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_DSP_ES_PROTN, \
703*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_DSP_CACHE_PROTN, \
704*53ee8cc1Swenshuai.xi E_SEAL_EVD_0_WR_PROTN_1, \
705*53ee8cc1Swenshuai.xi E_SEAL_EVD_1_WR_PROTN_1, \
706*53ee8cc1Swenshuai.xi E_SEAL_VP9_TOP
707*53ee8cc1Swenshuai.xi
708*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP4 \
709*53ee8cc1Swenshuai.xi E_SEAL_TSO_WP_TSOFI, \
710*53ee8cc1Swenshuai.xi E_SEAL_TSO_RP_TSOFI, \
711*53ee8cc1Swenshuai.xi E_SEAL_MMFI_WP_MMFI0, \
712*53ee8cc1Swenshuai.xi E_SEAL_MMFI_RP_MMFI0, \
713*53ee8cc1Swenshuai.xi E_SEAL_MMFI_WP_MMFI1, \
714*53ee8cc1Swenshuai.xi E_SEAL_MMFI_RP_MMFI1, \
715*53ee8cc1Swenshuai.xi E_SEAL_TSP0_WP_PVR, \
716*53ee8cc1Swenshuai.xi E_SEAL_TSP0_RP_PVR, \
717*53ee8cc1Swenshuai.xi E_SEAL_TSP0_WP_PVR1, \
718*53ee8cc1Swenshuai.xi E_SEAL_TSP0_RP_PVR1, \
719*53ee8cc1Swenshuai.xi E_SEAL_TSP0_WP_FILEIN, \
720*53ee8cc1Swenshuai.xi E_SEAL_TSP0_RP_FILEIN, \
721*53ee8cc1Swenshuai.xi E_SEAL_TSP0_WP_QMEM, \
722*53ee8cc1Swenshuai.xi E_SEAL_TSP0_RP_QMEM, \
723*53ee8cc1Swenshuai.xi E_SEAL_TSP0_WP_FW, \
724*53ee8cc1Swenshuai.xi E_SEAL_TSP0_RP_FW
725*53ee8cc1Swenshuai.xi
726*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP5 \
727*53ee8cc1Swenshuai.xi E_SEAL_VE_WP, \
728*53ee8cc1Swenshuai.xi E_SEAL_VE_RP, \
729*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_OD, \
730*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_OD, \
731*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_SCM_M, \
732*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_SCM_M, \
733*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_SCM_S, \
734*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_SCM_S, \
735*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_PDW0, \
736*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_PDW0, \
737*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_PDW1, \
738*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_PDW1, \
739*53ee8cc1Swenshuai.xi E_SEAL_SC_WP_OPW, \
740*53ee8cc1Swenshuai.xi E_SEAL_SC_RP_OPW, \
741*53ee8cc1Swenshuai.xi E_SEAL_GOPD_PROTN, \
742*53ee8cc1Swenshuai.xi E_SEAL_AUDIO_AL_PROTN
743*53ee8cc1Swenshuai.xi
744*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP6 \
745*53ee8cc1Swenshuai.xi E_SEAL_GE0_SB_PROTN, \
746*53ee8cc1Swenshuai.xi E_SEAL_GE0_DB_PROTN, \
747*53ee8cc1Swenshuai.xi E_SEAL_GE1_SB_PROTN, \
748*53ee8cc1Swenshuai.xi E_SEAL_GE1_DB_PROTN, \
749*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
750*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
751*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
752*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
753*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
754*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
755*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
756*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
757*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
758*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
759*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
760*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY
761*53ee8cc1Swenshuai.xi
762*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP7 \
763*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
764*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
765*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
766*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
767*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
768*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
769*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
770*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
771*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
772*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
773*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
774*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
775*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
776*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
777*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
778*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY
779*53ee8cc1Swenshuai.xi
780*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP8 \
781*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
782*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
783*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
784*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
785*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
786*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
787*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
788*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
789*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
790*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
791*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
792*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
793*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
794*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
795*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
796*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY
797*53ee8cc1Swenshuai.xi
798*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP9 \
799*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
800*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
801*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
802*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
803*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
804*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
805*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
806*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
807*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
808*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
809*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
810*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
811*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
812*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
813*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
814*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY
815*53ee8cc1Swenshuai.xi
816*53ee8cc1Swenshuai.xi #define SEAL_LOCK_GROUP10 \
817*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_ENABLE_0, \
818*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_ENABLE_1, \
819*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_ENABLE_2, \
820*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_ENABLE_3, \
821*53ee8cc1Swenshuai.xi E_SEAL_HDCP_RIU_R_PROTN, \
822*53ee8cc1Swenshuai.xi E_SEAL_HDCP_XIU_R_PROTN, \
823*53ee8cc1Swenshuai.xi E_SEAL_HDCP_RIU_W_PROTN, \
824*53ee8cc1Swenshuai.xi E_SEAL_HDCP_XIU_W_PROTN, \
825*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_0_LOCK, \
826*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_1_LOCK, \
827*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_2_LOCK, \
828*53ee8cc1Swenshuai.xi E_SEAL_FCIE_WR_PROT_3_LOCK, \
829*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
830*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
831*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY, \
832*53ee8cc1Swenshuai.xi E_SEAL_LOCK_DUMMY
833*53ee8cc1Swenshuai.xi
834*53ee8cc1Swenshuai.xi
835*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
836*53ee8cc1Swenshuai.xi // Local Structures
837*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
838*53ee8cc1Swenshuai.xi const eSeal_IP NonPmIpTbl[SEAL_NONPM_TBL_IP_NUM] =
839*53ee8cc1Swenshuai.xi {
840*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP0, SEAL_NON_PM_GROUP1, SEAL_NON_PM_GROUP2,
841*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP3, SEAL_NON_PM_GROUP4, SEAL_NON_PM_GROUP5,
842*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP6, SEAL_NON_PM_GROUP7, SEAL_NON_PM_GROUP8,
843*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP9, SEAL_NON_PM_GROUP10, SEAL_NON_PM_GROUP11,
844*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP12, SEAL_NON_PM_GROUP13, SEAL_NON_PM_GROUP14,
845*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP15, SEAL_NON_PM_GROUP16, SEAL_NON_PM_GROUP17,
846*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP18, SEAL_NON_PM_GROUP19, SEAL_NON_PM_GROUP20,
847*53ee8cc1Swenshuai.xi SEAL_NON_PM_GROUP21, SEAL_NON_PM_GROUP22, SEAL_NON_PM_GROUP23
848*53ee8cc1Swenshuai.xi };
849*53ee8cc1Swenshuai.xi
850*53ee8cc1Swenshuai.xi const eSeal_IP PmIpTbl[SEAL_PM_TBL_IP_NUM] =
851*53ee8cc1Swenshuai.xi {
852*53ee8cc1Swenshuai.xi SEAL_PM_GROUP0, SEAL_PM_GROUP1, SEAL_PM_GROUP2
853*53ee8cc1Swenshuai.xi };
854*53ee8cc1Swenshuai.xi
855*53ee8cc1Swenshuai.xi const eSeal_ProcessorId ProcessorTbl[SEAL_TBL_PROCESSOR_NUM] =
856*53ee8cc1Swenshuai.xi {
857*53ee8cc1Swenshuai.xi SEAL_PROCESSOR_GROUP0
858*53ee8cc1Swenshuai.xi };
859*53ee8cc1Swenshuai.xi
860*53ee8cc1Swenshuai.xi const eSeal_Lock LockTbl[SEAL_TBL_LOCK_NUM] =
861*53ee8cc1Swenshuai.xi {
862*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP10, /*0x64*/
863*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
864*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
865*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
866*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
867*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
868*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
869*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
870*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
871*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
872*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
873*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
874*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
875*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
876*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
877*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP_DUMMY,
878*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP0, /*0x74*/
879*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP1,
880*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP2,
881*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP3,
882*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP4,
883*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP5,
884*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP6,
885*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP7,
886*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP8,
887*53ee8cc1Swenshuai.xi SEAL_LOCK_GROUP9
888*53ee8cc1Swenshuai.xi };
889*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
890*53ee8cc1Swenshuai.xi // Global Variables
891*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
892*53ee8cc1Swenshuai.xi
893*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
894*53ee8cc1Swenshuai.xi // Local Variables
895*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
896*53ee8cc1Swenshuai.xi static MS_VIRT _gSEAL_NonPmMapBase = 0;
897*53ee8cc1Swenshuai.xi static MS_VIRT _gSEAL_PmMapBase = 0;
898*53ee8cc1Swenshuai.xi
899*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
900*53ee8cc1Swenshuai.xi // Debug Functions
901*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
902*53ee8cc1Swenshuai.xi
903*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
904*53ee8cc1Swenshuai.xi // Local Functions
905*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
906*53ee8cc1Swenshuai.xi
907*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
908*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmReadByte
909*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: read 1 Byte data
910*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
911*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
912*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U8
913*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
914*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmReadByte(MS_U32 u32RegAddr)915*53ee8cc1Swenshuai.xi MS_U8 HAL_SEAL_NonPmReadByte(MS_U32 u32RegAddr)
916*53ee8cc1Swenshuai.xi {
917*53ee8cc1Swenshuai.xi return ((volatile MS_U8*)(_gSEAL_NonPmMapBase))[(u32RegAddr << 1) - (u32RegAddr & 1)];
918*53ee8cc1Swenshuai.xi }
919*53ee8cc1Swenshuai.xi
920*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
921*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_PmReadByte
922*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: read 1 Byte data
923*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
924*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
925*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U8
926*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
927*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_PmReadByte(MS_U32 u32RegAddr)928*53ee8cc1Swenshuai.xi MS_U8 HAL_SEAL_PmReadByte(MS_U32 u32RegAddr)
929*53ee8cc1Swenshuai.xi {
930*53ee8cc1Swenshuai.xi return ((volatile MS_U8*)(_gSEAL_PmMapBase))[(u32RegAddr << 1) - (u32RegAddr & 1)];
931*53ee8cc1Swenshuai.xi }
932*53ee8cc1Swenshuai.xi
933*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
934*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmRead2Byte
935*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: read 2 Byte data
936*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
937*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
938*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U16
939*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
940*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmRead2Byte(MS_U32 u32RegAddr)941*53ee8cc1Swenshuai.xi MS_U16 HAL_SEAL_NonPmRead2Byte(MS_U32 u32RegAddr)
942*53ee8cc1Swenshuai.xi {
943*53ee8cc1Swenshuai.xi return ((volatile MS_U16*)(_gSEAL_NonPmMapBase))[u32RegAddr];
944*53ee8cc1Swenshuai.xi }
945*53ee8cc1Swenshuai.xi
946*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
947*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_PmRead2Byte
948*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: read 2 Byte data
949*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
950*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
951*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U16
952*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
953*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_PmRead2Byte(MS_U32 u32RegAddr)954*53ee8cc1Swenshuai.xi MS_U16 HAL_SEAL_PmRead2Byte(MS_U32 u32RegAddr)
955*53ee8cc1Swenshuai.xi {
956*53ee8cc1Swenshuai.xi return ((volatile MS_U16*)(_gSEAL_PmMapBase))[u32RegAddr];
957*53ee8cc1Swenshuai.xi }
958*53ee8cc1Swenshuai.xi
959*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
960*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmRead4Byte
961*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: read 4 Byte data
962*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
963*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
964*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U32
965*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
966*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmRead4Byte(MS_U32 u32RegAddr)967*53ee8cc1Swenshuai.xi MS_U32 HAL_SEAL_NonPmRead4Byte(MS_U32 u32RegAddr)
968*53ee8cc1Swenshuai.xi {
969*53ee8cc1Swenshuai.xi return (HAL_SEAL_NonPmRead2Byte(u32RegAddr) | HAL_SEAL_NonPmRead2Byte(u32RegAddr+2) << 16);
970*53ee8cc1Swenshuai.xi }
971*53ee8cc1Swenshuai.xi
972*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
973*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmRead6Byte
974*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: read 6 Byte data
975*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
976*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
977*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U64
978*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
979*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmRead6Byte(MS_U32 u32RegAddr)980*53ee8cc1Swenshuai.xi MS_U64 HAL_SEAL_NonPmRead6Byte(MS_U32 u32RegAddr)
981*53ee8cc1Swenshuai.xi {
982*53ee8cc1Swenshuai.xi MS_U64 u64HitAddr;
983*53ee8cc1Swenshuai.xi
984*53ee8cc1Swenshuai.xi u64HitAddr = 0;
985*53ee8cc1Swenshuai.xi u64HitAddr |= (MS_U64)HAL_SEAL_NonPmRead2Byte(u32RegAddr);
986*53ee8cc1Swenshuai.xi u64HitAddr |= (MS_U64)HAL_SEAL_NonPmRead2Byte(u32RegAddr + 2) << 16;
987*53ee8cc1Swenshuai.xi u64HitAddr |= (MS_U64)(HAL_SEAL_NonPmRead2Byte(u32RegAddr + 4)) << 32;
988*53ee8cc1Swenshuai.xi
989*53ee8cc1Swenshuai.xi return u64HitAddr;
990*53ee8cc1Swenshuai.xi }
991*53ee8cc1Swenshuai.xi
992*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
993*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmWriteByte
994*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: write 1 Byte data
995*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
996*53ee8cc1Swenshuai.xi /// @param <IN> \b u8Val : 1 byte data
997*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
998*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
999*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1000*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmWriteByte(MS_U32 u32RegAddr,MS_U8 u8Val)1001*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_NonPmWriteByte(MS_U32 u32RegAddr, MS_U8 u8Val)
1002*53ee8cc1Swenshuai.xi {
1003*53ee8cc1Swenshuai.xi if (!u32RegAddr)
1004*53ee8cc1Swenshuai.xi {
1005*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s reg error!\n", __FUNCTION__);
1006*53ee8cc1Swenshuai.xi return FALSE;
1007*53ee8cc1Swenshuai.xi }
1008*53ee8cc1Swenshuai.xi
1009*53ee8cc1Swenshuai.xi ((volatile MS_U8*)(_gSEAL_NonPmMapBase))[(u32RegAddr << 1) - (u32RegAddr & 1)] = u8Val;
1010*53ee8cc1Swenshuai.xi return TRUE;
1011*53ee8cc1Swenshuai.xi }
1012*53ee8cc1Swenshuai.xi
1013*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1014*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_PmWriteByte
1015*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: write 1 Byte data
1016*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1017*53ee8cc1Swenshuai.xi /// @param <IN> \b u8Val : 1 byte data
1018*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1019*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1020*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1021*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_PmWriteByte(MS_U32 u32RegAddr,MS_U8 u8Val)1022*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_PmWriteByte(MS_U32 u32RegAddr, MS_U8 u8Val)
1023*53ee8cc1Swenshuai.xi {
1024*53ee8cc1Swenshuai.xi if (!u32RegAddr)
1025*53ee8cc1Swenshuai.xi {
1026*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s reg error!\n", __FUNCTION__);
1027*53ee8cc1Swenshuai.xi return FALSE;
1028*53ee8cc1Swenshuai.xi }
1029*53ee8cc1Swenshuai.xi
1030*53ee8cc1Swenshuai.xi ((volatile MS_U8*)(_gSEAL_PmMapBase))[(u32RegAddr << 1) - (u32RegAddr & 1)] = u8Val;
1031*53ee8cc1Swenshuai.xi return TRUE;
1032*53ee8cc1Swenshuai.xi }
1033*53ee8cc1Swenshuai.xi
1034*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1035*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmWrite2Byte
1036*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: write 2 Byte data
1037*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1038*53ee8cc1Swenshuai.xi /// @param <IN> \b u16Val : 2 byte data
1039*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1040*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1041*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1042*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmWrite2Byte(MS_U32 u32RegAddr,MS_U16 u16Val)1043*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_NonPmWrite2Byte(MS_U32 u32RegAddr, MS_U16 u16Val)
1044*53ee8cc1Swenshuai.xi {
1045*53ee8cc1Swenshuai.xi if (!u32RegAddr)
1046*53ee8cc1Swenshuai.xi {
1047*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s reg error!\n", __FUNCTION__);
1048*53ee8cc1Swenshuai.xi return FALSE;
1049*53ee8cc1Swenshuai.xi }
1050*53ee8cc1Swenshuai.xi
1051*53ee8cc1Swenshuai.xi ((volatile MS_U16*)(_gSEAL_NonPmMapBase))[u32RegAddr] = u16Val;
1052*53ee8cc1Swenshuai.xi return TRUE;
1053*53ee8cc1Swenshuai.xi }
1054*53ee8cc1Swenshuai.xi
1055*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1056*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_PmWrite2Byte
1057*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: write 2 Byte data
1058*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1059*53ee8cc1Swenshuai.xi /// @param <IN> \b u16Val : 2 byte data
1060*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1061*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1062*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1063*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_PmWrite2Byte(MS_U32 u32RegAddr,MS_U16 u16Val)1064*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_PmWrite2Byte(MS_U32 u32RegAddr, MS_U16 u16Val)
1065*53ee8cc1Swenshuai.xi {
1066*53ee8cc1Swenshuai.xi if (!u32RegAddr)
1067*53ee8cc1Swenshuai.xi {
1068*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s reg error!\n", __FUNCTION__);
1069*53ee8cc1Swenshuai.xi return FALSE;
1070*53ee8cc1Swenshuai.xi }
1071*53ee8cc1Swenshuai.xi
1072*53ee8cc1Swenshuai.xi ((volatile MS_U16*)(_gSEAL_PmMapBase))[u32RegAddr] = u16Val;
1073*53ee8cc1Swenshuai.xi return TRUE;
1074*53ee8cc1Swenshuai.xi }
1075*53ee8cc1Swenshuai.xi
1076*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1077*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmWrite4Byte
1078*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: write 4 Byte data
1079*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1080*53ee8cc1Swenshuai.xi /// @param <IN> \b u32Val : 4 byte data
1081*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1082*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1083*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1084*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmWrite4Byte(MS_U32 u32RegAddr,MS_U32 u32Val)1085*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_NonPmWrite4Byte(MS_U32 u32RegAddr, MS_U32 u32Val)
1086*53ee8cc1Swenshuai.xi {
1087*53ee8cc1Swenshuai.xi if (!u32RegAddr)
1088*53ee8cc1Swenshuai.xi {
1089*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s reg error!\n", __FUNCTION__);
1090*53ee8cc1Swenshuai.xi return FALSE;
1091*53ee8cc1Swenshuai.xi }
1092*53ee8cc1Swenshuai.xi
1093*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u32Val & 0x0000FFFF);
1094*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr+2, u32Val >> 16);
1095*53ee8cc1Swenshuai.xi return TRUE;
1096*53ee8cc1Swenshuai.xi }
1097*53ee8cc1Swenshuai.xi
1098*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1099*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmWrite6Byte
1100*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: write 6 Byte data
1101*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1102*53ee8cc1Swenshuai.xi /// @param <IN> \b u64Val : 4 byte data
1103*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1104*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1105*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1106*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmWrite6Byte(MS_U32 u32RegAddr,MS_U64 u64Val)1107*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_NonPmWrite6Byte(MS_U32 u32RegAddr, MS_U64 u64Val)
1108*53ee8cc1Swenshuai.xi {
1109*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u64Val & 0xFFFF);
1110*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr + 2,(u64Val >> 16) & 0xFFFF);
1111*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr + 4,(u64Val >> 32) & 0xFFFF);
1112*53ee8cc1Swenshuai.xi return TRUE;
1113*53ee8cc1Swenshuai.xi }
1114*53ee8cc1Swenshuai.xi
1115*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1116*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmWriteRegBit
1117*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: set or reset one bit in 1-byte data
1118*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1119*53ee8cc1Swenshuai.xi /// @param <IN> \b u8Mask: 1-byte mask
1120*53ee8cc1Swenshuai.xi /// @param <IN> \b bEnabl: decide if set or reset bits
1121*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1122*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1123*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmWriteRegBit(MS_U32 u32RegAddr,MS_U8 u8Mask,MS_BOOL bEnable)1124*53ee8cc1Swenshuai.xi MS_BOOL HAL_SEAL_NonPmWriteRegBit(MS_U32 u32RegAddr, MS_U8 u8Mask, MS_BOOL bEnable)
1125*53ee8cc1Swenshuai.xi {
1126*53ee8cc1Swenshuai.xi MS_U8 u8Val = HAL_SEAL_NonPmReadByte(u32RegAddr);
1127*53ee8cc1Swenshuai.xi if (!u32RegAddr)
1128*53ee8cc1Swenshuai.xi {
1129*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s reg error!\n", __FUNCTION__);
1130*53ee8cc1Swenshuai.xi return FALSE;
1131*53ee8cc1Swenshuai.xi }
1132*53ee8cc1Swenshuai.xi
1133*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegAddr);
1134*53ee8cc1Swenshuai.xi u8Val = (bEnable) ? (u8Val | u8Mask) : (u8Val & ~u8Mask);
1135*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegAddr, u8Val);
1136*53ee8cc1Swenshuai.xi return TRUE;
1137*53ee8cc1Swenshuai.xi }
1138*53ee8cc1Swenshuai.xi
1139*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1140*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_NonPmWrite2BytesBit
1141*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: set or reset one bit in 2-byte data
1142*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: register address
1143*53ee8cc1Swenshuai.xi /// @param <IN> \b u8Mask: 2-byte mask
1144*53ee8cc1Swenshuai.xi /// @param <IN> \b bEnabl: decide if set or reset bits
1145*53ee8cc1Swenshuai.xi /// @param <RET> \b TRUE: Ok FALSE: Fail
1146*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1147*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_NonPmWrite2BytesBit(MS_U32 u32RegOffset,MS_BOOL bEnable,MS_U16 u16Mask)1148*53ee8cc1Swenshuai.xi void HAL_SEAL_NonPmWrite2BytesBit(MS_U32 u32RegOffset, MS_BOOL bEnable, MS_U16 u16Mask)
1149*53ee8cc1Swenshuai.xi {
1150*53ee8cc1Swenshuai.xi MS_U16 val = HAL_SEAL_NonPmRead2Byte(u32RegOffset);
1151*53ee8cc1Swenshuai.xi val = (bEnable) ? (val | u16Mask) : (val & ~u16Mask);
1152*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegOffset, val);
1153*53ee8cc1Swenshuai.xi }
1154*53ee8cc1Swenshuai.xi
1155*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1156*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_GetNonPmIpIdx
1157*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the Non-PM IP index with respect to HW wired
1158*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: Non-PM IP index with respect to SW enum
1159*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1160*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_S32: Non-PM IP index with respect to HW wired
1161*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1162*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_GetNonPmIpIdx(eSeal_IP eNonPmIP)1163*53ee8cc1Swenshuai.xi MS_S32 HAL_SEAL_GetNonPmIpIdx(eSeal_IP eNonPmIP)
1164*53ee8cc1Swenshuai.xi {
1165*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
1166*53ee8cc1Swenshuai.xi
1167*53ee8cc1Swenshuai.xi for (s32HwIdx = 0; s32HwIdx < SEAL_NONPM_TBL_IP_NUM; s32HwIdx++)
1168*53ee8cc1Swenshuai.xi {
1169*53ee8cc1Swenshuai.xi if(eNonPmIP == NonPmIpTbl[s32HwIdx])
1170*53ee8cc1Swenshuai.xi {
1171*53ee8cc1Swenshuai.xi return s32HwIdx;
1172*53ee8cc1Swenshuai.xi }
1173*53ee8cc1Swenshuai.xi }
1174*53ee8cc1Swenshuai.xi
1175*53ee8cc1Swenshuai.xi return (-1);
1176*53ee8cc1Swenshuai.xi }
1177*53ee8cc1Swenshuai.xi
1178*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1179*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_GetPmIpIdx
1180*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the PM IP index with respect to HW wired
1181*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: PM IP index with respect to SW enum
1182*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1183*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_S32: PM IP index with respect to HW wired
1184*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1185*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_GetPmIpIdx(eSeal_IP ePmIP)1186*53ee8cc1Swenshuai.xi MS_S32 HAL_SEAL_GetPmIpIdx(eSeal_IP ePmIP)
1187*53ee8cc1Swenshuai.xi {
1188*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
1189*53ee8cc1Swenshuai.xi
1190*53ee8cc1Swenshuai.xi for (s32HwIdx = 0; s32HwIdx < SEAL_PM_TBL_IP_NUM; s32HwIdx++)
1191*53ee8cc1Swenshuai.xi {
1192*53ee8cc1Swenshuai.xi if(ePmIP == PmIpTbl[s32HwIdx])
1193*53ee8cc1Swenshuai.xi {
1194*53ee8cc1Swenshuai.xi return s32HwIdx;
1195*53ee8cc1Swenshuai.xi }
1196*53ee8cc1Swenshuai.xi }
1197*53ee8cc1Swenshuai.xi
1198*53ee8cc1Swenshuai.xi return (-1);
1199*53ee8cc1Swenshuai.xi }
1200*53ee8cc1Swenshuai.xi
1201*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1202*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_GetProcessorIdx
1203*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the processor index with respect to HW wired
1204*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: Processor index with respect to SW enum
1205*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1206*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_S32: Processor index with respect to HW wired
1207*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1208*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_GetProcessorIdx(eSeal_ProcessorId eProcessorId)1209*53ee8cc1Swenshuai.xi MS_S32 HAL_SEAL_GetProcessorIdx(eSeal_ProcessorId eProcessorId)
1210*53ee8cc1Swenshuai.xi {
1211*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
1212*53ee8cc1Swenshuai.xi
1213*53ee8cc1Swenshuai.xi for (s32HwIdx = 0; s32HwIdx < SEAL_TBL_PROCESSOR_NUM; s32HwIdx++)
1214*53ee8cc1Swenshuai.xi {
1215*53ee8cc1Swenshuai.xi if(eProcessorId == ProcessorTbl[s32HwIdx])
1216*53ee8cc1Swenshuai.xi {
1217*53ee8cc1Swenshuai.xi return s32HwIdx;
1218*53ee8cc1Swenshuai.xi }
1219*53ee8cc1Swenshuai.xi }
1220*53ee8cc1Swenshuai.xi
1221*53ee8cc1Swenshuai.xi return (-1);
1222*53ee8cc1Swenshuai.xi }
1223*53ee8cc1Swenshuai.xi
1224*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1225*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_GetLockIdx
1226*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the lock index with respect to HW wired
1227*53ee8cc1Swenshuai.xi /// @param <IN> \b u32RegAddr: Lock index with respect to SW enum
1228*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1229*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_S32: Lock index with respect to HW wired
1230*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1231*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_GetLockIdx(eSeal_Lock eLockId)1232*53ee8cc1Swenshuai.xi MS_S32 HAL_SEAL_GetLockIdx(eSeal_Lock eLockId)
1233*53ee8cc1Swenshuai.xi {
1234*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
1235*53ee8cc1Swenshuai.xi
1236*53ee8cc1Swenshuai.xi for (s32HwIdx = 0; s32HwIdx < SEAL_TBL_LOCK_NUM; s32HwIdx++)
1237*53ee8cc1Swenshuai.xi {
1238*53ee8cc1Swenshuai.xi if(eLockId == LockTbl[s32HwIdx])
1239*53ee8cc1Swenshuai.xi {
1240*53ee8cc1Swenshuai.xi return s32HwIdx;
1241*53ee8cc1Swenshuai.xi }
1242*53ee8cc1Swenshuai.xi }
1243*53ee8cc1Swenshuai.xi
1244*53ee8cc1Swenshuai.xi return (-1);
1245*53ee8cc1Swenshuai.xi }
1246*53ee8cc1Swenshuai.xi
1247*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1248*53ee8cc1Swenshuai.xi // Type and Structure Declaration
1249*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1250*53ee8cc1Swenshuai.xi
1251*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1252*53ee8cc1Swenshuai.xi // Global Functions
1253*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1254*53ee8cc1Swenshuai.xi
1255*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1256*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_SEAL_SetIOMapBase
1257*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: set io-base
1258*53ee8cc1Swenshuai.xi /// @param <IN> \b u32NonPmBaseAddr: Non-PM io-base address
1259*53ee8cc1Swenshuai.xi /// @param <IN> \b u32PmBaseAddr: PM io-base address
1260*53ee8cc1Swenshuai.xi /// @param <OUT> \b None :
1261*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U8
1262*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1263*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_SEAL_SetIOMapBase(MS_VIRT u32NonPmBaseAddr,MS_VIRT u32PmBaseAddr)1264*53ee8cc1Swenshuai.xi void HAL_SEAL_SetIOMapBase(MS_VIRT u32NonPmBaseAddr, MS_VIRT u32PmBaseAddr)
1265*53ee8cc1Swenshuai.xi {
1266*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
1267*53ee8cc1Swenshuai.xi MS_U8 u8Val;
1268*53ee8cc1Swenshuai.xi
1269*53ee8cc1Swenshuai.xi _gSEAL_NonPmMapBase = u32NonPmBaseAddr;
1270*53ee8cc1Swenshuai.xi _gSEAL_PmMapBase = u32PmBaseAddr;
1271*53ee8cc1Swenshuai.xi HAL_SEAL_DBG(printf("SEAL _gSEAL_NonPmMapBase= %x\n", _gSEAL_NonPmMapBase));
1272*53ee8cc1Swenshuai.xi HAL_SEAL_DBG(printf("SEAL _gSEAL_PmMapBase= %x\n", _gSEAL_PmMapBase));
1273*53ee8cc1Swenshuai.xi
1274*53ee8cc1Swenshuai.xi // Force RIU bank be controled by TZPC
1275*53ee8cc1Swenshuai.xi u32RegAddr = REG_TZPC_PROTECT_CTL;
1276*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegAddr);
1277*53ee8cc1Swenshuai.xi u8Val = u8Val | (1 << 2);
1278*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegAddr, u8Val);
1279*53ee8cc1Swenshuai.xi }
1280*53ee8cc1Swenshuai.xi
1281*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1282*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureRangeSet
1283*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: set the secure range on MIU
1284*53ee8cc1Swenshuai.xi /// @param <IN> \b u8SecureRangeId : Secure range ID
1285*53ee8cc1Swenshuai.xi /// @param <IN> \b u64StartAddr : Start address of secure range
1286*53ee8cc1Swenshuai.xi /// @param <IN> \b u64EndAddr : End address of secure range
1287*53ee8cc1Swenshuai.xi /// @param <IN> \b u32Attribute : Attribute of secure range
1288*53ee8cc1Swenshuai.xi /// @param <OUT> \b OUT :
1289*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1290*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b GLOBAL :
1291*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureRangeSet(MS_U8 u8SecureRangeId,MS_U64 u64StartAddr,MS_U64 u64EndAddr,MS_U32 u32Attribute)1292*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureRangeSet(
1293*53ee8cc1Swenshuai.xi MS_U8 u8SecureRangeId,
1294*53ee8cc1Swenshuai.xi MS_U64 u64StartAddr,
1295*53ee8cc1Swenshuai.xi MS_U64 u64EndAddr,
1296*53ee8cc1Swenshuai.xi MS_U32 u32Attribute
1297*53ee8cc1Swenshuai.xi )
1298*53ee8cc1Swenshuai.xi {
1299*53ee8cc1Swenshuai.xi MS_U32 u32RegStartAddr = 0;
1300*53ee8cc1Swenshuai.xi MS_U32 u32RegEndAddr = 0;
1301*53ee8cc1Swenshuai.xi MS_U32 u32RegAttribute = 0;
1302*53ee8cc1Swenshuai.xi MS_U32 u32RegDetEn = 0;
1303*53ee8cc1Swenshuai.xi MS_U32 u32RegDetEnDummy = 0; // work-around for 0x76 not readable issue
1304*53ee8cc1Swenshuai.xi MS_U64 u64StartOffset;
1305*53ee8cc1Swenshuai.xi MS_U64 u64EndOffset;
1306*53ee8cc1Swenshuai.xi MS_U8 u8MiuSel;
1307*53ee8cc1Swenshuai.xi MS_U8 u8Val;
1308*53ee8cc1Swenshuai.xi
1309*53ee8cc1Swenshuai.xi _phy_to_miu_offset(u8MiuSel, u64StartOffset, u64StartAddr);
1310*53ee8cc1Swenshuai.xi _phy_to_miu_offset(u8MiuSel, u64EndOffset, u64EndAddr);
1311*53ee8cc1Swenshuai.xi
1312*53ee8cc1Swenshuai.xi if(u8MiuSel == E_CHIP_MIU_0)
1313*53ee8cc1Swenshuai.xi {
1314*53ee8cc1Swenshuai.xi u32RegDetEn = REG_SECURE0_DETECT_ENABLE;
1315*53ee8cc1Swenshuai.xi u32RegDetEnDummy = REG_SECURE0_DUMMY0;
1316*53ee8cc1Swenshuai.xi
1317*53ee8cc1Swenshuai.xi switch(u8SecureRangeId)
1318*53ee8cc1Swenshuai.xi {
1319*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID0:
1320*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE0_START_ADDR;
1321*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE0_END_ADDR;
1322*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE0_ATTRIBUTE;
1323*53ee8cc1Swenshuai.xi break;
1324*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID1:
1325*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE1_START_ADDR;
1326*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE1_END_ADDR;
1327*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE1_ATTRIBUTE;
1328*53ee8cc1Swenshuai.xi break;
1329*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID2:
1330*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE2_START_ADDR;
1331*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE2_END_ADDR;
1332*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE2_ATTRIBUTE;
1333*53ee8cc1Swenshuai.xi break;
1334*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID3:
1335*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE3_START_ADDR;
1336*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE3_END_ADDR;
1337*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE3_ATTRIBUTE;
1338*53ee8cc1Swenshuai.xi break;
1339*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID4:
1340*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE4_START_ADDR;
1341*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE4_END_ADDR;
1342*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE4_ATTRIBUTE;
1343*53ee8cc1Swenshuai.xi break;
1344*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID5:
1345*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE5_START_ADDR;
1346*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE5_END_ADDR;
1347*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE5_ATTRIBUTE;
1348*53ee8cc1Swenshuai.xi break;
1349*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID6:
1350*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE6_START_ADDR;
1351*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE6_END_ADDR;
1352*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE6_ATTRIBUTE;
1353*53ee8cc1Swenshuai.xi break;
1354*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID7:
1355*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE7_START_ADDR;
1356*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE7_END_ADDR;
1357*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE7_ATTRIBUTE;
1358*53ee8cc1Swenshuai.xi break;
1359*53ee8cc1Swenshuai.xi default:
1360*53ee8cc1Swenshuai.xi return false;
1361*53ee8cc1Swenshuai.xi }
1362*53ee8cc1Swenshuai.xi }
1363*53ee8cc1Swenshuai.xi else if(u8MiuSel == E_CHIP_MIU_1)
1364*53ee8cc1Swenshuai.xi {
1365*53ee8cc1Swenshuai.xi u32RegDetEn = REG_SECURE1_DETECT_ENABLE;
1366*53ee8cc1Swenshuai.xi u32RegDetEnDummy = REG_SECURE1_DUMMY0;
1367*53ee8cc1Swenshuai.xi
1368*53ee8cc1Swenshuai.xi switch(u8SecureRangeId)
1369*53ee8cc1Swenshuai.xi {
1370*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID0:
1371*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE0_START_ADDR;
1372*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE0_END_ADDR;
1373*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE0_ATTRIBUTE;
1374*53ee8cc1Swenshuai.xi break;
1375*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID1:
1376*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE1_START_ADDR;
1377*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE1_END_ADDR;
1378*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE1_ATTRIBUTE;
1379*53ee8cc1Swenshuai.xi break;
1380*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID2:
1381*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE2_START_ADDR;
1382*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE2_END_ADDR;
1383*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE2_ATTRIBUTE;
1384*53ee8cc1Swenshuai.xi break;
1385*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID3:
1386*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE3_START_ADDR;
1387*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE3_END_ADDR;
1388*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE3_ATTRIBUTE;
1389*53ee8cc1Swenshuai.xi break;
1390*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID4:
1391*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE4_START_ADDR;
1392*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE4_END_ADDR;
1393*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE4_ATTRIBUTE;
1394*53ee8cc1Swenshuai.xi break;
1395*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID5:
1396*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE5_START_ADDR;
1397*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE5_END_ADDR;
1398*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE5_ATTRIBUTE;
1399*53ee8cc1Swenshuai.xi break;
1400*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID6:
1401*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE6_START_ADDR;
1402*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE6_END_ADDR;
1403*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE6_ATTRIBUTE;
1404*53ee8cc1Swenshuai.xi break;
1405*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID7:
1406*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE7_START_ADDR;
1407*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE7_END_ADDR;
1408*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE7_ATTRIBUTE;
1409*53ee8cc1Swenshuai.xi break;
1410*53ee8cc1Swenshuai.xi default:
1411*53ee8cc1Swenshuai.xi return false;
1412*53ee8cc1Swenshuai.xi }
1413*53ee8cc1Swenshuai.xi }
1414*53ee8cc1Swenshuai.xi else
1415*53ee8cc1Swenshuai.xi {
1416*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s MIU%d is not support\n", __FUNCTION__, u8MiuSel);
1417*53ee8cc1Swenshuai.xi }
1418*53ee8cc1Swenshuai.xi
1419*53ee8cc1Swenshuai.xi if ( (u32Attribute == 0x0)|| (u64StartOffset == 0 && u64EndOffset == 0) )
1420*53ee8cc1Swenshuai.xi {
1421*53ee8cc1Swenshuai.xi // Disable secure range detection
1422*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegDetEnDummy);
1423*53ee8cc1Swenshuai.xi u8Val &= ~(1 << u8SecureRangeId);
1424*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegDetEn, u8Val);
1425*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegDetEnDummy, u8Val);
1426*53ee8cc1Swenshuai.xi
1427*53ee8cc1Swenshuai.xi // Reset secure range attribute
1428*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegAttribute, 0x0f);
1429*53ee8cc1Swenshuai.xi
1430*53ee8cc1Swenshuai.xi // Set start address
1431*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite6Byte(u32RegStartAddr, 0x00);
1432*53ee8cc1Swenshuai.xi
1433*53ee8cc1Swenshuai.xi // Set end address
1434*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite6Byte(u32RegEndAddr, 0x00);
1435*53ee8cc1Swenshuai.xi }
1436*53ee8cc1Swenshuai.xi else
1437*53ee8cc1Swenshuai.xi {
1438*53ee8cc1Swenshuai.xi // Disable secure range detection
1439*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegDetEnDummy);
1440*53ee8cc1Swenshuai.xi u8Val &= ~(1 << u8SecureRangeId);
1441*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegDetEn, u8Val);
1442*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegDetEnDummy, u8Val);
1443*53ee8cc1Swenshuai.xi
1444*53ee8cc1Swenshuai.xi // Reset secure range attribute
1445*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegAttribute, 0x0f);
1446*53ee8cc1Swenshuai.xi
1447*53ee8cc1Swenshuai.xi // Set start address
1448*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite6Byte(u32RegStartAddr, u64StartOffset);
1449*53ee8cc1Swenshuai.xi
1450*53ee8cc1Swenshuai.xi // Set end address
1451*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite6Byte(u32RegEndAddr, u64EndOffset);
1452*53ee8cc1Swenshuai.xi
1453*53ee8cc1Swenshuai.xi // Set secure range attribute
1454*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegAttribute, u32Attribute);
1455*53ee8cc1Swenshuai.xi
1456*53ee8cc1Swenshuai.xi // Enable secure range detection
1457*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegDetEnDummy);
1458*53ee8cc1Swenshuai.xi u8Val |= (1 << u8SecureRangeId);
1459*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegDetEn, u8Val);
1460*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegDetEnDummy, u8Val);
1461*53ee8cc1Swenshuai.xi }
1462*53ee8cc1Swenshuai.xi
1463*53ee8cc1Swenshuai.xi return TRUE;
1464*53ee8cc1Swenshuai.xi }
1465*53ee8cc1Swenshuai.xi
1466*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1467*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureRangeQuery
1468*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Query the attribute of secure range
1469*53ee8cc1Swenshuai.xi /// @param <IN> \b u8SecureRangeId : Secure range ID
1470*53ee8cc1Swenshuai.xi /// @param <OUT> \b pAttribute : Attribute of secure range
1471*53ee8cc1Swenshuai.xi /// @param <OUT> \b pStartAddr : Start address of secure range
1472*53ee8cc1Swenshuai.xi /// @param <OUT> \b pEndAddr : End address of secure range
1473*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1474*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b GLOBAL :
1475*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureRangeQuery(MS_U8 u8MiuDev,MS_U8 u8SecureRangeId,MS_U32 * pAttribute,MS_U64 * pStartAddr,MS_U64 * pEndAddr)1476*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureRangeQuery(
1477*53ee8cc1Swenshuai.xi MS_U8 u8MiuDev,
1478*53ee8cc1Swenshuai.xi MS_U8 u8SecureRangeId,
1479*53ee8cc1Swenshuai.xi MS_U32 *pAttribute,
1480*53ee8cc1Swenshuai.xi MS_U64 *pStartAddr,
1481*53ee8cc1Swenshuai.xi MS_U64 *pEndAddr)
1482*53ee8cc1Swenshuai.xi {
1483*53ee8cc1Swenshuai.xi MS_U32 u32RegStartAddr = 0;
1484*53ee8cc1Swenshuai.xi MS_U32 u32RegEndAddr = 0;
1485*53ee8cc1Swenshuai.xi MS_U32 u32RegAttribute = 0;
1486*53ee8cc1Swenshuai.xi
1487*53ee8cc1Swenshuai.xi if(u8MiuDev == E_HAL_MIU_DEV0)
1488*53ee8cc1Swenshuai.xi {
1489*53ee8cc1Swenshuai.xi switch(u8SecureRangeId)
1490*53ee8cc1Swenshuai.xi {
1491*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID0:
1492*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE0_START_ADDR;
1493*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE0_END_ADDR;
1494*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE0_ATTRIBUTE;
1495*53ee8cc1Swenshuai.xi break;
1496*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID1:
1497*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE1_START_ADDR;
1498*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE1_END_ADDR;
1499*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE1_ATTRIBUTE;
1500*53ee8cc1Swenshuai.xi break;
1501*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID2:
1502*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE2_START_ADDR;
1503*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE2_END_ADDR;
1504*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE2_ATTRIBUTE;
1505*53ee8cc1Swenshuai.xi break;
1506*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID3:
1507*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE3_START_ADDR;
1508*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE3_END_ADDR;
1509*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE3_ATTRIBUTE;
1510*53ee8cc1Swenshuai.xi break;
1511*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID4:
1512*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE4_START_ADDR;
1513*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE4_END_ADDR;
1514*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE4_ATTRIBUTE;
1515*53ee8cc1Swenshuai.xi break;
1516*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID5:
1517*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE5_START_ADDR;
1518*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE5_END_ADDR;
1519*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE5_ATTRIBUTE;
1520*53ee8cc1Swenshuai.xi break;
1521*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID6:
1522*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE6_START_ADDR;
1523*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE6_END_ADDR;
1524*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE6_ATTRIBUTE;
1525*53ee8cc1Swenshuai.xi break;
1526*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID7:
1527*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE7_START_ADDR;
1528*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE7_END_ADDR;
1529*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE7_ATTRIBUTE;
1530*53ee8cc1Swenshuai.xi break;
1531*53ee8cc1Swenshuai.xi default:
1532*53ee8cc1Swenshuai.xi return false;
1533*53ee8cc1Swenshuai.xi }
1534*53ee8cc1Swenshuai.xi }
1535*53ee8cc1Swenshuai.xi else if( u8MiuDev == E_HAL_MIU_DEV1 )
1536*53ee8cc1Swenshuai.xi {
1537*53ee8cc1Swenshuai.xi switch(u8SecureRangeId)
1538*53ee8cc1Swenshuai.xi {
1539*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID0:
1540*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE0_START_ADDR;
1541*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE0_END_ADDR;
1542*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE0_ATTRIBUTE;
1543*53ee8cc1Swenshuai.xi break;
1544*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID1:
1545*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE1_START_ADDR;
1546*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE1_END_ADDR;
1547*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE1_ATTRIBUTE;
1548*53ee8cc1Swenshuai.xi break;
1549*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID2:
1550*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE2_START_ADDR;
1551*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE2_END_ADDR;
1552*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE2_ATTRIBUTE;
1553*53ee8cc1Swenshuai.xi break;
1554*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID3:
1555*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE3_START_ADDR;
1556*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE3_END_ADDR;
1557*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE3_ATTRIBUTE;
1558*53ee8cc1Swenshuai.xi break;
1559*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID4:
1560*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE4_START_ADDR;
1561*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE4_END_ADDR;
1562*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE4_ATTRIBUTE;
1563*53ee8cc1Swenshuai.xi break;
1564*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID5:
1565*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE5_START_ADDR;
1566*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE5_END_ADDR;
1567*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE5_ATTRIBUTE;
1568*53ee8cc1Swenshuai.xi break;
1569*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID6:
1570*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE6_START_ADDR;
1571*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE6_END_ADDR;
1572*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE6_ATTRIBUTE;
1573*53ee8cc1Swenshuai.xi break;
1574*53ee8cc1Swenshuai.xi case E_HAL_SEAL_SECURE_RANGE_ID7:
1575*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE7_START_ADDR;
1576*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE7_END_ADDR;
1577*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE7_ATTRIBUTE;
1578*53ee8cc1Swenshuai.xi break;
1579*53ee8cc1Swenshuai.xi default:
1580*53ee8cc1Swenshuai.xi return false;
1581*53ee8cc1Swenshuai.xi }
1582*53ee8cc1Swenshuai.xi }
1583*53ee8cc1Swenshuai.xi else
1584*53ee8cc1Swenshuai.xi {
1585*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s MIU%d is not support\n", __FUNCTION__, u8MiuDev);
1586*53ee8cc1Swenshuai.xi }
1587*53ee8cc1Swenshuai.xi
1588*53ee8cc1Swenshuai.xi // Get secure range attribute
1589*53ee8cc1Swenshuai.xi *pAttribute = (MS_U32)(HAL_SEAL_NonPmReadByte(u32RegAttribute));
1590*53ee8cc1Swenshuai.xi
1591*53ee8cc1Swenshuai.xi // Get start address
1592*53ee8cc1Swenshuai.xi *pStartAddr = HAL_SEAL_NonPmRead6Byte(u32RegStartAddr);
1593*53ee8cc1Swenshuai.xi
1594*53ee8cc1Swenshuai.xi // Get end address
1595*53ee8cc1Swenshuai.xi *pEndAddr = HAL_SEAL_NonPmRead6Byte(u32RegEndAddr);
1596*53ee8cc1Swenshuai.xi
1597*53ee8cc1Swenshuai.xi return TRUE;
1598*53ee8cc1Swenshuai.xi }
1599*53ee8cc1Swenshuai.xi
1600*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1601*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_IMI_RangeSet
1602*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: set the secure range on internel memory interface
1603*53ee8cc1Swenshuai.xi /// @param <IN> \b u32StartAddr : Start address of secure range on IMI
1604*53ee8cc1Swenshuai.xi /// @param <IN> \b u32EndAddr : End address of secure range on IMI
1605*53ee8cc1Swenshuai.xi /// @param <IN> \b bEnable : Enable/Disable secure range on IMI
1606*53ee8cc1Swenshuai.xi /// @param <OUT> \b OUT :
1607*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1608*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b GLOBAL :
1609*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_IMI_RangeSet(MS_U32 u32StartAddr,MS_U32 u32EndAddr,MS_BOOL bEnable)1610*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_IMI_RangeSet(MS_U32 u32StartAddr, MS_U32 u32EndAddr, MS_BOOL bEnable)
1611*53ee8cc1Swenshuai.xi {
1612*53ee8cc1Swenshuai.xi MS_U32 u32RegStartAddr = 0;
1613*53ee8cc1Swenshuai.xi MS_U32 u32RegEndAddr = 0;
1614*53ee8cc1Swenshuai.xi
1615*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_IMI_RANGE_START_ADDR;
1616*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_IMI_RANGE_END_ADDR;
1617*53ee8cc1Swenshuai.xi
1618*53ee8cc1Swenshuai.xi if(bEnable == 1)
1619*53ee8cc1Swenshuai.xi {
1620*53ee8cc1Swenshuai.xi // Set start address
1621*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite4Byte(u32RegStartAddr, u32StartAddr);
1622*53ee8cc1Swenshuai.xi
1623*53ee8cc1Swenshuai.xi // Set end address
1624*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite4Byte(u32RegEndAddr, u32EndAddr);
1625*53ee8cc1Swenshuai.xi }
1626*53ee8cc1Swenshuai.xi else
1627*53ee8cc1Swenshuai.xi {
1628*53ee8cc1Swenshuai.xi // Reset start address
1629*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite4Byte(u32RegStartAddr, 0x0);
1630*53ee8cc1Swenshuai.xi
1631*53ee8cc1Swenshuai.xi // Reset end address
1632*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite4Byte(u32RegEndAddr,0x0);
1633*53ee8cc1Swenshuai.xi }
1634*53ee8cc1Swenshuai.xi
1635*53ee8cc1Swenshuai.xi return TRUE;
1636*53ee8cc1Swenshuai.xi }
1637*53ee8cc1Swenshuai.xi
1638*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1639*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_GetMiuHitFlag
1640*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the information about hitted flag on MIU
1641*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1642*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1643*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_BOOL: Hitted flag
1644*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1645*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_GetMiuHitFlag(MS_U8 u8MiuDev)1646*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_GetMiuHitFlag(MS_U8 u8MiuDev)
1647*53ee8cc1Swenshuai.xi {
1648*53ee8cc1Swenshuai.xi MS_U32 u32RegLogAddr;
1649*53ee8cc1Swenshuai.xi MS_U16 u16Val;
1650*53ee8cc1Swenshuai.xi
1651*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1652*53ee8cc1Swenshuai.xi {
1653*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1654*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE0_HITTED_STATUS;
1655*53ee8cc1Swenshuai.xi break;
1656*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1657*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE1_HITTED_STATUS;
1658*53ee8cc1Swenshuai.xi break;
1659*53ee8cc1Swenshuai.xi default:
1660*53ee8cc1Swenshuai.xi return FALSE;
1661*53ee8cc1Swenshuai.xi }
1662*53ee8cc1Swenshuai.xi
1663*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegLogAddr);
1664*53ee8cc1Swenshuai.xi
1665*53ee8cc1Swenshuai.xi if(REG_SECURE_HITTED_FALG & u16Val)
1666*53ee8cc1Swenshuai.xi {
1667*53ee8cc1Swenshuai.xi return TRUE;
1668*53ee8cc1Swenshuai.xi }
1669*53ee8cc1Swenshuai.xi else
1670*53ee8cc1Swenshuai.xi {
1671*53ee8cc1Swenshuai.xi return FALSE;
1672*53ee8cc1Swenshuai.xi }
1673*53ee8cc1Swenshuai.xi }
1674*53ee8cc1Swenshuai.xi
1675*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1676*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_GetHitRangeID
1677*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the information about the ID of hitted secure range on MIU
1678*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1679*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1680*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U8: ID of hitted secure range
1681*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1682*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_GetMiuHitRangeID(MS_U8 u8MiuDev)1683*53ee8cc1Swenshuai.xi MS_U8 HAL_Seal_GetMiuHitRangeID(MS_U8 u8MiuDev)
1684*53ee8cc1Swenshuai.xi {
1685*53ee8cc1Swenshuai.xi MS_U32 u32RegLogAddr;
1686*53ee8cc1Swenshuai.xi MS_U16 u16Val;
1687*53ee8cc1Swenshuai.xi MS_U16 u8ret;
1688*53ee8cc1Swenshuai.xi
1689*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1690*53ee8cc1Swenshuai.xi {
1691*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1692*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE0_HITTED_STATUS;
1693*53ee8cc1Swenshuai.xi break;
1694*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1695*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE1_HITTED_STATUS;
1696*53ee8cc1Swenshuai.xi break;
1697*53ee8cc1Swenshuai.xi default:
1698*53ee8cc1Swenshuai.xi return FALSE;
1699*53ee8cc1Swenshuai.xi }
1700*53ee8cc1Swenshuai.xi
1701*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegLogAddr);
1702*53ee8cc1Swenshuai.xi
1703*53ee8cc1Swenshuai.xi u8ret =(MS_U8)GET_HIT_RANGE_ID(u16Val);
1704*53ee8cc1Swenshuai.xi
1705*53ee8cc1Swenshuai.xi return u8ret;
1706*53ee8cc1Swenshuai.xi }
1707*53ee8cc1Swenshuai.xi
1708*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1709*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_GetHitClientID
1710*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the information about the ID of hittd MIU client ID on MIU
1711*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1712*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1713*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U8: hittd MIU client ID
1714*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1715*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_GetMiuHitClientID(MS_U8 u8MiuDev)1716*53ee8cc1Swenshuai.xi MS_U8 HAL_Seal_GetMiuHitClientID(MS_U8 u8MiuDev)
1717*53ee8cc1Swenshuai.xi {
1718*53ee8cc1Swenshuai.xi MS_U32 u32RegLogAddr;
1719*53ee8cc1Swenshuai.xi MS_U16 u16Val;
1720*53ee8cc1Swenshuai.xi MS_U16 u8ret;
1721*53ee8cc1Swenshuai.xi
1722*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1723*53ee8cc1Swenshuai.xi {
1724*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1725*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE0_HITTED_STATUS;
1726*53ee8cc1Swenshuai.xi break;
1727*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1728*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE1_HITTED_STATUS;
1729*53ee8cc1Swenshuai.xi break;
1730*53ee8cc1Swenshuai.xi default:
1731*53ee8cc1Swenshuai.xi return FALSE;
1732*53ee8cc1Swenshuai.xi }
1733*53ee8cc1Swenshuai.xi
1734*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegLogAddr);
1735*53ee8cc1Swenshuai.xi u8ret =(MS_U8)GET_HIT_CLIENT_ID(u16Val);
1736*53ee8cc1Swenshuai.xi
1737*53ee8cc1Swenshuai.xi return u8ret;
1738*53ee8cc1Swenshuai.xi }
1739*53ee8cc1Swenshuai.xi
1740*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1741*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_GetSecureFlag
1742*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the information about the hitted client on MIU be secure or not
1743*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1744*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1745*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_BOOL: Secure flag
1746*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1747*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_GetMiuSecureFlag(MS_U8 u8MiuDev)1748*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_GetMiuSecureFlag(MS_U8 u8MiuDev)
1749*53ee8cc1Swenshuai.xi {
1750*53ee8cc1Swenshuai.xi return TRUE;
1751*53ee8cc1Swenshuai.xi }
1752*53ee8cc1Swenshuai.xi
1753*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1754*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_GetWriteFlag
1755*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the information about the violation on MIU be write or read access
1756*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1757*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1758*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_BOOL: Write flag
1759*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1760*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_GetMiuWriteFlag(MS_U8 u8MiuDev)1761*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_GetMiuWriteFlag(MS_U8 u8MiuDev)
1762*53ee8cc1Swenshuai.xi {
1763*53ee8cc1Swenshuai.xi MS_U32 u32RegLogAddr;
1764*53ee8cc1Swenshuai.xi MS_U16 u16Val;
1765*53ee8cc1Swenshuai.xi
1766*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1767*53ee8cc1Swenshuai.xi {
1768*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1769*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE0_HITTED_STATUS;
1770*53ee8cc1Swenshuai.xi break;
1771*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1772*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE1_HITTED_STATUS;
1773*53ee8cc1Swenshuai.xi break;
1774*53ee8cc1Swenshuai.xi default:
1775*53ee8cc1Swenshuai.xi return FALSE;
1776*53ee8cc1Swenshuai.xi }
1777*53ee8cc1Swenshuai.xi
1778*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegLogAddr);
1779*53ee8cc1Swenshuai.xi
1780*53ee8cc1Swenshuai.xi if(REG_SECURE_HITTED_IS_WRITE & u16Val)
1781*53ee8cc1Swenshuai.xi {
1782*53ee8cc1Swenshuai.xi return TRUE;
1783*53ee8cc1Swenshuai.xi }
1784*53ee8cc1Swenshuai.xi else
1785*53ee8cc1Swenshuai.xi {
1786*53ee8cc1Swenshuai.xi return FALSE;
1787*53ee8cc1Swenshuai.xi }
1788*53ee8cc1Swenshuai.xi }
1789*53ee8cc1Swenshuai.xi
1790*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1791*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_GetHitAddr
1792*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Get the information about the hitted address on MIU
1793*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1794*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1795*53ee8cc1Swenshuai.xi /// @param <RET> \b MS_U32: Hitted address
1796*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1797*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_GetMiuHitAddr(MS_U8 u8MiuDev)1798*53ee8cc1Swenshuai.xi MS_U64 HAL_Seal_GetMiuHitAddr(MS_U8 u8MiuDev)
1799*53ee8cc1Swenshuai.xi {
1800*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
1801*53ee8cc1Swenshuai.xi MS_U64 u64Val;
1802*53ee8cc1Swenshuai.xi
1803*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1804*53ee8cc1Swenshuai.xi {
1805*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1806*53ee8cc1Swenshuai.xi u32RegAddr = REG_SECURE0_HITTED_ADDR;
1807*53ee8cc1Swenshuai.xi break;
1808*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1809*53ee8cc1Swenshuai.xi u32RegAddr = REG_SECURE1_HITTED_ADDR;
1810*53ee8cc1Swenshuai.xi break;
1811*53ee8cc1Swenshuai.xi default:
1812*53ee8cc1Swenshuai.xi return FALSE;
1813*53ee8cc1Swenshuai.xi }
1814*53ee8cc1Swenshuai.xi
1815*53ee8cc1Swenshuai.xi u64Val = HAL_SEAL_NonPmRead6Byte(u32RegAddr);
1816*53ee8cc1Swenshuai.xi return u64Val;
1817*53ee8cc1Swenshuai.xi }
1818*53ee8cc1Swenshuai.xi
1819*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1820*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_ClearMiuHitLog
1821*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Clear the hitted log on MIU
1822*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1823*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1824*53ee8cc1Swenshuai.xi /// @param <RET> \b RET:
1825*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1826*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_ClearMiuHitLog(MS_U8 u8MiuDev)1827*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_ClearMiuHitLog(MS_U8 u8MiuDev)
1828*53ee8cc1Swenshuai.xi {
1829*53ee8cc1Swenshuai.xi MS_U32 u32RegLogAddr;
1830*53ee8cc1Swenshuai.xi
1831*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1832*53ee8cc1Swenshuai.xi {
1833*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1834*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE0_HITTED_STATUS;
1835*53ee8cc1Swenshuai.xi break;
1836*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1837*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE1_HITTED_STATUS;
1838*53ee8cc1Swenshuai.xi break;
1839*53ee8cc1Swenshuai.xi default:
1840*53ee8cc1Swenshuai.xi return FALSE;
1841*53ee8cc1Swenshuai.xi }
1842*53ee8cc1Swenshuai.xi
1843*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2BytesBit(u32RegLogAddr, TRUE, REG_SECURE_HITTED_LOG_CLR);
1844*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2BytesBit(u32RegLogAddr, FALSE, REG_SECURE_HITTED_LOG_CLR);
1845*53ee8cc1Swenshuai.xi return TRUE;
1846*53ee8cc1Swenshuai.xi }
1847*53ee8cc1Swenshuai.xi
1848*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1849*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureRangeLock
1850*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: One-way setting to lock the specific secure range
1851*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
1852*53ee8cc1Swenshuai.xi /// @param <IN> \b u8SecureRangeId: Secure range ID
1853*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1854*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1855*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1856*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureRangeLock(MS_U8 u8MiuDev,MS_U8 u8SecureRangeId)1857*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureRangeLock(MS_U8 u8MiuDev, MS_U8 u8SecureRangeId)
1858*53ee8cc1Swenshuai.xi {
1859*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
1860*53ee8cc1Swenshuai.xi MS_U8 u8Val;
1861*53ee8cc1Swenshuai.xi
1862*53ee8cc1Swenshuai.xi switch(u8MiuDev)
1863*53ee8cc1Swenshuai.xi {
1864*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
1865*53ee8cc1Swenshuai.xi u32RegAddr = REG_SECURE0_LOCK;
1866*53ee8cc1Swenshuai.xi break;
1867*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
1868*53ee8cc1Swenshuai.xi u32RegAddr = REG_SECURE1_LOCK;
1869*53ee8cc1Swenshuai.xi break;
1870*53ee8cc1Swenshuai.xi default:
1871*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("%s MIU%d is not support\n", __FUNCTION__, u8MiuDev);
1872*53ee8cc1Swenshuai.xi return false;
1873*53ee8cc1Swenshuai.xi }
1874*53ee8cc1Swenshuai.xi
1875*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegAddr);
1876*53ee8cc1Swenshuai.xi u8Val = u8Val | (1 << u8SecureRangeId);
1877*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteByte(u32RegAddr, u8Val);
1878*53ee8cc1Swenshuai.xi
1879*53ee8cc1Swenshuai.xi return TRUE;
1880*53ee8cc1Swenshuai.xi }
1881*53ee8cc1Swenshuai.xi
1882*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1883*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureProcessorSet
1884*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Define the specific processor be secure or not
1885*53ee8cc1Swenshuai.xi /// @param <IN> \b u8ProcessorId: Processor ID
1886*53ee8cc1Swenshuai.xi /// @param <IN> \b bSecure: 1: non-secure 0:secure
1887*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1888*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1889*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1890*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_NonSecureProcessorSet(MS_U8 u8ProcessorId,MS_BOOL bNonSecure)1891*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_NonSecureProcessorSet(MS_U8 u8ProcessorId, MS_BOOL bNonSecure)
1892*53ee8cc1Swenshuai.xi {
1893*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
1894*53ee8cc1Swenshuai.xi MS_U16 u16Val;
1895*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
1896*53ee8cc1Swenshuai.xi
1897*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetProcessorIdx(u8ProcessorId);
1898*53ee8cc1Swenshuai.xi
1899*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
1900*53ee8cc1Swenshuai.xi {
1901*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Processor ID:%d doesn't exist !\n", u8ProcessorId);
1902*53ee8cc1Swenshuai.xi return FALSE;
1903*53ee8cc1Swenshuai.xi }
1904*53ee8cc1Swenshuai.xi
1905*53ee8cc1Swenshuai.xi // special case for HEMCU
1906*53ee8cc1Swenshuai.xi if(u8ProcessorId == E_SEAL_HEMCU)
1907*53ee8cc1Swenshuai.xi {
1908*53ee8cc1Swenshuai.xi if(bNonSecure)
1909*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteRegBit(REG_TZPC_NONSECURE_HEMCU, BIT3, ENABLE);
1910*53ee8cc1Swenshuai.xi else
1911*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWriteRegBit(REG_TZPC_NONSECURE_HEMCU, BIT3, DISABLE);
1912*53ee8cc1Swenshuai.xi
1913*53ee8cc1Swenshuai.xi return TRUE;
1914*53ee8cc1Swenshuai.xi }
1915*53ee8cc1Swenshuai.xi
1916*53ee8cc1Swenshuai.xi u32RegAddr = REG_TZPC_NONSECURE_PROCESSOR;
1917*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
1918*53ee8cc1Swenshuai.xi
1919*53ee8cc1Swenshuai.xi if(bNonSecure)
1920*53ee8cc1Swenshuai.xi {
1921*53ee8cc1Swenshuai.xi u16Val = u16Val | (1 << (s32HwIdx * 2));
1922*53ee8cc1Swenshuai.xi }
1923*53ee8cc1Swenshuai.xi else
1924*53ee8cc1Swenshuai.xi {
1925*53ee8cc1Swenshuai.xi u16Val = u16Val & ~(1 << (s32HwIdx * 2));
1926*53ee8cc1Swenshuai.xi }
1927*53ee8cc1Swenshuai.xi
1928*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
1929*53ee8cc1Swenshuai.xi
1930*53ee8cc1Swenshuai.xi return TRUE;
1931*53ee8cc1Swenshuai.xi }
1932*53ee8cc1Swenshuai.xi
1933*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1934*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureProcessorQuery
1935*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Query the specific processor be secure or not
1936*53ee8cc1Swenshuai.xi /// @param <IN> \b u8ProcessorId: Processor ID
1937*53ee8cc1Swenshuai.xi /// @param <OUT> \b pSecure: 1: non-secure 0:secure
1938*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1939*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1940*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_NonSecureProcessorQuery(MS_U8 u8ProcessorId,MS_BOOL * pNonSecure)1941*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_NonSecureProcessorQuery(MS_U8 u8ProcessorId, MS_BOOL *pNonSecure)
1942*53ee8cc1Swenshuai.xi {
1943*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
1944*53ee8cc1Swenshuai.xi MS_U16 u16Val;
1945*53ee8cc1Swenshuai.xi MS_U16 s32HwIdx;
1946*53ee8cc1Swenshuai.xi
1947*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetProcessorIdx(u8ProcessorId);
1948*53ee8cc1Swenshuai.xi
1949*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
1950*53ee8cc1Swenshuai.xi {
1951*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Processor ID:%d doesn't exist !\n", u8ProcessorId);
1952*53ee8cc1Swenshuai.xi return FALSE;
1953*53ee8cc1Swenshuai.xi }
1954*53ee8cc1Swenshuai.xi
1955*53ee8cc1Swenshuai.xi // special case for HEMCU
1956*53ee8cc1Swenshuai.xi if(u8ProcessorId == E_SEAL_HEMCU)
1957*53ee8cc1Swenshuai.xi {
1958*53ee8cc1Swenshuai.xi u32RegAddr = REG_TZPC_NONSECURE_HEMCU;
1959*53ee8cc1Swenshuai.xi u16Val = (MS_U8)HAL_SEAL_NonPmReadByte(u32RegAddr);
1960*53ee8cc1Swenshuai.xi
1961*53ee8cc1Swenshuai.xi if(u16Val & BIT3)
1962*53ee8cc1Swenshuai.xi {
1963*53ee8cc1Swenshuai.xi *pNonSecure = 1;
1964*53ee8cc1Swenshuai.xi }
1965*53ee8cc1Swenshuai.xi else
1966*53ee8cc1Swenshuai.xi {
1967*53ee8cc1Swenshuai.xi *pNonSecure = 0;
1968*53ee8cc1Swenshuai.xi }
1969*53ee8cc1Swenshuai.xi return TRUE;
1970*53ee8cc1Swenshuai.xi }
1971*53ee8cc1Swenshuai.xi
1972*53ee8cc1Swenshuai.xi u32RegAddr = REG_TZPC_NONSECURE_PROCESSOR;
1973*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
1974*53ee8cc1Swenshuai.xi
1975*53ee8cc1Swenshuai.xi if(u16Val & (1 << (s32HwIdx * 2)))
1976*53ee8cc1Swenshuai.xi {
1977*53ee8cc1Swenshuai.xi *pNonSecure = 1;
1978*53ee8cc1Swenshuai.xi }
1979*53ee8cc1Swenshuai.xi else
1980*53ee8cc1Swenshuai.xi {
1981*53ee8cc1Swenshuai.xi *pNonSecure = 0;
1982*53ee8cc1Swenshuai.xi }
1983*53ee8cc1Swenshuai.xi
1984*53ee8cc1Swenshuai.xi return TRUE;
1985*53ee8cc1Swenshuai.xi }
1986*53ee8cc1Swenshuai.xi
1987*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1988*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureSlaveSet
1989*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Define the specific slave IP be secure or not
1990*53ee8cc1Swenshuai.xi /// @param <IN> \b u32SlaveId: Slave ID
1991*53ee8cc1Swenshuai.xi /// @param <IN> \b bSecure: 0: non-secure 1:secure
1992*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
1993*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
1994*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
1995*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureSlaveSet(MS_U32 u32SlaveId,MS_BOOL bSecure)1996*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureSlaveSet(MS_U32 u32SlaveId, MS_BOOL bSecure)
1997*53ee8cc1Swenshuai.xi {
1998*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
1999*53ee8cc1Swenshuai.xi MS_U16 u16Val;
2000*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
2001*53ee8cc1Swenshuai.xi MS_U8 u8GroupId;
2002*53ee8cc1Swenshuai.xi MS_U8 u8ClientId;
2003*53ee8cc1Swenshuai.xi MS_BOOL bIsPm;
2004*53ee8cc1Swenshuai.xi
2005*53ee8cc1Swenshuai.xi bIsPm = 0;
2006*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetNonPmIpIdx(u32SlaveId);
2007*53ee8cc1Swenshuai.xi
2008*53ee8cc1Swenshuai.xi //Slave ID not in Non-PM group, check if u32SlaveId in PM group
2009*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2010*53ee8cc1Swenshuai.xi {
2011*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetPmIpIdx(u32SlaveId);
2012*53ee8cc1Swenshuai.xi bIsPm = 1;
2013*53ee8cc1Swenshuai.xi
2014*53ee8cc1Swenshuai.xi //Slave ID not in Non-PM nor PM group
2015*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2016*53ee8cc1Swenshuai.xi {
2017*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Slave ID:%d doesn't exist !\n", (unsigned int)u32SlaveId);
2018*53ee8cc1Swenshuai.xi return FALSE;
2019*53ee8cc1Swenshuai.xi }
2020*53ee8cc1Swenshuai.xi }
2021*53ee8cc1Swenshuai.xi
2022*53ee8cc1Swenshuai.xi if(bIsPm == 0)
2023*53ee8cc1Swenshuai.xi {
2024*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_NONPM_GROUP_IP_NUM);
2025*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_NONPM_GROUP_IP_NUM);
2026*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_NONPM_SECURE_SLAVE + (u8GroupId * 2));
2027*53ee8cc1Swenshuai.xi
2028*53ee8cc1Swenshuai.xi if(bSecure == 1)
2029*53ee8cc1Swenshuai.xi {
2030*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2031*53ee8cc1Swenshuai.xi u16Val = u16Val & (~(1 << u8ClientId));
2032*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
2033*53ee8cc1Swenshuai.xi }
2034*53ee8cc1Swenshuai.xi else
2035*53ee8cc1Swenshuai.xi {
2036*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2037*53ee8cc1Swenshuai.xi u16Val = u16Val | (1 << u8ClientId);
2038*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
2039*53ee8cc1Swenshuai.xi }
2040*53ee8cc1Swenshuai.xi }
2041*53ee8cc1Swenshuai.xi else
2042*53ee8cc1Swenshuai.xi {
2043*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_PM_GROUP_IP_NUM);
2044*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_PM_GROUP_IP_NUM);
2045*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_PM_SECURE_SLAVE + (u8GroupId * 2));
2046*53ee8cc1Swenshuai.xi
2047*53ee8cc1Swenshuai.xi if(bSecure == 1)
2048*53ee8cc1Swenshuai.xi {
2049*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_PmRead2Byte(u32RegAddr);
2050*53ee8cc1Swenshuai.xi u16Val = u16Val & (~(1 << u8ClientId));
2051*53ee8cc1Swenshuai.xi HAL_SEAL_PmWrite2Byte(u32RegAddr, u16Val);
2052*53ee8cc1Swenshuai.xi }
2053*53ee8cc1Swenshuai.xi else
2054*53ee8cc1Swenshuai.xi {
2055*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_PmRead2Byte(u32RegAddr);
2056*53ee8cc1Swenshuai.xi u16Val = u16Val | (1 << u8ClientId);
2057*53ee8cc1Swenshuai.xi HAL_SEAL_PmWrite2Byte(u32RegAddr, u16Val);
2058*53ee8cc1Swenshuai.xi }
2059*53ee8cc1Swenshuai.xi }
2060*53ee8cc1Swenshuai.xi return TRUE;
2061*53ee8cc1Swenshuai.xi }
2062*53ee8cc1Swenshuai.xi
2063*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2064*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureSlaveQuery
2065*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Query the specific slave IP be secure or not
2066*53ee8cc1Swenshuai.xi /// @param <IN> \b u32SlaveId: Slave ID
2067*53ee8cc1Swenshuai.xi /// @param <IN> \b pSecure: 0: non-secure 1:secure
2068*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
2069*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
2070*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
2071*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureSlaveQuery(MS_U32 u32SlaveId,MS_BOOL * pSecure)2072*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureSlaveQuery(MS_U32 u32SlaveId, MS_BOOL *pSecure)
2073*53ee8cc1Swenshuai.xi {
2074*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
2075*53ee8cc1Swenshuai.xi MS_U16 u16Val;
2076*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
2077*53ee8cc1Swenshuai.xi MS_U8 u8GroupId;
2078*53ee8cc1Swenshuai.xi MS_U8 u8ClientId;
2079*53ee8cc1Swenshuai.xi MS_BOOL bIsPm;
2080*53ee8cc1Swenshuai.xi
2081*53ee8cc1Swenshuai.xi bIsPm = 0;
2082*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetNonPmIpIdx(u32SlaveId);
2083*53ee8cc1Swenshuai.xi
2084*53ee8cc1Swenshuai.xi //Slave ID not in Non-PM group, check if u32SlaveId in PM group
2085*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2086*53ee8cc1Swenshuai.xi {
2087*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetPmIpIdx(u32SlaveId);
2088*53ee8cc1Swenshuai.xi bIsPm = 1;
2089*53ee8cc1Swenshuai.xi
2090*53ee8cc1Swenshuai.xi //Slave ID not in Non-PM nor PM group
2091*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2092*53ee8cc1Swenshuai.xi {
2093*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Slave ID:%d doesn't exist !\n", (unsigned int)u32SlaveId);
2094*53ee8cc1Swenshuai.xi return FALSE;
2095*53ee8cc1Swenshuai.xi }
2096*53ee8cc1Swenshuai.xi }
2097*53ee8cc1Swenshuai.xi
2098*53ee8cc1Swenshuai.xi if(bIsPm == 0)
2099*53ee8cc1Swenshuai.xi {
2100*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_NONPM_GROUP_IP_NUM);
2101*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_NONPM_GROUP_IP_NUM);
2102*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_NONPM_SECURE_SLAVE + (u8GroupId * 2));
2103*53ee8cc1Swenshuai.xi
2104*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2105*53ee8cc1Swenshuai.xi }
2106*53ee8cc1Swenshuai.xi else
2107*53ee8cc1Swenshuai.xi {
2108*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_PM_GROUP_IP_NUM);
2109*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_PM_GROUP_IP_NUM);
2110*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_PM_SECURE_SLAVE + (u8GroupId * 2));
2111*53ee8cc1Swenshuai.xi
2112*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_PmRead2Byte(u32RegAddr);
2113*53ee8cc1Swenshuai.xi }
2114*53ee8cc1Swenshuai.xi
2115*53ee8cc1Swenshuai.xi if(u16Val & (1 << u8ClientId))
2116*53ee8cc1Swenshuai.xi {
2117*53ee8cc1Swenshuai.xi *pSecure = 0;
2118*53ee8cc1Swenshuai.xi }
2119*53ee8cc1Swenshuai.xi else
2120*53ee8cc1Swenshuai.xi {
2121*53ee8cc1Swenshuai.xi *pSecure = 1;
2122*53ee8cc1Swenshuai.xi }
2123*53ee8cc1Swenshuai.xi
2124*53ee8cc1Swenshuai.xi return TRUE;
2125*53ee8cc1Swenshuai.xi }
2126*53ee8cc1Swenshuai.xi
2127*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2128*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureMasterSet
2129*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Define the specific master IP be secure or not
2130*53ee8cc1Swenshuai.xi /// @param <IN> \b u32SlaveId: Master ID
2131*53ee8cc1Swenshuai.xi /// @param <IN> \b bSecure: 0: non-secure 1:secure
2132*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
2133*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
2134*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
2135*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureMasterSet(MS_U32 u32MasterId,MS_BOOL bSecure)2136*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureMasterSet(MS_U32 u32MasterId, MS_BOOL bSecure)
2137*53ee8cc1Swenshuai.xi {
2138*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
2139*53ee8cc1Swenshuai.xi MS_U16 u16Val;
2140*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
2141*53ee8cc1Swenshuai.xi MS_U8 u8GroupId;
2142*53ee8cc1Swenshuai.xi MS_U8 u8ClientId;
2143*53ee8cc1Swenshuai.xi
2144*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetNonPmIpIdx(u32MasterId);
2145*53ee8cc1Swenshuai.xi
2146*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2147*53ee8cc1Swenshuai.xi {
2148*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Master ID:%u doesn't exist !\n", (unsigned int)u32MasterId);
2149*53ee8cc1Swenshuai.xi return FALSE;
2150*53ee8cc1Swenshuai.xi }
2151*53ee8cc1Swenshuai.xi
2152*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_NONPM_GROUP_IP_NUM);
2153*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_NONPM_GROUP_IP_NUM);
2154*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_NONPM_SECURE_MASTER + (u8GroupId * 2));
2155*53ee8cc1Swenshuai.xi
2156*53ee8cc1Swenshuai.xi if(bSecure == 1)
2157*53ee8cc1Swenshuai.xi {
2158*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2159*53ee8cc1Swenshuai.xi u16Val = u16Val & (~(1 << u8ClientId));
2160*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
2161*53ee8cc1Swenshuai.xi }
2162*53ee8cc1Swenshuai.xi else
2163*53ee8cc1Swenshuai.xi {
2164*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2165*53ee8cc1Swenshuai.xi u16Val = u16Val | (1 << u8ClientId);
2166*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
2167*53ee8cc1Swenshuai.xi }
2168*53ee8cc1Swenshuai.xi
2169*53ee8cc1Swenshuai.xi return TRUE;
2170*53ee8cc1Swenshuai.xi }
2171*53ee8cc1Swenshuai.xi
2172*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2173*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_SecureMasterQuery
2174*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Query the specific master IP be secure or not
2175*53ee8cc1Swenshuai.xi /// @param <IN> \b u32SlaveId: Master ID
2176*53ee8cc1Swenshuai.xi /// @param <IN> \b pSecure: 0: non-secure 1:secure
2177*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
2178*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
2179*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
2180*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_SecureMasterQuery(MS_U32 u32MasterId,MS_BOOL * pSecure)2181*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SecureMasterQuery(MS_U32 u32MasterId, MS_BOOL *pSecure)
2182*53ee8cc1Swenshuai.xi {
2183*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
2184*53ee8cc1Swenshuai.xi MS_U16 u16Val;
2185*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
2186*53ee8cc1Swenshuai.xi MS_U8 u8GroupId;
2187*53ee8cc1Swenshuai.xi MS_U8 u8ClientId;
2188*53ee8cc1Swenshuai.xi
2189*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetNonPmIpIdx(u32MasterId);
2190*53ee8cc1Swenshuai.xi
2191*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2192*53ee8cc1Swenshuai.xi {
2193*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Master ID:%d doesn't exist !\n", (unsigned int)u32MasterId);
2194*53ee8cc1Swenshuai.xi return FALSE;
2195*53ee8cc1Swenshuai.xi }
2196*53ee8cc1Swenshuai.xi
2197*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_NONPM_GROUP_IP_NUM);
2198*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_NONPM_GROUP_IP_NUM);
2199*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_NONPM_SECURE_MASTER + (u8GroupId * 2));
2200*53ee8cc1Swenshuai.xi
2201*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2202*53ee8cc1Swenshuai.xi
2203*53ee8cc1Swenshuai.xi if(u16Val & (1 << u8ClientId))
2204*53ee8cc1Swenshuai.xi {
2205*53ee8cc1Swenshuai.xi *pSecure = 0;
2206*53ee8cc1Swenshuai.xi }
2207*53ee8cc1Swenshuai.xi else
2208*53ee8cc1Swenshuai.xi {
2209*53ee8cc1Swenshuai.xi *pSecure = 1;
2210*53ee8cc1Swenshuai.xi }
2211*53ee8cc1Swenshuai.xi
2212*53ee8cc1Swenshuai.xi return TRUE;
2213*53ee8cc1Swenshuai.xi }
2214*53ee8cc1Swenshuai.xi
2215*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2216*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_BufferLock
2217*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Lock the specific buffer
2218*53ee8cc1Swenshuai.xi /// @param <IN> \b u8SecureRangeId: Secure buffer ID
2219*53ee8cc1Swenshuai.xi /// @param <IN> \b bLock: 0: unlock 1:lock
2220*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
2221*53ee8cc1Swenshuai.xi /// @param <RET> \b RET
2222*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
2223*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_BufferLock(MS_U8 u8BufferLockId,MS_BOOL bLock)2224*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_BufferLock(MS_U8 u8BufferLockId, MS_BOOL bLock)
2225*53ee8cc1Swenshuai.xi {
2226*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
2227*53ee8cc1Swenshuai.xi MS_U16 u16Val;
2228*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
2229*53ee8cc1Swenshuai.xi MS_U8 u8GroupId;
2230*53ee8cc1Swenshuai.xi MS_U8 u8ClientId;
2231*53ee8cc1Swenshuai.xi
2232*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetLockIdx(u8BufferLockId);
2233*53ee8cc1Swenshuai.xi
2234*53ee8cc1Swenshuai.xi //Check if u8SecureBufferId exist
2235*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2236*53ee8cc1Swenshuai.xi {
2237*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Secure buffer lock ID:%u doesn't exist !\n", u8BufferLockId);
2238*53ee8cc1Swenshuai.xi return FALSE;
2239*53ee8cc1Swenshuai.xi }
2240*53ee8cc1Swenshuai.xi
2241*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_LOCK_NUM_PERGROUP);
2242*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_LOCK_NUM_PERGROUP);
2243*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_BUFFER_LOCK + (u8GroupId * 2));
2244*53ee8cc1Swenshuai.xi
2245*53ee8cc1Swenshuai.xi if(bLock == 1)
2246*53ee8cc1Swenshuai.xi {
2247*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2248*53ee8cc1Swenshuai.xi u16Val = u16Val & (~(1 << u8ClientId));
2249*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
2250*53ee8cc1Swenshuai.xi }
2251*53ee8cc1Swenshuai.xi else
2252*53ee8cc1Swenshuai.xi {
2253*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2254*53ee8cc1Swenshuai.xi u16Val = u16Val | (1 << u8ClientId);
2255*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2Byte(u32RegAddr, u16Val);
2256*53ee8cc1Swenshuai.xi }
2257*53ee8cc1Swenshuai.xi
2258*53ee8cc1Swenshuai.xi return TRUE;
2259*53ee8cc1Swenshuai.xi }
2260*53ee8cc1Swenshuai.xi
2261*53ee8cc1Swenshuai.xi
HAL_Seal_QueryBufferLocked(eSeal_Lock eLockId,MS_BOOL * bLocked)2262*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_QueryBufferLocked(eSeal_Lock eLockId, MS_BOOL* bLocked)
2263*53ee8cc1Swenshuai.xi {
2264*53ee8cc1Swenshuai.xi MS_U32 u32RegAddr;
2265*53ee8cc1Swenshuai.xi MS_U16 u16Val;
2266*53ee8cc1Swenshuai.xi MS_S32 s32HwIdx;
2267*53ee8cc1Swenshuai.xi MS_U8 u8GroupId;
2268*53ee8cc1Swenshuai.xi MS_U8 u8ClientId;
2269*53ee8cc1Swenshuai.xi
2270*53ee8cc1Swenshuai.xi s32HwIdx = HAL_SEAL_GetLockIdx(eLockId);
2271*53ee8cc1Swenshuai.xi
2272*53ee8cc1Swenshuai.xi //Check if u8SecureBufferId exist
2273*53ee8cc1Swenshuai.xi if(s32HwIdx == -1)
2274*53ee8cc1Swenshuai.xi {
2275*53ee8cc1Swenshuai.xi HAL_SEAL_ERR("Secure buffer lock ID:%u doesn't exist !\n", (unsigned int)eLockId);
2276*53ee8cc1Swenshuai.xi return FALSE;
2277*53ee8cc1Swenshuai.xi }
2278*53ee8cc1Swenshuai.xi
2279*53ee8cc1Swenshuai.xi u8GroupId = (MS_U8)(s32HwIdx / SEAL_LOCK_NUM_PERGROUP);
2280*53ee8cc1Swenshuai.xi u8ClientId = (MS_U8)(s32HwIdx % SEAL_LOCK_NUM_PERGROUP);
2281*53ee8cc1Swenshuai.xi u32RegAddr = (MS_U32)(REG_TZPC_BUFFER_LOCK + (u8GroupId * 2));
2282*53ee8cc1Swenshuai.xi
2283*53ee8cc1Swenshuai.xi u16Val = HAL_SEAL_NonPmRead2Byte(u32RegAddr);
2284*53ee8cc1Swenshuai.xi *bLocked = (u16Val & (1 << u8ClientId)) ? FALSE : TRUE;
2285*53ee8cc1Swenshuai.xi
2286*53ee8cc1Swenshuai.xi return TRUE;
2287*53ee8cc1Swenshuai.xi }
2288*53ee8cc1Swenshuai.xi
2289*53ee8cc1Swenshuai.xi
2290*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2291*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_MaskInterruptFlag
2292*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: mask/unmask irq mask bit
2293*53ee8cc1Swenshuai.xi /// @param <IN> \b u8MiuDev: 0:MIU0 1:MIU1 2:MIU2 3:MIU3
2294*53ee8cc1Swenshuai.xi /// @param <IN> \b bMask: FLASE: unmask ; TRUE: mask
2295*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
2296*53ee8cc1Swenshuai.xi /// @param <RET> \b RET:
2297*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
2298*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_MaskInterruptFlag(MS_U8 u8MiuDev,MS_BOOL bMask)2299*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_MaskInterruptFlag(MS_U8 u8MiuDev, MS_BOOL bMask)
2300*53ee8cc1Swenshuai.xi {
2301*53ee8cc1Swenshuai.xi MS_U32 u32RegLogAddr;
2302*53ee8cc1Swenshuai.xi
2303*53ee8cc1Swenshuai.xi switch(u8MiuDev)
2304*53ee8cc1Swenshuai.xi {
2305*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV0:
2306*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE0_HITTED_STATUS;
2307*53ee8cc1Swenshuai.xi break;
2308*53ee8cc1Swenshuai.xi case E_HAL_MIU_DEV1:
2309*53ee8cc1Swenshuai.xi u32RegLogAddr = REG_SECURE1_HITTED_STATUS;
2310*53ee8cc1Swenshuai.xi break;
2311*53ee8cc1Swenshuai.xi default:
2312*53ee8cc1Swenshuai.xi return FALSE;
2313*53ee8cc1Swenshuai.xi }
2314*53ee8cc1Swenshuai.xi
2315*53ee8cc1Swenshuai.xi HAL_SEAL_NonPmWrite2BytesBit(u32RegLogAddr, bMask, REG_SECURE_HITTED_IRQ_MASK);
2316*53ee8cc1Swenshuai.xi
2317*53ee8cc1Swenshuai.xi return TRUE;
2318*53ee8cc1Swenshuai.xi }
2319*53ee8cc1Swenshuai.xi
2320*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2321*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: HAL_Seal_CheckSecureRange
2322*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description: Is Overlap Secure Range
2323*53ee8cc1Swenshuai.xi /// @param <IN> \b phyStartAddr : start address
2324*53ee8cc1Swenshuai.xi /// @param <IN> \b u32Length : protect length
2325*53ee8cc1Swenshuai.xi /// @param <IN> \b eCheckSecureRangeType : check SecureRange type
2326*53ee8cc1Swenshuai.xi /// @param <OUT> \b None:
2327*53ee8cc1Swenshuai.xi /// @param <RET> \b RET:
2328*53ee8cc1Swenshuai.xi /// @param <GLOBAL> \b None :
2329*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
HAL_Seal_CheckSecureRange(MS_PHY phyStartAddr,MS_U32 u32Length,eSeal_CheckSecureRangeType eCheckSecureRangeType)2330*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_CheckSecureRange(MS_PHY phyStartAddr, MS_U32 u32Length, eSeal_CheckSecureRangeType eCheckSecureRangeType)
2331*53ee8cc1Swenshuai.xi {
2332*53ee8cc1Swenshuai.xi MS_U8 u8MiuSel;
2333*53ee8cc1Swenshuai.xi MS_U8 u8Val;
2334*53ee8cc1Swenshuai.xi MS_U8 RangeNum;
2335*53ee8cc1Swenshuai.xi MS_U64 u64Offset;
2336*53ee8cc1Swenshuai.xi MS_U32 u32RegStartAddr;
2337*53ee8cc1Swenshuai.xi MS_U32 u32RegEndAddr;
2338*53ee8cc1Swenshuai.xi MS_U32 u32RegAttribute;
2339*53ee8cc1Swenshuai.xi MS_U32 u32RegDetEnDummy; // work-around for 0x76 not readable issue
2340*53ee8cc1Swenshuai.xi MS_U64 u64StartAddr;
2341*53ee8cc1Swenshuai.xi MS_U64 u64EndAddr;
2342*53ee8cc1Swenshuai.xi
2343*53ee8cc1Swenshuai.xi _phy_to_miu_offset(u8MiuSel, u64Offset, phyStartAddr);
2344*53ee8cc1Swenshuai.xi
2345*53ee8cc1Swenshuai.xi switch(u8MiuSel)
2346*53ee8cc1Swenshuai.xi {
2347*53ee8cc1Swenshuai.xi case E_CHIP_MIU_0:
2348*53ee8cc1Swenshuai.xi u32RegDetEnDummy = REG_SECURE0_DUMMY0;
2349*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE0_START_ADDR;
2350*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE0_RANGE0_END_ADDR;
2351*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE0_RANGE0_ATTRIBUTE;
2352*53ee8cc1Swenshuai.xi break;
2353*53ee8cc1Swenshuai.xi case E_CHIP_MIU_1:
2354*53ee8cc1Swenshuai.xi u32RegDetEnDummy = REG_SECURE1_DUMMY0;
2355*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE0_START_ADDR;
2356*53ee8cc1Swenshuai.xi u32RegEndAddr = REG_SECURE1_RANGE0_END_ADDR;
2357*53ee8cc1Swenshuai.xi u32RegAttribute = REG_SECURE1_RANGE0_ATTRIBUTE;
2358*53ee8cc1Swenshuai.xi break;
2359*53ee8cc1Swenshuai.xi default:
2360*53ee8cc1Swenshuai.xi printf("%s: Wrong paramater-MiuSel %d \n", __FUNCTION__, u8MiuSel);
2361*53ee8cc1Swenshuai.xi return TRUE;
2362*53ee8cc1Swenshuai.xi }
2363*53ee8cc1Swenshuai.xi
2364*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegDetEnDummy);
2365*53ee8cc1Swenshuai.xi
2366*53ee8cc1Swenshuai.xi for(RangeNum = E_HAL_SEAL_SECURE_RANGE_ID0; RangeNum < E_HAL_SEAL_SECURE_RANGE_NUM; RangeNum++, u32RegStartAddr+=RANGE_ADDR_OFFSET, u32RegEndAddr+=RANGE_ADDR_OFFSET, u32RegAttribute+=RANGE_ADDR_OFFSET)
2367*53ee8cc1Swenshuai.xi {
2368*53ee8cc1Swenshuai.xi if( HAL_SEAL_NonPmReadByte(u32RegAttribute) == (E_SEAL_SECURE_READ | E_SEAL_SECURE_WRITE) && (u8Val & (1<<RangeNum))) // Already set secure range
2369*53ee8cc1Swenshuai.xi {
2370*53ee8cc1Swenshuai.xi //check overlap
2371*53ee8cc1Swenshuai.xi u64StartAddr = HAL_SEAL_NonPmRead6Byte(u32RegStartAddr);
2372*53ee8cc1Swenshuai.xi u64EndAddr = HAL_SEAL_NonPmRead6Byte(u32RegEndAddr);
2373*53ee8cc1Swenshuai.xi switch(eCheckSecureRangeType)
2374*53ee8cc1Swenshuai.xi {
2375*53ee8cc1Swenshuai.xi case E_SEAL_OVERLAP:
2376*53ee8cc1Swenshuai.xi if ( u64StartAddr <= u64Offset && u64EndAddr > u64Offset )
2377*53ee8cc1Swenshuai.xi return TRUE;
2378*53ee8cc1Swenshuai.xi else if ( u64StartAddr > u64Offset && u64StartAddr < (u64Offset + u32Length))
2379*53ee8cc1Swenshuai.xi return TRUE;
2380*53ee8cc1Swenshuai.xi break;
2381*53ee8cc1Swenshuai.xi case E_SEAL_CONTAIN:
2382*53ee8cc1Swenshuai.xi if ( u64StartAddr <= u64Offset && u64EndAddr >= (u64Offset + u32Length) )
2383*53ee8cc1Swenshuai.xi return TRUE;
2384*53ee8cc1Swenshuai.xi break;
2385*53ee8cc1Swenshuai.xi default:
2386*53ee8cc1Swenshuai.xi printf("%s: Wrong paramater-eCheckSecureRangeType %d \n", __FUNCTION__, eCheckSecureRangeType);
2387*53ee8cc1Swenshuai.xi return TRUE;
2388*53ee8cc1Swenshuai.xi }
2389*53ee8cc1Swenshuai.xi }
2390*53ee8cc1Swenshuai.xi }
2391*53ee8cc1Swenshuai.xi return FALSE;
2392*53ee8cc1Swenshuai.xi }
2393*53ee8cc1Swenshuai.xi
2394*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_OPTEE
HAL_Seal_ChangeIPSecureDMAAbillity(MS_U32 u32ModuleID,MS_U32 u32ModuleParameter,MS_U32 u32IsSecure)2395*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_ChangeIPSecureDMAAbillity(MS_U32 u32ModuleID, MS_U32 u32ModuleParameter, MS_U32 u32IsSecure)
2396*53ee8cc1Swenshuai.xi {
2397*53ee8cc1Swenshuai.xi switch(u32ModuleID)
2398*53ee8cc1Swenshuai.xi {
2399*53ee8cc1Swenshuai.xi case MODULE_XC:
2400*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MSC_PROT_NONPM, u32IsSecure);
2401*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_SC0_PROT_NONPM, u32IsSecure);
2402*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_SC1_PROT_NONPM, u32IsSecure);
2403*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_SC2_PROT_NONPM, u32IsSecure);
2404*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_SC3_PROT_NONPM, u32IsSecure);
2405*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_SC4_PROT_NONPM, u32IsSecure);
2406*53ee8cc1Swenshuai.xi break;
2407*53ee8cc1Swenshuai.xi case MODULE_VDEC_EX:
2408*53ee8cc1Swenshuai.xi case MODULE_VDEC:
2409*53ee8cc1Swenshuai.xi switch(u32ModuleParameter)
2410*53ee8cc1Swenshuai.xi {
2411*53ee8cc1Swenshuai.xi case E_SEAL_IPGROUP_VDEC_R2:
2412*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VD_MHEG5_PROT_NONPM, u32IsSecure);
2413*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VD_EVD_R2_NONPM, u32IsSecure);
2414*53ee8cc1Swenshuai.xi break;
2415*53ee8cc1Swenshuai.xi case E_SEAL_IPGROUP_VDEC_DECODER:
2416*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MVD_PROT_NONPM, u32IsSecure);
2417*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_HVD_PROT_NONPM, u32IsSecure);
2418*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_EVD_NONPM, u32IsSecure);
2419*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MAU_EVD_NONPM, u32IsSecure);
2420*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_HIREG_EVD_PROT_NONPM, u32IsSecure);
2421*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MAU_EVD_LV2_0_NONPM, u32IsSecure);
2422*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MFDEC_PROT_NONPM, u32IsSecure);
2423*53ee8cc1Swenshuai.xi break;
2424*53ee8cc1Swenshuai.xi default:
2425*53ee8cc1Swenshuai.xi printf("%s: Unknown module paramater\n", __FUNCTION__);
2426*53ee8cc1Swenshuai.xi break;
2427*53ee8cc1Swenshuai.xi }
2428*53ee8cc1Swenshuai.xi break;
2429*53ee8cc1Swenshuai.xi case MODULE_MVOP:
2430*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MVOPSUB_PROT_NONPM, u32IsSecure);
2431*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MVOP_PROT_NONPM, u32IsSecure);
2432*53ee8cc1Swenshuai.xi break;
2433*53ee8cc1Swenshuai.xi case MODULE_AUDIO:
2434*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VIVALDI2_PROT_NONPM, u32IsSecure);
2435*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VIVALDI3_PROT_NONPM, u32IsSecure);
2436*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VIVALDI7_PROT_NONPM, u32IsSecure);
2437*53ee8cc1Swenshuai.xi break;
2438*53ee8cc1Swenshuai.xi case MODULE_TVENCODER:
2439*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VE_0_PROT_NONPM, u32IsSecure);
2440*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VE_1_PROT_NONPM, u32IsSecure);
2441*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_VE_2_PROT_NONPM, u32IsSecure);
2442*53ee8cc1Swenshuai.xi break;
2443*53ee8cc1Swenshuai.xi case MODULE_DIP:
2444*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_MSC_PROT_NONPM, u32IsSecure);
2445*53ee8cc1Swenshuai.xi break;
2446*53ee8cc1Swenshuai.xi case MODULE_DMX:
2447*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP0_PROT_NONPM, u32IsSecure);
2448*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP1_PROT_NONPM, u32IsSecure);
2449*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP_SPARE_PROT_NONPM, u32IsSecure);
2450*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP2_PROT_NONPM, u32IsSecure);
2451*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP3_PROT_NONPM, u32IsSecure);
2452*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP4_NONPM, u32IsSecure);
2453*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP6_PROT_NONPM, u32IsSecure);
2454*53ee8cc1Swenshuai.xi HAL_Seal_SecureMasterSet(E_SEAL_TSP5_NONPM, u32IsSecure);
2455*53ee8cc1Swenshuai.xi break;
2456*53ee8cc1Swenshuai.xi default:
2457*53ee8cc1Swenshuai.xi printf("%s, Unsupported ModuleID\n", __FUNCTION__);
2458*53ee8cc1Swenshuai.xi break;
2459*53ee8cc1Swenshuai.xi }
2460*53ee8cc1Swenshuai.xi return TRUE;
2461*53ee8cc1Swenshuai.xi }
2462*53ee8cc1Swenshuai.xi
HAL_Seal_SetSecureRange(MS_PHY u64phy,MS_U32 u32Length,MS_U32 u32IsSecure)2463*53ee8cc1Swenshuai.xi MS_BOOL HAL_Seal_SetSecureRange(MS_PHY u64phy, MS_U32 u32Length, MS_U32 u32IsSecure)
2464*53ee8cc1Swenshuai.xi {
2465*53ee8cc1Swenshuai.xi MS_U8 u8MiuSel;
2466*53ee8cc1Swenshuai.xi MS_U64 u64Offset;
2467*53ee8cc1Swenshuai.xi MS_U32 u32RegDetEn;
2468*53ee8cc1Swenshuai.xi MS_U8 i;
2469*53ee8cc1Swenshuai.xi MS_U8 u8Val;
2470*53ee8cc1Swenshuai.xi MS_U32 u32RegStartAddr;
2471*53ee8cc1Swenshuai.xi MS_U64 u64StartAddr;
2472*53ee8cc1Swenshuai.xi
2473*53ee8cc1Swenshuai.xi _phy_to_miu_offset(u8MiuSel, u64Offset, u64phy);
2474*53ee8cc1Swenshuai.xi
2475*53ee8cc1Swenshuai.xi switch(u8MiuSel)
2476*53ee8cc1Swenshuai.xi {
2477*53ee8cc1Swenshuai.xi case E_CHIP_MIU_0:
2478*53ee8cc1Swenshuai.xi {
2479*53ee8cc1Swenshuai.xi u32RegDetEn = REG_SECURE0_DETECT_ENABLE;
2480*53ee8cc1Swenshuai.xi break;
2481*53ee8cc1Swenshuai.xi }
2482*53ee8cc1Swenshuai.xi case E_CHIP_MIU_1:
2483*53ee8cc1Swenshuai.xi {
2484*53ee8cc1Swenshuai.xi u32RegDetEn = REG_SECURE1_DETECT_ENABLE;
2485*53ee8cc1Swenshuai.xi break;
2486*53ee8cc1Swenshuai.xi }
2487*53ee8cc1Swenshuai.xi default:
2488*53ee8cc1Swenshuai.xi {
2489*53ee8cc1Swenshuai.xi return FALSE;
2490*53ee8cc1Swenshuai.xi }
2491*53ee8cc1Swenshuai.xi }
2492*53ee8cc1Swenshuai.xi
2493*53ee8cc1Swenshuai.xi u8Val = HAL_SEAL_NonPmReadByte(u32RegDetEn);
2494*53ee8cc1Swenshuai.xi
2495*53ee8cc1Swenshuai.xi if(u8MiuSel == E_CHIP_MIU_0)
2496*53ee8cc1Swenshuai.xi {
2497*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE0_RANGE0_START_ADDR;
2498*53ee8cc1Swenshuai.xi }
2499*53ee8cc1Swenshuai.xi else if( u8MiuSel == E_CHIP_MIU_1 )
2500*53ee8cc1Swenshuai.xi {
2501*53ee8cc1Swenshuai.xi u32RegStartAddr = REG_SECURE1_RANGE0_START_ADDR;
2502*53ee8cc1Swenshuai.xi }
2503*53ee8cc1Swenshuai.xi else
2504*53ee8cc1Swenshuai.xi {
2505*53ee8cc1Swenshuai.xi return FALSE;
2506*53ee8cc1Swenshuai.xi }
2507*53ee8cc1Swenshuai.xi
2508*53ee8cc1Swenshuai.xi if (u32IsSecure) // setup a new securerange
2509*53ee8cc1Swenshuai.xi {
2510*53ee8cc1Swenshuai.xi for (i=E_HAL_SEAL_SECURE_RANGE_ID0; i<E_HAL_SEAL_SECURE_RANGE_NUM; i++, u32RegStartAddr+=RANGE_ADDR_OFFSET)
2511*53ee8cc1Swenshuai.xi {
2512*53ee8cc1Swenshuai.xi u64StartAddr = HAL_SEAL_NonPmRead6Byte(u32RegStartAddr);
2513*53ee8cc1Swenshuai.xi if (u64StartAddr == u64Offset && (u8Val & (1<<i)))
2514*53ee8cc1Swenshuai.xi {
2515*53ee8cc1Swenshuai.xi printf("Secure range overlaps\n");
2516*53ee8cc1Swenshuai.xi return TRUE;
2517*53ee8cc1Swenshuai.xi }
2518*53ee8cc1Swenshuai.xi }
2519*53ee8cc1Swenshuai.xi
2520*53ee8cc1Swenshuai.xi for (i=E_HAL_SEAL_SECURE_RANGE_ID0; i<E_HAL_SEAL_SECURE_RANGE_NUM; i++)
2521*53ee8cc1Swenshuai.xi {
2522*53ee8cc1Swenshuai.xi if ( !(u8Val & (1<<i)) ) // got a free range
2523*53ee8cc1Swenshuai.xi {
2524*53ee8cc1Swenshuai.xi return HAL_Seal_SecureRangeSet(i, u64phy, u64phy+u32Length, E_SEAL_SECURE_READ | E_SEAL_SECURE_WRITE);
2525*53ee8cc1Swenshuai.xi }
2526*53ee8cc1Swenshuai.xi }
2527*53ee8cc1Swenshuai.xi
2528*53ee8cc1Swenshuai.xi return FALSE; // no free range
2529*53ee8cc1Swenshuai.xi }
2530*53ee8cc1Swenshuai.xi else // disable existing securerange
2531*53ee8cc1Swenshuai.xi {
2532*53ee8cc1Swenshuai.xi for (i=E_HAL_SEAL_SECURE_RANGE_ID0; i<E_HAL_SEAL_SECURE_RANGE_NUM; i++, u32RegStartAddr+=RANGE_ADDR_OFFSET)
2533*53ee8cc1Swenshuai.xi {
2534*53ee8cc1Swenshuai.xi u64StartAddr = HAL_SEAL_NonPmRead6Byte(u32RegStartAddr);
2535*53ee8cc1Swenshuai.xi if (u64StartAddr == u64Offset && (u8Val & (1<<i)))
2536*53ee8cc1Swenshuai.xi {
2537*53ee8cc1Swenshuai.xi return HAL_Seal_SecureRangeSet(i, u64phy, u64phy+u32Length, 0x0);
2538*53ee8cc1Swenshuai.xi }
2539*53ee8cc1Swenshuai.xi }
2540*53ee8cc1Swenshuai.xi
2541*53ee8cc1Swenshuai.xi return FALSE; // no such range
2542*53ee8cc1Swenshuai.xi }
2543*53ee8cc1Swenshuai.xi }
2544*53ee8cc1Swenshuai.xi #endif
2545