nt9856x/BSP/u-boot/arch/arm/include/asm/arch-nvt-na51000_a64/crypto.h
2023-03-28 15:07:53 +08:00

85 lines
2.3 KiB
C
Executable File

/*
* Copyright (C) 2014 Novatek Microelectronics Corp. All rights reserved.
* Author: SP-KSW <SP_KSW_MailGrp@novatek.com.tw>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef __ARCH_CRYPTO_H_
#define __ARCH_CRYPTO_H_
#include <asm/nvt-common/nvt_types.h>
#include <asm/arch/efuse_protected.h>
/**
Crypto engine crypto mode
*/
typedef enum {
CRYPTO_RSV0,
CRYPTO_RSV1,
CRYPTO_AES, ///< Select Crypto mode AES
CRYPTO_MODE_NUM,
ENUM_DUMMY4WORD(CRYPTO_MODE)
} CRYPTO_MODE;
/**
Crypto engine crypto Operating mode
*/
typedef enum {
CRYPTO_EBC = 0x00, ///< Select Crypto opmode EBC
CRYPTO_CBC, ///< Select Crypto opmode CBC
CRYPTO_OPMODE_NUM,
ENUM_DUMMY4WORD(CRYPTO_OPMODE)
} CRYPTO_OPMODE;
/**
Crypto engine encrypt or decrypt
*/
typedef enum {
CRYPTO_ENCRYPT = 0x00, ///< Select Crypto engine encrypt
CRYPTO_DECRYPT, ///< Select Crypto engine decrypt
CRYPTO_TYPE_NUM,
ENUM_DUMMY4WORD(CRYPTO_TYPE)
} CRYPTO_TYPE;
/**
Crypto engine Access Mode selection
*/
typedef enum {
CRYPTO_PIO = 0x00, ///< Select Crypto PIO Mode
CRYPTO_DMA, ///< Select Crypto DMA Mode
CRYPTO_ACCMOD_NUM,
ENUM_DUMMY4WORD(CRYPTO_ACCMOD)
} CRYPTO_ACCMOD;
/**
Crypto engine clock rate
*/
typedef enum {
CRYPTO_CLOCK_80MHz = 0x00, ///< Select Crypto clock rate 80 MHz
CRYPTO_CLOCK_160MHz, ///< Select Crypto clock rate 160 MHz
CRYPTO_CLOCK_240MHz, ///< Select Crypto clock rate 240 MHz
CRYPTO_CLOCK_RATE_NUM,
ENUM_DUMMY4WORD(CRYPTO_CLOCK_RATE)
} CRYPTO_CLOCK_RATE;
typedef struct _CRYPT_OP {
CRYPTO_OPMODE op_mode; ///< Operation Mode (now support ECB only)
CRYPTO_TYPE en_de_crypt; ///< Encrypt or decrypt (CRYPTO_ENCRYPT or CRYPTO_DECRYPT)
UINT32 src_addr; ///< Source address
UINT32 dst_addr; ///< Destination address
UINT32 length; ///< length
UINT32 iv; ///< initial vector during CBC encrypt
} CRYPT_OP;
#endif /* __ARCH_CRYPTO_H_ */
extern s32 crypto_data_operation_by_key(UINT8 * key, CRYPT_OP crypt_op_param);
extern s32 crypto_data_operation(EFUSE_OTP_KEY_SET_FIELD key_set, CRYPT_OP crypt_op_param);