Lines Matching refs:hace_dev
77 static void aspeed_ahash_fill_padding(struct aspeed_hace_dev *hace_dev, in aspeed_ahash_fill_padding() argument
83 AHASH_DBG(hace_dev, "rctx flags:0x%x\n", (u32)rctx->flags); in aspeed_ahash_fill_padding()
115 static int aspeed_ahash_dma_prepare(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_dma_prepare() argument
117 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_dma_prepare()
125 AHASH_DBG(hace_dev, "length:0x%x, remain:0x%x\n", length, remain); in aspeed_ahash_dma_prepare()
137 dev_warn(hace_dev->dev, "Hash data length is too large\n"); in aspeed_ahash_dma_prepare()
145 rctx->digest_dma_addr = dma_map_single(hace_dev->dev, rctx->digest, in aspeed_ahash_dma_prepare()
148 if (dma_mapping_error(hace_dev->dev, rctx->digest_dma_addr)) { in aspeed_ahash_dma_prepare()
149 dev_warn(hace_dev->dev, "dma_map() rctx digest error\n"); in aspeed_ahash_dma_prepare()
164 static int aspeed_ahash_dma_prepare_sg(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_dma_prepare_sg() argument
166 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_dma_prepare_sg()
177 AHASH_DBG(hace_dev, "%s:0x%x, %s:%zu, %s:0x%x, %s:0x%x\n", in aspeed_ahash_dma_prepare_sg()
181 sg_len = dma_map_sg(hace_dev->dev, rctx->src_sg, rctx->src_nents, in aspeed_ahash_dma_prepare_sg()
184 dev_warn(hace_dev->dev, "dma_map_sg() src error\n"); in aspeed_ahash_dma_prepare_sg()
190 rctx->digest_dma_addr = dma_map_single(hace_dev->dev, rctx->digest, in aspeed_ahash_dma_prepare_sg()
193 if (dma_mapping_error(hace_dev->dev, rctx->digest_dma_addr)) { in aspeed_ahash_dma_prepare_sg()
194 dev_warn(hace_dev->dev, "dma_map() rctx digest error\n"); in aspeed_ahash_dma_prepare_sg()
203 rctx->buffer_dma_addr = dma_map_single(hace_dev->dev, in aspeed_ahash_dma_prepare_sg()
207 if (dma_mapping_error(hace_dev->dev, rctx->buffer_dma_addr)) { in aspeed_ahash_dma_prepare_sg()
208 dev_warn(hace_dev->dev, "dma_map() rctx buffer error\n"); in aspeed_ahash_dma_prepare_sg()
259 dma_unmap_single(hace_dev->dev, rctx->buffer_dma_addr, in aspeed_ahash_dma_prepare_sg()
262 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_dma_prepare_sg()
265 dma_unmap_sg(hace_dev->dev, rctx->src_sg, rctx->src_nents, in aspeed_ahash_dma_prepare_sg()
271 static int aspeed_ahash_complete(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_complete() argument
273 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_complete()
276 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_complete()
280 crypto_finalize_hash_request(hace_dev->crypt_engine_hash, req, 0); in aspeed_ahash_complete()
289 static int aspeed_ahash_transfer(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_transfer() argument
291 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_transfer()
295 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_transfer()
297 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_transfer()
300 dma_unmap_single(hace_dev->dev, rctx->buffer_dma_addr, in aspeed_ahash_transfer()
305 return aspeed_ahash_complete(hace_dev); in aspeed_ahash_transfer()
311 static int aspeed_hace_ahash_trigger(struct aspeed_hace_dev *hace_dev, in aspeed_hace_ahash_trigger() argument
314 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_hace_ahash_trigger()
318 AHASH_DBG(hace_dev, "src_dma:%pad, digest_dma:%pad, length:%zu\n", in aspeed_hace_ahash_trigger()
325 ast_hace_write(hace_dev, hash_engine->src_dma, ASPEED_HACE_HASH_SRC); in aspeed_hace_ahash_trigger()
326 ast_hace_write(hace_dev, hash_engine->digest_dma, in aspeed_hace_ahash_trigger()
328 ast_hace_write(hace_dev, hash_engine->digest_dma, in aspeed_hace_ahash_trigger()
330 ast_hace_write(hace_dev, hash_engine->src_length, in aspeed_hace_ahash_trigger()
336 ast_hace_write(hace_dev, rctx->cmd, ASPEED_HACE_HASH_CMD); in aspeed_hace_ahash_trigger()
346 static int aspeed_ahash_hmac_resume(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_hmac_resume() argument
348 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_hmac_resume()
356 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_hmac_resume()
358 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_hmac_resume()
361 dma_unmap_single(hace_dev->dev, rctx->buffer_dma_addr, in aspeed_ahash_hmac_resume()
371 aspeed_ahash_fill_padding(hace_dev, rctx); in aspeed_ahash_hmac_resume()
374 rctx->digest_dma_addr = dma_map_single(hace_dev->dev, rctx->digest, in aspeed_ahash_hmac_resume()
377 if (dma_mapping_error(hace_dev->dev, rctx->digest_dma_addr)) { in aspeed_ahash_hmac_resume()
378 dev_warn(hace_dev->dev, "dma_map() rctx digest error\n"); in aspeed_ahash_hmac_resume()
383 rctx->buffer_dma_addr = dma_map_single(hace_dev->dev, rctx->buffer, in aspeed_ahash_hmac_resume()
386 if (dma_mapping_error(hace_dev->dev, rctx->buffer_dma_addr)) { in aspeed_ahash_hmac_resume()
387 dev_warn(hace_dev->dev, "dma_map() rctx buffer error\n"); in aspeed_ahash_hmac_resume()
396 return aspeed_hace_ahash_trigger(hace_dev, aspeed_ahash_transfer); in aspeed_ahash_hmac_resume()
399 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_hmac_resume()
405 static int aspeed_ahash_req_final(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_req_final() argument
407 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_req_final()
412 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_req_final()
414 aspeed_ahash_fill_padding(hace_dev, rctx); in aspeed_ahash_req_final()
416 rctx->digest_dma_addr = dma_map_single(hace_dev->dev, in aspeed_ahash_req_final()
420 if (dma_mapping_error(hace_dev->dev, rctx->digest_dma_addr)) { in aspeed_ahash_req_final()
421 dev_warn(hace_dev->dev, "dma_map() rctx digest error\n"); in aspeed_ahash_req_final()
426 rctx->buffer_dma_addr = dma_map_single(hace_dev->dev, in aspeed_ahash_req_final()
430 if (dma_mapping_error(hace_dev->dev, rctx->buffer_dma_addr)) { in aspeed_ahash_req_final()
431 dev_warn(hace_dev->dev, "dma_map() rctx buffer error\n"); in aspeed_ahash_req_final()
441 return aspeed_hace_ahash_trigger(hace_dev, in aspeed_ahash_req_final()
444 return aspeed_hace_ahash_trigger(hace_dev, aspeed_ahash_transfer); in aspeed_ahash_req_final()
447 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_req_final()
453 static int aspeed_ahash_update_resume_sg(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_update_resume_sg() argument
455 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_update_resume_sg()
459 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_update_resume_sg()
461 dma_unmap_sg(hace_dev->dev, rctx->src_sg, rctx->src_nents, in aspeed_ahash_update_resume_sg()
465 dma_unmap_single(hace_dev->dev, rctx->buffer_dma_addr, in aspeed_ahash_update_resume_sg()
469 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_update_resume_sg()
479 return aspeed_ahash_req_final(hace_dev); in aspeed_ahash_update_resume_sg()
481 return aspeed_ahash_complete(hace_dev); in aspeed_ahash_update_resume_sg()
484 static int aspeed_ahash_update_resume(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_update_resume() argument
486 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_update_resume()
490 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_update_resume()
492 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr, in aspeed_ahash_update_resume()
496 return aspeed_ahash_req_final(hace_dev); in aspeed_ahash_update_resume()
498 return aspeed_ahash_complete(hace_dev); in aspeed_ahash_update_resume()
501 static int aspeed_ahash_req_update(struct aspeed_hace_dev *hace_dev) in aspeed_ahash_req_update() argument
503 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine; in aspeed_ahash_req_update()
509 AHASH_DBG(hace_dev, "\n"); in aspeed_ahash_req_update()
511 if (hace_dev->version == AST2600_VERSION) { in aspeed_ahash_req_update()
519 ret = hash_engine->dma_prepare(hace_dev); in aspeed_ahash_req_update()
523 return aspeed_hace_ahash_trigger(hace_dev, resume); in aspeed_ahash_req_update()
526 static int aspeed_hace_hash_handle_queue(struct aspeed_hace_dev *hace_dev, in aspeed_hace_hash_handle_queue() argument
530 hace_dev->crypt_engine_hash, req); in aspeed_hace_hash_handle_queue()
539 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_ahash_do_request() local
543 hash_engine = &hace_dev->hash_engine; in aspeed_ahash_do_request()
547 ret = aspeed_ahash_req_update(hace_dev); in aspeed_ahash_do_request()
549 ret = aspeed_ahash_req_final(hace_dev); in aspeed_ahash_do_request()
563 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_ahash_prepare_request() local
566 hash_engine = &hace_dev->hash_engine; in aspeed_ahash_prepare_request()
569 if (hace_dev->version == AST2600_VERSION) in aspeed_ahash_prepare_request()
586 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_sham_update() local
588 AHASH_DBG(hace_dev, "req->nbytes: %d\n", req->nbytes); in aspeed_sham_update()
609 return aspeed_hace_hash_handle_queue(hace_dev, req); in aspeed_sham_update()
627 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_sham_final() local
629 AHASH_DBG(hace_dev, "req->nbytes:%d, rctx->total:%d\n", in aspeed_sham_final()
633 return aspeed_hace_hash_handle_queue(hace_dev, req); in aspeed_sham_final()
641 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_sham_finup() local
644 AHASH_DBG(hace_dev, "req->nbytes: %d\n", req->nbytes); in aspeed_sham_finup()
666 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_sham_init() local
669 AHASH_DBG(hace_dev, "%s: digest size:%d\n", in aspeed_sham_init()
725 dev_warn(tctx->hace_dev->dev, "digest size %d not support\n", in aspeed_sham_init()
755 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_sham_setkey() local
762 AHASH_DBG(hace_dev, "%s: keylen:%d\n", crypto_tfm_alg_name(&tfm->base), in aspeed_sham_setkey()
795 tctx->hace_dev = ast_alg->hace_dev; in aspeed_sham_cra_init()
809 dev_warn(ast_alg->hace_dev->dev, in aspeed_sham_cra_init()
822 struct aspeed_hace_dev *hace_dev = tctx->hace_dev; in aspeed_sham_cra_exit() local
824 AHASH_DBG(hace_dev, "%s\n", crypto_tfm_alg_name(tfm)); in aspeed_sham_cra_exit()
1192 void aspeed_unregister_hace_hash_algs(struct aspeed_hace_dev *hace_dev) in aspeed_unregister_hace_hash_algs() argument
1199 if (hace_dev->version != AST2600_VERSION) in aspeed_unregister_hace_hash_algs()
1206 void aspeed_register_hace_hash_algs(struct aspeed_hace_dev *hace_dev) in aspeed_register_hace_hash_algs() argument
1210 AHASH_DBG(hace_dev, "\n"); in aspeed_register_hace_hash_algs()
1213 aspeed_ahash_algs[i].hace_dev = hace_dev; in aspeed_register_hace_hash_algs()
1216 AHASH_DBG(hace_dev, "Failed to register %s\n", in aspeed_register_hace_hash_algs()
1221 if (hace_dev->version != AST2600_VERSION) in aspeed_register_hace_hash_algs()
1225 aspeed_ahash_algs_g6[i].hace_dev = hace_dev; in aspeed_register_hace_hash_algs()
1228 AHASH_DBG(hace_dev, "Failed to register %s\n", in aspeed_register_hace_hash_algs()