163ee04c8SGilad Ben-Yossef /* SPDX-License-Identifier: GPL-2.0 */ 263ee04c8SGilad Ben-Yossef /* Copyright (C) 2012-2018 ARM Limited or its affiliates. */ 363ee04c8SGilad Ben-Yossef 463ee04c8SGilad Ben-Yossef /* \file cc_cipher.h 563ee04c8SGilad Ben-Yossef * ARM CryptoCell Cipher Crypto API 663ee04c8SGilad Ben-Yossef */ 763ee04c8SGilad Ben-Yossef 863ee04c8SGilad Ben-Yossef #ifndef __CC_CIPHER_H__ 963ee04c8SGilad Ben-Yossef #define __CC_CIPHER_H__ 1063ee04c8SGilad Ben-Yossef 1163ee04c8SGilad Ben-Yossef #include <linux/kernel.h> 1263ee04c8SGilad Ben-Yossef #include <crypto/algapi.h> 1363ee04c8SGilad Ben-Yossef #include "cc_driver.h" 1463ee04c8SGilad Ben-Yossef #include "cc_buffer_mgr.h" 1563ee04c8SGilad Ben-Yossef 1663ee04c8SGilad Ben-Yossef /* Crypto cipher flags */ 1763ee04c8SGilad Ben-Yossef #define CC_CRYPTO_CIPHER_KEY_KFDE0 BIT(0) 1863ee04c8SGilad Ben-Yossef #define CC_CRYPTO_CIPHER_KEY_KFDE1 BIT(1) 1963ee04c8SGilad Ben-Yossef #define CC_CRYPTO_CIPHER_KEY_KFDE2 BIT(2) 2063ee04c8SGilad Ben-Yossef #define CC_CRYPTO_CIPHER_KEY_KFDE3 BIT(3) 2163ee04c8SGilad Ben-Yossef #define CC_CRYPTO_CIPHER_DU_SIZE_512B BIT(4) 2263ee04c8SGilad Ben-Yossef 2363ee04c8SGilad Ben-Yossef #define CC_CRYPTO_CIPHER_KEY_KFDE_MASK (CC_CRYPTO_CIPHER_KEY_KFDE0 | \ 2463ee04c8SGilad Ben-Yossef CC_CRYPTO_CIPHER_KEY_KFDE1 | \ 2563ee04c8SGilad Ben-Yossef CC_CRYPTO_CIPHER_KEY_KFDE2 | \ 2663ee04c8SGilad Ben-Yossef CC_CRYPTO_CIPHER_KEY_KFDE3) 2763ee04c8SGilad Ben-Yossef 2863ee04c8SGilad Ben-Yossef struct cipher_req_ctx { 2963ee04c8SGilad Ben-Yossef struct async_gen_req_ctx gen_ctx; 3063ee04c8SGilad Ben-Yossef enum cc_req_dma_buf_type dma_buf_type; 3163ee04c8SGilad Ben-Yossef u32 in_nents; 3263ee04c8SGilad Ben-Yossef u32 in_mlli_nents; 3363ee04c8SGilad Ben-Yossef u32 out_nents; 3463ee04c8SGilad Ben-Yossef u32 out_mlli_nents; 3563ee04c8SGilad Ben-Yossef u8 *backup_info; /*store iv for generated IV flow*/ 3663ee04c8SGilad Ben-Yossef u8 *iv; 3763ee04c8SGilad Ben-Yossef bool is_giv; 3863ee04c8SGilad Ben-Yossef struct mlli_params mlli_params; 3963ee04c8SGilad Ben-Yossef }; 4063ee04c8SGilad Ben-Yossef 4163ee04c8SGilad Ben-Yossef int cc_cipher_alloc(struct cc_drvdata *drvdata); 4263ee04c8SGilad Ben-Yossef 4363ee04c8SGilad Ben-Yossef int cc_cipher_free(struct cc_drvdata *drvdata); 4463ee04c8SGilad Ben-Yossef 4563ee04c8SGilad Ben-Yossef struct arm_hw_key_info { 4663ee04c8SGilad Ben-Yossef int hw_key1; 4763ee04c8SGilad Ben-Yossef int hw_key2; 4863ee04c8SGilad Ben-Yossef }; 4963ee04c8SGilad Ben-Yossef 5063ee04c8SGilad Ben-Yossef /* 5163ee04c8SGilad Ben-Yossef * This is a stub function that will replaced when we 5263ee04c8SGilad Ben-Yossef * implement secure keys 5363ee04c8SGilad Ben-Yossef */ 5463ee04c8SGilad Ben-Yossef static inline bool cc_is_hw_key(struct crypto_tfm *tfm) 5563ee04c8SGilad Ben-Yossef { 5663ee04c8SGilad Ben-Yossef return false; 5763ee04c8SGilad Ben-Yossef } 5863ee04c8SGilad Ben-Yossef 5963ee04c8SGilad Ben-Yossef #endif /*__CC_CIPHER_H__*/ 60