xref: /utopia/UTPA2-700.0.x/modules/security/hal/curry/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)  || defined (MSOS_TYPE_OPTEE))
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_PARSER_LG_PATH_EN         0x400
111*53ee8cc1Swenshuai.xi 		#define  REG_DMA_SW_RESET              0x1
112*53ee8cc1Swenshuai.xi         #define  REG_DMA_STR_KEY_VALID         0x80000000
113*53ee8cc1Swenshuai.xi     REG32_Data   Dma_Out[DMA_DIRECT_OUTPUT_SIZE];
114*53ee8cc1Swenshuai.xi     REG32_Data   Hash_Reportp[HASH_RPT_REG_SIZE];
115*53ee8cc1Swenshuai.xi         #define  REG_CIPHER_RPT_THREAD_MSK     0xFFFF
116*53ee8cc1Swenshuai.xi         #define  REG_CIPHER_RPT_OK             0x80000000
117*53ee8cc1Swenshuai.xi         #define  REG_CIPHER_RPT_SHT              31
118*53ee8cc1Swenshuai.xi     REG32_Data   Dma_Reportp[DMA_RPT_REG_SIZE];
119*53ee8cc1Swenshuai.xi     REG32_Data   CryptoDMA2MI_NS;
120*53ee8cc1Swenshuai.xi     REG32_Data   Debug_Port;
121*53ee8cc1Swenshuai.xi     REG32_Data   HMAC_Key[HMAC_KEY_SIZE];
122*53ee8cc1Swenshuai.xi     REG32_Data   RESERVE1[RESERVE_SIZE1];
123*53ee8cc1Swenshuai.xi     REG32_Data   HWPA_Ctrl;
124*53ee8cc1Swenshuai.xi     REG32_Data   HWPA_IV2[HWPA_IV_SIZE];
125*53ee8cc1Swenshuai.xi     REG32_Data   HWPA_Key2[HWPA_KEY_SIZE];
126*53ee8cc1Swenshuai.xi     REG32_Data   Cipher_Status;
127*53ee8cc1Swenshuai.xi     REG32_Data   Parser_Status;
128*53ee8cc1Swenshuai.xi     REG32_Data   RESERVE2[RESERVE_SIZE2];
129*53ee8cc1Swenshuai.xi     REG32_Data   SpareCnt ;
130*53ee8cc1Swenshuai.xi     REG32_Data   Cmd_Queue;
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi }REG_AESDMACtrl;
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi typedef enum
136*53ee8cc1Swenshuai.xi {
137*53ee8cc1Swenshuai.xi     E_CIPHER_NDS_Region_fail,
138*53ee8cc1Swenshuai.xi     E_CIPHER_NDS_keyoff,
139*53ee8cc1Swenshuai.xi     E_CIPHER_sha_write_scr,
140*53ee8cc1Swenshuai.xi     E_CIPHER_sha_read_scr,
141*53ee8cc1Swenshuai.xi     E_CIPHER_sha_error_flag,
142*53ee8cc1Swenshuai.xi     E_CIPHER_except_read_scr,
143*53ee8cc1Swenshuai.xi     E_CIPHER_except_key,
144*53ee8cc1Swenshuai.xi     E_CIPHER_except_CAVid,
145*53ee8cc1Swenshuai.xi     E_CIPHER_except_des,
146*53ee8cc1Swenshuai.xi     E_CIPHER_except_NDS,
147*53ee8cc1Swenshuai.xi     E_CIPHER_except_chain,
148*53ee8cc1Swenshuai.xi     E_CIPHER_except_algo,
149*53ee8cc1Swenshuai.xi     E_CIPHER_except_key_HID,
150*53ee8cc1Swenshuai.xi     E_CIPHER_except_key_cbc_mac,
151*53ee8cc1Swenshuai.xi     E_CIPHER_except_file_dqmem,
152*53ee8cc1Swenshuai.xi     E_CIPHER_except_hash_dqmem,
153*53ee8cc1Swenshuai.xi     E_CIPHER_disable_masterkey0,
154*53ee8cc1Swenshuai.xi     E_CIPHER_disable_masterkey1,
155*53ee8cc1Swenshuai.xi     E_CIPHER_disable_cck,
156*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_0,
157*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_1,
158*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_2,
159*53ee8cc1Swenshuai.xi     E_CIPHER_disable_reg_key_3,
160*53ee8cc1Swenshuai.xi     E_CIPHER_dma_forbid_qmem2dram,
161*53ee8cc1Swenshuai.xi     E_CIPHER_dma_forbid_cryptodma_keyslot_qmem,
162*53ee8cc1Swenshuai.xi     E_CIPHER_sha_forbid_qmem2dram,
163*53ee8cc1Swenshuai.xi     E_CIPHER_sha_forbid_cryptodma_keyslot_qmem,
164*53ee8cc1Swenshuai.xi 	E_CIPHER_tdes_key_error,
165*53ee8cc1Swenshuai.xi 	E_CIPHER_write_address_error,
166*53ee8cc1Swenshuai.xi 	E_CIPHER_except_str,
167*53ee8cc1Swenshuai.xi 	E_CIPHER_except_sha_str
168*53ee8cc1Swenshuai.xi 
169*53ee8cc1Swenshuai.xi }REG_Cipher_ExceptFlag;
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi typedef enum
172*53ee8cc1Swenshuai.xi {
173*53ee8cc1Swenshuai.xi     E_CIPHER_DEBUG_HASH_BUSY  = 0x40,
174*53ee8cc1Swenshuai.xi     E_CIPHER_DEBUG_DMA_BUSY   = 0x80,
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi }REG_CIPHER_Debug;
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat0
180*53ee8cc1Swenshuai.xi {
181*53ee8cc1Swenshuai.xi     MS_U32          CL:6;
182*53ee8cc1Swenshuai.xi         #define     CMD_LEN_MASK            0x3FUL
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi     MS_U32          DIV:1;
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi     MS_U32          DK:1;
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi     MS_U32          OVT:1;
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi     MS_U32          SB:3;
191*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_CLR          0x0UL
192*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_IV1          0x1UL
193*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SB_SEL_IV2          0x2UL
194*53ee8cc1Swenshuai.xi 
195*53ee8cc1Swenshuai.xi     MS_U32          Residue:3;
196*53ee8cc1Swenshuai.xi     	#define     CMD_DMA_RESIDUE_CLR         0x0UL
197*53ee8cc1Swenshuai.xi     	#define     CMD_DMA_RESIDUE_CTS         0x1UL
198*53ee8cc1Swenshuai.xi     	#define     CMD_DMA_RESIDUE_SCTE52      0x2UL
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi   //jamietest  MS_U32          Decrypt:1;
201*53ee8cc1Swenshuai.xi 
202*53ee8cc1Swenshuai.xi     MS_U32          SubAlgo:4;
203*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_ECB          0x0UL
204*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CBC          0x1UL
205*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CTR          0x2UL
206*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CBC_MAC      0x3UL  // [NOTE] This sub algorithm is AES only
207*53ee8cc1Swenshuai.xi 		#define     CMD_DMA_SUBALGO_CTR64        0x4UL
208*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CMAC_KEY     0x5UL
209*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SUBALGO_CMAC_ALGO    0x6UL
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi     MS_U32          Algo:4;
212*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_AES                0x1UL
213*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_DES                0x2UL
214*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_TDES               0x3UL
215*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6                 0x4UL
216*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_CCBC_DIS        0x5UL
217*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_KE56            0x6UL
218*53ee8cc1Swenshuai.xi         #define     CMD_DMA_ALGO_M6_KE56_CCBC_DIS   0x7UL
219*53ee8cc1Swenshuai.xi         #define     CMD_DMA_RC4                     0x8UL
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_SK0                0x0UL //session key 0
228*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SK1                0x1UL
229*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SK2                0x2UL
230*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_SK3                0x3UL
231*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK0                0x4UL //SCK3
232*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_MK1                0x5UL //SCK4
233*53ee8cc1Swenshuai.xi         #define     CMD_DMA_KSEL_CCCK               0x6UL //SCK6
234*53ee8cc1Swenshuai.xi 		#define     CMD_DMA_KSEL_TRNG               0x7UL //PM Key
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          HID:2;                      	//[NOTE] Set by HW only
242*53ee8cc1Swenshuai.xi         #define     CMD_ACPU                    	0x0UL
243*53ee8cc1Swenshuai.xi         #define     CMD_R2                      	0x1UL
244*53ee8cc1Swenshuai.xi         #define     CMD_BGC51                   	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          Dest:1;     // File output Dest
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          DestKL:1;     // [NOTE] if DestKL = 0 ,Write output data to DRAM, Regfile or QMEM by setting, DestKL = 1 output to SRAM of KL
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          NS:1;
307*53ee8cc1Swenshuai.xi         #define     CMD_DMA_SECURE_IP       0x0UL
308*53ee8cc1Swenshuai.xi         #define     CMD_DMA_NON_SECURE_IP   0x1UL
309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi }CMD_DmaFormat2;
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat3
313*53ee8cc1Swenshuai.xi {
314*53ee8cc1Swenshuai.xi     MS_U32          Rsv1:4;
315*53ee8cc1Swenshuai.xi     MS_U32          CRS:1;
316*53ee8cc1Swenshuai.xi     MS_U32          MP:1;
317*53ee8cc1Swenshuai.xi     MS_U32          DIV2:1;
318*53ee8cc1Swenshuai.xi     MS_U32          DK2:1;
319*53ee8cc1Swenshuai.xi     MS_U32          Rsv2:15;
320*53ee8cc1Swenshuai.xi     MS_U32          KeySel2:4;
321*53ee8cc1Swenshuai.xi     MS_U32          Decrypt2:1;
322*53ee8cc1Swenshuai.xi     MS_U32          IK:1;
323*53ee8cc1Swenshuai.xi     MS_U32          AP:1;
324*53ee8cc1Swenshuai.xi     MS_U32          Rsv3:2;
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi }CMD_DmaFormat3;
327*53ee8cc1Swenshuai.xi 
328*53ee8cc1Swenshuai.xi 
329*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat0
330*53ee8cc1Swenshuai.xi {
331*53ee8cc1Swenshuai.xi     MS_U32          CL:6;
332*53ee8cc1Swenshuai.xi     MS_U32          IntM:1;
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi     MS_U32          IWC_Sel:1;
335*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IWC_RPT        0x0UL
336*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IWC_CMDQ       0x1UL
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi     MS_U32          OVT:1;
339*53ee8cc1Swenshuai.xi     MS_U32          HOS:1; //reverse hash output
340*53ee8cc1Swenshuai.xi 
341*53ee8cc1Swenshuai.xi     MS_U32          Inv16:1; //invere byte order per 16 byte
342*53ee8cc1Swenshuai.xi     MS_U32          KPAD:1;
343*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IKP    0x0UL
344*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OKP    0x1UL
345*53ee8cc1Swenshuai.xi     MS_U32          HMAC:1;
346*53ee8cc1Swenshuai.xi         #define     CMD_HASH_NONE   0x0UL
347*53ee8cc1Swenshuai.xi         #define     CMD_HASH_HMAC   0x1UL
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi     MS_U32          HMAC_KeySel:4;
351*53ee8cc1Swenshuai.xi 
352*53ee8cc1Swenshuai.xi         // bit [3:0]
353*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_HK                 0x0UL
354*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_STRN               0x1UL
355*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_MK0                0x2UL
356*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_MK1                0x3UL
357*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_CCCK               0x4UL
358*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SK0                0x5UL
359*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SK1                0x6UL
360*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SK2                0x7UL
361*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_SK3                0x8UL
362*53ee8cc1Swenshuai.xi 
363*53ee8cc1Swenshuai.xi     MS_U32          DK:1;                                 //HMAC command key, clear seesion key
364*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_CLR_SK             0x1UL  //HMAC KSEL = 5-8
365*53ee8cc1Swenshuai.xi         #define     CMD_HMAC_KSEL_DIR_HK             0x1UL  //HMAC KSEL = 0
366*53ee8cc1Swenshuai.xi 
367*53ee8cc1Swenshuai.xi     MS_U32          Dest:2;
368*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OUTPUT_RPT     0x0UL
369*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OUTPUT_R2      0x2UL  //IQMEM or DQMEM
370*53ee8cc1Swenshuai.xi         #define     CMD_HASH_OUTPUT_DRAM    0x3UL
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi     MS_U32          Src:2;
373*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_DRAM       0x0UL
374*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_PRV_RPT    0x1UL  //use previous hash operation result in hasg_rpt_reg2~9
375*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_R2         0x2UL  //[NOTE] bit[15] = 0, IQMEM. bit[15] = 1, DQMEM
376*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SRC_REG        0x3UL
377*53ee8cc1Swenshuai.xi     MS_U32          AutoPad:1;
378*53ee8cc1Swenshuai.xi     MS_U32          InitHashSel:2;
379*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IV_FIPS        0x0UL
380*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IV_CMD         0x1UL
381*53ee8cc1Swenshuai.xi         #define     CMD_HASH_IV_PRV_RPT     0x2UL
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi     MS_U32          HashSel:2;  //jamietest
384*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SHA1           0x0UL
385*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SHA256         0x1UL
386*53ee8cc1Swenshuai.xi         #define     CMD_HASH_MD5            0x2UL
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi     MS_U32          CMD:3;
389*53ee8cc1Swenshuai.xi         #define     CMD_HASH_START          0x4UL
390*53ee8cc1Swenshuai.xi 		#define     CMD_HASH_START_RR       0x6UL
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi     MS_U32          HID:2;
393*53ee8cc1Swenshuai.xi         #define     CMD_ACPU                    0x0UL
394*53ee8cc1Swenshuai.xi         #define     CMD_R2                      0x1UL
395*53ee8cc1Swenshuai.xi         #define     CMD_BGC51                   0x2UL
396*53ee8cc1Swenshuai.xi 
397*53ee8cc1Swenshuai.xi }Hash_DmaFormat0;
398*53ee8cc1Swenshuai.xi 
399*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat1
400*53ee8cc1Swenshuai.xi {
401*53ee8cc1Swenshuai.xi     MS_U32          TID:16;
402*53ee8cc1Swenshuai.xi     MS_U32          CaVid:5;
403*53ee8cc1Swenshuai.xi     MS_U32          OBF_IDX_WRITE:5;
404*53ee8cc1Swenshuai.xi     MS_U32          OBF_IDX_READ:5;
405*53ee8cc1Swenshuai.xi     MS_U32          NS:1;
406*53ee8cc1Swenshuai.xi         #define     CMD_HASH_SECURE_IP       0x0UL
407*53ee8cc1Swenshuai.xi         #define     CMD_HASH_NON_SECURE_IP   0x1UL
408*53ee8cc1Swenshuai.xi 
409*53ee8cc1Swenshuai.xi }Hash_DmaFormat1;
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat2
412*53ee8cc1Swenshuai.xi {
413*53ee8cc1Swenshuai.xi     MS_U32          Rsv:31;
414*53ee8cc1Swenshuai.xi     MS_U32          RR:1;
415*53ee8cc1Swenshuai.xi 
416*53ee8cc1Swenshuai.xi }CMD_HashFormat2;
417*53ee8cc1Swenshuai.xi 
418*53ee8cc1Swenshuai.xi 
419*53ee8cc1Swenshuai.xi //=====================================================================
420*53ee8cc1Swenshuai.xi //            RSA Register Definition
421*53ee8cc1Swenshuai.xi //=====================================================================
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi #define REG_RSA_BASE         (0x31800UL)
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi #define REG_RSA_COMMON          ( REG_RSA_BASE + 0x0UL )
426*53ee8cc1Swenshuai.xi #define REG_RSA_ONEWAY_SYSREG   ( REG_RSA_BASE + 0x1UL )
427*53ee8cc1Swenshuai.xi #define REG_RSA_CTRL            ( REG_RSA_BASE + 0x2UL )
428*53ee8cc1Swenshuai.xi #define REG_RSA_IND32_ADDR      ( REG_RSA_BASE + 0x3UL )
429*53ee8cc1Swenshuai.xi #define REG_RSA_IND32_WDATA     ( REG_RSA_BASE + 0x4UL )
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi #define REG_RSA_SEC_RANGE_START(_a_)   ( REG_RSA_BASE + ((_a_)* 2) + 0x5 ) // a = 0 ~ 5
432*53ee8cc1Swenshuai.xi #define REG_RSA_SEC_RANGE_END(_a_)     ( REG_RSA_BASE + ((_a_)* 2) + 0x6 )
433*53ee8cc1Swenshuai.xi 
434*53ee8cc1Swenshuai.xi #define REG_RSA_KEY_SEL         ( REG_RSA_BASE + 0x32UL )
435*53ee8cc1Swenshuai.xi #define REG_RSA_WDATA           ( REG_RSA_BASE + 0x39UL )
436*53ee8cc1Swenshuai.xi #define REG_RSA_LV_PROTECT_EN   ( REG_RSA_BASE + 0x3aUL )
437*53ee8cc1Swenshuai.xi #define REG_RSA_MAILBOX(_a_)    ( REG_RSA_BASE + 0x40UL + (_a_) )
438*53ee8cc1Swenshuai.xi 
439*53ee8cc1Swenshuai.xi //=====================================================================
440*53ee8cc1Swenshuai.xi //            MISC Register Definition
441*53ee8cc1Swenshuai.xi //=====================================================================
442*53ee8cc1Swenshuai.xi #define REG_RNG_BASE        (0x143800UL)//(0xA1C00 * 2)
443*53ee8cc1Swenshuai.xi #define REG_OTP_PUB0_BASE   (0xC5800UL)//(0x62C00 * 2)
444*53ee8cc1Swenshuai.xi #define REG_OTP_PUB1_BASE   (0xC5A00UL)//(0x62D00 * 2)
445*53ee8cc1Swenshuai.xi #define REG_OTP_PUB2_BASE   (0xC5C00UL)//(0x62E00 * 2)
446*53ee8cc1Swenshuai.xi 
447*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACPU           (REG_RNG_BASE + 0x13 * 4)
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACK_ACPU 0x80000000UL
450*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_VALID_ACPU_MASK 0x00010000UL
451*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_OUT_ACPU_MASK 0x0000FFFFUL
452*53ee8cc1Swenshuai.xi 
453*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_SCPU           (REG_RNG_BASE + 0x12 * 4)
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACK_SCPU 0x80000000UL
456*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_VALID_SCPU_MASK 0x00010000UL
457*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_OUT_SCPU_MASK 0x0000FFFFUL
458*53ee8cc1Swenshuai.xi 
459*53ee8cc1Swenshuai.xi //=====================================================================
460*53ee8cc1Swenshuai.xi //            IRQ Register Definition
461*53ee8cc1Swenshuai.xi //=====================================================================
462*53ee8cc1Swenshuai.xi #define REG_HST0_FIQ_STATUS_63_48    (REG_IRQCTRL_BASE + (0xfUL * 4))
463*53ee8cc1Swenshuai.xi #define REG_HST0_FIQ_MASK_63_48      (REG_IRQCTRL_BASE + (0x7UL * 4))
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi #define REG_HTS0_FIQ_MASK_CRYPTODMA  (0xFEFFUL)
466*53ee8cc1Swenshuai.xi #define REG_HTS0_FIQ_CRYPTODMA       (0x0100UL)   //FIQ 56 is CryptoDMA
467*53ee8cc1Swenshuai.xi 
468*53ee8cc1Swenshuai.xi #endif // #ifndef __REG_CIPHER_H__
469