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 CL:6; 181*53ee8cc1Swenshuai.xi #define CMD_LEN_MASK 0x3FUL 182*53ee8cc1Swenshuai.xi 183*53ee8cc1Swenshuai.xi MS_U32 DIV:1; 184*53ee8cc1Swenshuai.xi 185*53ee8cc1Swenshuai.xi MS_U32 DK:1; 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi MS_U32 OVT:1; 188*53ee8cc1Swenshuai.xi 189*53ee8cc1Swenshuai.xi MS_U32 SB:3; 190*53ee8cc1Swenshuai.xi #define CMD_DMA_SB_SEL_CLR 0x0UL 191*53ee8cc1Swenshuai.xi #define CMD_DMA_SB_SEL_IV1 0x1UL 192*53ee8cc1Swenshuai.xi #define CMD_DMA_SB_SEL_IV2 0x2UL 193*53ee8cc1Swenshuai.xi 194*53ee8cc1Swenshuai.xi MS_U32 Residue:3; 195*53ee8cc1Swenshuai.xi #define CMD_DMA_RESIDUE_CLR 0x0UL 196*53ee8cc1Swenshuai.xi #define CMD_DMA_RESIDUE_CTS 0x1UL 197*53ee8cc1Swenshuai.xi #define CMD_DMA_RESIDUE_SCTE52 0x2UL 198*53ee8cc1Swenshuai.xi 199*53ee8cc1Swenshuai.xi //jamietest MS_U32 Decrypt:1; 200*53ee8cc1Swenshuai.xi 201*53ee8cc1Swenshuai.xi MS_U32 SubAlgo:4; 202*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_ECB 0x0UL 203*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_CBC 0x1UL 204*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_CTR 0x2UL 205*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_CBC_MAC 0x3UL // [NOTE] This sub algorithm is AES only 206*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_CTR64 0x4UL 207*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_CMAC_KEY 0x5UL 208*53ee8cc1Swenshuai.xi #define CMD_DMA_SUBALGO_CMAC_ALGO 0x6UL 209*53ee8cc1Swenshuai.xi 210*53ee8cc1Swenshuai.xi MS_U32 Algo:4; 211*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_AES 0x1UL 212*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_DES 0x2UL 213*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_TDES 0x3UL 214*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_M6 0x4UL 215*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_M6_CCBC_DIS 0x5UL 216*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_M6_KE56 0x6UL 217*53ee8cc1Swenshuai.xi #define CMD_DMA_ALGO_M6_KE56_CCBC_DIS 0x7UL 218*53ee8cc1Swenshuai.xi #define CMD_DMA_RC4 0x8UL 219*53ee8cc1Swenshuai.xi 220*53ee8cc1Swenshuai.xi MS_U32 KeySel:4; //jamietest KeySel:3 221*53ee8cc1Swenshuai.xi 222*53ee8cc1Swenshuai.xi // bit [3] 223*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_CLR_SK 0x8UL 224*53ee8cc1Swenshuai.xi 225*53ee8cc1Swenshuai.xi // bit [2:0] 226*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_SK0 0x0UL //session key 0 227*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_SK1 0x1UL 228*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_SK2 0x2UL 229*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_RESERVED 0x3UL 230*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_MK0 0x4UL //SCK3 231*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_MK1 0x5UL //SCK4 232*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_CCCK 0x6UL //SCK6 233*53ee8cc1Swenshuai.xi #define CMD_DMA_KSEL_TRNG 0x7UL //PM Key 234*53ee8cc1Swenshuai.xi 235*53ee8cc1Swenshuai.xi MS_U32 CMD:3; 236*53ee8cc1Swenshuai.xi #define CMD_DMA_ENCRYPT 0x2UL 237*53ee8cc1Swenshuai.xi #define CMD_DMA_DECRYPT 0x3UL 238*53ee8cc1Swenshuai.xi #define CMD_DMA_MASK 0x2FUL 239*53ee8cc1Swenshuai.xi 240*53ee8cc1Swenshuai.xi MS_U32 HID:2; //[NOTE] Set by HW only 241*53ee8cc1Swenshuai.xi #define CMD_ACPU 0x0UL 242*53ee8cc1Swenshuai.xi #define CMD_R2 0x1UL 243*53ee8cc1Swenshuai.xi #define CMD_BGC51 0x2UL 244*53ee8cc1Swenshuai.xi 245*53ee8cc1Swenshuai.xi }CMD_DmaFormat0; 246*53ee8cc1Swenshuai.xi 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat1 249*53ee8cc1Swenshuai.xi { 250*53ee8cc1Swenshuai.xi MS_U32 TID:16; 251*53ee8cc1Swenshuai.xi MS_U32 CaVid:5; 252*53ee8cc1Swenshuai.xi MS_U32 IntM:1; 253*53ee8cc1Swenshuai.xi #define CMD_INT_MODE_NONE 0x0UL 254*53ee8cc1Swenshuai.xi #define CMD_INT_MODE_EN 0x1UL 255*53ee8cc1Swenshuai.xi //#define CMD_INT_MODE_WAIT_CLR 0x2 // Block next operation until interrupt is cleared 256*53ee8cc1Swenshuai.xi MS_U32 NL:1; 257*53ee8cc1Swenshuai.xi #define CMD_NEW_LINE 0x1UL 258*53ee8cc1Swenshuai.xi 259*53ee8cc1Swenshuai.xi MS_U32 RR:1; // Report Mode 260*53ee8cc1Swenshuai.xi #define CMD_DMA_RPT_MODE_REG 0x0UL 261*53ee8cc1Swenshuai.xi #define CMD_DMA_RPT_MODE_DRAM 0x1UL 262*53ee8cc1Swenshuai.xi 263*53ee8cc1Swenshuai.xi MS_U32 Dest:1; // File output Dest 264*53ee8cc1Swenshuai.xi #define CMD_DMA_OUTPUT_DRAM 0x0UL 265*53ee8cc1Swenshuai.xi #define CMD_DMA_OUTPUT_REG 0x1UL //[NOTE] if HID = R2 , the output will be written into DQRAM 266*53ee8cc1Swenshuai.xi 267*53ee8cc1Swenshuai.xi MS_U32 SD:2; // Source Data 268*53ee8cc1Swenshuai.xi #define CMD_DMA_DATA_REG 0x0UL 269*53ee8cc1Swenshuai.xi #define CMD_DMA_DATA_DRAM 0x1UL 270*53ee8cc1Swenshuai.xi #define CMD_DMA_DATA_R2 0x2UL //[NOTE] bit[15] = 0, IQMEM. bit[15] = 1, DQMEM 271*53ee8cc1Swenshuai.xi #define CMD_DMA_DATA_HW_INPUT 0x3UL //jamietest 272*53ee8cc1Swenshuai.xi MS_U32 DIBS:1; // Data Input Byte Swap 273*53ee8cc1Swenshuai.xi MS_U32 DOBS:1; // Output Data Byte swap 274*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 275*53ee8cc1Swenshuai.xi #define CMD_DMA_OUTPUT_DEST 0x0UL 276*53ee8cc1Swenshuai.xi #define CMD_DMA_OUTPUT_SRAM_KL 0x1UL 277*53ee8cc1Swenshuai.xi MS_U32 COS:1; // Output Data Swap 278*53ee8cc1Swenshuai.xi MS_U32 CIS:1; // Input Data Swap 279*53ee8cc1Swenshuai.xi 280*53ee8cc1Swenshuai.xi }CMD_DmaFormat1; 281*53ee8cc1Swenshuai.xi 282*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat2 283*53ee8cc1Swenshuai.xi { 284*53ee8cc1Swenshuai.xi MS_U32 OBF_IDX_WRITE:5; 285*53ee8cc1Swenshuai.xi MS_U32 CTROT:4; 286*53ee8cc1Swenshuai.xi MS_U32 DMP:1; 287*53ee8cc1Swenshuai.xi MS_U32 TK:1; 288*53ee8cc1Swenshuai.xi MS_U32 TsInSb:2; 289*53ee8cc1Swenshuai.xi MS_U32 BPS:1; 290*53ee8cc1Swenshuai.xi MS_U32 TsSbMk:1; 291*53ee8cc1Swenshuai.xi MS_U32 TsSbPn:2; 292*53ee8cc1Swenshuai.xi #define CMD_PARSER_SCB10 0x2UL 293*53ee8cc1Swenshuai.xi #define CMD_PARSER_SCB11 0x3UL 294*53ee8cc1Swenshuai.xi MS_U32 InSb:1; 295*53ee8cc1Swenshuai.xi MS_U32 RmSb:1; 296*53ee8cc1Swenshuai.xi MS_U32 CR:1; 297*53ee8cc1Swenshuai.xi MS_U32 IT:1; 298*53ee8cc1Swenshuai.xi MS_U32 AT:1; 299*53ee8cc1Swenshuai.xi MS_U32 P192:1; 300*53ee8cc1Swenshuai.xi MS_U32 TS:1; 301*53ee8cc1Swenshuai.xi MS_U32 HDCP:1; 302*53ee8cc1Swenshuai.xi MS_U32 HP:1; 303*53ee8cc1Swenshuai.xi MS_U32 OBF_IDX_READ:5; 304*53ee8cc1Swenshuai.xi 305*53ee8cc1Swenshuai.xi MS_U32 NS:1; 306*53ee8cc1Swenshuai.xi #define CMD_DMA_SECURE_IP 0x0UL 307*53ee8cc1Swenshuai.xi #define CMD_DMA_NON_SECURE_IP 0x1UL 308*53ee8cc1Swenshuai.xi 309*53ee8cc1Swenshuai.xi }CMD_DmaFormat2; 310*53ee8cc1Swenshuai.xi 311*53ee8cc1Swenshuai.xi typedef struct _CMD_DmaFormat3 312*53ee8cc1Swenshuai.xi { 313*53ee8cc1Swenshuai.xi MS_U32 Rsv1:4; 314*53ee8cc1Swenshuai.xi MS_U32 CRS:1; 315*53ee8cc1Swenshuai.xi MS_U32 MP:1; 316*53ee8cc1Swenshuai.xi MS_U32 DIV2:1; 317*53ee8cc1Swenshuai.xi MS_U32 DK2:1; 318*53ee8cc1Swenshuai.xi MS_U32 Rsv2:15; 319*53ee8cc1Swenshuai.xi MS_U32 KeySel2:4; 320*53ee8cc1Swenshuai.xi MS_U32 Decrypt2:1; 321*53ee8cc1Swenshuai.xi MS_U32 IK:1; 322*53ee8cc1Swenshuai.xi MS_U32 AP:1; 323*53ee8cc1Swenshuai.xi MS_U32 Rsv3:2; 324*53ee8cc1Swenshuai.xi 325*53ee8cc1Swenshuai.xi }CMD_DmaFormat3; 326*53ee8cc1Swenshuai.xi 327*53ee8cc1Swenshuai.xi 328*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat0 329*53ee8cc1Swenshuai.xi { 330*53ee8cc1Swenshuai.xi MS_U32 CL:6; 331*53ee8cc1Swenshuai.xi MS_U32 IntM:1; 332*53ee8cc1Swenshuai.xi 333*53ee8cc1Swenshuai.xi MS_U32 IWC_Sel:1; 334*53ee8cc1Swenshuai.xi #define CMD_HASH_IWC_RPT 0x0UL 335*53ee8cc1Swenshuai.xi #define CMD_HASH_IWC_CMDQ 0x1UL 336*53ee8cc1Swenshuai.xi 337*53ee8cc1Swenshuai.xi MS_U32 OVT:1; 338*53ee8cc1Swenshuai.xi MS_U32 HOS:1; //reverse hash output 339*53ee8cc1Swenshuai.xi 340*53ee8cc1Swenshuai.xi MS_U32 Inv16:1; //invere byte order per 16 byte 341*53ee8cc1Swenshuai.xi MS_U32 KPAD:1; 342*53ee8cc1Swenshuai.xi #define CMD_HASH_IKP 0x0UL 343*53ee8cc1Swenshuai.xi #define CMD_HASH_OKP 0x1UL 344*53ee8cc1Swenshuai.xi MS_U32 HMAC:1; 345*53ee8cc1Swenshuai.xi #define CMD_HASH_NONE 0x0UL 346*53ee8cc1Swenshuai.xi #define CMD_HASH_HMAC 0x1UL 347*53ee8cc1Swenshuai.xi 348*53ee8cc1Swenshuai.xi 349*53ee8cc1Swenshuai.xi MS_U32 HMAC_KeySel:4; 350*53ee8cc1Swenshuai.xi 351*53ee8cc1Swenshuai.xi // bit [3:0] 352*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_HK 0x0UL 353*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_STRN 0x1UL 354*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_MK0 0x2UL 355*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_MK1 0x3UL 356*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_CCCK 0x4UL 357*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_SK0 0x5UL 358*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_SK1 0x6UL 359*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_SK2 0x7UL 360*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_SK3 0x8UL 361*53ee8cc1Swenshuai.xi 362*53ee8cc1Swenshuai.xi MS_U32 DK:1; //HMAC command key, clear seesion key 363*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_CLR_SK 0x1UL //HMAC KSEL = 5-8 364*53ee8cc1Swenshuai.xi #define CMD_HMAC_KSEL_DIR_HK 0x1UL //HMAC KSEL = 0 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi MS_U32 Dest:2; 367*53ee8cc1Swenshuai.xi #define CMD_HASH_OUTPUT_RPT 0x0UL 368*53ee8cc1Swenshuai.xi #define CMD_HASH_OUTPUT_R2 0x2UL //IQMEM or DQMEM 369*53ee8cc1Swenshuai.xi #define CMD_HASH_OUTPUT_DRAM 0x3UL 370*53ee8cc1Swenshuai.xi 371*53ee8cc1Swenshuai.xi MS_U32 Src:2; 372*53ee8cc1Swenshuai.xi #define CMD_HASH_SRC_DRAM 0x0UL 373*53ee8cc1Swenshuai.xi #define CMD_HASH_SRC_PRV_RPT 0x1UL //use previous hash operation result in hasg_rpt_reg2~9 374*53ee8cc1Swenshuai.xi #define CMD_HASH_SRC_R2 0x2UL //[NOTE] bit[15] = 0, IQMEM. bit[15] = 1, DQMEM 375*53ee8cc1Swenshuai.xi #define CMD_HASH_SRC_REG 0x3UL 376*53ee8cc1Swenshuai.xi MS_U32 AutoPad:1; 377*53ee8cc1Swenshuai.xi MS_U32 InitHashSel:2; 378*53ee8cc1Swenshuai.xi #define CMD_HASH_IV_FIPS 0x0UL 379*53ee8cc1Swenshuai.xi #define CMD_HASH_IV_CMD 0x1UL 380*53ee8cc1Swenshuai.xi #define CMD_HASH_IV_PRV_RPT 0x2UL 381*53ee8cc1Swenshuai.xi 382*53ee8cc1Swenshuai.xi MS_U32 HashSel:2; //jamietest 383*53ee8cc1Swenshuai.xi #define CMD_HASH_SHA1 0x0UL 384*53ee8cc1Swenshuai.xi #define CMD_HASH_SHA256 0x1UL 385*53ee8cc1Swenshuai.xi #define CMD_HASH_MD5 0x2UL 386*53ee8cc1Swenshuai.xi 387*53ee8cc1Swenshuai.xi MS_U32 CMD:3; 388*53ee8cc1Swenshuai.xi #define CMD_HASH_START 0x4UL 389*53ee8cc1Swenshuai.xi #define CMD_HASH_START_RR 0x6UL 390*53ee8cc1Swenshuai.xi 391*53ee8cc1Swenshuai.xi MS_U32 HID:2; 392*53ee8cc1Swenshuai.xi #define CMD_ACPU 0x0UL 393*53ee8cc1Swenshuai.xi #define CMD_R2 0x1UL 394*53ee8cc1Swenshuai.xi #define CMD_BGC51 0x2UL 395*53ee8cc1Swenshuai.xi 396*53ee8cc1Swenshuai.xi }Hash_DmaFormat0; 397*53ee8cc1Swenshuai.xi 398*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat1 399*53ee8cc1Swenshuai.xi { 400*53ee8cc1Swenshuai.xi MS_U32 TID:16; 401*53ee8cc1Swenshuai.xi MS_U32 CaVid:5; 402*53ee8cc1Swenshuai.xi MS_U32 OBF_IDX_WRITE:5; 403*53ee8cc1Swenshuai.xi MS_U32 OBF_IDX_READ:5; 404*53ee8cc1Swenshuai.xi MS_U32 NS:1; 405*53ee8cc1Swenshuai.xi #define CMD_HASH_SECURE_IP 0x0UL 406*53ee8cc1Swenshuai.xi #define CMD_HASH_NON_SECURE_IP 0x1UL 407*53ee8cc1Swenshuai.xi 408*53ee8cc1Swenshuai.xi }Hash_DmaFormat1; 409*53ee8cc1Swenshuai.xi 410*53ee8cc1Swenshuai.xi typedef struct _CMD_HashFormat2 411*53ee8cc1Swenshuai.xi { 412*53ee8cc1Swenshuai.xi MS_U32 Rsv:31; 413*53ee8cc1Swenshuai.xi MS_U32 RR:1; 414*53ee8cc1Swenshuai.xi 415*53ee8cc1Swenshuai.xi }CMD_HashFormat2; 416*53ee8cc1Swenshuai.xi 417*53ee8cc1Swenshuai.xi 418*53ee8cc1Swenshuai.xi //===================================================================== 419*53ee8cc1Swenshuai.xi // RSA Register Definition 420*53ee8cc1Swenshuai.xi //===================================================================== 421*53ee8cc1Swenshuai.xi 422*53ee8cc1Swenshuai.xi #define REG_RSA_BASE (0x31800UL) 423*53ee8cc1Swenshuai.xi 424*53ee8cc1Swenshuai.xi #define REG_RSA_COMMON ( REG_RSA_BASE + 0x0UL ) 425*53ee8cc1Swenshuai.xi #define REG_RSA_ONEWAY_SYSREG ( REG_RSA_BASE + 0x1UL ) 426*53ee8cc1Swenshuai.xi #define REG_RSA_CTRL ( REG_RSA_BASE + 0x2UL ) 427*53ee8cc1Swenshuai.xi #define REG_RSA_IND32_ADDR ( REG_RSA_BASE + 0x3UL ) 428*53ee8cc1Swenshuai.xi #define REG_RSA_IND32_WDATA ( REG_RSA_BASE + 0x4UL ) 429*53ee8cc1Swenshuai.xi 430*53ee8cc1Swenshuai.xi #define REG_RSA_SEC_RANGE_START(_a_) ( REG_RSA_BASE + ((_a_)* 2) + 0x5 ) // a = 0 ~ 5 431*53ee8cc1Swenshuai.xi #define REG_RSA_SEC_RANGE_END(_a_) ( REG_RSA_BASE + ((_a_)* 2) + 0x6 ) 432*53ee8cc1Swenshuai.xi 433*53ee8cc1Swenshuai.xi #define REG_RSA_KEY_SEL ( REG_RSA_BASE + 0x32UL ) 434*53ee8cc1Swenshuai.xi #define REG_RSA_WDATA ( REG_RSA_BASE + 0x39UL ) 435*53ee8cc1Swenshuai.xi #define REG_RSA_LV_PROTECT_EN ( REG_RSA_BASE + 0x3aUL ) 436*53ee8cc1Swenshuai.xi #define REG_RSA_MAILBOX(_a_) ( REG_RSA_BASE + 0x40UL + (_a_) ) 437*53ee8cc1Swenshuai.xi 438*53ee8cc1Swenshuai.xi //===================================================================== 439*53ee8cc1Swenshuai.xi // MISC Register Definition 440*53ee8cc1Swenshuai.xi //===================================================================== 441*53ee8cc1Swenshuai.xi #define REG_RNG_BASE (0x143800UL)//(0xA1C00 * 2) 442*53ee8cc1Swenshuai.xi #define REG_OTP_PUB0_BASE (0xC5800UL)//(0x62C00 * 2) 443*53ee8cc1Swenshuai.xi #define REG_OTP_PUB1_BASE (0xC5A00UL)//(0x62D00 * 2) 444*53ee8cc1Swenshuai.xi #define REG_OTP_PUB2_BASE (0xC5C00UL)//(0x62E00 * 2) 445*53ee8cc1Swenshuai.xi 446*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACPU (REG_RNG_BASE + 0x13 * 4) 447*53ee8cc1Swenshuai.xi 448*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACK_ACPU 0x80000000UL 449*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_VALID_ACPU_MASK 0x00010000UL 450*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_OUT_ACPU_MASK 0x0000FFFFUL 451*53ee8cc1Swenshuai.xi 452*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_SCPU (REG_RNG_BASE + 0x12 * 4) 453*53ee8cc1Swenshuai.xi 454*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_ACK_SCPU 0x80000000UL 455*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_VALID_SCPU_MASK 0x00010000UL 456*53ee8cc1Swenshuai.xi #define REG_RNG_TRNG_OUT_SCPU_MASK 0x0000FFFFUL 457*53ee8cc1Swenshuai.xi 458*53ee8cc1Swenshuai.xi //===================================================================== 459*53ee8cc1Swenshuai.xi // IRQ Register Definition 460*53ee8cc1Swenshuai.xi //===================================================================== 461*53ee8cc1Swenshuai.xi #define REG_HST0_FIQ_STATUS_63_48 (REG_IRQCTRL_BASE + (0xfUL * 4)) 462*53ee8cc1Swenshuai.xi #define REG_HST0_FIQ_MASK_63_48 (REG_IRQCTRL_BASE + (0x7UL * 4)) 463*53ee8cc1Swenshuai.xi 464*53ee8cc1Swenshuai.xi #define REG_HTS0_FIQ_MASK_CRYPTODMA (0xFEFFUL) 465*53ee8cc1Swenshuai.xi #define REG_HTS0_FIQ_CRYPTODMA (0x0100UL) //FIQ 56 is CryptoDMA 466*53ee8cc1Swenshuai.xi 467*53ee8cc1Swenshuai.xi #endif // #ifndef __REG_CIPHER_H__ 468