Commit 488ebc3a authored by Horia Geantă's avatar Horia Geantă Committed by Herbert Xu

crypto: caam - remove superfluous alg_op algorithm param

Information carried by alg_op can be deduced from adata->algtype
plus some fixed flags.
Signed-off-by: default avatarHoria Geantă <horia.geanta@nxp.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent db57656b
...@@ -149,7 +149,6 @@ static struct list_head alg_list; ...@@ -149,7 +149,6 @@ static struct list_head alg_list;
struct caam_alg_entry { struct caam_alg_entry {
int class1_alg_type; int class1_alg_type;
int class2_alg_type; int class2_alg_type;
int alg_op;
bool rfc3686; bool rfc3686;
bool geniv; bool geniv;
}; };
...@@ -217,7 +216,6 @@ struct caam_ctx { ...@@ -217,7 +216,6 @@ struct caam_ctx {
dma_addr_t sh_desc_enc_dma; dma_addr_t sh_desc_enc_dma;
dma_addr_t sh_desc_dec_dma; dma_addr_t sh_desc_dec_dma;
dma_addr_t sh_desc_givenc_dma; dma_addr_t sh_desc_givenc_dma;
u32 alg_op;
u8 key[CAAM_MAX_KEY_SIZE]; u8 key[CAAM_MAX_KEY_SIZE];
dma_addr_t key_dma; dma_addr_t key_dma;
struct alginfo adata; struct alginfo adata;
...@@ -1366,7 +1364,7 @@ static u32 gen_split_aead_key(struct caam_ctx *ctx, const u8 *key_in, ...@@ -1366,7 +1364,7 @@ static u32 gen_split_aead_key(struct caam_ctx *ctx, const u8 *key_in,
u32 authkeylen) u32 authkeylen)
{ {
return gen_split_key(ctx->jrdev, ctx->key, &ctx->adata, key_in, return gen_split_key(ctx->jrdev, ctx->key, &ctx->adata, key_in,
authkeylen, ctx->alg_op); authkeylen);
} }
static int aead_setkey(struct crypto_aead *aead, static int aead_setkey(struct crypto_aead *aead,
...@@ -1383,7 +1381,8 @@ static int aead_setkey(struct crypto_aead *aead, ...@@ -1383,7 +1381,8 @@ static int aead_setkey(struct crypto_aead *aead,
goto badkey; goto badkey;
/* Pick class 2 key length from algorithm submask */ /* Pick class 2 key length from algorithm submask */
ctx->adata.keylen = mdpadlen[(ctx->alg_op & OP_ALG_ALGSEL_SUBMASK) >> ctx->adata.keylen = mdpadlen[(ctx->adata.algtype &
OP_ALG_ALGSEL_SUBMASK) >>
OP_ALG_ALGSEL_SHIFT] * 2; OP_ALG_ALGSEL_SHIFT] * 2;
ctx->adata.keylen_pad = ALIGN(ctx->adata.keylen, 16); ctx->adata.keylen_pad = ALIGN(ctx->adata.keylen, 16);
...@@ -2988,7 +2987,6 @@ struct caam_alg_template { ...@@ -2988,7 +2987,6 @@ struct caam_alg_template {
} template_u; } template_u;
u32 class1_alg_type; u32 class1_alg_type;
u32 class2_alg_type; u32 class2_alg_type;
u32 alg_op;
}; };
static struct caam_alg_template driver_algs[] = { static struct caam_alg_template driver_algs[] = {
...@@ -3173,7 +3171,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3173,7 +3171,6 @@ static struct caam_aead_alg driver_aeads[] = {
.caam = { .caam = {
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3195,7 +3192,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3195,7 +3192,6 @@ static struct caam_aead_alg driver_aeads[] = {
.caam = { .caam = {
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3217,7 +3213,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3217,7 +3213,6 @@ static struct caam_aead_alg driver_aeads[] = {
.caam = { .caam = {
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3239,7 +3234,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3239,7 +3234,6 @@ static struct caam_aead_alg driver_aeads[] = {
.caam = { .caam = {
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3261,7 +3255,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3261,7 +3255,6 @@ static struct caam_aead_alg driver_aeads[] = {
.caam = { .caam = {
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3283,7 +3276,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3283,7 +3276,6 @@ static struct caam_aead_alg driver_aeads[] = {
.caam = { .caam = {
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3305,7 +3297,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3305,7 +3297,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3328,7 +3319,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3328,7 +3319,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3351,7 +3341,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3351,7 +3341,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3374,7 +3363,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3374,7 +3363,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3397,7 +3385,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3397,7 +3385,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3420,7 +3407,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3420,7 +3407,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3443,7 +3429,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3443,7 +3429,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3466,7 +3451,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3466,7 +3451,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3489,7 +3473,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3489,7 +3473,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3512,7 +3495,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3512,7 +3495,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3535,7 +3517,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3535,7 +3517,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3558,7 +3539,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3558,7 +3539,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_AES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3581,7 +3561,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3581,7 +3561,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
} }
}, },
{ {
...@@ -3604,7 +3583,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3604,7 +3583,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
} }
}, },
...@@ -3628,7 +3606,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3628,7 +3606,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3652,7 +3629,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3652,7 +3629,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3676,7 +3652,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3676,7 +3652,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3700,7 +3675,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3700,7 +3675,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3724,7 +3698,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3724,7 +3698,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3748,7 +3721,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3748,7 +3721,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3772,7 +3744,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3772,7 +3744,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3796,7 +3767,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3796,7 +3767,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3820,7 +3790,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3820,7 +3790,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3844,7 +3813,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3844,7 +3813,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3867,7 +3835,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3867,7 +3835,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3890,7 +3857,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3890,7 +3857,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3913,7 +3879,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3913,7 +3879,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3936,7 +3901,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3936,7 +3901,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -3959,7 +3923,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3959,7 +3923,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -3982,7 +3945,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -3982,7 +3945,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -4005,7 +3967,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4005,7 +3967,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -4028,7 +3989,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4028,7 +3989,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -4051,7 +4011,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4051,7 +4011,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -4074,7 +4033,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4074,7 +4033,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -4097,7 +4055,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4097,7 +4055,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
}, },
}, },
{ {
...@@ -4120,7 +4077,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4120,7 +4077,6 @@ static struct caam_aead_alg driver_aeads[] = {
.class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC, .class1_alg_type = OP_ALG_ALGSEL_DES | OP_ALG_AAI_CBC,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
.geniv = true, .geniv = true,
}, },
}, },
...@@ -4145,7 +4101,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4145,7 +4101,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
}, },
}, },
...@@ -4170,7 +4125,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4170,7 +4125,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_MD5 | .class2_alg_type = OP_ALG_ALGSEL_MD5 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
.geniv = true, .geniv = true,
}, },
...@@ -4196,7 +4150,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4196,7 +4150,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
}, },
}, },
...@@ -4221,7 +4174,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4221,7 +4174,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA1 | .class2_alg_type = OP_ALG_ALGSEL_SHA1 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
.geniv = true, .geniv = true,
}, },
...@@ -4247,7 +4199,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4247,7 +4199,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
}, },
}, },
...@@ -4272,7 +4223,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4272,7 +4223,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA224 | .class2_alg_type = OP_ALG_ALGSEL_SHA224 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
.geniv = true, .geniv = true,
}, },
...@@ -4298,7 +4248,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4298,7 +4248,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
}, },
}, },
...@@ -4323,7 +4272,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4323,7 +4272,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA256 | .class2_alg_type = OP_ALG_ALGSEL_SHA256 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
.geniv = true, .geniv = true,
}, },
...@@ -4349,7 +4297,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4349,7 +4297,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
}, },
}, },
...@@ -4374,7 +4321,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4374,7 +4321,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA384 | .class2_alg_type = OP_ALG_ALGSEL_SHA384 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
.geniv = true, .geniv = true,
}, },
...@@ -4400,7 +4346,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4400,7 +4346,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
}, },
}, },
...@@ -4425,7 +4370,6 @@ static struct caam_aead_alg driver_aeads[] = { ...@@ -4425,7 +4370,6 @@ static struct caam_aead_alg driver_aeads[] = {
OP_ALG_AAI_CTR_MOD128, OP_ALG_AAI_CTR_MOD128,
.class2_alg_type = OP_ALG_ALGSEL_SHA512 | .class2_alg_type = OP_ALG_ALGSEL_SHA512 |
OP_ALG_AAI_HMAC_PRECOMP, OP_ALG_AAI_HMAC_PRECOMP,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
.rfc3686 = true, .rfc3686 = true,
.geniv = true, .geniv = true,
}, },
...@@ -4449,7 +4393,6 @@ static int caam_init_common(struct caam_ctx *ctx, struct caam_alg_entry *caam) ...@@ -4449,7 +4393,6 @@ static int caam_init_common(struct caam_ctx *ctx, struct caam_alg_entry *caam)
/* copy descriptor header template value */ /* copy descriptor header template value */
ctx->cdata.algtype = OP_TYPE_CLASS1_ALG | caam->class1_alg_type; ctx->cdata.algtype = OP_TYPE_CLASS1_ALG | caam->class1_alg_type;
ctx->adata.algtype = OP_TYPE_CLASS2_ALG | caam->class2_alg_type; ctx->adata.algtype = OP_TYPE_CLASS2_ALG | caam->class2_alg_type;
ctx->alg_op = OP_TYPE_CLASS2_ALG | caam->alg_op;
return 0; return 0;
} }
...@@ -4570,7 +4513,6 @@ static struct caam_crypto_alg *caam_alg_alloc(struct caam_alg_template ...@@ -4570,7 +4513,6 @@ static struct caam_crypto_alg *caam_alg_alloc(struct caam_alg_template
t_alg->caam.class1_alg_type = template->class1_alg_type; t_alg->caam.class1_alg_type = template->class1_alg_type;
t_alg->caam.class2_alg_type = template->class2_alg_type; t_alg->caam.class2_alg_type = template->class2_alg_type;
t_alg->caam.alg_op = template->alg_op;
return t_alg; return t_alg;
} }
......
...@@ -108,7 +108,6 @@ struct caam_hash_ctx { ...@@ -108,7 +108,6 @@ struct caam_hash_ctx {
dma_addr_t sh_desc_fin_dma; dma_addr_t sh_desc_fin_dma;
dma_addr_t sh_desc_digest_dma; dma_addr_t sh_desc_digest_dma;
struct device *jrdev; struct device *jrdev;
u32 alg_op;
u8 key[CAAM_MAX_HASH_KEY_SIZE]; u8 key[CAAM_MAX_HASH_KEY_SIZE];
dma_addr_t key_dma; dma_addr_t key_dma;
int ctx_len; int ctx_len;
...@@ -402,8 +401,7 @@ static int ahash_set_sh_desc(struct crypto_ahash *ahash) ...@@ -402,8 +401,7 @@ static int ahash_set_sh_desc(struct crypto_ahash *ahash)
static int gen_split_hash_key(struct caam_hash_ctx *ctx, const u8 *key_in, static int gen_split_hash_key(struct caam_hash_ctx *ctx, const u8 *key_in,
u32 keylen) u32 keylen)
{ {
return gen_split_key(ctx->jrdev, ctx->key, &ctx->adata, key_in, keylen, return gen_split_key(ctx->jrdev, ctx->key, &ctx->adata, key_in, keylen);
ctx->alg_op);
} }
/* Digest hash size if it is too large */ /* Digest hash size if it is too large */
...@@ -512,7 +510,8 @@ static int ahash_setkey(struct crypto_ahash *ahash, ...@@ -512,7 +510,8 @@ static int ahash_setkey(struct crypto_ahash *ahash,
} }
/* Pick class 2 key length from algorithm submask */ /* Pick class 2 key length from algorithm submask */
ctx->adata.keylen = mdpadlen[(ctx->alg_op & OP_ALG_ALGSEL_SUBMASK) >> ctx->adata.keylen = mdpadlen[(ctx->adata.algtype &
OP_ALG_ALGSEL_SUBMASK) >>
OP_ALG_ALGSEL_SHIFT] * 2; OP_ALG_ALGSEL_SHIFT] * 2;
ctx->adata.keylen_pad = ALIGN(ctx->adata.keylen, 16); ctx->adata.keylen_pad = ALIGN(ctx->adata.keylen, 16);
...@@ -1654,7 +1653,6 @@ struct caam_hash_template { ...@@ -1654,7 +1653,6 @@ struct caam_hash_template {
unsigned int blocksize; unsigned int blocksize;
struct ahash_alg template_ahash; struct ahash_alg template_ahash;
u32 alg_type; u32 alg_type;
u32 alg_op;
}; };
/* ahash descriptors */ /* ahash descriptors */
...@@ -1680,7 +1678,6 @@ static struct caam_hash_template driver_hash[] = { ...@@ -1680,7 +1678,6 @@ static struct caam_hash_template driver_hash[] = {
}, },
}, },
.alg_type = OP_ALG_ALGSEL_SHA1, .alg_type = OP_ALG_ALGSEL_SHA1,
.alg_op = OP_ALG_ALGSEL_SHA1 | OP_ALG_AAI_HMAC,
}, { }, {
.name = "sha224", .name = "sha224",
.driver_name = "sha224-caam", .driver_name = "sha224-caam",
...@@ -1702,7 +1699,6 @@ static struct caam_hash_template driver_hash[] = { ...@@ -1702,7 +1699,6 @@ static struct caam_hash_template driver_hash[] = {
}, },
}, },
.alg_type = OP_ALG_ALGSEL_SHA224, .alg_type = OP_ALG_ALGSEL_SHA224,
.alg_op = OP_ALG_ALGSEL_SHA224 | OP_ALG_AAI_HMAC,
}, { }, {
.name = "sha256", .name = "sha256",
.driver_name = "sha256-caam", .driver_name = "sha256-caam",
...@@ -1724,7 +1720,6 @@ static struct caam_hash_template driver_hash[] = { ...@@ -1724,7 +1720,6 @@ static struct caam_hash_template driver_hash[] = {
}, },
}, },
.alg_type = OP_ALG_ALGSEL_SHA256, .alg_type = OP_ALG_ALGSEL_SHA256,
.alg_op = OP_ALG_ALGSEL_SHA256 | OP_ALG_AAI_HMAC,
}, { }, {
.name = "sha384", .name = "sha384",
.driver_name = "sha384-caam", .driver_name = "sha384-caam",
...@@ -1746,7 +1741,6 @@ static struct caam_hash_template driver_hash[] = { ...@@ -1746,7 +1741,6 @@ static struct caam_hash_template driver_hash[] = {
}, },
}, },
.alg_type = OP_ALG_ALGSEL_SHA384, .alg_type = OP_ALG_ALGSEL_SHA384,
.alg_op = OP_ALG_ALGSEL_SHA384 | OP_ALG_AAI_HMAC,
}, { }, {
.name = "sha512", .name = "sha512",
.driver_name = "sha512-caam", .driver_name = "sha512-caam",
...@@ -1768,7 +1762,6 @@ static struct caam_hash_template driver_hash[] = { ...@@ -1768,7 +1762,6 @@ static struct caam_hash_template driver_hash[] = {
}, },
}, },
.alg_type = OP_ALG_ALGSEL_SHA512, .alg_type = OP_ALG_ALGSEL_SHA512,
.alg_op = OP_ALG_ALGSEL_SHA512 | OP_ALG_AAI_HMAC,
}, { }, {
.name = "md5", .name = "md5",
.driver_name = "md5-caam", .driver_name = "md5-caam",
...@@ -1790,14 +1783,12 @@ static struct caam_hash_template driver_hash[] = { ...@@ -1790,14 +1783,12 @@ static struct caam_hash_template driver_hash[] = {
}, },
}, },
.alg_type = OP_ALG_ALGSEL_MD5, .alg_type = OP_ALG_ALGSEL_MD5,
.alg_op = OP_ALG_ALGSEL_MD5 | OP_ALG_AAI_HMAC,
}, },
}; };
struct caam_hash_alg { struct caam_hash_alg {
struct list_head entry; struct list_head entry;
int alg_type; int alg_type;
int alg_op;
struct ahash_alg ahash_alg; struct ahash_alg ahash_alg;
}; };
...@@ -1831,9 +1822,9 @@ static int caam_hash_cra_init(struct crypto_tfm *tfm) ...@@ -1831,9 +1822,9 @@ static int caam_hash_cra_init(struct crypto_tfm *tfm)
} }
/* copy descriptor header template value */ /* copy descriptor header template value */
ctx->adata.algtype = OP_TYPE_CLASS2_ALG | caam_hash->alg_type; ctx->adata.algtype = OP_TYPE_CLASS2_ALG | caam_hash->alg_type;
ctx->alg_op = OP_TYPE_CLASS2_ALG | caam_hash->alg_op;
ctx->ctx_len = runninglen[(ctx->alg_op & OP_ALG_ALGSEL_SUBMASK) >> ctx->ctx_len = runninglen[(ctx->adata.algtype &
OP_ALG_ALGSEL_SUBMASK) >>
OP_ALG_ALGSEL_SHIFT]; OP_ALG_ALGSEL_SHIFT];
crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm), crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm),
...@@ -1923,7 +1914,6 @@ caam_hash_alloc(struct caam_hash_template *template, ...@@ -1923,7 +1914,6 @@ caam_hash_alloc(struct caam_hash_template *template,
alg->cra_type = &crypto_ahash_type; alg->cra_type = &crypto_ahash_type;
t_alg->alg_type = template->alg_type; t_alg->alg_type = template->alg_type;
t_alg->alg_op = template->alg_op;
return t_alg; return t_alg;
} }
......
...@@ -42,8 +42,7 @@ Split key generation----------------------------------------------- ...@@ -42,8 +42,7 @@ Split key generation-----------------------------------------------
@0xffe04000 @0xffe04000
*/ */
int gen_split_key(struct device *jrdev, u8 *key_out, int gen_split_key(struct device *jrdev, u8 *key_out,
struct alginfo * const adata, const u8 *key_in, u32 keylen, struct alginfo * const adata, const u8 *key_in, u32 keylen)
u32 alg_op)
{ {
u32 *desc; u32 *desc;
struct split_key_result result; struct split_key_result result;
...@@ -74,7 +73,9 @@ int gen_split_key(struct device *jrdev, u8 *key_out, ...@@ -74,7 +73,9 @@ int gen_split_key(struct device *jrdev, u8 *key_out,
append_key(desc, dma_addr_in, keylen, CLASS_2 | KEY_DEST_CLASS_REG); append_key(desc, dma_addr_in, keylen, CLASS_2 | KEY_DEST_CLASS_REG);
/* Sets MDHA up into an HMAC-INIT */ /* Sets MDHA up into an HMAC-INIT */
append_operation(desc, alg_op | OP_ALG_DECRYPT | OP_ALG_AS_INIT); append_operation(desc, (adata->algtype & OP_ALG_ALGSEL_MASK) |
OP_ALG_AAI_HMAC | OP_TYPE_CLASS2_ALG | OP_ALG_DECRYPT |
OP_ALG_AS_INIT);
/* /*
* do a FIFO_LOAD of zero, this will trigger the internal key expansion * do a FIFO_LOAD of zero, this will trigger the internal key expansion
......
...@@ -13,5 +13,4 @@ struct split_key_result { ...@@ -13,5 +13,4 @@ struct split_key_result {
void split_key_done(struct device *dev, u32 *desc, u32 err, void *context); void split_key_done(struct device *dev, u32 *desc, u32 err, void *context);
int gen_split_key(struct device *jrdev, u8 *key_out, int gen_split_key(struct device *jrdev, u8 *key_out,
struct alginfo * const adata, const u8 *key_in, u32 keylen, struct alginfo * const adata, const u8 *key_in, u32 keylen);
u32 alg_op);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment