Lines Matching refs:hace_dev

63 static int aspeed_ahash_req_update(struct aspeed_hace_dev *hace_dev);
117 static int aspeed_ahash_fill_padding(struct aspeed_hace_dev *hace_dev,
123 AHASH_DBG(hace_dev, "rctx flags:0x%x\n", (u32)rctx->flags);
162 static int aspeed_ahash_dma_prepare(struct aspeed_hace_dev *hace_dev)
164 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine;
173 AHASH_DBG(hace_dev, "length:0x%x, remain:0x%x\n", length, remain);
190 hace_dev, rctx, hash_engine->ahash_src_addr + length);
192 rctx->digest_dma_addr = dma_map_single(hace_dev->dev, rctx->digest,
195 if (dma_mapping_error(hace_dev->dev, rctx->digest_dma_addr)) {
196 dev_warn(hace_dev->dev, "dma_map() rctx digest error\n");
211 static int aspeed_ahash_dma_prepare_sg(struct aspeed_hace_dev *hace_dev)
213 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine;
228 AHASH_DBG(hace_dev, "%s:0x%x, %s:0x%x, %s:0x%x\n",
232 sg_len = dma_map_sg(hace_dev->dev, rctx->src_sg, rctx->src_nents,
235 dev_warn(hace_dev->dev, "dma_map_sg() src error\n");
243 rctx->digest_dma_addr = dma_map_single(hace_dev->dev, rctx->digest,
246 if (dma_mapping_error(hace_dev->dev, rctx->digest_dma_addr)) {
247 dev_warn(hace_dev->dev, "dma_map() rctx digest error\n");
286 int len = aspeed_ahash_fill_padding(hace_dev, rctx,
290 rctx->buffer_dma_addr = dma_map_single(hace_dev->dev,
294 if (dma_mapping_error(hace_dev->dev, rctx->buffer_dma_addr)) {
295 dev_warn(hace_dev->dev, "dma_map() rctx buffer error\n");
313 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr,
316 dma_unmap_sg(hace_dev->dev, rctx->src_sg, rctx->src_nents,
322 static int aspeed_ahash_complete(struct aspeed_hace_dev *hace_dev)
324 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine;
328 AHASH_DBG(hace_dev, "\n");
330 dma_unmap_single(hace_dev->dev, rctx->digest_dma_addr,
335 return aspeed_ahash_req_update(hace_dev);
342 crypto_finalize_hash_request(hace_dev->crypt_engine_hash, req,
351 static int aspeed_hace_ahash_trigger(struct aspeed_hace_dev *hace_dev,
354 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine;
358 AHASH_DBG(hace_dev, "src_dma:%pad, digest_dma:%pad, length:%zu\n",
365 ast_hace_write(hace_dev, hash_engine->src_dma, ASPEED_HACE_HASH_SRC);
366 ast_hace_write(hace_dev, hash_engine->digest_dma,
368 ast_hace_write(hace_dev, hash_engine->digest_dma,
370 ast_hace_write(hace_dev, hash_engine->src_length,
376 ast_hace_write(hace_dev, rctx->cmd, ASPEED_HACE_HASH_CMD);
381 static int aspeed_ahash_update_resume_sg(struct aspeed_hace_dev *hace_dev)
383 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine;
387 AHASH_DBG(hace_dev, "\n");
389 dma_unmap_sg(hace_dev->dev, rctx->src_sg, rctx->src_nents,
393 dma_unmap_single(hace_dev->dev, rctx->buffer_dma_addr,
398 return aspeed_ahash_complete(hace_dev);
401 static int aspeed_ahash_req_update(struct aspeed_hace_dev *hace_dev)
403 struct aspeed_engine_hash *hash_engine = &hace_dev->hash_engine;
409 AHASH_DBG(hace_dev, "\n");
411 if (hace_dev->version == AST2600_VERSION) {
419 ret = hash_engine->dma_prepare(hace_dev);
423 return aspeed_hace_ahash_trigger(hace_dev, resume);
426 static int aspeed_hace_hash_handle_queue(struct aspeed_hace_dev *hace_dev,
430 hace_dev->crypt_engine_hash, req);
464 struct aspeed_hace_dev *hace_dev = tctx->hace_dev;
468 hash_engine = &hace_dev->hash_engine;
471 ret = aspeed_ahash_req_update(hace_dev);
484 struct aspeed_hace_dev *hace_dev = tctx->hace_dev;
487 hash_engine = &hace_dev->hash_engine;
490 if (hace_dev->version == AST2600_VERSION)
507 struct aspeed_hace_dev *hace_dev = tctx->hace_dev;
509 AHASH_DBG(hace_dev, "req->nbytes: %d\n", req->nbytes);
516 return aspeed_hace_hash_handle_queue(hace_dev, req);
524 struct aspeed_hace_dev *hace_dev = tctx->hace_dev;
526 AHASH_DBG(hace_dev, "req->nbytes: %d\n", req->nbytes);
538 struct aspeed_hace_dev *hace_dev = tctx->hace_dev;
540 AHASH_DBG(hace_dev, "%s: digest size:%d\n",
591 dev_warn(tctx->hace_dev->dev, "digest size %d not support\n",
615 tctx->hace_dev = ast_alg->hace_dev;
786 void aspeed_unregister_hace_hash_algs(struct aspeed_hace_dev *hace_dev)
793 if (hace_dev->version != AST2600_VERSION)
800 void aspeed_register_hace_hash_algs(struct aspeed_hace_dev *hace_dev)
804 AHASH_DBG(hace_dev, "\n");
807 aspeed_ahash_algs[i].hace_dev = hace_dev;
810 AHASH_DBG(hace_dev, "Failed to register %s\n",
815 if (hace_dev->version != AST2600_VERSION)
819 aspeed_ahash_algs_g6[i].hace_dev = hace_dev;
822 AHASH_DBG(hace_dev, "Failed to register %s\n",