diff options
Diffstat (limited to 'drivers/crypto/caam')
-rw-r--r-- | drivers/crypto/caam/Kconfig | 2 | ||||
-rw-r--r-- | drivers/crypto/caam/caamalg.c | 6 | ||||
-rw-r--r-- | drivers/crypto/caam/caamhash.c | 4 | ||||
-rw-r--r-- | drivers/crypto/caam/ctrl.c | 3 | ||||
-rw-r--r-- | drivers/crypto/caam/error.c | 10 | ||||
-rw-r--r-- | drivers/crypto/caam/intern.h | 1 | ||||
-rw-r--r-- | drivers/crypto/caam/jr.c | 4 | ||||
-rw-r--r-- | drivers/crypto/caam/key_gen.c | 2 | ||||
-rw-r--r-- | drivers/crypto/caam/key_gen.h | 2 | ||||
-rw-r--r-- | drivers/crypto/caam/regs.h | 4 |
10 files changed, 27 insertions, 11 deletions
diff --git a/drivers/crypto/caam/Kconfig b/drivers/crypto/caam/Kconfig index 65c7668614ab..b44091c47f75 100644 --- a/drivers/crypto/caam/Kconfig +++ b/drivers/crypto/caam/Kconfig | |||
@@ -78,7 +78,7 @@ config CRYPTO_DEV_FSL_CAAM_AHASH_API | |||
78 | tristate "Register hash algorithm implementations with Crypto API" | 78 | tristate "Register hash algorithm implementations with Crypto API" |
79 | depends on CRYPTO_DEV_FSL_CAAM | 79 | depends on CRYPTO_DEV_FSL_CAAM |
80 | default y | 80 | default y |
81 | select CRYPTO_AHASH | 81 | select CRYPTO_HASH |
82 | help | 82 | help |
83 | Selecting this will offload ahash for users of the | 83 | Selecting this will offload ahash for users of the |
84 | scatterlist crypto API to the SEC4 via job ring. | 84 | scatterlist crypto API to the SEC4 via job ring. |
diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index cf268b14ae9a..765fdf5ce579 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c | |||
@@ -1693,6 +1693,7 @@ static struct caam_alg_template driver_algs[] = { | |||
1693 | .name = "authenc(hmac(sha224),cbc(aes))", | 1693 | .name = "authenc(hmac(sha224),cbc(aes))", |
1694 | .driver_name = "authenc-hmac-sha224-cbc-aes-caam", | 1694 | .driver_name = "authenc-hmac-sha224-cbc-aes-caam", |
1695 | .blocksize = AES_BLOCK_SIZE, | 1695 | .blocksize = AES_BLOCK_SIZE, |
1696 | .type = CRYPTO_ALG_TYPE_AEAD, | ||
1696 | .template_aead = { | 1697 | .template_aead = { |
1697 | .setkey = aead_setkey, | 1698 | .setkey = aead_setkey, |
1698 | .setauthsize = aead_setauthsize, | 1699 | .setauthsize = aead_setauthsize, |
@@ -1732,6 +1733,7 @@ static struct caam_alg_template driver_algs[] = { | |||
1732 | .name = "authenc(hmac(sha384),cbc(aes))", | 1733 | .name = "authenc(hmac(sha384),cbc(aes))", |
1733 | .driver_name = "authenc-hmac-sha384-cbc-aes-caam", | 1734 | .driver_name = "authenc-hmac-sha384-cbc-aes-caam", |
1734 | .blocksize = AES_BLOCK_SIZE, | 1735 | .blocksize = AES_BLOCK_SIZE, |
1736 | .type = CRYPTO_ALG_TYPE_AEAD, | ||
1735 | .template_aead = { | 1737 | .template_aead = { |
1736 | .setkey = aead_setkey, | 1738 | .setkey = aead_setkey, |
1737 | .setauthsize = aead_setauthsize, | 1739 | .setauthsize = aead_setauthsize, |
@@ -1810,6 +1812,7 @@ static struct caam_alg_template driver_algs[] = { | |||
1810 | .name = "authenc(hmac(sha224),cbc(des3_ede))", | 1812 | .name = "authenc(hmac(sha224),cbc(des3_ede))", |
1811 | .driver_name = "authenc-hmac-sha224-cbc-des3_ede-caam", | 1813 | .driver_name = "authenc-hmac-sha224-cbc-des3_ede-caam", |
1812 | .blocksize = DES3_EDE_BLOCK_SIZE, | 1814 | .blocksize = DES3_EDE_BLOCK_SIZE, |
1815 | .type = CRYPTO_ALG_TYPE_AEAD, | ||
1813 | .template_aead = { | 1816 | .template_aead = { |
1814 | .setkey = aead_setkey, | 1817 | .setkey = aead_setkey, |
1815 | .setauthsize = aead_setauthsize, | 1818 | .setauthsize = aead_setauthsize, |
@@ -1849,6 +1852,7 @@ static struct caam_alg_template driver_algs[] = { | |||
1849 | .name = "authenc(hmac(sha384),cbc(des3_ede))", | 1852 | .name = "authenc(hmac(sha384),cbc(des3_ede))", |
1850 | .driver_name = "authenc-hmac-sha384-cbc-des3_ede-caam", | 1853 | .driver_name = "authenc-hmac-sha384-cbc-des3_ede-caam", |
1851 | .blocksize = DES3_EDE_BLOCK_SIZE, | 1854 | .blocksize = DES3_EDE_BLOCK_SIZE, |
1855 | .type = CRYPTO_ALG_TYPE_AEAD, | ||
1852 | .template_aead = { | 1856 | .template_aead = { |
1853 | .setkey = aead_setkey, | 1857 | .setkey = aead_setkey, |
1854 | .setauthsize = aead_setauthsize, | 1858 | .setauthsize = aead_setauthsize, |
@@ -1926,6 +1930,7 @@ static struct caam_alg_template driver_algs[] = { | |||
1926 | .name = "authenc(hmac(sha224),cbc(des))", | 1930 | .name = "authenc(hmac(sha224),cbc(des))", |
1927 | .driver_name = "authenc-hmac-sha224-cbc-des-caam", | 1931 | .driver_name = "authenc-hmac-sha224-cbc-des-caam", |
1928 | .blocksize = DES_BLOCK_SIZE, | 1932 | .blocksize = DES_BLOCK_SIZE, |
1933 | .type = CRYPTO_ALG_TYPE_AEAD, | ||
1929 | .template_aead = { | 1934 | .template_aead = { |
1930 | .setkey = aead_setkey, | 1935 | .setkey = aead_setkey, |
1931 | .setauthsize = aead_setauthsize, | 1936 | .setauthsize = aead_setauthsize, |
@@ -1965,6 +1970,7 @@ static struct caam_alg_template driver_algs[] = { | |||
1965 | .name = "authenc(hmac(sha384),cbc(des))", | 1970 | .name = "authenc(hmac(sha384),cbc(des))", |
1966 | .driver_name = "authenc-hmac-sha384-cbc-des-caam", | 1971 | .driver_name = "authenc-hmac-sha384-cbc-des-caam", |
1967 | .blocksize = DES_BLOCK_SIZE, | 1972 | .blocksize = DES_BLOCK_SIZE, |
1973 | .type = CRYPTO_ALG_TYPE_AEAD, | ||
1968 | .template_aead = { | 1974 | .template_aead = { |
1969 | .setkey = aead_setkey, | 1975 | .setkey = aead_setkey, |
1970 | .setauthsize = aead_setauthsize, | 1976 | .setauthsize = aead_setauthsize, |
diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c index 32aba7a61503..5996521a1caf 100644 --- a/drivers/crypto/caam/caamhash.c +++ b/drivers/crypto/caam/caamhash.c | |||
@@ -411,7 +411,7 @@ static int ahash_set_sh_desc(struct crypto_ahash *ahash) | |||
411 | return 0; | 411 | return 0; |
412 | } | 412 | } |
413 | 413 | ||
414 | static u32 gen_split_hash_key(struct caam_hash_ctx *ctx, const u8 *key_in, | 414 | static int gen_split_hash_key(struct caam_hash_ctx *ctx, const u8 *key_in, |
415 | u32 keylen) | 415 | u32 keylen) |
416 | { | 416 | { |
417 | return gen_split_key(ctx->jrdev, ctx->key, ctx->split_key_len, | 417 | return gen_split_key(ctx->jrdev, ctx->key, ctx->split_key_len, |
@@ -420,7 +420,7 @@ static u32 gen_split_hash_key(struct caam_hash_ctx *ctx, const u8 *key_in, | |||
420 | } | 420 | } |
421 | 421 | ||
422 | /* Digest hash size if it is too large */ | 422 | /* Digest hash size if it is too large */ |
423 | static u32 hash_digest_key(struct caam_hash_ctx *ctx, const u8 *key_in, | 423 | static int hash_digest_key(struct caam_hash_ctx *ctx, const u8 *key_in, |
424 | u32 *keylen, u8 *key_out, u32 digestsize) | 424 | u32 *keylen, u8 *key_out, u32 digestsize) |
425 | { | 425 | { |
426 | struct device *jrdev = ctx->jrdev; | 426 | struct device *jrdev = ctx->jrdev; |
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 8acf00490fd5..6e94bcd94678 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c | |||
@@ -304,6 +304,9 @@ static int caam_probe(struct platform_device *pdev) | |||
304 | caam_remove(pdev); | 304 | caam_remove(pdev); |
305 | return ret; | 305 | return ret; |
306 | } | 306 | } |
307 | |||
308 | /* Enable RDB bit so that RNG works faster */ | ||
309 | setbits32(&topregs->ctrl.scfgr, SCFGR_RDBENABLE); | ||
307 | } | 310 | } |
308 | 311 | ||
309 | /* NOTE: RTIC detection ought to go here, around Si time */ | 312 | /* NOTE: RTIC detection ought to go here, around Si time */ |
diff --git a/drivers/crypto/caam/error.c b/drivers/crypto/caam/error.c index 30b8f74833d4..9f25f5296029 100644 --- a/drivers/crypto/caam/error.c +++ b/drivers/crypto/caam/error.c | |||
@@ -36,7 +36,7 @@ static void report_jump_idx(u32 status, char *outstr) | |||
36 | 36 | ||
37 | static void report_ccb_status(u32 status, char *outstr) | 37 | static void report_ccb_status(u32 status, char *outstr) |
38 | { | 38 | { |
39 | char *cha_id_list[] = { | 39 | static const char * const cha_id_list[] = { |
40 | "", | 40 | "", |
41 | "AES", | 41 | "AES", |
42 | "DES", | 42 | "DES", |
@@ -51,7 +51,7 @@ static void report_ccb_status(u32 status, char *outstr) | |||
51 | "ZUCE", | 51 | "ZUCE", |
52 | "ZUCA", | 52 | "ZUCA", |
53 | }; | 53 | }; |
54 | char *err_id_list[] = { | 54 | static const char * const err_id_list[] = { |
55 | "No error.", | 55 | "No error.", |
56 | "Mode error.", | 56 | "Mode error.", |
57 | "Data size error.", | 57 | "Data size error.", |
@@ -69,7 +69,7 @@ static void report_ccb_status(u32 status, char *outstr) | |||
69 | "Invalid CHA combination was selected", | 69 | "Invalid CHA combination was selected", |
70 | "Invalid CHA selected.", | 70 | "Invalid CHA selected.", |
71 | }; | 71 | }; |
72 | char *rng_err_id_list[] = { | 72 | static const char * const rng_err_id_list[] = { |
73 | "", | 73 | "", |
74 | "", | 74 | "", |
75 | "", | 75 | "", |
@@ -117,7 +117,7 @@ static void report_jump_status(u32 status, char *outstr) | |||
117 | 117 | ||
118 | static void report_deco_status(u32 status, char *outstr) | 118 | static void report_deco_status(u32 status, char *outstr) |
119 | { | 119 | { |
120 | const struct { | 120 | static const struct { |
121 | u8 value; | 121 | u8 value; |
122 | char *error_text; | 122 | char *error_text; |
123 | } desc_error_list[] = { | 123 | } desc_error_list[] = { |
@@ -245,7 +245,7 @@ static void report_cond_code_status(u32 status, char *outstr) | |||
245 | 245 | ||
246 | char *caam_jr_strstatus(char *outstr, u32 status) | 246 | char *caam_jr_strstatus(char *outstr, u32 status) |
247 | { | 247 | { |
248 | struct stat_src { | 248 | static const struct stat_src { |
249 | void (*report_ssed)(u32 status, char *outstr); | 249 | void (*report_ssed)(u32 status, char *outstr); |
250 | char *error; | 250 | char *error; |
251 | } status_src[] = { | 251 | } status_src[] = { |
diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index 5cd4c1b268a1..e4a16b741371 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h | |||
@@ -41,6 +41,7 @@ struct caam_jrentry_info { | |||
41 | /* Private sub-storage for a single JobR */ | 41 | /* Private sub-storage for a single JobR */ |
42 | struct caam_drv_private_jr { | 42 | struct caam_drv_private_jr { |
43 | struct device *parentdev; /* points back to controller dev */ | 43 | struct device *parentdev; /* points back to controller dev */ |
44 | struct platform_device *jr_pdev;/* points to platform device for JR */ | ||
44 | int ridx; | 45 | int ridx; |
45 | struct caam_job_ring __iomem *rregs; /* JobR's register space */ | 46 | struct caam_job_ring __iomem *rregs; /* JobR's register space */ |
46 | struct tasklet_struct irqtask; | 47 | struct tasklet_struct irqtask; |
diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 93d14070141a..b4aa773ecbc8 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c | |||
@@ -407,6 +407,7 @@ int caam_jr_shutdown(struct device *dev) | |||
407 | dma_free_coherent(dev, sizeof(struct jr_outentry) * JOBR_DEPTH, | 407 | dma_free_coherent(dev, sizeof(struct jr_outentry) * JOBR_DEPTH, |
408 | jrp->outring, outbusaddr); | 408 | jrp->outring, outbusaddr); |
409 | kfree(jrp->entinfo); | 409 | kfree(jrp->entinfo); |
410 | of_device_unregister(jrp->jr_pdev); | ||
410 | 411 | ||
411 | return ret; | 412 | return ret; |
412 | } | 413 | } |
@@ -454,6 +455,8 @@ int caam_jr_probe(struct platform_device *pdev, struct device_node *np, | |||
454 | kfree(jrpriv); | 455 | kfree(jrpriv); |
455 | return -EINVAL; | 456 | return -EINVAL; |
456 | } | 457 | } |
458 | |||
459 | jrpriv->jr_pdev = jr_pdev; | ||
457 | jrdev = &jr_pdev->dev; | 460 | jrdev = &jr_pdev->dev; |
458 | dev_set_drvdata(jrdev, jrpriv); | 461 | dev_set_drvdata(jrdev, jrpriv); |
459 | ctrlpriv->jrdev[ring] = jrdev; | 462 | ctrlpriv->jrdev[ring] = jrdev; |
@@ -472,6 +475,7 @@ int caam_jr_probe(struct platform_device *pdev, struct device_node *np, | |||
472 | /* Now do the platform independent part */ | 475 | /* Now do the platform independent part */ |
473 | error = caam_jr_init(jrdev); /* now turn on hardware */ | 476 | error = caam_jr_init(jrdev); /* now turn on hardware */ |
474 | if (error) { | 477 | if (error) { |
478 | of_device_unregister(jr_pdev); | ||
475 | kfree(jrpriv); | 479 | kfree(jrpriv); |
476 | return error; | 480 | return error; |
477 | } | 481 | } |
diff --git a/drivers/crypto/caam/key_gen.c b/drivers/crypto/caam/key_gen.c index f6dba10246c3..87138d2adb5f 100644 --- a/drivers/crypto/caam/key_gen.c +++ b/drivers/crypto/caam/key_gen.c | |||
@@ -44,7 +44,7 @@ Split key generation----------------------------------------------- | |||
44 | [06] 0x64260028 fifostr: class2 mdsplit-jdk len=40 | 44 | [06] 0x64260028 fifostr: class2 mdsplit-jdk len=40 |
45 | @0xffe04000 | 45 | @0xffe04000 |
46 | */ | 46 | */ |
47 | u32 gen_split_key(struct device *jrdev, u8 *key_out, int split_key_len, | 47 | int gen_split_key(struct device *jrdev, u8 *key_out, int split_key_len, |
48 | int split_key_pad_len, const u8 *key_in, u32 keylen, | 48 | int split_key_pad_len, const u8 *key_in, u32 keylen, |
49 | u32 alg_op) | 49 | u32 alg_op) |
50 | { | 50 | { |
diff --git a/drivers/crypto/caam/key_gen.h b/drivers/crypto/caam/key_gen.h index d95d290c6e8b..c5588f6d8109 100644 --- a/drivers/crypto/caam/key_gen.h +++ b/drivers/crypto/caam/key_gen.h | |||
@@ -12,6 +12,6 @@ struct split_key_result { | |||
12 | 12 | ||
13 | void split_key_done(struct device *dev, u32 *desc, u32 err, void *context); | 13 | void split_key_done(struct device *dev, u32 *desc, u32 err, void *context); |
14 | 14 | ||
15 | u32 gen_split_key(struct device *jrdev, u8 *key_out, int split_key_len, | 15 | int gen_split_key(struct device *jrdev, u8 *key_out, int split_key_len, |
16 | int split_key_pad_len, const u8 *key_in, u32 keylen, | 16 | int split_key_pad_len, const u8 *key_in, u32 keylen, |
17 | u32 alg_op); | 17 | u32 alg_op); |
diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 3223fc6d647c..cd6fedad9935 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h | |||
@@ -252,7 +252,8 @@ struct caam_ctrl { | |||
252 | /* Read/Writable */ | 252 | /* Read/Writable */ |
253 | u32 rsvd1; | 253 | u32 rsvd1; |
254 | u32 mcr; /* MCFG Master Config Register */ | 254 | u32 mcr; /* MCFG Master Config Register */ |
255 | u32 rsvd2[2]; | 255 | u32 rsvd2; |
256 | u32 scfgr; /* SCFGR, Security Config Register */ | ||
256 | 257 | ||
257 | /* Bus Access Configuration Section 010-11f */ | 258 | /* Bus Access Configuration Section 010-11f */ |
258 | /* Read/Writable */ | 259 | /* Read/Writable */ |
@@ -299,6 +300,7 @@ struct caam_ctrl { | |||
299 | #define MCFGR_WDFAIL 0x20000000 /* DECO watchdog force-fail */ | 300 | #define MCFGR_WDFAIL 0x20000000 /* DECO watchdog force-fail */ |
300 | #define MCFGR_DMA_RESET 0x10000000 | 301 | #define MCFGR_DMA_RESET 0x10000000 |
301 | #define MCFGR_LONG_PTR 0x00010000 /* Use >32-bit desc addressing */ | 302 | #define MCFGR_LONG_PTR 0x00010000 /* Use >32-bit desc addressing */ |
303 | #define SCFGR_RDBENABLE 0x00000400 | ||
302 | 304 | ||
303 | /* AXI read cache control */ | 305 | /* AXI read cache control */ |
304 | #define MCFGR_ARCACHE_SHIFT 12 | 306 | #define MCFGR_ARCACHE_SHIFT 12 |