mirror of
https://github.com/revyos/th1520-vendor-uboot.git
synced 2026-06-21 09:02:25 +02:00
150 lines
3.8 KiB
C
Executable File
150 lines
3.8 KiB
C
Executable File
/*
|
|
* Copyright (C) 2017-2020 Alibaba Group Holding Limited
|
|
*/
|
|
|
|
#ifndef INC_RAMBUS_H
|
|
#define INC_RAMBUS_H
|
|
|
|
#include "device_types.h"
|
|
#ifdef SEC_LIB_VERSION
|
|
#include "drv/common.h"
|
|
#include "device_rw.h"
|
|
#include "rambus_log.h"
|
|
#include "rambus_errcode.h"
|
|
#else
|
|
#include "common.h"
|
|
#endif
|
|
|
|
extern uint64_t g_freq_timer;
|
|
extern uint64_t g_freq_ip;
|
|
extern uint64_t g_start_ctr;
|
|
extern uint64_t g_end_ctr;
|
|
extern uint64_t g_data_len_in_bits;
|
|
extern uint32_t g_type;
|
|
|
|
enum rambus_cipher_padding_mode {
|
|
PADDING_ZERO,
|
|
PADDING_FF,
|
|
PADDING_RANDOM,
|
|
};
|
|
|
|
uint32_t rb_get_random_byte(uint8_t *buf, uint32_t count);
|
|
|
|
uint32_t rb_get_random_byte_nozero(uint8_t *buf, uint32_t count);
|
|
|
|
uint32_t kdf_get_mask(uint8_t *mask, uint32_t len);
|
|
|
|
/* 1 bpc, 2 tps, 3 bps */
|
|
void rb_perf_init(uint32_t data_len_in_bits, uint32_t type);
|
|
void rb_perf_start(void);
|
|
void rb_perf_end(void);
|
|
void rb_perf_get(char *ncase);
|
|
|
|
#define DEFAULT_TIMEOUT 1000U
|
|
|
|
#ifdef CONFIG_ALG_PERF_TEST
|
|
#define RB_PERF_INIT(bits, type) \
|
|
do { \
|
|
if (data_len_in_bits != 0) { \
|
|
g_data_len_in_bits = data_len_in_bits; \
|
|
} \
|
|
if (type != 0) { \
|
|
g_type = type; \
|
|
} \
|
|
} while (0)
|
|
|
|
#define RB_PERF_START_POINT() \
|
|
do { \
|
|
g_start_ctr = ((((uint64_t)csi_coret_get_valueh() << 32U) | \
|
|
csi_coret_get_value())); \
|
|
} while (0)
|
|
|
|
#define RB_PERF_END_POINT() \
|
|
do { \
|
|
g_end_ctr = ((((uint64_t)csi_coret_get_valueh() << 32U) | \
|
|
csi_coret_get_value())); \
|
|
} while (0)
|
|
|
|
#else
|
|
#define RB_PERF_INIT(...)
|
|
#define RB_PERF_START_POINT(...)
|
|
#define RB_PERF_END_POINT(...)
|
|
#endif
|
|
|
|
static inline void rb_xor(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t len) {
|
|
for (int i = 0; i < (int)len; i++) {
|
|
c[i] = a[i] ^ b[i];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Get the aes sca enable config
|
|
*
|
|
* @param is_en is enable
|
|
* @return uint32_t
|
|
*/
|
|
uint32_t rb_get_aes_sca(uint32_t *is_en);
|
|
|
|
/**
|
|
* @brief Get the sm4 sca enable config
|
|
*
|
|
* @param is_en is enable
|
|
* @return uint32_t
|
|
*/
|
|
uint32_t rb_get_sm4_sca(uint32_t *is_en);
|
|
|
|
/**
|
|
* @brief Get the pka sca enable config
|
|
*
|
|
* @param is_en is enable
|
|
* @return uint32_t
|
|
*/
|
|
uint32_t rb_get_pka_sca(uint32_t *is_en);
|
|
|
|
/**
|
|
* @brief rb_cache_en
|
|
* @return uint32_t enable: 1
|
|
*
|
|
*/
|
|
uint32_t rb_cache_en(void);
|
|
|
|
/**
|
|
* @brief trng init
|
|
*
|
|
* @return csi_error_t
|
|
*/
|
|
csi_error_t trng_init(void);
|
|
|
|
/**
|
|
* @brief rb wait status
|
|
*
|
|
* @param dev
|
|
* @param offset
|
|
* @param mask
|
|
* @param status
|
|
* @return uint32_t
|
|
*/
|
|
csi_error_t rb_wait_status(Device_Handle_t *dev, const uint32_t offset, uint32_t mask,
|
|
uint32_t status);
|
|
|
|
/**
|
|
* \brief rambus crypto init.
|
|
* \return 0 if successful, or error code
|
|
*/
|
|
uint32_t rambus_crypto_init(void);
|
|
|
|
/**
|
|
* @brief rambus crypto uninit.
|
|
*
|
|
*/
|
|
void rambus_crypto_uninit(void);
|
|
|
|
/**
|
|
* \brief rambus set cipher padding type.
|
|
* @param padding_mode cipher padding mode
|
|
* \return 0 if successful, or error code
|
|
*/
|
|
uint32_t rambus_enable_cipher_padding_type(enum rambus_cipher_padding_mode padding_mode);
|
|
|
|
#endif
|