Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: sun8i-ce - Add support for the D1 variant

The Allwinner D1 SoC has a crypto engine compatible with sun8i-ce.
Add support for it.

Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Corentin Labbe and committed by
Herbert Xu
83f50f29 8616b628

+22
+21
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
··· 106 106 .trng = CE_ID_NOTSUPP, 107 107 }; 108 108 109 + static const struct ce_variant ce_d1_variant = { 110 + .alg_cipher = { CE_ALG_AES, CE_ALG_DES, CE_ALG_3DES, 111 + }, 112 + .alg_hash = { CE_ALG_MD5, CE_ALG_SHA1, CE_ALG_SHA224, CE_ALG_SHA256, 113 + CE_ALG_SHA384, CE_ALG_SHA512 114 + }, 115 + .op_mode = { CE_OP_ECB, CE_OP_CBC 116 + }, 117 + .ce_clks = { 118 + { "bus", 0, 200000000 }, 119 + { "mod", 300000000, 0 }, 120 + { "ram", 0, 400000000 }, 121 + }, 122 + .esr = ESR_D1, 123 + .prng = CE_ALG_PRNG, 124 + .trng = CE_ALG_TRNG, 125 + }; 126 + 109 127 static const struct ce_variant ce_r40_variant = { 110 128 .alg_cipher = { CE_ALG_AES, CE_ALG_DES, CE_ALG_3DES, 111 129 }, ··· 210 192 dev_err(ce->dev, "CE ERROR: keysram access error for AES\n"); 211 193 break; 212 194 case ESR_A64: 195 + case ESR_D1: 213 196 case ESR_H5: 214 197 case ESR_R40: 215 198 v >>= (flow * 4); ··· 1009 990 .data = &ce_h3_variant }, 1010 991 { .compatible = "allwinner,sun8i-r40-crypto", 1011 992 .data = &ce_r40_variant }, 993 + { .compatible = "allwinner,sun20i-d1-crypto", 994 + .data = &ce_d1_variant }, 1012 995 { .compatible = "allwinner,sun50i-a64-crypto", 1013 996 .data = &ce_a64_variant }, 1014 997 { .compatible = "allwinner,sun50i-h5-crypto",
+1
drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
··· 94 94 #define ESR_R40 2 95 95 #define ESR_H5 3 96 96 #define ESR_H6 4 97 + #define ESR_D1 5 97 98 98 99 #define PRNG_DATA_SIZE (160 / 8) 99 100 #define PRNG_SEED_SIZE DIV_ROUND_UP(175, 8)