49 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.4 */5 6#ifndef _DMA_H_7#define _DMA_H_8 9#include <linux/dmaengine.h>10 11/* maximum data transfer block size between BAM and CE */12#define QCE_BAM_BURST_SIZE 6413 14#define QCE_AUTHIV_REGS_CNT 1615#define QCE_AUTH_BYTECOUNT_REGS_CNT 416#define QCE_CNTRIV_REGS_CNT 417 18struct qce_result_dump {19 u32 auth_iv[QCE_AUTHIV_REGS_CNT];20 u32 auth_byte_count[QCE_AUTH_BYTECOUNT_REGS_CNT];21 u32 encr_cntr_iv[QCE_CNTRIV_REGS_CNT];22 u32 status;23 u32 status2;24};25 26#define QCE_IGNORE_BUF_SZ (2 * QCE_BAM_BURST_SIZE)27#define QCE_RESULT_BUF_SZ \28 ALIGN(sizeof(struct qce_result_dump), QCE_BAM_BURST_SIZE)29 30struct qce_dma_data {31 struct dma_chan *txchan;32 struct dma_chan *rxchan;33 struct qce_result_dump *result_buf;34 void *ignore_buf;35};36 37int qce_dma_request(struct device *dev, struct qce_dma_data *dma);38void qce_dma_release(struct qce_dma_data *dma);39int qce_dma_prep_sgs(struct qce_dma_data *dma, struct scatterlist *sg_in,40 int in_ents, struct scatterlist *sg_out, int out_ents,41 dma_async_tx_callback cb, void *cb_param);42void qce_dma_issue_pending(struct qce_dma_data *dma);43int qce_dma_terminate_all(struct qce_dma_data *dma);44struct scatterlist *45qce_sgtable_add(struct sg_table *sgt, struct scatterlist *sg_add,46 unsigned int max_len);47 48#endif /* _DMA_H_ */49