Commit | Line | Data |
---|---|---|
4c3f9727 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
03963cae | 2 | /* Copyright (C) 2012-2019 ARM Limited (or its affiliates). */ |
4c3f9727 GBY |
3 | |
4 | /* \file cc_buffer_mgr.h | |
5 | * Buffer Manager | |
6 | */ | |
7 | ||
8 | #ifndef __CC_BUFFER_MGR_H__ | |
9 | #define __CC_BUFFER_MGR_H__ | |
10 | ||
11 | #include <crypto/algapi.h> | |
12 | ||
13 | #include "cc_driver.h" | |
14 | ||
15 | enum cc_req_dma_buf_type { | |
16 | CC_DMA_BUF_NULL = 0, | |
17 | CC_DMA_BUF_DLLI, | |
18 | CC_DMA_BUF_MLLI | |
19 | }; | |
20 | ||
21 | enum cc_sg_cpy_direct { | |
22 | CC_SG_TO_BUF = 0, | |
23 | CC_SG_FROM_BUF = 1 | |
24 | }; | |
25 | ||
26 | struct cc_mlli { | |
27 | cc_sram_addr_t sram_addr; | |
28 | unsigned int nents; //sg nents | |
29 | unsigned int mlli_nents; //mlli nents might be different than the above | |
30 | }; | |
31 | ||
32 | struct mlli_params { | |
33 | struct dma_pool *curr_pool; | |
34 | u8 *mlli_virt_addr; | |
35 | dma_addr_t mlli_dma_addr; | |
36 | u32 mlli_len; | |
37 | }; | |
38 | ||
39 | int cc_buffer_mgr_init(struct cc_drvdata *drvdata); | |
40 | ||
41 | int cc_buffer_mgr_fini(struct cc_drvdata *drvdata); | |
42 | ||
63ee04c8 GBY |
43 | int cc_map_cipher_request(struct cc_drvdata *drvdata, void *ctx, |
44 | unsigned int ivsize, unsigned int nbytes, | |
45 | void *info, struct scatterlist *src, | |
46 | struct scatterlist *dst, gfp_t flags); | |
47 | ||
48 | void cc_unmap_cipher_request(struct device *dev, void *ctx, unsigned int ivsize, | |
49 | struct scatterlist *src, struct scatterlist *dst); | |
50 | ||
ff27e85a GBY |
51 | int cc_map_aead_request(struct cc_drvdata *drvdata, struct aead_request *req); |
52 | ||
53 | void cc_unmap_aead_request(struct device *dev, struct aead_request *req); | |
54 | ||
4c3f9727 GBY |
55 | int cc_map_hash_request_final(struct cc_drvdata *drvdata, void *ctx, |
56 | struct scatterlist *src, unsigned int nbytes, | |
57 | bool do_update, gfp_t flags); | |
58 | ||
59 | int cc_map_hash_request_update(struct cc_drvdata *drvdata, void *ctx, | |
60 | struct scatterlist *src, unsigned int nbytes, | |
61 | unsigned int block_size, gfp_t flags); | |
62 | ||
63 | void cc_unmap_hash_request(struct device *dev, void *ctx, | |
64 | struct scatterlist *src, bool do_revert); | |
65 | ||
66 | void cc_copy_sg_portion(struct device *dev, u8 *dest, struct scatterlist *sg, | |
67 | u32 to_skip, u32 end, enum cc_sg_cpy_direct direct); | |
68 | ||
69 | void cc_zero_sgl(struct scatterlist *sgl, u32 data_len); | |
70 | ||
71 | #endif /*__BUFFER_MGR_H__*/ |