VSF Documented
Data Structures | Macros | Typedefs | Functions
trng.c File Reference
#include "../driver.h"
#include "hal/vsf_hal.h"
#include "utilities/vsf_utilities.h"
#include "reg_trng.h"
#include "reg_sysctrl.h"
#include "hal/driver/common/rng/rng_template.inc"

Data Structures

struct  vsf_hw_rng_t
 

Macros

#define VSF_HW_RNG_CFG_MULTI_CLASS   VSF_RNG_CFG_MULTI_CLASS
 
#define VSF_RNG_CFG_IMP_PREFIX   vsf_hw
 
#define VSF_RNG_CFG_IMP_UPCASE_PREFIX   VSF_HW
 
#define VSF_RNG_CFG_IMP_LV0(__IDX, __HAL_OP)
 

Typedefs

typedef struct vsf_hw_rng_t vsf_hw_rng_t
 

Functions

vsf_err_t vsf_hw_rng_init (vsf_hw_rng_t *rng)
 
void vsf_hw_rng_fini (vsf_hw_rng_t *rng)
 
vsf_err_t vsf_hw_rng_generate_request (vsf_hw_rng_t *rng, uint32_t *buffer, uint32_t num, void *param, vsf_rng_on_ready_callback_t *on_ready)
 

Macro Definition Documentation

◆ VSF_HW_RNG_CFG_MULTI_CLASS

#define VSF_HW_RNG_CFG_MULTI_CLASS   VSF_RNG_CFG_MULTI_CLASS

◆ VSF_RNG_CFG_IMP_PREFIX

#define VSF_RNG_CFG_IMP_PREFIX   vsf_hw

◆ VSF_RNG_CFG_IMP_UPCASE_PREFIX

#define VSF_RNG_CFG_IMP_UPCASE_PREFIX   VSF_HW

◆ VSF_RNG_CFG_IMP_LV0

#define VSF_RNG_CFG_IMP_LV0 (   __IDX,
  __HAL_OP 
)
Value:
vsf_hw_rng_t VSF_MCONNECT(vsf_hw_rng, __IDX) = { \
VSF_MCONNECT(VSF_HW_RNG, __IDX, _CONFIG) \
__HAL_OP \
}; \
void VSF_MCONNECT(VSF_HW_RNG, __IDX, _IRQHandler)(void) \
{ \
vsf_hw_rng_t *rng = &VSF_MCONNECT(vsf_hw_rng, __IDX); \
AIC_TRNG_TypeDef *reg = rng->reg; \
uint32_t data = reg->trng_data; \
\
if (!(reg->trng_status & (TRNG_SSECSQ | TRNG_SSEISQ))) { \
if (rng->request.buffer != NULL) { \
rng->request.buffer[rng->request.cur_num++] = data; \
if (rng->request.cur_num >= rng->request.num) { \
uint32_t *buffer = rng->request.buffer; \
rng->request.buffer = NULL; \
reg->trng_en = 0; \
if (rng->request.on_ready != NULL) { \
rng->request.on_ready(rng->request.param, buffer, rng->request.num);\
} \
} else { \
reg->trng_en = TRNG_STRNGENQ | TRNG_STRNGIEQ; \
} \
} \
} else { \
reg->trng_en = TRNG_STRNGENQ | TRNG_STRNGIEQ; \
} \
vsf_hal_irq_leave(ctx); \
}
struct VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
Definition flash.c:53
struct ieee80211_ext_chansw_ie data
Definition ieee80211.h:80
#define NULL
Definition stddef.h:52
uint32_t uintptr_t
Definition stdint.h:38
unsigned uint32_t
Definition stdint.h:9
Definition trng.c:39
uint32_t * buffer
Definition trng.c:51
AIC_TRNG_TypeDef * reg
Definition trng.c:44
struct vsf_hw_rng_t::@331 request
void(* on_ready)(void *param, uint32_t *buffer, uint32_t num)
Definition trng.c:49
uint32_t cur_num
Definition trng.c:53
void * param
Definition trng.c:48
uint32_t num
Definition trng.c:52
class vsf_$ * reg
uintptr_t vsf_hal_irq_enter(void)
Definition vsf_hal.c:59

Typedef Documentation

◆ vsf_hw_rng_t

typedef struct vsf_hw_rng_t vsf_hw_rng_t

Function Documentation

◆ vsf_hw_rng_init()

vsf_err_t vsf_hw_rng_init ( vsf_hw_rng_t rng)

◆ vsf_hw_rng_fini()

void vsf_hw_rng_fini ( vsf_hw_rng_t rng)

◆ vsf_hw_rng_generate_request()

vsf_err_t vsf_hw_rng_generate_request ( vsf_hw_rng_t rng,
uint32_t buffer,
uint32_t  num,
void *  param,
vsf_rng_on_ready_callback_t on_ready 
)