1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (C) 2012-2018 ARM Limited or its affiliates. */ 3 4 #ifndef __CC_IVGEN_H__ 5 #define __CC_IVGEN_H__ 6 7 #include "cc_hw_queue_defs.h" 8 9 #define CC_IVPOOL_SEQ_LEN 8 10 11 /*! 12 * Allocates iv-pool and maps resources. 13 * This function generates the first IV pool. 14 * 15 * \param drvdata Driver's private context 16 * 17 * \return int Zero for success, negative value otherwise. 18 */ 19 int cc_ivgen_init(struct cc_drvdata *drvdata); 20 21 /*! 22 * Free iv-pool and ivgen context. 23 * 24 * \param drvdata 25 */ 26 void cc_ivgen_fini(struct cc_drvdata *drvdata); 27 28 /*! 29 * Generates the initial pool in SRAM. 30 * This function should be invoked when resuming DX driver. 31 * 32 * \param drvdata 33 * 34 * \return int Zero for success, negative value otherwise. 35 */ 36 int cc_init_iv_sram(struct cc_drvdata *drvdata); 37 38 /*! 39 * Acquires 16 Bytes IV from the iv-pool 40 * 41 * \param drvdata Driver private context 42 * \param iv_out_dma Array of physical IV out addresses 43 * \param iv_out_dma_len Length of iv_out_dma array (additional elements of 44 * iv_out_dma array are ignore) 45 * \param iv_out_size May be 8 or 16 bytes long 46 * \param iv_seq IN/OUT array to the descriptors sequence 47 * \param iv_seq_len IN/OUT pointer to the sequence length 48 * 49 * \return int Zero for success, negative value otherwise. 50 */ 51 int cc_get_iv(struct cc_drvdata *drvdata, dma_addr_t iv_out_dma[], 52 unsigned int iv_out_dma_len, unsigned int iv_out_size, 53 struct cc_hw_desc iv_seq[], unsigned int *iv_seq_len); 54 55 #endif /*__CC_IVGEN_H__*/ 56