xref: /utopia/UTPA2-700.0.x/modules/security/hal/k7u/cipher/regCIPHER.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2*53ee8cc1Swenshuai.xi //
3*53ee8cc1Swenshuai.xi // Copyright (c) 2006-2009 MStar Semiconductor, Inc.
4*53ee8cc1Swenshuai.xi // All rights reserved.
5*53ee8cc1Swenshuai.xi //
6*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
7*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
8*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
9*53ee8cc1Swenshuai.xi // (��MStar Confidential Information��) by the recipient.
10*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
11*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
12*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
13*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
14*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
17*53ee8cc1Swenshuai.xi 
18*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
19*53ee8cc1Swenshuai.xi //
20*53ee8cc1Swenshuai.xi //  File name: regCIPHER.h
21*53ee8cc1Swenshuai.xi //  Description: CIPHER Register Definition
22*53ee8cc1Swenshuai.xi //
23*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi #ifndef __REG_CIPHER_H__
26*53ee8cc1Swenshuai.xi #define __REG_CIPHER_H__
27*53ee8cc1Swenshuai.xi 
28*53ee8cc1Swenshuai.xi 
29*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
30*53ee8cc1Swenshuai.xi //  Abbreviation
31*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
32*53ee8cc1Swenshuai.xi // Addr                             Address
33*53ee8cc1Swenshuai.xi // Buf                              Buffer
34*53ee8cc1Swenshuai.xi // Clr                              Clear
35*53ee8cc1Swenshuai.xi // CmdQ                             Command queue
36*53ee8cc1Swenshuai.xi // Cnt                              Count
37*53ee8cc1Swenshuai.xi // Ctrl                             Control
38*53ee8cc1Swenshuai.xi // Flt                              Filter
39*53ee8cc1Swenshuai.xi // Hw                               Hardware
40*53ee8cc1Swenshuai.xi // Int                              Interrupt
41*53ee8cc1Swenshuai.xi // Len                              Length
42*53ee8cc1Swenshuai.xi // Ovfw                             Overflow
43*53ee8cc1Swenshuai.xi // Pkt                              Packet
44*53ee8cc1Swenshuai.xi // Rec                              Record
45*53ee8cc1Swenshuai.xi // Recv                             Receive
46*53ee8cc1Swenshuai.xi // Rmn                              Remain
47*53ee8cc1Swenshuai.xi // Reg                              Register
48*53ee8cc1Swenshuai.xi // Req                              Request
49*53ee8cc1Swenshuai.xi // Rst                              Reset
50*53ee8cc1Swenshuai.xi // Scmb                             Scramble
51*53ee8cc1Swenshuai.xi // Sec                              Section
52*53ee8cc1Swenshuai.xi // Stat                             Status
53*53ee8cc1Swenshuai.xi // Sw                               Software
54*53ee8cc1Swenshuai.xi // Ts                               Transport Stream
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi #include "MsTypes.h"
57*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
58*53ee8cc1Swenshuai.xi //  Global Definition
59*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi 
62*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
63*53ee8cc1Swenshuai.xi //  Compliation Option
64*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi 
67*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
68*53ee8cc1Swenshuai.xi //  Harware Capability
69*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
70*53ee8cc1Swenshuai.xi 
71*53ee8cc1Swenshuai.xi 
72*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
73*53ee8cc1Swenshuai.xi //  Type and Structure
74*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
75*53ee8cc1Swenshuai.xi #if defined (MCU_AEON)
76*53ee8cc1Swenshuai.xi #define REG_CIPHERCTRL_BASE         (0x1A0200 * 2) // bank 0x2A02
77*53ee8cc1Swenshuai.xi #else
78*53ee8cc1Swenshuai.xi #define REG_CIPHERCTRL_BASE         (0xA0B00 * 2) // bank 0x1A0B
79*53ee8cc1Swenshuai.xi #endif
80*53ee8cc1Swenshuai.xi #define REG_IRQCTRL_BASE            (0x01900 * 2) // bank 0x1019
81*53ee8cc1Swenshuai.xi #define REG_MIU_CROSSBAR            (0x61300 * 2) //bank 0x1613
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi #define REG32_Data   volatile MS_U32
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi #define DMA_CTRL_REG_SIZE       5UL  //0x02:ctrl  0x03:reserved  0x04:reserved  0x05:except_flag  0x06:cryptoDMA_debug
86*53ee8cc1Swenshuai.xi #define DMA_DIRECT_OUTPUT_SIZE  4UL
87*53ee8cc1Swenshuai.xi #define HASH_RPT_REG_SIZE       10UL
88*53ee8cc1Swenshuai.xi #define DMA_RPT_REG_SIZE        2UL
89*53ee8cc1Swenshuai.xi #define HMAC_KEY_SIZE           4UL
90*53ee8cc1Swenshuai.xi #define HWPA_KEY_SIZE           4UL
91*53ee8cc1Swenshuai.xi #define HWPA_IV_SIZE            4UL
92*53ee8cc1Swenshuai.xi 
93*53ee8cc1Swenshuai.xi #define RESERVE_SIZE1           3UL
94*53ee8cc1Swenshuai.xi #define RESERVE_SIZE2           21UL
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi #define HASH_CMD_MSG_SIZE           (64UL) //16*4
97*53ee8cc1Swenshuai.xi #define HASH_CMD_IV_SIZE            (32UL) //8*4
98*53ee8cc1Swenshuai.xi #define HASH_CMD_HMAC_HOSTKEY_SIZE  (16UL)
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi typedef struct _REG_AESDMACtrl
101*53ee8cc1Swenshuai.xi {
102*53ee8cc1Swenshuai.xi     REG32_Data   SpareCnt_ORG ;
103*53ee8cc1Swenshuai.xi     REG32_Data   Cmd_Queue_ORG;
104*53ee8cc1Swenshuai.xi     REG32_Data   Dma_Ctrl[DMA_CTRL_REG_SIZE]; //0x02:ctrl  0x03:debug data  0x04:reserved  0x05:except_flag  0x06:cryptoDMA_debug
105*53ee8cc1Swenshuai.xi 		#define	 REG_DMA_CTRL 			       0x0
106*53ee8cc1Swenshuai.xi         #define	 REG_EXCEPT_FLAG 			   0x3
107*53ee8cc1Swenshuai.xi         #define  REG_EXCEPT_FLAG_SIZE          27
108*53ee8cc1Swenshuai.xi         #define  REG_CRYPTODMA_DEBUG           0x4
109*53ee8cc1Swenshuai.xi 		#define  REG_EXCEPT_FLAG_CLEAR         0x80000
110*53ee8cc1Swenshuai.xi 		#define  REG_DMA_SW_RESET              0x1
111*53ee8cc1Swenshuai.xi         #define  REG_PARSER_LG_PATH_EN         0x400
112*53ee8cc1Swenshuai.xi     REG32_Data   Dma_Out[DMA_DIRECT_OUTPUT_SIZE];
113*53ee8cc1Swenshuai.xi     REG32_Data   Hash_Reportp[HASH_RPT_REG_SIZE];
114*53ee8cc1Swenshuai.xi         #define  REG_CIPHER_RPT_THREAD_MSK     0xFFFF
115*53ee8cc1Swenshuai.xi         #define  REG_CIPHER_RPT_OK             0x80000000
116*53ee8cc1Swenshuai.xi         #define  REG_CIPHER_RPT_SHT              31
117*53ee8cc1Swenshuai.xi     REG32_Data   Dma_Reportp[DMA_RPT_REG_SIZE];
118*53ee8cc1Swenshuai.xi     REG32_Data   CryptoDMA2MI_NS;
119*53ee8cc1Swenshuai.xi     REG32_Data   Debug_Port;
120*53ee8cc1Swenshuai.xi     REG32_Data   HMAC_Key[HMAC_KEY_SIZE];
121*53ee8cc1Swenshuai.xi     REG32_Data   RESERVE1[RESERVE_SIZE1];
122*53ee8cc1Swenshuai.xi     REG32_Data   HWPA_Ctrl;
123*53ee8cc1Swenshuai.xi     REG32_Data   HWPA_IV2[HWPA_IV_SIZE];
124*53ee8cc1Swenshuai.xi     REG32_Data   HWPA_Key2[HWPA_KEY_SIZE];
125*53ee8cc1Swenshuai.xi     REG32_Data   Cipher_Status;
126*53ee8cc1Swenshuai.xi     REG32_Data   Parser_Status;
127*53ee8cc1Swenshuai.xi     REG32_Data   RESERVE2[RESERVE_SIZE2];
128*53ee8cc1Swenshuai.xi     REG32_Data   SpareCnt ;
129*53ee8cc1Swenshuai.xi     REG32_Data   Cmd_Queue;
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi }REG_AESDMACtrl;
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi typedef enum
135*53ee8cc1Swenshuai.xi {
136*53ee8cc1Swenshuai.xi     E_CIPHER_NDS_Region_fail,
137*53ee8cc1Swenshuai.xi     E_CIPHER_NDS_keyoff,
138*53ee8cc1Swenshuai.xi     E_CIPHER_sha_write_scr,
139*53ee8cc1Swenshuai.xi     E_CIPHER_sha_read_scr,
140*53ee8cc1Swenshuai.xi     E_CIPHER_sha_error_flag,
141*53ee8cc1Swenshuai.xi     E_CIPHER_except_read_scr,
142*53ee8cc1Swenshuai.xi     E_CIPHER_except_key,
143*53ee8cc1Swenshuai.xi     E_CIPHER_except_CAVid,
144*53ee8cc1Swenshuai.xi     E_CIPHER_except_des,
145*53ee8cc1Swenshuai.xi     E_CIPHER_except_NDS,
146*53ee8cc1Swenshuai.xi     E_CIPHER_except_chain,
147*53ee8cc1Swenshuai.xi     E_CIPHER_except_algo,
148*53ee8cc1Swenshuai.xi     E_CIPHER_except_key_HID,
149*53ee8cc1Swenshuai.xi     E_CIPHER_except_key_cbc_mac,
150*53ee8cc1Swenshuai.xi     E_CIPHER_except_file_dqmem,
151*53ee8cc1Swenshuai.xi     E_CIPHER_except_hash_dqmem,
152*53ee8cc1Swenshuai.xi     E_CIPHER_disable_masterkey0,
153*53ee8cc1Swenshuai.xi     E_CIPHER_disable_masterkey1,
154*53ee8cc1Swenshuai.xi     E_CIPHER_disable_cck,
155*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_0,
156*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_1,
157*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_2,
158*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_3,
159*53ee8cc1Swenshuai.xi     E_CIPHER_dma_forbid_qmem2dram,
160*53ee8cc1Swenshuai.xi     E_CIPHER_dma_forbid_cryptodma_keyslot_qmem,
161*53ee8cc1Swenshuai.xi     E_CIPHER_sha_forbid_qmem2dram,
162*53ee8cc1Swenshuai.xi     E_CIPHER_sha_forbid_cryptodma_keyslot_qmem,
163*53ee8cc1Swenshuai.xi 	E_CIPHER_tdes_key_error,
164*53ee8cc1Swenshuai.xi 	E_CIPHER_write_address_error,
165*53ee8cc1Swenshuai.xi 	E_CIPHER_except_str,
166*53ee8cc1Swenshuai.xi 	E_CIPHER_except_sha_str
167*53ee8cc1Swenshuai.xi 
168*53ee8cc1Swenshuai.xi }REG_Cipher_ExceptFlag;
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi typedef enum
171*53ee8cc1Swenshuai.xi {
172*53ee8cc1Swenshuai.xi     E_CIPHER_DEBUG_HASH_BUSY  = 0x40,
173*53ee8cc1Swenshuai.xi     E_CIPHER_DEBUG_DMA_BUSY   = 0x80,
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi }REG_CIPHER_Debug;
176*53ee8cc1Swenshuai.xi 
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat0
179*53ee8cc1Swenshuai.xi {
180*53ee8cc1Swenshuai.xi     MS_U32          Key_Index:6;
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi     MS_U32          DIV:1;
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi     MS_U32          DK:1;
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi     MS_U32          OVT:1;
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi     MS_U32          SB:3;
189*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_CLR          0x0UL
190*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_IV1          0x1UL
191*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_IV2          0x2UL
192*53ee8cc1Swenshuai.xi 
193*53ee8cc1Swenshuai.xi     MS_U32          Residue:3;
194*53ee8cc1Swenshuai.xi     	#define     CMD_DMA_RESIDUE_CLR         0x0UL
195*53ee8cc1Swenshuai.xi     	#define     CMD_DMA_RESIDUE_CTS         0x1UL
196*53ee8cc1Swenshuai.xi     	#define     CMD_DMA_RESIDUE_SCTE52      0x2UL
197*53ee8cc1Swenshuai.xi 
198*53ee8cc1Swenshuai.xi   //jamietest  MS_U32          Decrypt:1;
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi     MS_U32          SubAlgo:4;
201*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_ECB          0x0UL
202*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CBC          0x1UL
203*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CTR          0x2UL
204*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CBC_MAC      0x3UL  // [NOTE] This sub algorithm is AES only
205*53ee8cc1Swenshuai.xi 		#define     CMD_DMA_SUBALGO_CTR64        0x4UL
206*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CMAC_KEY     0x5UL
207*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CMAC_ALGO    0x6UL
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi     MS_U32          Algo:4;
210*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_AES                0x1UL
211*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_DES                0x2UL
212*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_TDES               0x3UL
213*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6                 0x4UL
214*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_CCBC_DIS        0x5UL
215*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_KE56            0x6UL
216*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_KE56_CCBC_DIS   0x7UL
217*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_RC4                0x8UL
218*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_RC4_128            0x9UL
219*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_SM4                0xAUL
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi     MS_U32          KeySel:4; //jamietest KeySel:3
222*53ee8cc1Swenshuai.xi 
223*53ee8cc1Swenshuai.xi         // bit [3]
224*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_CLR_SK             0x8UL
225*53ee8cc1Swenshuai.xi 
226*53ee8cc1Swenshuai.xi         // bit [2:0]
227*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SK                 0x0UL //key from 64-keyslot sram
228*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SCS_AUTH_KEY       0x1UL //SCS_Auth_key
229*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SCS_AUX_KEY        0x2UL //SCS_Aux_key
230*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SCS_IMG_KEY        0x3UL //SCS_IMG_key
231*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK0                0x4UL //master key0 (OTPC shadow reg)
232*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK1                0x5UL //master key1 (OTPC shadow reg)
233*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK2                0x6UL //master key2 (OTPC shadow reg)
234*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_STRN               0x7UL //DRAM signature nonce
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi 	MS_U32          CMD:3;
237*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ENCRYPT                 0x2UL
238*53ee8cc1Swenshuai.xi         #define     CMD_DMA_DECRYPT                 0x3UL
239*53ee8cc1Swenshuai.xi         #define     CMD_DMA_MASK                    0x2FUL
240*53ee8cc1Swenshuai.xi 
241*53ee8cc1Swenshuai.xi     MS_U32          Aes_mode:2;
242*53ee8cc1Swenshuai.xi         #define     CMD_AES_MODE_128                 0x0UL
243*53ee8cc1Swenshuai.xi         #define     CMD_AES_MODE_256                 0x1UL
244*53ee8cc1Swenshuai.xi         #define     CMD_AES_MODE_192                 0x2UL
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi }CMD_DmaFormat0;
247*53ee8cc1Swenshuai.xi 
248*53ee8cc1Swenshuai.xi 
249*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat1
250*53ee8cc1Swenshuai.xi {
251*53ee8cc1Swenshuai.xi     MS_U32          TID:16;
252*53ee8cc1Swenshuai.xi     MS_U32          CaVid:5;
253*53ee8cc1Swenshuai.xi     MS_U32          IntM:1;
254*53ee8cc1Swenshuai.xi         #define     CMD_INT_MODE_NONE       0x0UL
255*53ee8cc1Swenshuai.xi         #define     CMD_INT_MODE_EN         0x1UL
256*53ee8cc1Swenshuai.xi         //#define     CMD_INT_MODE_WAIT_CLR   0x2   // Block next operation until interrupt is cleared
257*53ee8cc1Swenshuai.xi     MS_U32          NL:1;
258*53ee8cc1Swenshuai.xi         #define     CMD_NEW_LINE            0x1UL
259*53ee8cc1Swenshuai.xi 
260*53ee8cc1Swenshuai.xi     MS_U32          RR:1;  	// Report Mode
261*53ee8cc1Swenshuai.xi         #define     CMD_DMA_RPT_MODE_REG        0x0UL
262*53ee8cc1Swenshuai.xi         #define     CMD_DMA_RPT_MODE_DRAM       0x1UL
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi     MS_U32          Dest0:1;     // File output Dest0
265*53ee8cc1Swenshuai.xi         #define     CMD_DMA_OUTPUT_DRAM         0x0UL
266*53ee8cc1Swenshuai.xi         #define     CMD_DMA_OUTPUT_REG          0x1UL   //[NOTE] if HID = R2 , the output will be written into DQRAM
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi     MS_U32          SD:2;       // Source Data
269*53ee8cc1Swenshuai.xi 	    #define     CMD_DMA_DATA_REG            0x0UL
270*53ee8cc1Swenshuai.xi         #define     CMD_DMA_DATA_DRAM           0x1UL
271*53ee8cc1Swenshuai.xi         #define     CMD_DMA_DATA_R2             0x2UL //[NOTE] bit[15] = 0, IQMEM. bit[15] = 1, DQMEM
272*53ee8cc1Swenshuai.xi         #define     CMD_DMA_DATA_HW_INPUT       0x3UL //jamietest
273*53ee8cc1Swenshuai.xi     MS_U32          DIBS:1;     // Data Input Byte Swap
274*53ee8cc1Swenshuai.xi     MS_U32          DOBS:1;     // Output Data Byte swap
275*53ee8cc1Swenshuai.xi     MS_U32          Dest1:1;     // [NOTE] if Dest1 = 0 ,Write output data to DRAM, Regfile or QMEM by setting; else output to SRAM of KL or internal key bank by Dest0
276*53ee8cc1Swenshuai.xi         #define     CMD_DMA_OUTPUT_DEST         0x0UL
277*53ee8cc1Swenshuai.xi         #define     CMD_DMA_OUTPUT_SRAM_KL      0x1UL
278*53ee8cc1Swenshuai.xi     MS_U32          COS:1;      // Output Data Swap
279*53ee8cc1Swenshuai.xi     MS_U32          CIS:1;      // Input Data Swap
280*53ee8cc1Swenshuai.xi 
281*53ee8cc1Swenshuai.xi }CMD_DmaFormat1;
282*53ee8cc1Swenshuai.xi 
283*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat2
284*53ee8cc1Swenshuai.xi {
285*53ee8cc1Swenshuai.xi     MS_U32          OBF_IDX_WRITE:5;
286*53ee8cc1Swenshuai.xi     MS_U32          CTROT:4;
287*53ee8cc1Swenshuai.xi     MS_U32          DMP:1;
288*53ee8cc1Swenshuai.xi     MS_U32          TK:1;
289*53ee8cc1Swenshuai.xi     MS_U32          TsInSb:2;
290*53ee8cc1Swenshuai.xi     MS_U32          BPS:1;
291*53ee8cc1Swenshuai.xi     MS_U32          TsSbMk:1;
292*53ee8cc1Swenshuai.xi     MS_U32          TsSbPn:2;
293*53ee8cc1Swenshuai.xi         #define     CMD_PARSER_SCB10            0x2UL
294*53ee8cc1Swenshuai.xi         #define     CMD_PARSER_SCB11            0x3UL
295*53ee8cc1Swenshuai.xi     MS_U32          InSb:1;
296*53ee8cc1Swenshuai.xi     MS_U32          RmSb:1;
297*53ee8cc1Swenshuai.xi     MS_U32          CR:1;
298*53ee8cc1Swenshuai.xi     MS_U32          IT:1;
299*53ee8cc1Swenshuai.xi     MS_U32          AT:1;
300*53ee8cc1Swenshuai.xi     MS_U32          P192:1;
301*53ee8cc1Swenshuai.xi     MS_U32          TS:1;
302*53ee8cc1Swenshuai.xi     MS_U32          HDCP:1;
303*53ee8cc1Swenshuai.xi     MS_U32          HP:1;
304*53ee8cc1Swenshuai.xi     MS_U32          OBF_IDX_READ:5;
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi     MS_U32          Key_bank:1; //Set 1, the cipher key is from the internal key bank
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi }CMD_DmaFormat2;
309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat3
311*53ee8cc1Swenshuai.xi {
312*53ee8cc1Swenshuai.xi     MS_U32          Aes_mode2:2;
313*53ee8cc1Swenshuai.xi         #define     CMD_AES_MODE_128                 0x0UL
314*53ee8cc1Swenshuai.xi         #define     CMD_AES_MODE_256                 0x1UL
315*53ee8cc1Swenshuai.xi         #define     CMD_AES_MODE_192                 0x2UL
316*53ee8cc1Swenshuai.xi     MS_U32          TLB_write:1;
317*53ee8cc1Swenshuai.xi         #define     CMD_WRITE_PHY_ADDRESS           0x0UL
318*53ee8cc1Swenshuai.xi         #define     CMD_WRITE_VIR_ADDRESS           0x1UL
319*53ee8cc1Swenshuai.xi     MS_U32          TLB_read:1;
320*53ee8cc1Swenshuai.xi         #define     CMD_READ_PHY_ADDRESS            0x0UL
321*53ee8cc1Swenshuai.xi         #define     CMD_READ_VIR_ADDRESS            0x1UL
322*53ee8cc1Swenshuai.xi     MS_U32          CRS:1;
323*53ee8cc1Swenshuai.xi     MS_U32          MP:1;
324*53ee8cc1Swenshuai.xi     MS_U32          DIV2:1;
325*53ee8cc1Swenshuai.xi     MS_U32          DK2:1;
326*53ee8cc1Swenshuai.xi     MS_U32          MDEM:1;
327*53ee8cc1Swenshuai.xi 
328*53ee8cc1Swenshuai.xi     MS_U32          SB2:3;
329*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_CLR          0x0UL
330*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_IV1          0x1UL
331*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_IV2          0x2UL
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi     MS_U32          Residue2:3;
334*53ee8cc1Swenshuai.xi         #define     CMD_DMA_RESIDUE_CLR         0x0UL
335*53ee8cc1Swenshuai.xi         #define     CMD_DMA_RESIDUE_CTS         0x1UL
336*53ee8cc1Swenshuai.xi         #define     CMD_DMA_RESIDUE_SCTE52      0x2UL
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi   //jamietest  MS_U32          Decrypt:1;
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi     MS_U32          SubAlgo2:4;
341*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_ECB          0x0UL
342*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CBC          0x1UL
343*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CTR          0x2UL
344*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CBC_MAC      0x3UL  // [NOTE] This sub algorithm is AES only
345*53ee8cc1Swenshuai.xi 		#define     CMD_DMA_SUBALGO_CTR64        0x4UL
346*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CMAC_KEY     0x5UL
347*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CMAC_ALGO    0x6UL
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi     MS_U32          Algo2:4;
350*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_AES                0x1UL
351*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_DES                0x2UL
352*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_TDES               0x3UL
353*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6                 0x4UL
354*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_CCBC_DIS        0x5UL
355*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_KE56            0x6UL
356*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_KE56_CCBC_DIS   0x7UL
357*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_RC4                0x8UL
358*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_RC4_128            0x9UL
359*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_SM4                0xAUL
360*53ee8cc1Swenshuai.xi 
361*53ee8cc1Swenshuai.xi     MS_U32          KeySel2:4; //jamietest KeySel:3
362*53ee8cc1Swenshuai.xi 
363*53ee8cc1Swenshuai.xi         // bit [3]
364*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_CLR_SK             0x8UL
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi         // bit [2:0]
367*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SK                 0x0UL //key from 64-keyslot sram
368*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SCS_AUTH_KEY       0x1UL //SCS_Auth_key
369*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SCS_AUX_KEY        0x2UL //SCS_Aux_key
370*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SCS_IMG_KEY        0x3UL //SCS_IMG_key
371*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK0                0x4UL //master key0 (OTPC shadow reg)
372*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK1                0x5UL //master key1 (OTPC shadow reg)
373*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK2                0x6UL //master key2 (OTPC shadow reg)
374*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_STRN               0x7UL //DRAM signature nonce
375*53ee8cc1Swenshuai.xi     MS_U32          Decrypt2:1;
376*53ee8cc1Swenshuai.xi     MS_U32          IK:1;
377*53ee8cc1Swenshuai.xi     MS_U32          AP:1;
378*53ee8cc1Swenshuai.xi     MS_U32          Rsv:2;
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi }CMD_DmaFormat3;
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat0
384*53ee8cc1Swenshuai.xi {
385*53ee8cc1Swenshuai.xi     MS_U32          HASH_Key_Index:6; //choose which key in the 64-keyslot sram
386*53ee8cc1Swenshuai.xi     MS_U32          IntM:1;
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi     MS_U32          IWC_Sel:1;
389*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IWC_RPT        0x0UL
390*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IWC_CMDQ       0x1UL
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi     MS_U32          OVT:1;
393*53ee8cc1Swenshuai.xi     MS_U32          HOS:1; //reverse hash output
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi     MS_U32          Inv16:1; //invere byte order per 16 byte
396*53ee8cc1Swenshuai.xi     MS_U32          KPAD:1;
397*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IKP    0x0UL
398*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OKP    0x1UL
399*53ee8cc1Swenshuai.xi     MS_U32          HMAC:1;
400*53ee8cc1Swenshuai.xi         #define     CMD_HASH_NONE   0x0UL
401*53ee8cc1Swenshuai.xi         #define     CMD_HASH_HMAC   0x1UL
402*53ee8cc1Swenshuai.xi 
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi     MS_U32          HMAC_KeySel:4;
405*53ee8cc1Swenshuai.xi 
406*53ee8cc1Swenshuai.xi         // bit [3:0]
407*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_HK                 0x0UL
408*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_STRN               0x1UL
409*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_MK0                0x2UL
410*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_MK1                0x3UL
411*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_MK2                0x4UL
412*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SK                 0x5UL
413*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SCS_AUTH_KEY       0x6UL
414*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SCS_AUX_KEY        0x7UL
415*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SCS_IMG_KEY        0x8UL
416*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_INTERNAL_KEY_BANK  0x9UL
417*53ee8cc1Swenshuai.xi 
418*53ee8cc1Swenshuai.xi     MS_U32          DK:1;                                 //HMAC command key, clear seesion key
419*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_CLR_SK             0x1UL  //HMAC KSEL = 5-8
420*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_DIR_HK             0x1UL  //HMAC KSEL = 0
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi     MS_U32          Dest:2;
423*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OUTPUT_RPT     0x0UL
424*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OUTPUT_R2      0x2UL  //IQMEM or DQMEM
425*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OUTPUT_DRAM    0x3UL
426*53ee8cc1Swenshuai.xi 
427*53ee8cc1Swenshuai.xi     MS_U32          Src:2;
428*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_DRAM       0x0UL
429*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_PRV_RPT    0x1UL  //use previous hash operation result in hasg_rpt_reg2~9
430*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_R2         0x2UL  //[NOTE] bit[15] = 0, IQMEM. bit[15] = 1, DQMEM
431*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_REG        0x3UL
432*53ee8cc1Swenshuai.xi     MS_U32          AutoPad:1;
433*53ee8cc1Swenshuai.xi     MS_U32          InitHashSel:2;
434*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IV_FIPS        0x0UL
435*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IV_CMD         0x1UL
436*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IV_PRV_RPT     0x2UL
437*53ee8cc1Swenshuai.xi 
438*53ee8cc1Swenshuai.xi     MS_U32          HashSel:2;  //jamietest
439*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SHA1           0x0UL
440*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SHA256         0x1UL
441*53ee8cc1Swenshuai.xi         #define     CMD_HASH_MD5            0x2UL
442*53ee8cc1Swenshuai.xi 
443*53ee8cc1Swenshuai.xi     MS_U32          CMD:3;
444*53ee8cc1Swenshuai.xi         #define     CMD_HASH_START          0x4UL
445*53ee8cc1Swenshuai.xi 		#define     CMD_HASH_START_RR       0x6UL
446*53ee8cc1Swenshuai.xi 
447*53ee8cc1Swenshuai.xi     MS_U32          Rsv:2;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi }Hash_DmaFormat0;
450*53ee8cc1Swenshuai.xi 
451*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat1
452*53ee8cc1Swenshuai.xi {
453*53ee8cc1Swenshuai.xi     MS_U32          TID:16;
454*53ee8cc1Swenshuai.xi     MS_U32          CaVid:5;
455*53ee8cc1Swenshuai.xi     MS_U32          OBF_IDX_WRITE:5;
456*53ee8cc1Swenshuai.xi     MS_U32          OBF_IDX_READ:5;
457*53ee8cc1Swenshuai.xi     MS_U32          Byte_align_en:1;
458*53ee8cc1Swenshuai.xi 
459*53ee8cc1Swenshuai.xi }Hash_DmaFormat1;
460*53ee8cc1Swenshuai.xi 
461*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat2
462*53ee8cc1Swenshuai.xi {
463*53ee8cc1Swenshuai.xi     MS_U32          Rsv:29;
464*53ee8cc1Swenshuai.xi     MS_U32          Hash_TLB_write:1;
465*53ee8cc1Swenshuai.xi         #define     CMD_WRITE_PHY_ADDRESS           0x0UL
466*53ee8cc1Swenshuai.xi         #define     CMD_WRITE_VIR_ADDRESS           0x1UL
467*53ee8cc1Swenshuai.xi     MS_U32          Hash_TLB_read:1;
468*53ee8cc1Swenshuai.xi         #define     CMD_READ_PHY_ADDRESS            0x0UL
469*53ee8cc1Swenshuai.xi         #define     CMD_READ_VIR_ADDRESS            0x1UL
470*53ee8cc1Swenshuai.xi     MS_U32          RR:1;
471*53ee8cc1Swenshuai.xi 
472*53ee8cc1Swenshuai.xi }CMD_HashFormat2;
473*53ee8cc1Swenshuai.xi 
474*53ee8cc1Swenshuai.xi 
475*53ee8cc1Swenshuai.xi //=====================================================================
476*53ee8cc1Swenshuai.xi //            RSA Register Definition
477*53ee8cc1Swenshuai.xi //=====================================================================
478*53ee8cc1Swenshuai.xi 
479*53ee8cc1Swenshuai.xi #define REG_RSA_BASE         (0x31800UL)
480*53ee8cc1Swenshuai.xi 
481*53ee8cc1Swenshuai.xi #define REG_RSA_COMMON          ( REG_RSA_BASE + 0x0UL )
482*53ee8cc1Swenshuai.xi #define REG_RSA_ONEWAY_SYSREG   ( REG_RSA_BASE + 0x1UL )
483*53ee8cc1Swenshuai.xi #define REG_RSA_CTRL            ( REG_RSA_BASE + 0x2UL )
484*53ee8cc1Swenshuai.xi #define REG_RSA_IND32_ADDR      ( REG_RSA_BASE + 0x3UL )
485*53ee8cc1Swenshuai.xi #define REG_RSA_IND32_WDATA     ( REG_RSA_BASE + 0x4UL )
486*53ee8cc1Swenshuai.xi 
487*53ee8cc1Swenshuai.xi #define REG_RSA_SEC_RANGE_START(_a_)   ( REG_RSA_BASE + ((_a_)* 2) + 0x5 ) // a = 0 ~ 5
488*53ee8cc1Swenshuai.xi #define REG_RSA_SEC_RANGE_END(_a_)     ( REG_RSA_BASE + ((_a_)* 2) + 0x6 )
489*53ee8cc1Swenshuai.xi 
490*53ee8cc1Swenshuai.xi #define REG_RSA_KEY_SEL         ( REG_RSA_BASE + 0x32UL )
491*53ee8cc1Swenshuai.xi #define REG_RSA_WDATA           ( REG_RSA_BASE + 0x39UL )
492*53ee8cc1Swenshuai.xi #define REG_RSA_LV_PROTECT_EN   ( REG_RSA_BASE + 0x3aUL )
493*53ee8cc1Swenshuai.xi #define REG_RSA_MAILBOX(_a_)    ( REG_RSA_BASE + 0x40UL + (_a_) )
494*53ee8cc1Swenshuai.xi 
495*53ee8cc1Swenshuai.xi //=====================================================================
496*53ee8cc1Swenshuai.xi //            MISC Register Definition
497*53ee8cc1Swenshuai.xi //=====================================================================
498*53ee8cc1Swenshuai.xi #define REG_RNG_BASE        (0x143800UL)//(0xA1C00 * 2)
499*53ee8cc1Swenshuai.xi #define REG_OTP_PUB0_BASE   (0xC5800UL)//(0x62C00 * 2)
500*53ee8cc1Swenshuai.xi #define REG_OTP_PUB1_BASE   (0xC5A00UL)//(0x62D00 * 2)
501*53ee8cc1Swenshuai.xi #define REG_OTP_PUB2_BASE   (0xC5C00UL)//(0x62E00 * 2)
502*53ee8cc1Swenshuai.xi 
503*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACPU           (REG_RNG_BASE + 0x13 * 4)
504*53ee8cc1Swenshuai.xi 
505*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACK_ACPU 0x80000000UL
506*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_VALID_ACPU_MASK 0x00010000UL
507*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_OUT_ACPU_MASK 0x0000FFFFUL
508*53ee8cc1Swenshuai.xi 
509*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_SCPU           (REG_RNG_BASE + 0x12 * 4)
510*53ee8cc1Swenshuai.xi 
511*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACK_SCPU 0x80000000UL
512*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_VALID_SCPU_MASK 0x00010000UL
513*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_OUT_SCPU_MASK 0x0000FFFFUL
514*53ee8cc1Swenshuai.xi 
515*53ee8cc1Swenshuai.xi //=====================================================================
516*53ee8cc1Swenshuai.xi //            IRQ Register Definition
517*53ee8cc1Swenshuai.xi //=====================================================================
518*53ee8cc1Swenshuai.xi #define REG_HST0_FIQ_STATUS_63_48    (REG_IRQCTRL_BASE + (0xfUL * 4))
519*53ee8cc1Swenshuai.xi #define REG_HST0_FIQ_MASK_63_48      (REG_IRQCTRL_BASE + (0x7UL * 4))
520*53ee8cc1Swenshuai.xi 
521*53ee8cc1Swenshuai.xi #define REG_HTS0_FIQ_MASK_CRYPTODMA  (0xFEFFUL)
522*53ee8cc1Swenshuai.xi #define REG_HTS0_FIQ_CRYPTODMA       (0x0100UL)   //FIQ 56 is CryptoDMA
523*53ee8cc1Swenshuai.xi 
524*53ee8cc1Swenshuai.xi #endif // #ifndef __REG_CIPHER_H__
525