blob: 118992f0fd851cb310df7a5344c5230fc1bdf931 [file] [log] [blame]
/*
* ambhw/crypto.h
*
* History:
* 2009/02/27 - [Jack Huang] created file
*
* Copyright (C) 2006-2007, Ambarella, Inc.
*/
#ifndef __AMBHW__CRYPT_H__
#define __AMBHW__CRYPT_H__
#include <ambhw/chip.h>
#include <ambhw/busaddr.h>
/****************************************************/
/* Capabilities based on chip revision */
/****************************************************/
#if (CHIP_REV == A7)
#define CRYPT_SUPPORT_NON_BINARY 1
#define CRYPT_SUPPORT_MD5_SHA1 1
#define CRYPT_NO_OP_MODE 1
#define CRYPT_BYTE_SWAP 0
#elif (CHIP_REV == I1)
#define CRYPT_SUPPORT_NON_BINARY 0
#define CRYPT_SUPPORT_MD5_SHA1 1
#define CRYPT_NO_OP_MODE 1
#define CRYPT_BYTE_SWAP 1
#else
#define CRYPT_SUPPORT_NON_BINARY 0
#define CRYPT_SUPPORT_MD5_SHA1 0
#define CRYPT_NO_OP_MODE 0
#define CRYPT_BYTE_SWAP 0
#endif
/****************************************************/
/* Controller registers definitions */
/****************************************************/
#if (CRYPT_SUPPORT_NON_BINARY == 1)
#if (CHIP_REV == A7)
#define DES_OFFSET(x) (x << 2)
#define AES_OFFSET(x) ((1 << 9) | (x << 2))
#define SHA1_MD5_OFFSET(x) ((2 << 9) | (x << 2))
#define BINARY_COMP_OFFSET(x) ((7 << 9) | (x << 2))
#define DES_REG(x) CRYPT_UNIT_REG(DES_OFFSET(x))
#define AES_REG(x) CRYPT_UNIT_REG(AES_OFFSET(x))
#define SHA1_MD5_REG(x) CRYPT_UNIT_REG(SHA1_MD5_OFFSET(x))
#define BINARY_COMP_REG(x) CRYPT_UNIT_REG(BINARY_COMP_OFFSET(x))
#endif
#else /* (CRYPT_SUPPORT_NON_BINARY == 0)*/
#if (CHIP_REV == I1)
#define DES_OFFSET(x) (x)
#define AES_OFFSET(x) ((1 << 9) | (x))
#define SHA1_MD5_OFFSET(x) ((2 << 9) | (x))
#define DES_REG(x) CRYPT_UNIT_REG(DES_OFFSET(x))
#define AES_REG(x) CRYPT_UNIT_REG(AES_OFFSET(x))
#define SHA1_MD5_REG(x) CRYPT_UNIT_REG(SHA1_MD5_OFFSET(x))
#define BINARY_COMP_REG(x) CRYPT_UNIT_REG(BINARY_COMP_OFFSET(x))
#endif
#endif /* (CRYPT_SUPPORT_NON_BINARY == 0)*/
#if (CRYPT_SUPPORT_NON_BINARY == 0)
#if (CHIP_REV == I1)
#define CRYPT_D_HI_OFFSET 0x00
#define CRYPT_D_LO_OFFSET 0x04
#define CRYPT_D_INPUT_ENC_HI_OFFSET 0x08
#define CRYPT_D_INPUT_ENC_LO_OFFSET 0x0c
#define CRYPT_D_INPUT_DEC_HI_OFFSET 0x10
#define CRYPT_D_INPUT_DEC_LO_OFFSET 0x14
#define CRYPT_D_OUTPUT_HI_OFFSET 0x18
#define CRYPT_D_OUTPUT_LO_OFFSET 0x1c
#define CRYPT_D_OUTPUT_READY_OFFSET 0x20
#define CRYPT_D_INT_EN_OFFSET 0x28
#define CRYPT_A_256_224_OFFSET 0x00
#define CRYPT_A_256_192_OFFSET 0x04
#define CRYPT_A_256_160_OFFSET 0x08
#define CRYPT_A_256_128_OFFSET 0x0c
#define CRYPT_A_256_96_OFFSET 0x10
#define CRYPT_A_256_64_OFFSET 0x14
#define CRYPT_A_256_32_OFFSET 0x18
#define CRYPT_A_256_0_OFFSET 0x1c
#define CRYPT_A_192_160_OFFSET 0x20
#define CRYPT_A_192_128_OFFSET 0x24
#define CRYPT_A_192_96_OFFSET 0x28
#define CRYPT_A_192_64_OFFSET 0x2c
#define CRYPT_A_192_32_OFFSET 0x30
#define CRYPT_A_192_0_OFFSET 0x34
#define CRYPT_A_128_96_OFFSET 0x38
#define CRYPT_A_128_64_OFFSET 0x3c
#define CRYPT_A_128_32_OFFSET 0x40
#define CRYPT_A_128_0_OFFSET 0x44
#define CRYPT_A_INPUT_ENC_96_OFFSET 0x48
#define CRYPT_A_INPUT_ENC_64_OFFSET 0x4c
#define CRYPT_A_INPUT_ENC_32_OFFSET 0x50
#define CRYPT_A_INPUT_ENC_0_OFFSET 0x54
#define CRYPT_A_INPUT_DEC_96_OFFSET 0x58
#define CRYPT_A_INPUT_DEC_64_OFFSET 0x5c
#define CRYPT_A_INPUT_DEC_32_OFFSET 0x60
#define CRYPT_A_INPUT_DEC_0_OFFSET 0x64
#define CRYPT_A_OUTPUT_96_OFFSET 0x68
#define CRYPT_A_OUTPUT_64_OFFSET 0x6c
#define CRYPT_A_OUTPUT_32_OFFSET 0x70
#define CRYPT_A_OUTPUT_0_OFFSET 0x74
#define CRYPT_A_OUTPUT_READY_OFFSET 0x78
#define CRYPT_A_INT_EN_OFFSET 0x80
#define CRYPT_D_HI_REG DES_REG(0x00)
#define CRYPT_D_LO_REG DES_REG(0x04)
#define CRYPT_D_INPUT_ENC_HI_REG DES_REG(0x08)
#define CRYPT_D_INPUT_ENC_LO_REG DES_REG(0x0c)
#define CRYPT_D_INPUT_DEC_HI_REG DES_REG(0x10)
#define CRYPT_D_INPUT_DEC_LO_REG DES_REG(0x14)
#define CRYPT_D_OUTPUT_HI_REG DES_REG(0x18)
#define CRYPT_D_OUTPUT_LO_REG DES_REG(0x1c)
#define CRYPT_D_OUTPUT_READY_REG DES_REG(0x20)
#define CRYPT_D_INT_EN_REG DES_REG(0x28)
#define CRYPT_A_256_224_REG AES_REG(0x00)
#define CRYPT_A_256_192_REG AES_REG(0x04)
#define CRYPT_A_256_160_REG AES_REG(0x08)
#define CRYPT_A_256_128_REG AES_REG(0x0c)
#define CRYPT_A_256_96_REG AES_REG(0x10)
#define CRYPT_A_256_64_REG AES_REG(0x14)
#define CRYPT_A_256_32_REG AES_REG(0x18)
#define CRYPT_A_256_0_REG AES_REG(0x1c)
#define CRYPT_A_192_160_REG AES_REG(0x20)
#define CRYPT_A_192_128_REG AES_REG(0x24)
#define CRYPT_A_192_96_REG AES_REG(0x28)
#define CRYPT_A_192_64_REG AES_REG(0x2c)
#define CRYPT_A_192_32_REG AES_REG(0x30)
#define CRYPT_A_192_0_REG AES_REG(0x34)
#define CRYPT_A_128_96_REG AES_REG(0x38)
#define CRYPT_A_128_64_REG AES_REG(0x3c)
#define CRYPT_A_128_32_REG AES_REG(0x40)
#define CRYPT_A_128_0_REG AES_REG(0x44)
#define CRYPT_A_INPUT_ENC_96_REG AES_REG(0x48)
#define CRYPT_A_INPUT_ENC_64_REG AES_REG(0x4c)
#define CRYPT_A_INPUT_ENC_32_REG AES_REG(0x50)
#define CRYPT_A_INPUT_ENC_0_REG AES_REG(0x54)
#define CRYPT_A_INPUT_DEC_96_REG AES_REG(0x58)
#define CRYPT_A_INPUT_DEC_64_REG AES_REG(0x5c)
#define CRYPT_A_INPUT_DEC_32_REG AES_REG(0x60)
#define CRYPT_A_INPUT_DEC_0_REG AES_REG(0x64)
#define CRYPT_A_OUTPUT_96_REG AES_REG(0x68)
#define CRYPT_A_OUTPUT_64_REG AES_REG(0x6c)
#define CRYPT_A_OUTPUT_32_REG AES_REG(0x70)
#define CRYPT_A_OUTPUT_0_REG AES_REG(0x74)
#define CRYPT_A_OUTPUT_READY_REG AES_REG(0x78)
#define CRYPT_A_INT_EN_REG AES_REG(0x80)
#else //#if (CHIP_REV != I1)
#define CRYPT_D_HI_OFFSET 0x00
#define CRYPT_D_LO_OFFSET 0x04
#define CRYPT_D_INPUT_HI_OFFSET 0x08
#define CRYPT_D_INPUT_LO_OFFSET 0x0c
#define CRYPT_D_OPCODE_OFFSET 0x10
#define CRYPT_D_OUTPUT_READY_OFFSET 0x14
#define CRYPT_D_OUTPUT_HI_OFFSET 0x18
#define CRYPT_D_OUTPUT_LO_OFFSET 0x1c
#define CRYPT_D_INT_EN_OFFSET 0x20
#define CRYPT_A_128_96_OFFSET 0x24
#define CRYPT_A_128_64_OFFSET 0x28
#define CRYPT_A_128_32_OFFSET 0x2c
#define CRYPT_A_128_0_OFFSET 0x30
#define CRYPT_A_192_160_OFFSET 0x34
#define CRYPT_A_192_128_OFFSET 0x38
#define CRYPT_A_192_96_OFFSET 0x3c
#define CRYPT_A_192_64_OFFSET 0x40
#define CRYPT_A_192_32_OFFSET 0x44
#define CRYPT_A_192_0_OFFSET 0x48
#define CRYPT_A_256_224_OFFSET 0x4c
#define CRYPT_A_256_192_OFFSET 0x50
#define CRYPT_A_256_160_OFFSET 0x54
#define CRYPT_A_256_128_OFFSET 0x58
#define CRYPT_A_256_96_OFFSET 0x5c
#define CRYPT_A_256_64_OFFSET 0x60
#define CRYPT_A_256_32_OFFSET 0x64
#define CRYPT_A_256_0_OFFSET 0x68
#define CRYPT_A_INPUT_96_OFFSET 0x6c
#define CRYPT_A_INPUT_64_OFFSET 0x70
#define CRYPT_A_INPUT_32_OFFSET 0x74
#define CRYPT_A_INPUT_0_OFFSET 0x78
#define CRYPT_A_OPCODE_OFFSET 0x7c
#define CRYPT_A_OUTPUT_READY_OFFSET 0x80
#define CRYPT_A_OUTPUT_96_OFFSET 0x84
#define CRYPT_A_OUTPUT_64_OFFSET 0x88
#define CRYPT_A_OUTPUT_32_OFFSET 0x8c
#define CRYPT_A_OUTPUT_0_OFFSET 0x90
#define CRYPT_A_INT_EN_OFFSET 0x94
#define CRYPT_D_HI_REG CRYPT_UNIT_REG(0x00)
#define CRYPT_D_LO_REG CRYPT_UNIT_REG(0x04)
#define CRYPT_D_INPUT_HI_REG CRYPT_UNIT_REG(0x08)
#define CRYPT_D_INPUT_LO_REG CRYPT_UNIT_REG(0x0c)
#define CRYPT_D_OPCODE_REG CRYPT_UNIT_REG(0x10)
#define CRYPT_D_OUTPUT_READY_REG CRYPT_UNIT_REG(0x14)
#define CRYPT_D_OUTPUT_HI_REG CRYPT_UNIT_REG(0x18)
#define CRYPT_D_OUTPUT_LO_REG CRYPT_UNIT_REG(0x1c)
#define CRYPT_D_INT_EN_REG CRYPT_UNIT_REG(0x20)
#define CRYPT_A_128_96_REG CRYPT_UNIT_REG(0x24)
#define CRYPT_A_128_64_REG CRYPT_UNIT_REG(0x28)
#define CRYPT_A_128_32_REG CRYPT_UNIT_REG(0x2c)
#define CRYPT_A_128_0_REG CRYPT_UNIT_REG(0x30)
#define CRYPT_A_192_160_REG CRYPT_UNIT_REG(0x34)
#define CRYPT_A_192_128_REG CRYPT_UNIT_REG(0x38)
#define CRYPT_A_192_96_REG CRYPT_UNIT_REG(0x3c)
#define CRYPT_A_192_64_REG CRYPT_UNIT_REG(0x40)
#define CRYPT_A_192_32_REG CRYPT_UNIT_REG(0x44)
#define CRYPT_A_192_0_REG CRYPT_UNIT_REG(0x48)
#define CRYPT_A_256_224_REG CRYPT_UNIT_REG(0x4c)
#define CRYPT_A_256_192_REG CRYPT_UNIT_REG(0x50)
#define CRYPT_A_256_160_REG CRYPT_UNIT_REG(0x54)
#define CRYPT_A_256_128_REG CRYPT_UNIT_REG(0x58)
#define CRYPT_A_256_96_REG CRYPT_UNIT_REG(0x5c)
#define CRYPT_A_256_64_REG CRYPT_UNIT_REG(0x60)
#define CRYPT_A_256_32_REG CRYPT_UNIT_REG(0x64)
#define CRYPT_A_256_0_REG CRYPT_UNIT_REG(0x68)
#define CRYPT_A_INPUT_96_REG CRYPT_UNIT_REG(0x6c)
#define CRYPT_A_INPUT_64_REG CRYPT_UNIT_REG(0x70)
#define CRYPT_A_INPUT_32_REG CRYPT_UNIT_REG(0x74)
#define CRYPT_A_INPUT_0_REG CRYPT_UNIT_REG(0x78)
#define CRYPT_A_OPCODE_REG CRYPT_UNIT_REG(0x7c)
#define CRYPT_A_OUTPUT_READY_REG CRYPT_UNIT_REG(0x80)
#define CRYPT_A_OUTPUT_96_REG CRYPT_UNIT_REG(0x84)
#define CRYPT_A_OUTPUT_64_REG CRYPT_UNIT_REG(0x88)
#define CRYPT_A_OUTPUT_32_REG CRYPT_UNIT_REG(0x8c)
#define CRYPT_A_OUTPUT_0_REG CRYPT_UNIT_REG(0x90)
#define CRYPT_A_INT_EN_REG CRYPT_UNIT_REG(0x94)
#endif //#if (CHIP_REV != I1)
#elif (CRYPT_SUPPORT_NON_BINARY == 1)
#define CRYPT_D_HI_OFFSET 0x00
#define CRYPT_D_LO_OFFSET 0x01
#define CRYPT_D_INPUT_ENC_HI_OFFSET 0x02
#define CRYPT_D_INPUT_ENC_LO_OFFSET 0x03
#define CRYPT_D_INPUT_DEC_HI_OFFSET 0x04
#define CRYPT_D_INPUT_DEC_LO_OFFSET 0x05
#define CRYPT_D_OUTPUT_HI_OFFSET 0x06
#define CRYPT_D_OUTPUT_LO_OFFSET 0x07
#define CRYPT_D_OUTPUT_READY_OFFSET 0x08
#define CRYPT_D_INT_EN_OFFSET 0x09
#define CRYPT_A_256_224_OFFSET 0x00
#define CRYPT_A_256_192_OFFSET 0x01
#define CRYPT_A_256_160_OFFSET 0x02
#define CRYPT_A_256_128_OFFSET 0x03
#define CRYPT_A_256_96_OFFSET 0x04
#define CRYPT_A_256_64_OFFSET 0x05
#define CRYPT_A_256_32_OFFSET 0x06
#define CRYPT_A_256_0_OFFSET 0x07
#define CRYPT_A_192_160_OFFSET 0x08
#define CRYPT_A_192_128_OFFSET 0x09
#define CRYPT_A_192_96_OFFSET 0x0a
#define CRYPT_A_192_64_OFFSET 0x0b
#define CRYPT_A_192_32_OFFSET 0x0c
#define CRYPT_A_192_0_OFFSET 0x0d
#define CRYPT_A_128_96_OFFSET 0x0e
#define CRYPT_A_128_64_OFFSET 0x0f
#define CRYPT_A_128_32_OFFSET 0x10
#define CRYPT_A_128_0_OFFSET 0x11
#define CRYPT_A_INPUT_ENC_96_OFFSET 0x12
#define CRYPT_A_INPUT_ENC_64_OFFSET 0x13
#define CRYPT_A_INPUT_ENC_32_OFFSET 0x14
#define CRYPT_A_INPUT_ENC_0_OFFSET 0x15
#define CRYPT_A_INPUT_DEC_96_OFFSET 0x16
#define CRYPT_A_INPUT_DEC_64_OFFSET 0x17
#define CRYPT_A_INPUT_DEC_32_OFFSET 0x18
#define CRYPT_A_INPUT_DEC_0_OFFSET 0x19
#define CRYPT_A_OUTPUT_96_OFFSET 0x1a
#define CRYPT_A_OUTPUT_64_OFFSET 0x1b
#define CRYPT_A_OUTPUT_32_OFFSET 0x1c
#define CRYPT_A_OUTPUT_0_OFFSET 0x1d
#define CRYPT_A_OUTPUT_READY_OFFSET 0x1e
#define CRYPT_A_INT_EN_OFFSET 0x1f
#define CRYPT_D_HI_REG DES_REG(0x00)
#define CRYPT_D_LO_REG DES_REG(0x01)
#define CRYPT_D_INPUT_ENC_HI_REG DES_REG(0x02)
#define CRYPT_D_INPUT_ENC_LO_REG DES_REG(0x03)
#define CRYPT_D_INPUT_DEC_HI_REG DES_REG(0x04)
#define CRYPT_D_INPUT_DEC_LO_REG DES_REG(0x05)
#define CRYPT_D_OUTPUT_HI_REG DES_REG(0x06)
#define CRYPT_D_OUTPUT_LO_REG DES_REG(0x07)
#define CRYPT_D_OUTPUT_READY_REG DES_REG(0x08)
#define CRYPT_D_INT_EN_REG DES_REG(0x09)
#define CRYPT_A_256_224_REG AES_REG(0x00)
#define CRYPT_A_256_192_REG AES_REG(0x01)
#define CRYPT_A_256_160_REG AES_REG(0x02)
#define CRYPT_A_256_128_REG AES_REG(0x03)
#define CRYPT_A_256_96_REG AES_REG(0x04)
#define CRYPT_A_256_64_REG AES_REG(0x05)
#define CRYPT_A_256_32_REG AES_REG(0x06)
#define CRYPT_A_256_0_REG AES_REG(0x07)
#define CRYPT_A_192_160_REG AES_REG(0x08)
#define CRYPT_A_192_128_REG AES_REG(0x09)
#define CRYPT_A_192_96_REG AES_REG(0x0a)
#define CRYPT_A_192_64_REG AES_REG(0x0b)
#define CRYPT_A_192_32_REG AES_REG(0x0c)
#define CRYPT_A_192_0_REG AES_REG(0x0d)
#define CRYPT_A_128_96_REG AES_REG(0x0e)
#define CRYPT_A_128_64_REG AES_REG(0x0f)
#define CRYPT_A_128_32_REG AES_REG(0x10)
#define CRYPT_A_128_0_REG AES_REG(0x11)
#define CRYPT_A_INPUT_ENC_96_REG AES_REG(0x12)
#define CRYPT_A_INPUT_ENC_64_REG AES_REG(0x13)
#define CRYPT_A_INPUT_ENC_32_REG AES_REG(0x14)
#define CRYPT_A_INPUT_ENC_0_REG AES_REG(0x15)
#define CRYPT_A_INPUT_DEC_96_REG AES_REG(0x16)
#define CRYPT_A_INPUT_DEC_64_REG AES_REG(0x17)
#define CRYPT_A_INPUT_DEC_32_REG AES_REG(0x18)
#define CRYPT_A_INPUT_DEC_0_REG AES_REG(0x19)
#define CRYPT_A_OUTPUT_96_REG AES_REG(0x1a)
#define CRYPT_A_OUTPUT_64_REG AES_REG(0x1b)
#define CRYPT_A_OUTPUT_32_REG AES_REG(0x1c)
#define CRYPT_A_OUTPUT_0_REG AES_REG(0x1d)
#define CRYPT_A_OUTPUT_READY_REG AES_REG(0x1e)
#define CRYPT_A_INT_EN_REG AES_REG(0x1f)
#endif
#if (CRYPT_SUPPORT_MD5_SHA1 == 1)
#if (CHIP_REV == A7)
#define CRYPT_SHA1_INIT_31_0_OFFSET SHA1_MD5_OFFSET(0x0)
#define CRYPT_SHA1_INIT_63_32_OFFSET SHA1_MD5_OFFSET(0x1)
#define CRYPT_SHA1_INIT_95_64_OFFSET SHA1_MD5_OFFSET(0x2)
#define CRYPT_SHA1_INIT_127_96_OFFSET SHA1_MD5_OFFSET(0x3)
#define CRYPT_SHA1_INIT_159_128_OFFSET SHA1_MD5_OFFSET(0x4)
#define CRYPT_SHA1_INPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x5)
#define CRYPT_SHA1_INPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x6)
#define CRYPT_SHA1_INPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x7)
#define CRYPT_SHA1_INPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x8)
#define CRYPT_SHA1_INPUT_159_128_OFFSET SHA1_MD5_OFFSET(0x9)
#define CRYPT_SHA1_INPUT_191_160_OFFSET SHA1_MD5_OFFSET(0xa)
#define CRYPT_SHA1_INPUT_223_192_OFFSET SHA1_MD5_OFFSET(0xb)
#define CRYPT_SHA1_INPUT_255_224_OFFSET SHA1_MD5_OFFSET(0xc)
#define CRYPT_SHA1_INPUT_287_256_OFFSET SHA1_MD5_OFFSET(0xd)
#define CRYPT_SHA1_INPUT_319_288_OFFSET SHA1_MD5_OFFSET(0xe)
#define CRYPT_SHA1_INPUT_351_320_OFFSET SHA1_MD5_OFFSET(0xf)
#define CRYPT_SHA1_INPUT_383_352_OFFSET SHA1_MD5_OFFSET(0x10)
#define CRYPT_SHA1_INPUT_415_384_OFFSET SHA1_MD5_OFFSET(0x11)
#define CRYPT_SHA1_INPUT_447_416_OFFSET SHA1_MD5_OFFSET(0x12)
#define CRYPT_SHA1_INPUT_479_448_OFFSET SHA1_MD5_OFFSET(0x13)
#define CRYPT_SHA1_INPUT_511_480_OFFSET SHA1_MD5_OFFSET(0x14)
#define CRYPT_SHA1_OUTPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x15)
#define CRYPT_SHA1_OUTPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x16)
#define CRYPT_SHA1_OUTPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x17)
#define CRYPT_SHA1_OUTPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x18)
#define CRYPT_SHA1_OUTPUT_159_128_OFFSET SHA1_MD5_OFFSET(0x19)
#define CRYPT_SHA1_OUTPUT_READY_OFFSET SHA1_MD5_OFFSET(0x1a)
#define CRYPT_SHA1_INT_EN_OFFSET SHA1_MD5_OFFSET(0x1b)
#define CRYPT_MD5_INIT_31_0_OFFSET SHA1_MD5_OFFSET(0x20)
#define CRYPT_MD5_INIT_63_32_OFFSET SHA1_MD5_OFFSET(0x21)
#define CRYPT_MD5_INIT_95_64_OFFSET SHA1_MD5_OFFSET(0x22)
#define CRYPT_MD5_INIT_127_96_OFFSET SHA1_MD5_OFFSET(0x23)
#define CRYPT_MD5_INPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x24)
#define CRYPT_MD5_INPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x25)
#define CRYPT_MD5_INPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x26)
#define CRYPT_MD5_INPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x27)
#define CRYPT_MD5_INPUT_159_128_OFFSET SHA1_MD5_OFFSET(0x28)
#define CRYPT_MD5_INPUT_191_160_OFFSET SHA1_MD5_OFFSET(0x29)
#define CRYPT_MD5_INPUT_223_192_OFFSET SHA1_MD5_OFFSET(0x2a)
#define CRYPT_MD5_INPUT_255_224_OFFSET SHA1_MD5_OFFSET(0x2b)
#define CRYPT_MD5_INPUT_287_256_OFFSET SHA1_MD5_OFFSET(0x2c)
#define CRYPT_MD5_INPUT_319_288_OFFSET SHA1_MD5_OFFSET(0x2d)
#define CRYPT_MD5_INPUT_351_320_OFFSET SHA1_MD5_OFFSET(0x2e)
#define CRYPT_MD5_INPUT_383_352_OFFSET SHA1_MD5_OFFSET(0x2f)
#define CRYPT_MD5_INPUT_415_384_OFFSET SHA1_MD5_OFFSET(0x30)
#define CRYPT_MD5_INPUT_447_416_OFFSET SHA1_MD5_OFFSET(0x31)
#define CRYPT_MD5_INPUT_479_448_OFFSET SHA1_MD5_OFFSET(0x32)
#define CRYPT_MD5_INPUT_511_480_OFFSET SHA1_MD5_OFFSET(0x33)
#define CRYPT_MD5_OUTPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x34)
#define CRYPT_MD5_OUTPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x35)
#define CRYPT_MD5_OUTPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x36)
#define CRYPT_MD5_OUTPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x37)
#define CRYPT_MD5_OUTPUT_READY_OFFSET SHA1_MD5_OFFSET(0x38)
#define CRYPT_MD5_INT_EN_OFFSET SHA1_MD5_OFFSET(0x39)
#define CRYPT_MD5_SHA1_READY_INPUT_OFFSET SHA1_MD5_OFFSET(0x3a)
#define CRYPT_BINARY_COMP_OFFSET BINARY_COMP_OFFSET(0x7f)
#define CRYPT_SHA1_INIT_31_0_REG SHA1_MD5_REG(0x0)
#define CRYPT_SHA1_INIT_63_32_REG SHA1_MD5_REG(0x1)
#define CRYPT_SHA1_INIT_95_64_REG SHA1_MD5_REG(0x2)
#define CRYPT_SHA1_INIT_127_96_REG SHA1_MD5_REG(0x3)
#define CRYPT_SHA1_INIT_159_128_REG SHA1_MD5_REG(0x4)
#define CRYPT_SHA1_INPUT_31_0_REG SHA1_MD5_REG(0x5)
#define CRYPT_SHA1_INPUT_63_32_REG SHA1_MD5_REG(0x6)
#define CRYPT_SHA1_INPUT_95_64_REG SHA1_MD5_REG(0x7)
#define CRYPT_SHA1_INPUT_127_96_REG SHA1_MD5_REG(0x8)
#define CRYPT_SHA1_INPUT_159_128_REG SHA1_MD5_REG(0x9)
#define CRYPT_SHA1_INPUT_191_160_REG SHA1_MD5_REG(0xa)
#define CRYPT_SHA1_INPUT_223_192_REG SHA1_MD5_REG(0xb)
#define CRYPT_SHA1_INPUT_255_224_REG SHA1_MD5_REG(0xc)
#define CRYPT_SHA1_INPUT_287_256_REG SHA1_MD5_REG(0xd)
#define CRYPT_SHA1_INPUT_319_288_REG SHA1_MD5_REG(0xe)
#define CRYPT_SHA1_INPUT_351_320_REG SHA1_MD5_REG(0xf)
#define CRYPT_SHA1_INPUT_383_352_REG SHA1_MD5_REG(0x10)
#define CRYPT_SHA1_INPUT_415_384_REG SHA1_MD5_REG(0x11)
#define CRYPT_SHA1_INPUT_447_416_REG SHA1_MD5_REG(0x12)
#define CRYPT_SHA1_INPUT_479_448_REG SHA1_MD5_REG(0x13)
#define CRYPT_SHA1_INPUT_511_480_REG SHA1_MD5_REG(0x14)
#define CRYPT_SHA1_OUTPUT_31_0_REG SHA1_MD5_REG(0x15)
#define CRYPT_SHA1_OUTPUT_63_32_REG SHA1_MD5_REG(0x16)
#define CRYPT_SHA1_OUTPUT_95_64_REG SHA1_MD5_REG(0x17)
#define CRYPT_SHA1_OUTPUT_127_96_REG SHA1_MD5_REG(0x18)
#define CRYPT_SHA1_OUTPUT_159_128_REG SHA1_MD5_REG(0x19)
#define CRYPT_SHA1_OUTPUT_READY_REG SHA1_MD5_REG(0x1a)
#define CRYPT_SHA1_INT_EN_REG SHA1_MD5_REG(0x1b)
#define CRYPT_MD5_INIT_31_0_REG SHA1_MD5_REG(0x20)
#define CRYPT_MD5_INIT_63_32_REG SHA1_MD5_REG(0x21)
#define CRYPT_MD5_INIT_95_64_REG SHA1_MD5_REG(0x22)
#define CRYPT_MD5_INIT_127_96_REG SHA1_MD5_REG(0x23)
#define CRYPT_MD5_INPUT_31_0_REG SHA1_MD5_REG(0x24)
#define CRYPT_MD5_INPUT_63_32_REG SHA1_MD5_REG(0x25)
#define CRYPT_MD5_INPUT_95_64_REG SHA1_MD5_REG(0x26)
#define CRYPT_MD5_INPUT_127_96_REG SHA1_MD5_REG(0x27)
#define CRYPT_MD5_INPUT_159_128_REG SHA1_MD5_REG(0x28)
#define CRYPT_MD5_INPUT_191_160_REG SHA1_MD5_REG(0x29)
#define CRYPT_MD5_INPUT_223_192_REG SHA1_MD5_REG(0x2a)
#define CRYPT_MD5_INPUT_255_224_REG SHA1_MD5_REG(0x2b)
#define CRYPT_MD5_INPUT_287_256_REG SHA1_MD5_REG(0x2c)
#define CRYPT_MD5_INPUT_319_288_REG SHA1_MD5_REG(0x2d)
#define CRYPT_MD5_INPUT_351_320_REG SHA1_MD5_REG(0x2e)
#define CRYPT_MD5_INPUT_383_352_REG SHA1_MD5_REG(0x2f)
#define CRYPT_MD5_INPUT_415_384_REG SHA1_MD5_REG(0x30)
#define CRYPT_MD5_INPUT_447_416_REG SHA1_MD5_REG(0x31)
#define CRYPT_MD5_INPUT_479_448_REG SHA1_MD5_REG(0x32)
#define CRYPT_MD5_INPUT_511_480_REG SHA1_MD5_REG(0x33)
#define CRYPT_MD5_OUTPUT_31_0_REG SHA1_MD5_REG(0x34)
#define CRYPT_MD5_OUTPUT_63_32_REG SHA1_MD5_REG(0x35)
#define CRYPT_MD5_OUTPUT_95_64_REG SHA1_MD5_REG(0x36)
#define CRYPT_MD5_OUTPUT_127_96_REG SHA1_MD5_REG(0x37)
#define CRYPT_MD5_OUTPUT_READY_REG SHA1_MD5_REG(0x38)
#define CRYPT_MD5_INT_EN_REG SHA1_MD5_REG(0x39)
#define CRYPT_MD5_SHA1_READY_INPUT_REG SHA1_MD5_REG(0x3a)
#define CRYPT_BINARY_COMP_REG BINARY_COMP_REG(0x7f)
#endif
#if (CHIP_REV == I1)
#define CRYPT_SHA1_INIT_31_0_OFFSET SHA1_MD5_OFFSET(0x0)
#define CRYPT_SHA1_INIT_63_32_OFFSET SHA1_MD5_OFFSET(0x4)
#define CRYPT_SHA1_INIT_95_64_OFFSET SHA1_MD5_OFFSET(0x8)
#define CRYPT_SHA1_INIT_127_96_OFFSET SHA1_MD5_OFFSET(0xc)
#define CRYPT_SHA1_INIT_159_128_OFFSET SHA1_MD5_OFFSET(0x10)
#define CRYPT_SHA1_INPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x18)
#define CRYPT_SHA1_INPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x1c)
#define CRYPT_SHA1_INPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x20)
#define CRYPT_SHA1_INPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x24)
#define CRYPT_SHA1_INPUT_159_128_OFFSET SHA1_MD5_OFFSET(0x28)
#define CRYPT_SHA1_INPUT_191_160_OFFSET SHA1_MD5_OFFSET(0x2c)
#define CRYPT_SHA1_INPUT_223_192_OFFSET SHA1_MD5_OFFSET(0x30)
#define CRYPT_SHA1_INPUT_255_224_OFFSET SHA1_MD5_OFFSET(0x34)
#define CRYPT_SHA1_INPUT_287_256_OFFSET SHA1_MD5_OFFSET(0x38)
#define CRYPT_SHA1_INPUT_319_288_OFFSET SHA1_MD5_OFFSET(0x3c)
#define CRYPT_SHA1_INPUT_351_320_OFFSET SHA1_MD5_OFFSET(0x40)
#define CRYPT_SHA1_INPUT_383_352_OFFSET SHA1_MD5_OFFSET(0x44)
#define CRYPT_SHA1_INPUT_415_384_OFFSET SHA1_MD5_OFFSET(0x48)
#define CRYPT_SHA1_INPUT_447_416_OFFSET SHA1_MD5_OFFSET(0x4c)
#define CRYPT_SHA1_INPUT_479_448_OFFSET SHA1_MD5_OFFSET(0x50)
#define CRYPT_SHA1_INPUT_511_480_OFFSET SHA1_MD5_OFFSET(0x54)
#define CRYPT_SHA1_OUTPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x58)
#define CRYPT_SHA1_OUTPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x5c)
#define CRYPT_SHA1_OUTPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x60)
#define CRYPT_SHA1_OUTPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x64)
#define CRYPT_SHA1_OUTPUT_159_128_OFFSET SHA1_MD5_OFFSET(0x68)
#define CRYPT_SHA1_OUTPUT_READY_OFFSET SHA1_MD5_OFFSET(0x70)
#define CRYPT_SHA1_INT_EN_OFFSET SHA1_MD5_OFFSET(0x78)
#define CRYPT_MD5_INIT_31_0_OFFSET SHA1_MD5_OFFSET(0x80)
#define CRYPT_MD5_INIT_63_32_OFFSET SHA1_MD5_OFFSET(0x84)
#define CRYPT_MD5_INIT_95_64_OFFSET SHA1_MD5_OFFSET(0x88)
#define CRYPT_MD5_INIT_127_96_OFFSET SHA1_MD5_OFFSET(0x8c)
#define CRYPT_MD5_INPUT_31_0_OFFSET SHA1_MD5_OFFSET(0x90)
#define CRYPT_MD5_INPUT_63_32_OFFSET SHA1_MD5_OFFSET(0x94)
#define CRYPT_MD5_INPUT_95_64_OFFSET SHA1_MD5_OFFSET(0x98)
#define CRYPT_MD5_INPUT_127_96_OFFSET SHA1_MD5_OFFSET(0x9c)
#define CRYPT_MD5_INPUT_159_128_OFFSET SHA1_MD5_OFFSET(0xa0)
#define CRYPT_MD5_INPUT_191_160_OFFSET SHA1_MD5_OFFSET(0xa4)
#define CRYPT_MD5_INPUT_223_192_OFFSET SHA1_MD5_OFFSET(0xa8)
#define CRYPT_MD5_INPUT_255_224_OFFSET SHA1_MD5_OFFSET(0xac)
#define CRYPT_MD5_INPUT_287_256_OFFSET SHA1_MD5_OFFSET(0xb0)
#define CRYPT_MD5_INPUT_319_288_OFFSET SHA1_MD5_OFFSET(0xb4)
#define CRYPT_MD5_INPUT_351_320_OFFSET SHA1_MD5_OFFSET(0xb8)
#define CRYPT_MD5_INPUT_383_352_OFFSET SHA1_MD5_OFFSET(0xbc)
#define CRYPT_MD5_INPUT_415_384_OFFSET SHA1_MD5_OFFSET(0xc0)
#define CRYPT_MD5_INPUT_447_416_OFFSET SHA1_MD5_OFFSET(0xc4)
#define CRYPT_MD5_INPUT_479_448_OFFSET SHA1_MD5_OFFSET(0xc8)
#define CRYPT_MD5_INPUT_511_480_OFFSET SHA1_MD5_OFFSET(0xcc)
#define CRYPT_MD5_OUTPUT_31_0_OFFSET SHA1_MD5_OFFSET(0xd0)
#define CRYPT_MD5_OUTPUT_63_32_OFFSET SHA1_MD5_OFFSET(0xd4)
#define CRYPT_MD5_OUTPUT_95_64_OFFSET SHA1_MD5_OFFSET(0xd8)
#define CRYPT_MD5_OUTPUT_127_96_OFFSET SHA1_MD5_OFFSET(0xdc)
#define CRYPT_MD5_OUTPUT_READY_OFFSET SHA1_MD5_OFFSET(0xe0)
#define CRYPT_MD5_INT_EN_OFFSET SHA1_MD5_OFFSET(0xe8)
#define CRYPT_MD5_SHA1_READY_INPUT_OFFSET SHA1_MD5_OFFSET(0xf0)
#define CRYPT_SHA1_INIT_31_0_REG SHA1_MD5_REG(0x0)
#define CRYPT_SHA1_INIT_63_32_REG SHA1_MD5_REG(0x4)
#define CRYPT_SHA1_INIT_95_64_REG SHA1_MD5_REG(0x8)
#define CRYPT_SHA1_INIT_127_96_REG SHA1_MD5_REG(0xc)
#define CRYPT_SHA1_INIT_159_128_REG SHA1_MD5_REG(0x10)
#define CRYPT_SHA1_INPUT_31_0_REG SHA1_MD5_REG(0x18)
#define CRYPT_SHA1_INPUT_63_32_REG SHA1_MD5_REG(0x1c)
#define CRYPT_SHA1_INPUT_95_64_REG SHA1_MD5_REG(0x20)
#define CRYPT_SHA1_INPUT_127_96_REG SHA1_MD5_REG(0x24)
#define CRYPT_SHA1_INPUT_159_128_REG SHA1_MD5_REG(0x28)
#define CRYPT_SHA1_INPUT_191_160_REG SHA1_MD5_REG(0x2c)
#define CRYPT_SHA1_INPUT_223_192_REG SHA1_MD5_REG(0x30)
#define CRYPT_SHA1_INPUT_255_224_REG SHA1_MD5_REG(0x34)
#define CRYPT_SHA1_INPUT_287_256_REG SHA1_MD5_REG(0x38)
#define CRYPT_SHA1_INPUT_319_288_REG SHA1_MD5_REG(0x3c)
#define CRYPT_SHA1_INPUT_351_320_REG SHA1_MD5_REG(0x40)
#define CRYPT_SHA1_INPUT_383_352_REG SHA1_MD5_REG(0x44)
#define CRYPT_SHA1_INPUT_415_384_REG SHA1_MD5_REG(0x48)
#define CRYPT_SHA1_INPUT_447_416_REG SHA1_MD5_REG(0x4c)
#define CRYPT_SHA1_INPUT_479_448_REG SHA1_MD5_REG(0x50)
#define CRYPT_SHA1_INPUT_511_480_REG SHA1_MD5_REG(0x54)
#define CRYPT_SHA1_OUTPUT_31_0_REG SHA1_MD5_REG(0x58)
#define CRYPT_SHA1_OUTPUT_63_32_REG SHA1_MD5_REG(0x5c)
#define CRYPT_SHA1_OUTPUT_95_64_REG SHA1_MD5_REG(0x60)
#define CRYPT_SHA1_OUTPUT_127_96_REG SHA1_MD5_REG(0x64)
#define CRYPT_SHA1_OUTPUT_159_128_REG SHA1_MD5_REG(0x68)
#define CRYPT_SHA1_OUTPUT_READY_REG SHA1_MD5_REG(0x70)
#define CRYPT_SHA1_INT_EN_REG SHA1_MD5_REG(0x78)
#define CRYPT_MD5_INIT_31_0_REG SHA1_MD5_REG(0x80)
#define CRYPT_MD5_INIT_63_32_REG SHA1_MD5_REG(0x84)
#define CRYPT_MD5_INIT_95_64_REG SHA1_MD5_REG(0x88)
#define CRYPT_MD5_INIT_127_96_REG SHA1_MD5_REG(0x8c)
#define CRYPT_MD5_INPUT_31_0_REG SHA1_MD5_REG(0x90)
#define CRYPT_MD5_INPUT_63_32_REG SHA1_MD5_REG(0x94)
#define CRYPT_MD5_INPUT_95_64_REG SHA1_MD5_REG(0x98)
#define CRYPT_MD5_INPUT_127_96_REG SHA1_MD5_REG(0x9c)
#define CRYPT_MD5_INPUT_159_128_REG SHA1_MD5_REG(0xa0)
#define CRYPT_MD5_INPUT_191_160_REG SHA1_MD5_REG(0xa4)
#define CRYPT_MD5_INPUT_223_192_REG SHA1_MD5_REG(0xa8)
#define CRYPT_MD5_INPUT_255_224_REG SHA1_MD5_REG(0xac)
#define CRYPT_MD5_INPUT_287_256_REG SHA1_MD5_REG(0xb0)
#define CRYPT_MD5_INPUT_319_288_REG SHA1_MD5_REG(0xb4)
#define CRYPT_MD5_INPUT_351_320_REG SHA1_MD5_REG(0xb8)
#define CRYPT_MD5_INPUT_383_352_REG SHA1_MD5_REG(0xbc)
#define CRYPT_MD5_INPUT_415_384_REG SHA1_MD5_REG(0xc0)
#define CRYPT_MD5_INPUT_447_416_REG SHA1_MD5_REG(0xc4)
#define CRYPT_MD5_INPUT_479_448_REG SHA1_MD5_REG(0xc8)
#define CRYPT_MD5_INPUT_511_480_REG SHA1_MD5_REG(0xcc)
#define CRYPT_MD5_OUTPUT_31_0_REG SHA1_MD5_REG(0xd0)
#define CRYPT_MD5_OUTPUT_63_32_REG SHA1_MD5_REG(0xd4)
#define CRYPT_MD5_OUTPUT_95_64_REG SHA1_MD5_REG(0xd8)
#define CRYPT_MD5_OUTPUT_127_96_REG SHA1_MD5_REG(0xdc)
#define CRYPT_MD5_OUTPUT_READY_REG SHA1_MD5_REG(0xe0)
#define CRYPT_MD5_INT_EN_REG SHA1_MD5_REG(0xe8)
#define CRYPT_MD5_SHA1_READY_INPUT_REG SHA1_MD5_REG(0xf0)
#endif
#endif /* (CRYPT_SUPPORT_MD5_SHA1 == 1)*/
#endif