crypto: engine - Move struct crypto_engine into internal/engine.h
[platform/kernel/linux-starfive.git] / include / crypto / engine.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Crypto engine API
4  *
5  * Copyright (c) 2016 Baolin Wang <baolin.wang@linaro.org>
6  */
7 #ifndef _CRYPTO_ENGINE_H
8 #define _CRYPTO_ENGINE_H
9
10 #include <linux/types.h>
11
12 struct aead_request;
13 struct ahash_request;
14 struct akcipher_request;
15 struct crypto_engine;
16 struct device;
17 struct kpp_request;
18 struct skcipher_request;
19
20 /*
21  * struct crypto_engine_op - crypto hardware engine operations
22  * @do_one_request: do encryption for current request
23  */
24 struct crypto_engine_op {
25         int (*do_one_request)(struct crypto_engine *engine,
26                               void *areq);
27 };
28
29 struct crypto_engine_ctx {
30         struct crypto_engine_op op;
31 };
32
33 int crypto_transfer_aead_request_to_engine(struct crypto_engine *engine,
34                                            struct aead_request *req);
35 int crypto_transfer_akcipher_request_to_engine(struct crypto_engine *engine,
36                                                struct akcipher_request *req);
37 int crypto_transfer_hash_request_to_engine(struct crypto_engine *engine,
38                                                struct ahash_request *req);
39 int crypto_transfer_kpp_request_to_engine(struct crypto_engine *engine,
40                                           struct kpp_request *req);
41 int crypto_transfer_skcipher_request_to_engine(struct crypto_engine *engine,
42                                                struct skcipher_request *req);
43 void crypto_finalize_aead_request(struct crypto_engine *engine,
44                                   struct aead_request *req, int err);
45 void crypto_finalize_akcipher_request(struct crypto_engine *engine,
46                                       struct akcipher_request *req, int err);
47 void crypto_finalize_hash_request(struct crypto_engine *engine,
48                                   struct ahash_request *req, int err);
49 void crypto_finalize_kpp_request(struct crypto_engine *engine,
50                                  struct kpp_request *req, int err);
51 void crypto_finalize_skcipher_request(struct crypto_engine *engine,
52                                       struct skcipher_request *req, int err);
53 int crypto_engine_start(struct crypto_engine *engine);
54 int crypto_engine_stop(struct crypto_engine *engine);
55 struct crypto_engine *crypto_engine_alloc_init(struct device *dev, bool rt);
56 struct crypto_engine *crypto_engine_alloc_init_and_set(struct device *dev,
57                                                        bool retry_support,
58                                                        int (*cbk_do_batch)(struct crypto_engine *engine),
59                                                        bool rt, int qlen);
60 int crypto_engine_exit(struct crypto_engine *engine);
61
62 #endif /* _CRYPTO_ENGINE_H */