SemiDrive SSDK Appication Program Interface PTG3.0
trng.h
Go to the documentation of this file.
1
9#ifndef TRNG_H
10#define TRNG_H
11
12#include "register_base_addr.h"
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18/* TRNG register address */
19#define TRNG_CR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0000))
20#define TRNG_MSEL (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0004))
21#define TRNG_SR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0008))
22#define TRNG_DR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x000C))
23#define TRNG_VERSION (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0010))
24#define TRNG_RESEED (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0040))
25#define TRNG_HT_CR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0060))
26#define TRNG_HT_SR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0070))
27#define RO_SRC_EN1 (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0080))
28#define RO_SRC_EN2 (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0084))
29#define SCLK_FREQ (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x0088))
30
31#define TERO_CR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x00B0))
32#define TERO_THOLD (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x00B4))
33#define TERO_CNT(i) (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x00C0 + 4 * i))
34#define TERO_SR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x00D0))
35#define TERO_DR (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x00D4))
36#define TERO_RCR(i) (*(volatile uint32_t *)(TRNG_BASE_ADDR + 0x00E0 + 4 * i))
37
38/* TRNG freq config */
39#define TRNG_RO_FREQ_4 (0)
40#define TRNG_RO_FREQ_8 (1)
41#define TRNG_RO_FREQ_16 (2)
42#define TRNG_RO_FREQ_32 (3)
43
44/* TRNG action offset */
45#define TRNG_GLOBAL_INT_OFFSET (24)
46#define TRNG_READ_EMPTY_INT_OFFSET (17)
47#define TRNG_DATA_INT_OFFSET (16)
48#define TRNG_RO_ENTROPY_OFFSET (4)
49#define TRNG_TERO_THRESHOLD_OFFSET (24)
50#define TRNG_TERO_ENTROPY_OFFSET (8)
51
52/* TRNG return code */
60};
61
62uint32_t trng_get_version(void);
63
65
67
69
71
73
75
76void trng_enable(void);
77
78void trng_disable(void);
79
80uint32_t trng_ro_entropy_config(uint8_t cfg);
81
82uint32_t trng_ro_sub_entropy_config(uint8_t sn, uint16_t cfg);
83
84void trng_set_mode(uint8_t with_post_processing);
85
86void trng_reseed(void);
87
88uint32_t trng_set_freq(uint8_t freq);
89
90uint32_t get_rand_internal(uint8_t *a, uint32_t bytes);
91
92uint32_t get_rand_fast(uint8_t *rand, uint32_t bytes);
93
94uint32_t get_rand(uint8_t *rand, uint32_t bytes);
95
96uint32_t get_hrng(uint8_t *dst, uint32_t size);
97
98void tero_enable(void);
99
100void tero_disable(void);
101
102uint32_t tero_set_stop_threshold(uint8_t threshold_value);
103
104uint32_t tero_entropy_config(uint8_t cfg);
105
107
109
110void tero_set_osc_sel(uint8_t cfg);
111
113
115
116uint32_t get_tero_rand(uint8_t *a, uint32_t bytes);
117
118#ifdef __cplusplus
119}
120#endif
121
122#endif
uint32_t trng_set_freq(uint8_t freq)
uint32_t get_hrng(uint8_t *dst, uint32_t size)
uint32_t get_rand(uint8_t *rand, uint32_t bytes)
uint32_t get_rand_fast(uint8_t *rand, uint32_t bytes)
void trng_global_int_disable(void)
void tero_enable(void)
void tero_set_osc_sel(uint8_t cfg)
void trng_global_int_enable(void)
uint32_t tero_set_stop_threshold(uint8_t threshold_value)
void tero_set_osc_times_lower_limit(uint16_t value)
void trng_empty_read_int_enable(void)
void trng_set_mode(uint8_t with_post_processing)
void trng_disable(void)
void trng_empty_read_int_disable(void)
void tero_set_osc_times_upper_limit(uint16_t value)
uint32_t trng_ro_sub_entropy_config(uint8_t sn, uint16_t cfg)
uint32_t trng_get_version(void)
uint32_t trng_ro_entropy_config(uint8_t cfg)
void trng_data_int_enable(void)
void trng_data_int_disable(void)
uint32_t get_rand_internal(uint8_t *a, uint32_t bytes)
TRNG_RET_CODE
Definition: trng.h:53
@ TRNG_SUCCESS
Definition: trng.h:54
@ TRNG_INVALID_INPUT
Definition: trng.h:56
@ TRNG_BUFFER_NULL
Definition: trng.h:55
@ TRNG_HT_ERROR
Definition: trng.h:58
@ TRNG_INVALID_CONFIG
Definition: trng.h:57
@ TRNG_ERROR
Definition: trng.h:59
void tero_disable(void)
void tero_set_output_osc_times(void)
void tero_set_output_rng(void)
void trng_enable(void)
void trng_reseed(void)
uint32_t tero_entropy_config(uint8_t cfg)
uint32_t get_tero_rand(uint8_t *a, uint32_t bytes)