88 *
99 * Some ideas are from marvell/cesa.c and s5p-sss.c driver.
1010 */
11- #include <linux/device.h>
11+
1212#include <asm/unaligned.h>
13+ #include <crypto/internal/hash.h>
14+ #include <linux/device.h>
15+ #include <linux/err.h>
1316#include <linux/iopoll.h>
17+ #include <linux/kernel.h>
18+ #include <linux/module.h>
19+ #include <linux/string.h>
1420#include "rk3288_crypto.h"
1521
1622/*
@@ -40,8 +46,8 @@ static int rk_ahash_digest_fb(struct ahash_request *areq)
4046 struct rk_ahash_rctx * rctx = ahash_request_ctx (areq );
4147 struct crypto_ahash * tfm = crypto_ahash_reqtfm (areq );
4248 struct rk_ahash_ctx * tfmctx = crypto_ahash_ctx (tfm );
43- struct ahash_alg * alg = __crypto_ahash_alg (tfm -> base . __crt_alg );
44- struct rk_crypto_tmp * algt = container_of (alg , struct rk_crypto_tmp , alg .hash );
49+ struct ahash_alg * alg = crypto_ahash_alg (tfm );
50+ struct rk_crypto_tmp * algt = container_of (alg , struct rk_crypto_tmp , alg .hash . base );
4551
4652 algt -> stat_fb ++ ;
4753
@@ -254,8 +260,8 @@ static int rk_hash_run(struct crypto_engine *engine, void *breq)
254260 struct ahash_request * areq = container_of (breq , struct ahash_request , base );
255261 struct crypto_ahash * tfm = crypto_ahash_reqtfm (areq );
256262 struct rk_ahash_rctx * rctx = ahash_request_ctx (areq );
257- struct ahash_alg * alg = __crypto_ahash_alg (tfm -> base . __crt_alg );
258- struct rk_crypto_tmp * algt = container_of (alg , struct rk_crypto_tmp , alg .hash );
263+ struct ahash_alg * alg = crypto_ahash_alg (tfm );
264+ struct rk_crypto_tmp * algt = container_of (alg , struct rk_crypto_tmp , alg .hash . base );
259265 struct scatterlist * sg = areq -> src ;
260266 struct rk_crypto_info * rkc = rctx -> dev ;
261267 int err ;
@@ -335,12 +341,12 @@ static int rk_hash_run(struct crypto_engine *engine, void *breq)
335341 return 0 ;
336342}
337343
338- static int rk_cra_hash_init (struct crypto_tfm * tfm )
344+ static int rk_hash_init_tfm (struct crypto_ahash * tfm )
339345{
340- struct rk_ahash_ctx * tctx = crypto_tfm_ctx (tfm );
341- const char * alg_name = crypto_tfm_alg_name (tfm );
342- struct ahash_alg * alg = __crypto_ahash_alg (tfm -> __crt_alg );
343- struct rk_crypto_tmp * algt = container_of (alg , struct rk_crypto_tmp , alg .hash );
346+ struct rk_ahash_ctx * tctx = crypto_ahash_ctx (tfm );
347+ const char * alg_name = crypto_ahash_alg_name (tfm );
348+ struct ahash_alg * alg = crypto_ahash_alg (tfm );
349+ struct rk_crypto_tmp * algt = container_of (alg , struct rk_crypto_tmp , alg .hash . base );
344350
345351 /* for fallback */
346352 tctx -> fallback_tfm = crypto_alloc_ahash (alg_name , 0 ,
@@ -350,32 +356,32 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm)
350356 return PTR_ERR (tctx -> fallback_tfm );
351357 }
352358
353- crypto_ahash_set_reqsize (__crypto_ahash_cast ( tfm ) ,
359+ crypto_ahash_set_reqsize (tfm ,
354360 sizeof (struct rk_ahash_rctx ) +
355361 crypto_ahash_reqsize (tctx -> fallback_tfm ));
356362
357- tctx -> enginectx .op .do_one_request = rk_hash_run ;
358-
359363 return 0 ;
360364}
361365
362- static void rk_cra_hash_exit (struct crypto_tfm * tfm )
366+ static void rk_hash_exit_tfm (struct crypto_ahash * tfm )
363367{
364- struct rk_ahash_ctx * tctx = crypto_tfm_ctx (tfm );
368+ struct rk_ahash_ctx * tctx = crypto_ahash_ctx (tfm );
365369
366370 crypto_free_ahash (tctx -> fallback_tfm );
367371}
368372
369373struct rk_crypto_tmp rk_ahash_sha1 = {
370374 .type = CRYPTO_ALG_TYPE_AHASH ,
371- .alg .hash = {
375+ .alg .hash . base = {
372376 .init = rk_ahash_init ,
373377 .update = rk_ahash_update ,
374378 .final = rk_ahash_final ,
375379 .finup = rk_ahash_finup ,
376380 .export = rk_ahash_export ,
377381 .import = rk_ahash_import ,
378382 .digest = rk_ahash_digest ,
383+ .init_tfm = rk_hash_init_tfm ,
384+ .exit_tfm = rk_hash_exit_tfm ,
379385 .halg = {
380386 .digestsize = SHA1_DIGEST_SIZE ,
381387 .statesize = sizeof (struct sha1_state ),
@@ -388,24 +394,27 @@ struct rk_crypto_tmp rk_ahash_sha1 = {
388394 .cra_blocksize = SHA1_BLOCK_SIZE ,
389395 .cra_ctxsize = sizeof (struct rk_ahash_ctx ),
390396 .cra_alignmask = 3 ,
391- .cra_init = rk_cra_hash_init ,
392- .cra_exit = rk_cra_hash_exit ,
393397 .cra_module = THIS_MODULE ,
394398 }
395399 }
396- }
400+ },
401+ .alg .hash .op = {
402+ .do_one_request = rk_hash_run ,
403+ },
397404};
398405
399406struct rk_crypto_tmp rk_ahash_sha256 = {
400407 .type = CRYPTO_ALG_TYPE_AHASH ,
401- .alg .hash = {
408+ .alg .hash . base = {
402409 .init = rk_ahash_init ,
403410 .update = rk_ahash_update ,
404411 .final = rk_ahash_final ,
405412 .finup = rk_ahash_finup ,
406413 .export = rk_ahash_export ,
407414 .import = rk_ahash_import ,
408415 .digest = rk_ahash_digest ,
416+ .init_tfm = rk_hash_init_tfm ,
417+ .exit_tfm = rk_hash_exit_tfm ,
409418 .halg = {
410419 .digestsize = SHA256_DIGEST_SIZE ,
411420 .statesize = sizeof (struct sha256_state ),
@@ -418,24 +427,27 @@ struct rk_crypto_tmp rk_ahash_sha256 = {
418427 .cra_blocksize = SHA256_BLOCK_SIZE ,
419428 .cra_ctxsize = sizeof (struct rk_ahash_ctx ),
420429 .cra_alignmask = 3 ,
421- .cra_init = rk_cra_hash_init ,
422- .cra_exit = rk_cra_hash_exit ,
423430 .cra_module = THIS_MODULE ,
424431 }
425432 }
426- }
433+ },
434+ .alg .hash .op = {
435+ .do_one_request = rk_hash_run ,
436+ },
427437};
428438
429439struct rk_crypto_tmp rk_ahash_md5 = {
430440 .type = CRYPTO_ALG_TYPE_AHASH ,
431- .alg .hash = {
441+ .alg .hash . base = {
432442 .init = rk_ahash_init ,
433443 .update = rk_ahash_update ,
434444 .final = rk_ahash_final ,
435445 .finup = rk_ahash_finup ,
436446 .export = rk_ahash_export ,
437447 .import = rk_ahash_import ,
438448 .digest = rk_ahash_digest ,
449+ .init_tfm = rk_hash_init_tfm ,
450+ .exit_tfm = rk_hash_exit_tfm ,
439451 .halg = {
440452 .digestsize = MD5_DIGEST_SIZE ,
441453 .statesize = sizeof (struct md5_state ),
@@ -448,10 +460,11 @@ struct rk_crypto_tmp rk_ahash_md5 = {
448460 .cra_blocksize = SHA1_BLOCK_SIZE ,
449461 .cra_ctxsize = sizeof (struct rk_ahash_ctx ),
450462 .cra_alignmask = 3 ,
451- .cra_init = rk_cra_hash_init ,
452- .cra_exit = rk_cra_hash_exit ,
453463 .cra_module = THIS_MODULE ,
454464 }
455465 }
456- }
466+ },
467+ .alg .hash .op = {
468+ .do_one_request = rk_hash_run ,
469+ },
457470};
0 commit comments