85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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);
 | 
						|
 | 
						|
 | 
						|
 |