18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/* Copyright (C) 2012-2019 ARM Limited (or its affiliates). */
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci/* \file cc_cipher.h
58c2ecf20Sopenharmony_ci * ARM CryptoCell Cipher Crypto API
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#ifndef __CC_CIPHER_H__
98c2ecf20Sopenharmony_ci#define __CC_CIPHER_H__
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/kernel.h>
128c2ecf20Sopenharmony_ci#include <crypto/algapi.h>
138c2ecf20Sopenharmony_ci#include "cc_driver.h"
148c2ecf20Sopenharmony_ci#include "cc_buffer_mgr.h"
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_cistruct cipher_req_ctx {
178c2ecf20Sopenharmony_ci	struct async_gen_req_ctx gen_ctx;
188c2ecf20Sopenharmony_ci	enum cc_req_dma_buf_type dma_buf_type;
198c2ecf20Sopenharmony_ci	u32 in_nents;
208c2ecf20Sopenharmony_ci	u32 in_mlli_nents;
218c2ecf20Sopenharmony_ci	u32 out_nents;
228c2ecf20Sopenharmony_ci	u32 out_mlli_nents;
238c2ecf20Sopenharmony_ci	u8 *iv;
248c2ecf20Sopenharmony_ci	struct mlli_params mlli_params;
258c2ecf20Sopenharmony_ci};
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ciint cc_cipher_alloc(struct cc_drvdata *drvdata);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciint cc_cipher_free(struct cc_drvdata *drvdata);
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_cistruct cc_hkey_info {
328c2ecf20Sopenharmony_ci	u16 keylen;
338c2ecf20Sopenharmony_ci	u8 hw_key1;
348c2ecf20Sopenharmony_ci	u8 hw_key2;
358c2ecf20Sopenharmony_ci} __packed;
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci#define CC_HW_KEY_SIZE sizeof(struct cc_hkey_info)
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci#endif /*__CC_CIPHER_H__*/
40