VSF Documented
pwm_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_PWM == ENABLED
19
20/*============================ INCLUDES ======================================*/
21
22/*============================ MACROS ========================================*/
23
24#ifndef VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY
25# define VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
26#endif
27
28#ifdef VSF_PWM_CFG_IMP_REMAP_PREFIX
29# undef VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY
30# define VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
31#endif
32
33#if VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
34# ifndef VSF_PWM_CFG_CAPABILITY_MIN_FREQ
35# define VSF_PWM_CFG_CAPABILITY_MIN_FREQ (1ul * 1000)
36# endif
37# ifndef VSF_PWM_CFG_CAPABILITY_MAX_FREQ
38# define VSF_PWM_CFG_CAPABILITY_MAX_FREQ (10ul * 1000 * 1000)
39# endif
40#endif
41
42#define vsf_real_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_t)
43#define vsf_real_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_set)
44#define vsf_real_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_get_freq)
45#define vsf_real_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_capability)
46
47/*============================ MACROFIED FUNCTIONS ===========================*/
48/*============================ TYPES =========================================*/
49/*============================ GLOBAL VARIABLES ==============================*/
50/*============================ LOCAL VARIABLES ===============================*/
51/*============================ PROTOTYPES ====================================*/
52/*============================ IMPLEMENTATION ================================*/
53
54#if VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
55vsf_pwm_capability_t vsf_real_pwm_capability(vsf_real_pwm_t *pwm_ptr)
56{
57 vsf_pwm_capability_t pwm_capability = {
60 };
61
62 return pwm_capability;
63}
64#endif
65
66/*============================ MACROS ========================================*/
67
68#undef VSF_PWM_CFG_REIMPLEMENT_API_CAPABILITY
69#undef VSF_PWM_CFG_CAPABILITY_MAX_FREQ
70#undef VSF_PWM_CFG_CAPABILITY_MIN_FREQ
71#undef vsf_real_pwm_t
72#undef vsf_real_pwm_capability
73
74/*============================ MACROS ========================================*/
75
76#ifdef VSF_PWM_CFG_IMP_REMAP_PREFIX
77
78# define vsf_imp_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_t)
79# define vsf_imp_pwm_init VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_init)
80# define vsf_imp_pwm_fini VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_fini)
81# define vsf_imp_pwm_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_enable)
82# define vsf_imp_pwm_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_disable)
83# define vsf_imp_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_capability)
84# define vsf_imp_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_set)
85# define vsf_imp_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_PREFIX, _pwm_get_freq)
86
87# define vsf_remap_pwm_t VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_t)
88# define vsf_remap_pwm_init VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_init)
89# define vsf_remap_pwm_fini VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_fini)
90# define vsf_remap_pwm_enable VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_enable)
91# define vsf_remap_pwm_disable VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_disable)
92# define vsf_remap_pwm_capability VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_capability)
93# define vsf_remap_pwm_set VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_set)
94# define vsf_remap_pwm_get_freq VSF_MCONNECT(VSF_PWM_CFG_IMP_REMAP_PREFIX, _pwm_get_freq)
95
96# define VSF_PWM_CFG_IMP_REMAP_FUNCTIONS \
97 vsf_err_t vsf_imp_pwm_init(vsf_imp_pwm_t *pwm_ptr, vsf_pwm_cfg_t *cfg_ptr) \
98 { \
99 VSF_HAL_ASSERT(pwm_ptr != NULL); \
100 return vsf_remap_pwm_init(pwm_ptr, cfg_ptr); \
101 } \
102 void vsf_imp_pwm_fini(vsf_imp_pwm_t *pwm_ptr) \
103 { \
104 VSF_HAL_ASSERT(pwm_ptr != NULL); \
105 vsf_remap_pwm_fini(pwm_ptr); \
106 } \
107 fsm_rt_t vsf_imp_pwm_enable(vsf_imp_pwm_t *pwm_ptr) \
108 { \
109 VSF_HAL_ASSERT(pwm_ptr != NULL); \
110 return vsf_remap_pwm_enable(pwm_ptr); \
111 } \
112 fsm_rt_t vsf_imp_pwm_disable(vsf_imp_pwm_t *pwm_ptr) \
113 { \
114 VSF_HAL_ASSERT(pwm_ptr != NULL); \
115 return vsf_remap_pwm_disable(pwm_ptr); \
116 } \
117 vsf_pwm_capability_t vsf_imp_pwm_capability(vsf_imp_pwm_t *pwm_ptr) \
118 { \
119 VSF_HAL_ASSERT(pwm_ptr != NULL); \
120 return vsf_remap_pwm_capability(pwm_ptr); \
121 } \
122 vsf_err_t vsf_imp_pwm_set(vsf_imp_pwm_t *pwm_ptr, uint8_t channel, \
123 uint32_t period, uint32_t pulse) \
124 { \
125 VSF_HAL_ASSERT(pwm_ptr != NULL); \
126 return vsf_remap_pwm_set(pwm_ptr, channel, period, pulse); \
127 } \
128 uint32_t vsf_imp_pwm_get_freq(vsf_imp_pwm_t *pwm_ptr) \
129 { \
130 VSF_HAL_ASSERT(pwm_ptr != NULL); \
131 return vsf_remap_pwm_get_freq(pwm_ptr); \
132 }
133#endif
134
135
136/*============================ GLOBAL VARIABLES ==============================*/
137
138#define VSF_HAL_TEMPLATE_IMP_NAME _pwm
139#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _PWM
140
141#ifndef VSF_PWM_CFG_IMP_PREFIX
142# error "Please define VSF_PWM_CFG_IMP_PREFIX in pwm driver"
143#endif
144
145#ifndef VSF_PWM_CFG_IMP_UPCASE_PREFIX
146# error "Please define VSF_PWM_CFG_IMP_UPCASE_PREFIX in pwm driver"
147#endif
148
149#ifndef VSF_PWM_CFG_IMP_COUNT_MASK_PREFIX
150# define VSF_PWM_CFG_IMP_COUNT_MASK_PREFIX VSF_PWM_CFG_IMP_UPCASE_PREFIX
151#endif
152
153#ifdef VSF_PWM_CFG_IMP_REMAP_FUNCTIONS
154# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_PWM_CFG_IMP_REMAP_FUNCTIONS
155#endif
156
158
159#undef VSF_PWM_CFG_IMP_PREFIX
160#undef VSF_PWM_CFG_IMP_COUNT_MASK_PREFIX
161#undef VSF_PWM_CFG_IMP_UPCASE_PREFIX
162#undef VSF_PWM_CFG_IMP_LV0
163#undef VSF_PWM_CFG_IMP_REMAP_FUNCTIONS
164#undef VSF_PWM_CFG_IMP_HAS_OP
165#undef VSF_PWM_CFG_IMP_EXTERN_OP
166
167#undef vsf_imp_pwm_t
168#undef vsf_imp_pwm_init
169#undef vsf_imp_pwm_fini
170#undef vsf_imp_pwm_enable
171#undef vsf_imp_pwm_disable
172#undef vsf_imp_pwm_capability
173#undef vsf_imp_pwm_set
174#undef vsf_imp_pwm_get_freq
175
176#undef vsf_remap_pwm_t
177#undef vsf_remap_pwm_init
178#undef vsf_remap_pwm_fini
179#undef vsf_remap_pwm_enable
180#undef vsf_remap_pwm_disable
181#undef vsf_remap_pwm_capability
182#undef vsf_remap_pwm_set
183#undef vsf_remap_pwm_get_freq
184
185#endif /* VSF_HAL_USE_PWM */
#define VSF_PWM_CFG_CAPABILITY_MIN_FREQ
Definition aic_pwm.c:139
#define VSF_PWM_CFG_CAPABILITY_MAX_FREQ
Definition aic_pwm.c:138
Definition vsf_template_pwm.h:101
uint32_t min_freq
Definition vsf_template_pwm.h:107