| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802 |
- //*****************************************************************************
- //
- // 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__
|