crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes
This patchs allows to combine the AES and SHA hardware accelerators on some Atmel SoCs. Doing so, AES blocks are only written to/read from the AES hardware. Those blocks are also transferred from the AES to the SHA accelerator internally, without additionnal accesses to the system busses. Hence, the AES and SHA accelerators work in parallel to process all the data blocks, instead of serializing the process by (de)crypting those blocks first then authenticating them after like the generic crypto/authenc.c driver does. Of course, both the AES and SHA hardware accelerators need to be available before we can start to process the data blocks. Hence we use their crypto request queue to synchronize both drivers. Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:

committed by
Herbert Xu

parent
a1f613f167
commit
89a82ef87e
@@ -68,6 +68,22 @@
|
||||
#define AES_CTRR 0x98
|
||||
#define AES_GCMHR(x) (0x9c + ((x) * 0x04))
|
||||
|
||||
#define AES_EMR 0xb0
|
||||
#define AES_EMR_APEN BIT(0) /* Auto Padding Enable */
|
||||
#define AES_EMR_APM BIT(1) /* Auto Padding Mode */
|
||||
#define AES_EMR_APM_IPSEC 0x0
|
||||
#define AES_EMR_APM_SSL BIT(1)
|
||||
#define AES_EMR_PLIPEN BIT(4) /* PLIP Enable */
|
||||
#define AES_EMR_PLIPD BIT(5) /* PLIP Decipher */
|
||||
#define AES_EMR_PADLEN_MASK (0xFu << 8)
|
||||
#define AES_EMR_PADLEN_OFFSET 8
|
||||
#define AES_EMR_PADLEN(padlen) (((padlen) << AES_EMR_PADLEN_OFFSET) &\
|
||||
AES_EMR_PADLEN_MASK)
|
||||
#define AES_EMR_NHEAD_MASK (0xFu << 16)
|
||||
#define AES_EMR_NHEAD_OFFSET 16
|
||||
#define AES_EMR_NHEAD(nhead) (((nhead) << AES_EMR_NHEAD_OFFSET) &\
|
||||
AES_EMR_NHEAD_MASK)
|
||||
|
||||
#define AES_TWR(x) (0xc0 + ((x) * 0x04))
|
||||
#define AES_ALPHAR(x) (0xd0 + ((x) * 0x04))
|
||||
|
||||
|
Reference in New Issue
Block a user