summaryrefslogtreecommitdiffstatshomepage
path: root/cc3200/hal/inc/hw_aes.h
diff options
context:
space:
mode:
Diffstat (limited to 'cc3200/hal/inc/hw_aes.h')
-rw-r--r--cc3200/hal/inc/hw_aes.h802
1 files changed, 802 insertions, 0 deletions
diff --git a/cc3200/hal/inc/hw_aes.h b/cc3200/hal/inc/hw_aes.h
new file mode 100644
index 0000000000..3ab0398b35
--- /dev/null
+++ b/cc3200/hal/inc/hw_aes.h
@@ -0,0 +1,802 @@
+//*****************************************************************************
+//
+// Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
+//
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the
+// distribution.
+//
+// Neither the name of Texas Instruments Incorporated nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+//*****************************************************************************
+
+#ifndef __HW_AES_H__
+#define __HW_AES_H__
+
+//*****************************************************************************
+//
+// The following are defines for the AES_P register offsets.
+//
+//*****************************************************************************
+#define AES_O_KEY2_6 0x00000000 // XTS second key / CBC-MAC third
+ // key
+#define AES_O_KEY2_7 0x00000004 // XTS second key (MSW for 256-bit
+ // key) / CBC-MAC third key (MSW)
+#define AES_O_KEY2_4 0x00000008 // XTS / CCM second key / CBC-MAC
+ // third key (LSW)
+#define AES_O_KEY2_5 0x0000000C // XTS second key (MSW for 192-bit
+ // key) / CBC-MAC third key
+#define AES_O_KEY2_2 0x00000010 // XTS / CCM / CBC-MAC second key /
+ // Hash Key input
+#define AES_O_KEY2_3 0x00000014 // XTS second key (MSW for 128-bit
+ // key) + CCM/CBC-MAC second key
+ // (MSW) / Hash Key input (MSW)
+#define AES_O_KEY2_0 0x00000018 // XTS / CCM / CBC-MAC second key
+ // (LSW) / Hash Key input (LSW)
+#define AES_O_KEY2_1 0x0000001C // XTS / CCM / CBC-MAC second key /
+ // Hash Key input
+#define AES_O_KEY1_6 0x00000020 // Key (LSW for 256-bit key)
+#define AES_O_KEY1_7 0x00000024 // Key (MSW for 256-bit key)
+#define AES_O_KEY1_4 0x00000028 // Key (LSW for 192-bit key)
+#define AES_O_KEY1_5 0x0000002C // Key (MSW for 192-bit key)
+#define AES_O_KEY1_2 0x00000030 // Key
+#define AES_O_KEY1_3 0x00000034 // Key (MSW for 128-bit key)
+#define AES_O_KEY1_0 0x00000038 // Key (LSW for 128-bit key)
+#define AES_O_KEY1_1 0x0000003C // Key
+#define AES_O_IV_IN_0 0x00000040 // Initialization Vector input
+ // (LSW)
+#define AES_O_IV_IN_1 0x00000044 // Initialization vector input
+#define AES_O_IV_IN_2 0x00000048 // Initialization vector input
+#define AES_O_IV_IN_3 0x0000004C // Initialization Vector input
+ // (MSW)
+#define AES_O_CTRL 0x00000050 // register determines the mode of
+ // operation of the AES Engine
+#define AES_O_C_LENGTH_0 0x00000054 // Crypto data length registers
+ // (LSW and MSW) store the
+ // cryptographic data length in
+ // bytes for all modes. Once
+ // processing with this context is
+ // started@@ this length decrements
+ // to zero. Data lengths up to (2^61
+ // – 1) bytes are allowed. For GCM@@
+ // any value up to 2^36 - 32 bytes
+ // can be used. This is because a
+ // 32-bit counter mode is used; the
+ // maximum number of 128-bit blocks
+ // is 2^32 – 2@@ resulting in a
+ // maximum number of bytes of 2^36 -
+ // 32. A write to this register
+ // triggers the engine to start
+ // using this context. This is valid
+ // for all modes except GCM and CCM.
+ // Note that for the combined
+ // modes@@ this length does not
+ // include the authentication only
+ // data; the authentication length
+ // is specified in the
+ // AES_AUTH_LENGTH register below.
+ // All modes must have a length > 0.
+ // For the combined modes@@ it is
+ // allowed to have one of the
+ // lengths equal to zero. For the
+ // basic encryption modes
+ // (ECB/CBC/CTR/ICM/CFB128) it is
+ // allowed to program zero to the
+ // length field; in that case the
+ // length is assumed infinite. All
+ // data must be byte (8-bit)
+ // aligned; bit aligned data streams
+ // are not supported by the AES
+ // Engine. For a Host read
+ // operation@@ these registers
+ // return all-zeroes.
+#define AES_O_C_LENGTH_1 0x00000058 // Crypto data length registers
+ // (LSW and MSW) store the
+ // cryptographic data length in
+ // bytes for all modes. Once
+ // processing with this context is
+ // started@@ this length decrements
+ // to zero. Data lengths up to (2^61
+ // – 1) bytes are allowed. For GCM@@
+ // any value up to 2^36 - 32 bytes
+ // can be used. This is because a
+ // 32-bit counter mode is used; the
+ // maximum number of 128-bit blocks
+ // is 2^32 – 2@@ resulting in a
+ // maximum number of bytes of 2^36 -
+ // 32. A write to this register
+ // triggers the engine to start
+ // using this context. This is valid
+ // for all modes except GCM and CCM.
+ // Note that for the combined
+ // modes@@ this length does not
+ // include the authentication only
+ // data; the authentication length
+ // is specified in the
+ // AES_AUTH_LENGTH register below.
+ // All modes must have a length > 0.
+ // For the combined modes@@ it is
+ // allowed to have one of the
+ // lengths equal to zero. For the
+ // basic encryption modes
+ // (ECB/CBC/CTR/ICM/CFB128) it is
+ // allowed to program zero to the
+ // length field; in that case the
+ // length is assumed infinite. All
+ // data must be byte (8-bit)
+ // aligned; bit aligned data streams
+ // are not supported by the AES
+ // Engine. For a Host read
+ // operation@@ these registers
+ // return all-zeroes.
+#define AES_O_AUTH_LENGTH 0x0000005C // AAD data length. The
+ // authentication length register
+ // store the authentication data
+ // length in bytes for combined
+ // modes only (GCM or CCM) Supported
+ // AAD-lengths for CCM are from 0 to
+ // (2^16 - 2^8) bytes. For GCM any
+ // value up to (2^32 - 1) bytes can
+ // be used. Once processing with
+ // this context is started@@ this
+ // length decrements to zero. A
+ // write to this register triggers
+ // the engine to start using this
+ // context for GCM and CCM. For XTS
+ // this register is optionally used
+ // to load ‘j’. Loading of ‘j’ is
+ // only required if ‘j’ != 0. ‘j’ is
+ // a 28-bit value and must be
+ // written to bits [31-4] of this
+ // register. ‘j’ represents the
+ // sequential number of the 128-bit
+ // block inside the data unit. For
+ // the first block in a unit@@ this
+ // value is zero. It is not required
+ // to provide a ‘j’ for each new
+ // data block within a unit. Note
+ // that it is possible to start with
+ // a ‘j’ unequal to zero; refer to
+ // Table 4 for more details. For a
+ // Host read operation@@ these
+ // registers return all-zeroes.
+#define AES_O_DATA_IN_0 0x00000060 // Data register to read and write
+ // plaintext/ciphertext (MSW)
+#define AES_O_DATA_IN_1 0x00000064 // Data register to read and write
+ // plaintext/ciphertext
+#define AES_O_DATA_IN_2 0x00000068 // Data register to read and write
+ // plaintext/ciphertext
+#define AES_O_DATA_IN_3 0x0000006C // Data register to read and write
+ // plaintext/ciphertext (LSW)
+#define AES_O_TAG_OUT_0 0x00000070
+#define AES_O_TAG_OUT_1 0x00000074
+#define AES_O_TAG_OUT_2 0x00000078
+#define AES_O_TAG_OUT_3 0x0000007C
+#define AES_O_REVISION 0x00000080 // Register AES_REVISION
+#define AES_O_SYSCONFIG 0x00000084 // Register AES_SYSCONFIG.This
+ // register configures the DMA
+ // signals and controls the IDLE and
+ // reset logic
+#define AES_O_SYSSTATUS 0x00000088
+#define AES_O_IRQSTATUS 0x0000008C // This register indicates the
+ // interrupt status. If one of the
+ // interrupt bits is set the
+ // interrupt output will be asserted
+#define AES_O_IRQENABLE 0x00000090 // This register contains an enable
+ // bit for each unique interrupt
+ // generated by the module. It
+ // matches the layout of
+ // AES_IRQSTATUS register. An
+ // interrupt is enabled when the bit
+ // in this register is set to ‘1’.
+ // An interrupt that is enabled is
+ // propagated to the SINTREQUEST_x
+ // output. All interrupts need to be
+ // enabled explicitly by writing
+ // this register.
+
+
+
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_6 register.
+//
+//******************************************************************************
+#define AES_KEY2_6_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_6_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_7 register.
+//
+//******************************************************************************
+#define AES_KEY2_7_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_7_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_4 register.
+//
+//******************************************************************************
+#define AES_KEY2_4_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_4_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_5 register.
+//
+//******************************************************************************
+#define AES_KEY2_5_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_5_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_2 register.
+//
+//******************************************************************************
+#define AES_KEY2_2_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_2_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_3 register.
+//
+//******************************************************************************
+#define AES_KEY2_3_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_3_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_0 register.
+//
+//******************************************************************************
+#define AES_KEY2_0_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_0_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY2_1 register.
+//
+//******************************************************************************
+#define AES_KEY2_1_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY2_1_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_6 register.
+//
+//******************************************************************************
+#define AES_KEY1_6_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_6_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_7 register.
+//
+//******************************************************************************
+#define AES_KEY1_7_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_7_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_4 register.
+//
+//******************************************************************************
+#define AES_KEY1_4_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_4_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_5 register.
+//
+//******************************************************************************
+#define AES_KEY1_5_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_5_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_2 register.
+//
+//******************************************************************************
+#define AES_KEY1_2_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_2_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_3 register.
+//
+//******************************************************************************
+#define AES_KEY1_3_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_3_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_0 register.
+//
+//******************************************************************************
+#define AES_KEY1_0_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_0_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_KEY1_1 register.
+//
+//******************************************************************************
+#define AES_KEY1_1_KEY_M 0xFFFFFFFF // key data
+#define AES_KEY1_1_KEY_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_IV_IN_0 register.
+//
+//******************************************************************************
+#define AES_IV_IN_0_DATA_M 0xFFFFFFFF // IV data
+#define AES_IV_IN_0_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_IV_IN_1 register.
+//
+//******************************************************************************
+#define AES_IV_IN_1_DATA_M 0xFFFFFFFF // IV data
+#define AES_IV_IN_1_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_IV_IN_2 register.
+//
+//******************************************************************************
+#define AES_IV_IN_2_DATA_M 0xFFFFFFFF // IV data
+#define AES_IV_IN_2_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_IV_IN_3 register.
+//
+//******************************************************************************
+#define AES_IV_IN_3_DATA_M 0xFFFFFFFF // IV data
+#define AES_IV_IN_3_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_CTRL register.
+//
+//******************************************************************************
+#define AES_CTRL_CONTEXT_READY \
+ 0x80000000 // If ‘1’@@ this read-only status
+ // bit indicates that the context
+ // data registers can be overwritten
+ // and the host is permitted to
+ // write the next context.
+
+#define AES_CTRL_SVCTXTRDY \
+ 0x40000000 // If ‘1’@@ this read-only status
+ // bit indicates that an AES
+ // authentication TAG and/or IV
+ // block(s) is/are available for the
+ // host to retrieve. This bit is
+ // only asserted if the
+ // ‘save_context’ bit is set to ‘1’.
+ // The bit is mutual exclusive with
+ // the ‘context_ready’ bit.
+
+#define AES_CTRL_SAVE_CONTEXT 0x20000000 // This bit is used to indicate
+ // that an authentication TAG or
+ // result IV needs to be stored as a
+ // result context. If this bit is
+ // set@@ context output DMA and/or
+ // interrupt will be asserted if the
+ // operation is finished and related
+ // signals are enabled.
+#define AES_CTRL_CCM_M 0x01C00000 // Defines “M” that indicated the
+ // length of the authentication
+ // field for CCM operations; the
+ // authentication field length
+ // equals two times (the value of
+ // CCM-M plus one). Note that the
+ // AES Engine always returns a
+ // 128-bit authentication field@@ of
+ // which the M least significant
+ // bytes are valid. All values are
+ // supported.
+#define AES_CTRL_CCM_S 22
+#define AES_CTRL_CCM_L_M 0x00380000 // Defines “L” that indicated the
+ // width of the length field for CCM
+ // operations; the length field in
+ // bytes equals the value of CMM-L
+ // plus one. Supported values for L
+ // are (programmed value): 2 (1)@@ 4
+ // (3) and 8 (7).
+#define AES_CTRL_CCM_L_S 19
+#define AES_CTRL_CCM 0x00040000 // AES-CCM is selected@@ this is a
+ // combined mode@@ using AES for
+ // both authentication and
+ // encryption. No additional mode
+ // selection is required. 0 Other
+ // mode selected 1 ccm mode selected
+#define AES_CTRL_GCM_M 0x00030000 // AES-GCM mode is selected.this is
+ // a combined mode@@ using the
+ // Galois field multiplier GF(2^128)
+ // for authentication and AES-CTR
+ // mode for encryption@@ the bits
+ // specify the GCM mode. 0x0 No
+ // operation 0x1 GHASH with H loaded
+ // and Y0-encrypted forced to zero
+ // 0x2 GHASH with H loaded and
+ // Y0-encrypted calculated
+ // internally 0x3 Autonomous GHASH
+ // (both H and Y0-encrypted
+ // calculated internally)
+#define AES_CTRL_GCM_S 16
+#define AES_CTRL_CBCMAC 0x00008000 // AES-CBC MAC is selected@@ the
+ // Direction bit must be set to ‘1’
+ // for this mode. 0 Other mode
+ // selected 1 cbcmac mode selected
+#define AES_CTRL_F9 0x00004000 // AES f9 mode is selected@@ the
+ // AES key size must be set to
+ // 128-bit for this mode. 0 Other
+ // mode selected 1 f9 selected
+#define AES_CTRL_F8 0x00002000 // AES f8 mode is selected@@ the
+ // AES key size must be set to
+ // 128-bit for this mode. 0 Other
+ // mode selected 1 f8 selected
+#define AES_CTRL_XTS_M 0x00001800 // AES-XTS operation is selected;
+ // the bits specify the XTS mode.01
+ // = Previous/intermediate tweak
+ // value and ‘j’ loaded (value is
+ // loaded via IV@@ j is loaded via
+ // the AAD length register) 0x0 No
+ // operation 0x1
+ // Previous/intermediate tweak value
+ // and ‘j’ loaded (value is loaded
+ // via IV@@ j is loaded via the AAD
+ // length register) 0x2 Key2@@ i and
+ // j loaded (i is loaded via IV@@ j
+ // is loaded via the AAD length
+ // register) 0x3 Key2 and i loaded@@
+ // j=0 (i is loaded via IV)
+#define AES_CTRL_XTS_S 11
+#define AES_CTRL_CFB 0x00000400 // full block AES cipher feedback
+ // mode (CFB128) is selected. 0
+ // other mode selected 1 cfb
+ // selected
+#define AES_CTRL_ICM 0x00000200 // AES integer counter mode (ICM)
+ // is selected@@ this is a counter
+ // mode with a 16-bit wide counter.
+ // 0 Other mode selected. 1 ICM mode
+ // selected
+#define AES_CTRL_CTR_WIDTH_M 0x00000180 // Specifies the counter width for
+ // AES-CTR mode 0x0 Counter is 32
+ // bits 0x1 Counter is 64 bits 0x2
+ // Counter is 128 bits 0x3 Counter
+ // is 192 bits
+#define AES_CTRL_CTR_WIDTH_S 7
+#define AES_CTRL_CTR 0x00000040 // Tthis bit must also be set for
+ // GCM and CCM@@ when
+ // encryption/decryption is
+ // required. 0 Other mode selected 1
+ // Counter mode
+#define AES_CTRL_MODE 0x00000020 // ecb/cbc mode 0 ecb mode 1 cbc
+ // mode
+#define AES_CTRL_KEY_SIZE_M 0x00000018 // key size 0x0 reserved 0x1 Key is
+ // 128 bits. 0x2 Key is 192 bits 0x3
+ // Key is 256
+#define AES_CTRL_KEY_SIZE_S 3
+#define AES_CTRL_DIRECTION 0x00000004 // If set to ‘1’ an encrypt
+ // operation is performed. If set to
+ // ‘0’ a decrypt operation is
+ // performed. Read 0 decryption is
+ // selected Read 1 Encryption is
+ // selected
+#define AES_CTRL_INPUT_READY 0x00000002 // If ‘1’@@ this read-only status
+ // bit indicates that the 16-byte
+ // input buffer is empty@@ and the
+ // host is permitted to write the
+ // next block of data.
+#define AES_CTRL_OUTPUT_READY 0x00000001 // If ‘1’@@ this read-only status
+ // bit indicates that an AES output
+ // block is available for the host
+ // to retrieve.
+//******************************************************************************
+//
+// The following are defines for the bit fields in the
+// AES_O_C_LENGTH_0 register.
+//
+//******************************************************************************
+//******************************************************************************
+//
+// The following are defines for the bit fields in the
+// AES_O_C_LENGTH_1 register.
+//
+//******************************************************************************
+#define AES_C_LENGTH_1_LENGTH_M \
+ 0x1FFFFFFF // Data length (MSW) length
+ // registers (LSW and MSW) store the
+ // cryptographic data length in
+ // bytes for all modes. Once
+ // processing with this context is
+ // started@@ this length decrements
+ // to zero. Data lengths up to (2^61
+ // – 1) bytes are allowed. For GCM@@
+ // any value up to 2^36 - 32 bytes
+ // can be used. This is because a
+ // 32-bit counter mode is used; the
+ // maximum number of 128-bit blocks
+ // is 2^32 – 2@@ resulting in a
+ // maximum number of bytes of 2^36 -
+ // 32. A write to this register
+ // triggers the engine to start
+ // using this context. This is valid
+ // for all modes except GCM and CCM.
+ // Note that for the combined
+ // modes@@ this length does not
+ // include the authentication only
+ // data; the authentication length
+ // is specified in the
+ // AES_AUTH_LENGTH register below.
+ // All modes must have a length > 0.
+ // For the combined modes@@ it is
+ // allowed to have one of the
+ // lengths equal to zero. For the
+ // basic encryption modes
+ // (ECB/CBC/CTR/ICM/CFB128) it is
+ // allowed to program zero to the
+ // length field; in that case the
+ // length is assumed infinite. All
+ // data must be byte (8-bit)
+ // aligned; bit aligned data streams
+ // are not supported by the AES
+ // Engine. For a Host read
+ // operation@@ these registers
+ // return all-zeroes.
+
+#define AES_C_LENGTH_1_LENGTH_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the
+// AES_O_AUTH_LENGTH register.
+//
+//******************************************************************************
+#define AES_AUTH_LENGTH_AUTH_M \
+ 0xFFFFFFFF // data
+
+#define AES_AUTH_LENGTH_AUTH_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_DATA_IN_0 register.
+//
+//******************************************************************************
+#define AES_DATA_IN_0_DATA_M 0xFFFFFFFF // Data to encrypt/decrypt
+#define AES_DATA_IN_0_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_DATA_IN_1 register.
+//
+//******************************************************************************
+#define AES_DATA_IN_1_DATA_M 0xFFFFFFFF // Data to encrypt/decrypt
+#define AES_DATA_IN_1_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_DATA_IN_2 register.
+//
+//******************************************************************************
+#define AES_DATA_IN_2_DATA_M 0xFFFFFFFF // Data to encrypt/decrypt
+#define AES_DATA_IN_2_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_DATA_IN_3 register.
+//
+//******************************************************************************
+#define AES_DATA_IN_3_DATA_M 0xFFFFFFFF // Data to encrypt/decrypt
+#define AES_DATA_IN_3_DATA_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_TAG_OUT_0 register.
+//
+//******************************************************************************
+#define AES_TAG_OUT_0_HASH_M 0xFFFFFFFF // Hash result (MSW)
+#define AES_TAG_OUT_0_HASH_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_TAG_OUT_1 register.
+//
+//******************************************************************************
+#define AES_TAG_OUT_1_HASH_M 0xFFFFFFFF // Hash result (MSW)
+#define AES_TAG_OUT_1_HASH_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_TAG_OUT_2 register.
+//
+//******************************************************************************
+#define AES_TAG_OUT_2_HASH_M 0xFFFFFFFF // Hash result (MSW)
+#define AES_TAG_OUT_2_HASH_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_TAG_OUT_3 register.
+//
+//******************************************************************************
+#define AES_TAG_OUT_3_HASH_M 0xFFFFFFFF // Hash result (LSW)
+#define AES_TAG_OUT_3_HASH_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_REVISION register.
+//
+//******************************************************************************
+#define AES_REVISION_SCHEME_M 0xC0000000
+#define AES_REVISION_SCHEME_S 30
+#define AES_REVISION_FUNC_M 0x0FFF0000 // Function indicates a software
+ // compatible module family. If
+ // there is no level of software
+ // compatibility a new Func number
+ // (and hence REVISION) should be
+ // assigned.
+#define AES_REVISION_FUNC_S 16
+#define AES_REVISION_R_RTL_M 0x0000F800 // RTL Version (R)@@ maintained by
+ // IP design owner. RTL follows a
+ // numbering such as X.Y.R.Z which
+ // are explained in this table. R
+ // changes ONLY when: (1) PDS
+ // uploads occur which may have been
+ // due to spec changes (2) Bug fixes
+ // occur (3) Resets to '0' when X or
+ // Y changes. Design team has an
+ // internal 'Z' (customer invisible)
+ // number which increments on every
+ // drop that happens due to DV and
+ // RTL updates. Z resets to 0 when R
+ // increments.
+#define AES_REVISION_R_RTL_S 11
+#define AES_REVISION_X_MAJOR_M \
+ 0x00000700 // Major Revision (X)@@ maintained
+ // by IP specification owner. X
+ // changes ONLY when: (1) There is a
+ // major feature addition. An
+ // example would be adding Master
+ // Mode to Utopia Level2. The Func
+ // field (or Class/Type in old PID
+ // format) will remain the same. X
+ // does NOT change due to: (1) Bug
+ // fixes (2) Change in feature
+ // parameters.
+
+#define AES_REVISION_X_MAJOR_S 8
+#define AES_REVISION_CUSTOM_M 0x000000C0
+#define AES_REVISION_CUSTOM_S 6
+#define AES_REVISION_Y_MINOR_M \
+ 0x0000003F // Minor Revision (Y)@@ maintained
+ // by IP specification owner. Y
+ // changes ONLY when: (1) Features
+ // are scaled (up or down).
+ // Flexibility exists in that this
+ // feature scalability may either be
+ // represented in the Y change or a
+ // specific register in the IP that
+ // indicates which features are
+ // exactly available. (2) When
+ // feature creeps from Is-Not list
+ // to Is list. But this may not be
+ // the case once it sees silicon; in
+ // which case X will change. Y does
+ // NOT change due to: (1) Bug fixes
+ // (2) Typos or clarifications (3)
+ // major functional/feature
+ // change/addition/deletion. Instead
+ // these changes may be reflected
+ // via R@@ S@@ X as applicable. Spec
+ // owner maintains a
+ // customer-invisible number 'S'
+ // which changes due to: (1)
+ // Typos/clarifications (2) Bug
+ // documentation. Note that this bug
+ // is not due to a spec change but
+ // due to implementation.
+ // Nevertheless@@ the spec tracks
+ // the IP bugs. An RTL release (say
+ // for silicon PG1.1) that occurs
+ // due to bug fix should document
+ // the corresponding spec number
+ // (X.Y.S) in its release notes.
+
+#define AES_REVISION_Y_MINOR_S 0
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_SYSCONFIG register.
+//
+//******************************************************************************
+#define AES_SYSCONFIG_MACONTEXT_OUT_ON_DATA_OUT \
+ 0x00000200 // If set to '1' the two context
+ // out requests
+ // (dma_req_context_out_en@@ Bit [8]
+ // above@@ and context_out interrupt
+ // enable@@ Bit [3] of AES_IRQENABLE
+ // register) are mapped on the
+ // corresponding data output request
+ // bit. In this case@@ the original
+ // ‘context out’ bit values are
+ // ignored.
+
+#define AES_SYSCONFIG_DMA_REQ_CONTEXT_OUT_EN \
+ 0x00000100 // If set to ‘1’@@ the DMA context
+ // output request is enabled (for
+ // context data out@@ e.g. TAG for
+ // authentication modes). 0 Dma
+ // disabled 1 Dma enabled
+
+#define AES_SYSCONFIG_DMA_REQ_CONTEXT_IN_EN \
+ 0x00000080 // If set to ‘1’@@ the DMA context
+ // request is enabled. 0 Dma
+ // disabled 1 Dma enabled
+
+#define AES_SYSCONFIG_DMA_REQ_DATA_OUT_EN \
+ 0x00000040 // If set to ‘1’@@ the DMA output
+ // request is enabled. 0 Dma
+ // disabled 1 Dma enabled
+
+#define AES_SYSCONFIG_DMA_REQ_DATA_IN_EN \
+ 0x00000020 // If set to ‘1’@@ the DMA input
+ // request is enabled. 0 Dma
+ // disabled 1 Dma enabled
+
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_SYSSTATUS register.
+//
+//******************************************************************************
+#define AES_SYSSTATUS_RESETDONE \
+ 0x00000001
+
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_IRQSTATUS register.
+//
+//******************************************************************************
+#define AES_IRQSTATUS_CONTEXT_OUT \
+ 0x00000008 // This bit indicates
+ // authentication tag (and IV)
+ // interrupt(s) is/are active and
+ // triggers the interrupt output.
+
+#define AES_IRQSTATUS_DATA_OUT \
+ 0x00000004 // This bit indicates data output
+ // interrupt is active and triggers
+ // the interrupt output.
+
+#define AES_IRQSTATUS_DATA_IN 0x00000002 // This bit indicates data input
+ // interrupt is active and triggers
+ // the interrupt output.
+#define AES_IRQSTATUS_CONTEX_IN \
+ 0x00000001 // This bit indicates context
+ // interrupt is active and triggers
+ // the interrupt output.
+
+//******************************************************************************
+//
+// The following are defines for the bit fields in the AES_O_IRQENABLE register.
+//
+//******************************************************************************
+#define AES_IRQENABLE_CONTEXT_OUT \
+ 0x00000008 // This bit indicates
+ // authentication tag (and IV)
+ // interrupt(s) is/are active and
+ // triggers the interrupt output.
+
+#define AES_IRQENABLE_DATA_OUT \
+ 0x00000004 // This bit indicates data output
+ // interrupt is active and triggers
+ // the interrupt output.
+
+#define AES_IRQENABLE_DATA_IN 0x00000002 // This bit indicates data input
+ // interrupt is active and triggers
+ // the interrupt output.
+#define AES_IRQENABLE_CONTEX_IN \
+ 0x00000001 // This bit indicates context
+ // interrupt is active and triggers
+ // the interrupt output.
+
+
+
+
+#endif // __HW_AES_H__