VSF Documented
rng_template.inc
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#if VSF_HAL_USE_RNG == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#define vsf_real_rng_t VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_t)
24#define vsf_real_rng_capability VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_capability)
25
26#ifndef VSF_RNG_CFG_REIMPLEMENT_API_CAPABILITY
27# define VSF_RNG_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
28#endif
29
30#ifdef VSF_RNG_CFG_IMP_REMAP_PREFIX
31# undef VSF_RNG_CFG_REIMPLEMENT_API_CAPABILITY
32# define VSF_RNG_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
33#endif
34
35/*============================ MACROFIED FUNCTIONS ===========================*/
36/*============================ TYPES =========================================*/
37/*============================ GLOBAL VARIABLES ==============================*/
38/*============================ LOCAL VARIABLES ===============================*/
39/*============================ PROTOTYPES ====================================*/
40/*============================ IMPLEMENTATION ================================*/
41
42#if VSF_RNG_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
43vsf_rng_capability_t vsf_real_rng_capability(vsf_real_rng_t *rng_ptr)
44{
45 vsf_rng_capability_t rng_capability = {
46 0,
47 };
48
49 return rng_capability;
50}
51#endif
52
53/*============================ MACROS ========================================*/
54
55#undef VSF_RNG_CFG_REIMPLEMENT_API_CAPABILITY
56#undef vsf_real_rng_t
57#undef vsf_real_rng_capability
58
59/*============================ MACROS ========================================*/
60
61#ifdef VSF_RNG_CFG_IMP_REMAP_PREFIX
62
63# define vsf_imp_rng_t VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_t)
64# define vsf_imp_rng_init VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_init)
65# define vsf_imp_rng_fini VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_fini)
66# define vsf_imp_rng_capability VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_capability)
67# define vsf_imp_rng_generate_request VSF_MCONNECT(VSF_RNG_CFG_IMP_PREFIX, _rng_generate_request)
68
69# define vsf_remap_rng_t VSF_MCONNECT(VSF_RNG_CFG_IMP_REMAP_PREFIX, _rng_t)
70# define vsf_remap_rng_init VSF_MCONNECT(VSF_RNG_CFG_IMP_REMAP_PREFIX, _rng_init)
71# define vsf_remap_rng_fini VSF_MCONNECT(VSF_RNG_CFG_IMP_REMAP_PREFIX, _rng_fini)
72# define vsf_remap_rng_capability VSF_MCONNECT(VSF_RNG_CFG_IMP_REMAP_PREFIX, _rng_capability)
73# define vsf_remap_rng_generate_request VSF_MCONNECT(VSF_RNG_CFG_IMP_REMAP_PREFIX, _rng_generate_request)
74
75# define VSF_RNG_CFG_IMP_REMAP_FUNCTIONS \
76 vsf_err_t vsf_imp_rng_init(vsf_imp_rng_t *rng_ptr) \
77 { \
78 VSF_HAL_ASSERT(rng_ptr != NULL); \
79 return vsf_remap_rng_init(rng_ptr); \
80 } \
81 void vsf_imp_rng_fini(vsf_imp_rng_t *rng_ptr) \
82 { \
83 VSF_HAL_ASSERT(rng_ptr != NULL); \
84 vsf_remap_rng_fini(rng_ptr); \
85 } \
86 vsf_err_t vsf_imp_rng_generate_request(vsf_imp_rng_t *rng_ptr, \
87 uint32_t *buffer, uint32_t num, void *param, \
88 vsf_imp_rng_on_ready_callback_t * on_ready_cb) \
89 { \
90 VSF_HAL_ASSERT(rng_ptr != NULL); \
91 return vsf_remap_rng_generate_request(rng_ptr, buffer, num, param, on_ready_cb); \
92 } \
93 vsf_rng_capability_t vsf_imp_rng_capability(vsf_imp_rng_t *rng_ptr) \
94 { \
95 VSF_HAL_ASSERT(rng_ptr != NULL); \
96 return vsf_remap_rng_capability(rng_ptr); \
97 }
98#endif
99
100/*============================ GLOBAL VARIABLES ==============================*/
101
102#define VSF_HAL_TEMPLATE_IMP_NAME _rng
103#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _RNG
104
105#ifndef VSF_RNG_CFG_IMP_PREFIX
106# error "Please define VSF_RNG_CFG_IMP_PREFIX in rng driver"
107#endif
108
109#ifndef VSF_RNG_CFG_IMP_UPCASE_PREFIX
110# error "Please define VSF_RNG_CFG_IMP_UPCASE_PREFIX in rng driver"
111#endif
112
113#ifndef VSF_RNG_CFG_IMP_COUNT_MASK_PREFIX
114# define VSF_RNG_CFG_IMP_COUNT_MASK_PREFIX VSF_RNG_CFG_IMP_UPCASE_PREFIX
115#endif
116
117#ifdef VSF_RNG_CFG_IMP_REMAP_FUNCTIONS
118# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_RNG_CFG_IMP_REMAP_FUNCTIONS
119#endif
120
122
123#undef VSF_RNG_CFG_IMP_PREFIX
124#undef VSF_RNG_CFG_IMP_COUNT_MASK_PREFIX
125#undef VSF_RNG_CFG_IMP_UPCASE_PREFIX
126#undef VSF_RNG_CFG_IMP_LV0
127
128#undef vsf_imp_rng_t
129#undef vsf_imp_rng_init
130#undef vsf_imp_rng_fini
131#undef vsf_imp_rng_capability
132#undef vsf_imp_rng_generate_request
133
134#undef vsf_remap_rng_t
135#undef vsf_remap_rng_init
136#undef vsf_remap_rng_fini
137#undef vsf_remap_rng_capability
138#undef vsf_remap_rng_generate_request
139
140#endif /* VSF_HAL_USE_RNG */
Definition vsf_template_rng.h:92