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