cc_buffer_mgr.h (1915B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright (C) 2012-2019 ARM Limited (or its affiliates). */ 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 15enum cc_req_dma_buf_type { 16 CC_DMA_BUF_NULL = 0, 17 CC_DMA_BUF_DLLI, 18 CC_DMA_BUF_MLLI 19}; 20 21enum cc_sg_cpy_direct { 22 CC_SG_TO_BUF = 0, 23 CC_SG_FROM_BUF = 1 24}; 25 26struct cc_mlli { 27 u32 sram_addr; 28 unsigned int mapped_nents; 29 unsigned int nents; //sg nents 30 unsigned int mlli_nents; //mlli nents might be different than the above 31}; 32 33struct mlli_params { 34 struct dma_pool *curr_pool; 35 void *mlli_virt_addr; 36 dma_addr_t mlli_dma_addr; 37 u32 mlli_len; 38}; 39 40int cc_buffer_mgr_init(struct cc_drvdata *drvdata); 41 42int cc_buffer_mgr_fini(struct cc_drvdata *drvdata); 43 44int cc_map_cipher_request(struct cc_drvdata *drvdata, void *ctx, 45 unsigned int ivsize, unsigned int nbytes, 46 void *info, struct scatterlist *src, 47 struct scatterlist *dst, gfp_t flags); 48 49void cc_unmap_cipher_request(struct device *dev, void *ctx, unsigned int ivsize, 50 struct scatterlist *src, struct scatterlist *dst); 51 52int cc_map_aead_request(struct cc_drvdata *drvdata, struct aead_request *req); 53 54void cc_unmap_aead_request(struct device *dev, struct aead_request *req); 55 56int cc_map_hash_request_final(struct cc_drvdata *drvdata, void *ctx, 57 struct scatterlist *src, unsigned int nbytes, 58 bool do_update, gfp_t flags); 59 60int cc_map_hash_request_update(struct cc_drvdata *drvdata, void *ctx, 61 struct scatterlist *src, unsigned int nbytes, 62 unsigned int block_size, gfp_t flags); 63 64void cc_unmap_hash_request(struct device *dev, void *ctx, 65 struct scatterlist *src, bool do_revert); 66 67void cc_copy_sg_portion(struct device *dev, u8 *dest, struct scatterlist *sg, 68 u32 to_skip, u32 end, enum cc_sg_cpy_direct direct); 69 70#endif /*__BUFFER_MGR_H__*/