21#if VSF_HAL_USE_SPI == ENABLED
23#if defined(VSF_SPI_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_SPI_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
24# define vsf_real_spi_t VSF_MCONNECT(VSF_SPI_CFG_IMP_DEVICE_PREFIX, _t)
25# define vsf_real_spi_capability VSF_MCONNECT(VSF_SPI_CFG_IMP_DEVICE_PREFIX, _capability)
26# define vsf_real_spi_ctrl VSF_MCONNECT(VSF_SPI_CFG_IMP_DEVICE_PREFIX, _ctrl)
27# define vsf_real_spi_get_configuration VSF_MCONNECT(VSF_SPI_CFG_IMP_DEVICE_PREFIX, _get_configuration)
28# define vsf_real_spi_irq_clear VSF_MCONNECT(VSF_SPI_CFG_IMP_DEVICE_PREFIX, _irq_clear)
30# define vsf_real_spi_t VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_t)
31# define vsf_real_spi_capability VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_capability)
32# define vsf_real_spi_ctrl VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_ctrl)
33# define vsf_real_spi_get_configuration VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_get_configuration)
34# define vsf_real_spi_irq_clear VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_irq_clear)
37#ifndef VSF_SPI_CFG_REIMPLEMENT_API_CAPABILITY
38# define VSF_SPI_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
41#ifndef VSF_SPI_CFG_REIMPLEMENT_API_CTRL
42# define VSF_SPI_CFG_REIMPLEMENT_API_CTRL DISABLED
45#ifndef VSF_SPI_CFG_REIMPLEMENT_API_GET_CONFIGURATION
46# define VSF_SPI_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
49#ifndef VSF_SPI_CFG_REIMPLEMENT_API_IRQ_CLEAR
50# define VSF_SPI_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
53#ifdef VSF_SPI_CFG_IMP_REMAP_PREFIX
54# undef VSF_SPI_CFG_REIMPLEMENT_API_CAPABILITY
55# undef VSF_SPI_CFG_REIMPLEMENT_API_GET_CONFIGURATION
56# undef VSF_SPI_CFG_REIMPLEMENT_API_IRQ_CLEAR
57# define VSF_SPI_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
58# define VSF_SPI_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
59# define VSF_SPI_CFG_REIMPLEMENT_API_IRQ_CLEAR ENABLED
62#if VSF_SPI_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
63# ifndef VSF_SPI_CFG_CAPABILITY_SUPPORT_AUTO_CS
64# define VSF_SPI_CFG_CAPABILITY_SUPPORT_AUTO_CS 1
66# ifndef VSF_SPI_CFG_CAPABILITY_SUPPORT_MANUAL_CS
67# define VSF_SPI_CFG_CAPABILITY_SUPPORT_MANUAL_CS 1
69# ifndef VSF_SPI_CFG_CAPABILITY_CS_COUNT
70# define VSF_SPI_CFG_CAPABILITY_CS_COUNT 1
72# ifndef VSF_SPI_CFG_CAPABILITY_MAX_CLOCK_HZ
73# define VSF_SPI_CFG_CAPABILITY_MAX_CLOCK_HZ 0xFFFFFFFF
75# ifndef VSF_SPI_CFG_CAPABILITY_MIN_CLOCK_HZ
76# define VSF_SPI_CFG_CAPABILITY_MIN_CLOCK_HZ 1
82#if VSF_SPI_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
87 .support_software_cs = VSF_SPI_CFG_CAPABILITY_SUPPORT_MANUAL_CS,
88 .cs_count = VSF_SPI_CFG_CAPABILITY_CS_COUNT,
89 .max_clock_hz = VSF_SPI_CFG_CAPABILITY_MAX_CLOCK_HZ,
90 .min_clock_hz = VSF_SPI_CFG_CAPABILITY_MIN_CLOCK_HZ,
93 return spi_capability;
97#if VSF_SPI_CFG_REIMPLEMENT_API_CTRL == DISABLED
109#if VSF_SPI_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
122#if VSF_SPI_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
136#undef VSF_SPI_CFG_REIMPLEMENT_TYPE_CAPABILITY
137#undef VSF_SPI_CFG_REIMPLEMENT_TYPE_CFG
138#undef VSF_SPI_CFG_REIMPLEMENT_TYPE_CTRL
139#undef VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK
140#undef VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE
141#undef VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS
142#undef VSF_SPI_CFG_CAPABILITY_SUPPORT_AUTO_CS
143#undef VSF_SPI_CFG_CAPABILITY_SUPPORT_MANUAL_CS
144#undef VSF_SPI_CFG_CAPABILITY_CS_COUNT
145#undef VSF_SPI_CFG_CAPABILITY_MAX_CLOCK_HZ
146#undef VSF_SPI_CFG_CAPABILITY_MIN_CLOCK_HZ
148#undef vsf_real_spi_capability
149#undef vsf_real_spi_ctrl
150#undef vsf_real_spi_get_configuration
151#undef vsf_real_spi_irq_clear
158#ifdef VSF_SPI_CFG_IMP_REMAP_PREFIX
160# define vsf_imp_spi_t VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_t)
161# define vsf_imp_spi_init VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_init)
162# define vsf_imp_spi_enable VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_enable)
163# define vsf_imp_spi_disable VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_disable)
164# define vsf_imp_spi_irq_enable VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_irq_enable)
165# define vsf_imp_spi_irq_disable VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_irq_disable)
166# define vsf_imp_spi_irq_clear VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_irq_clear)
167# define vsf_imp_spi_status VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_status)
168# define vsf_imp_spi_capability VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_capability)
169# define vsf_imp_spi_cs_active VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_cs_active)
170# define vsf_imp_spi_cs_inactive VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_cs_inactive)
171# define vsf_imp_spi_fifo_transfer VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_fifo_transfer)
172# define vsf_imp_spi_request_transfer VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_request_transfer)
173# define vsf_imp_spi_cancel_transfer VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_cancel_transfer)
174# define vsf_imp_spi_get_transferred_count VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_get_transferred_count)
175# define vsf_imp_spi_ctrl VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_ctrl)
176# define vsf_imp_spi_get_configuration VSF_MCONNECT(VSF_SPI_CFG_IMP_PREFIX, _spi_get_configuration)
178# define vsf_remap_spi_t VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_t)
179# define vsf_remap_spi_init VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_init)
180# define vsf_remap_spi_enable VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_enable)
181# define vsf_remap_spi_disable VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_disable)
182# define vsf_remap_spi_irq_enable VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_irq_enable)
183# define vsf_remap_spi_irq_disable VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_irq_disable)
184# define vsf_remap_spi_irq_clear VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_irq_clear)
185# define vsf_remap_spi_status VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_status)
186# define vsf_remap_spi_capability VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_capability)
187# define vsf_remap_spi_cs_active VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_cs_active)
188# define vsf_remap_spi_cs_inactive VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_cs_inactive)
189# define vsf_remap_spi_fifo_transfer VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_fifo_transfer)
190# define vsf_remap_spi_request_transfer VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_request_transfer)
191# define vsf_remap_spi_cancel_transfer VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_cancel_transfer)
192# define vsf_remap_spi_get_transferred_count VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_get_transferred_count)
193# define vsf_remap_spi_ctrl VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_ctrl)
194# define vsf_remap_spi_get_configuration VSF_MCONNECT(VSF_SPI_CFG_IMP_REMAP_PREFIX, _spi_get_configuration)
196# define VSF_SPI_CFG_IMP_REMAP_FUNCTIONS \
197 vsf_err_t vsf_imp_spi_init(vsf_imp_spi_t *spi_ptr, vsf_spi_cfg_t *cfg_ptr) \
199 VSF_HAL_ASSERT(spi_ptr != NULL); \
200 return vsf_remap_spi_init(spi_ptr, cfg_ptr); \
202 void vsf_imp_spi_fini(vsf_imp_spi_t *spi_ptr) \
204 VSF_HAL_ASSERT(spi_ptr != NULL); \
205 vsf_remap_spi_fini(spi_ptr); \
207 fsm_rt_t vsf_imp_spi_enable(vsf_imp_spi_t *spi_ptr) \
209 VSF_HAL_ASSERT(spi_ptr != NULL); \
210 return vsf_remap_spi_enable(spi_ptr); \
212 fsm_rt_t vsf_imp_spi_disable(vsf_imp_spi_t *spi_ptr) \
214 VSF_HAL_ASSERT(spi_ptr != NULL); \
215 return vsf_remap_spi_disable(spi_ptr); \
217 void vsf_imp_spi_irq_enable(vsf_imp_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
219 VSF_HAL_ASSERT(spi_ptr != NULL); \
220 vsf_remap_spi_irq_enable(spi_ptr, irq_mask); \
222 void vsf_imp_spi_irq_disable(vsf_imp_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
224 VSF_HAL_ASSERT(spi_ptr != NULL); \
225 vsf_remap_spi_irq_disable(spi_ptr, irq_mask); \
227 vsf_spi_irq_mask_t vsf_imp_spi_irq_clear(vsf_imp_spi_t *spi_ptr, vsf_spi_irq_mask_t irq_mask) \
229 VSF_HAL_ASSERT(spi_ptr != NULL); \
230 return vsf_remap_spi_irq_clear(spi_ptr, irq_mask); \
232 vsf_spi_status_t vsf_imp_spi_status(vsf_imp_spi_t *spi_ptr) \
234 VSF_HAL_ASSERT(spi_ptr != NULL); \
235 return vsf_remap_spi_status(spi_ptr); \
237 vsf_err_t vsf_imp_spi_cs_active(vsf_imp_spi_t *spi_ptr, uint_fast8_t index) \
239 VSF_HAL_ASSERT(spi_ptr != NULL); \
240 return vsf_remap_spi_cs_active(spi_ptr, index); \
242 vsf_err_t vsf_imp_spi_cs_inactive(vsf_imp_spi_t *spi_ptr, uint_fast8_t index) \
244 VSF_HAL_ASSERT(spi_ptr != NULL); \
245 return vsf_remap_spi_cs_inactive(spi_ptr, index); \
247 void vsf_imp_spi_fifo_transfer(vsf_imp_spi_t *spi_ptr, \
248 void *out_buffer_ptr, \
249 uint_fast32_t* out_offset_ptr, \
250 void *in_buffer_ptr, \
251 uint_fast32_t* in_offset_ptr, \
254 VSF_HAL_ASSERT(spi_ptr != NULL); \
255 vsf_remap_spi_fifo_transfer(spi_ptr, \
256 out_buffer_ptr, out_offset_ptr, \
257 in_buffer_ptr, in_offset_ptr, \
260 vsf_err_t vsf_imp_spi_request_transfer(vsf_imp_spi_t *spi_ptr, void *out_buffer_ptr, \
261 void *in_buffer_ptr, uint_fast32_t count) \
263 VSF_HAL_ASSERT(spi_ptr != NULL); \
264 return vsf_remap_spi_request_transfer(spi_ptr, out_buffer_ptr, \
265 in_buffer_ptr, count); \
267 vsf_err_t vsf_imp_spi_cancel_transfer(vsf_imp_spi_t *spi_ptr) \
269 VSF_HAL_ASSERT(spi_ptr != NULL); \
270 return vsf_remap_spi_cancel_transfer(spi_ptr); \
272 void vsf_imp_spi_get_transferred_count(vsf_imp_spi_t *spi_ptr, \
273 uint_fast32_t * tx_count, uint_fast32_t *rx_count) \
275 VSF_HAL_ASSERT(spi_ptr != NULL); \
276 vsf_remap_spi_get_transferred_count(spi_ptr, tx_count, rx_count); \
278 vsf_spi_capability_t vsf_imp_spi_capability(vsf_imp_spi_t *spi_ptr) \
280 VSF_HAL_ASSERT(spi_ptr != NULL); \
281 return vsf_remap_spi_capability(spi_ptr); \
283 vsf_err_t vsf_imp_spi_ctrl(vsf_imp_spi_t *spi_ptr, vsf_spi_ctrl_t ctrl, void *param) \
285 VSF_HAL_ASSERT(spi_ptr != NULL); \
286 return vsf_remap_spi_ctrl(spi_ptr, ctrl, param); \
288 vsf_err_t vsf_imp_spi_get_configuration(vsf_imp_spi_t *spi_ptr, vsf_spi_cfg_t *cfg_ptr) \
290 VSF_HAL_ASSERT(spi_ptr != NULL); \
291 VSF_HAL_ASSERT(cfg_ptr != NULL); \
292 return vsf_remap_spi_get_configuration(spi_ptr, cfg_ptr); \
299#define VSF_HAL_TEMPLATE_IMP_NAME _spi
300#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _SPI
302#if !defined(VSF_SPI_CFG_IMP_PREFIX) && !defined(VSF_SPI_CFG_IMP_DEVICE_PREFIX)
303# error "Please define VSF_SPI_CFG_IMP_PREFIX in spi driver"
306#if !defined(VSF_SPI_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_SPI_CFG_IMP_DEVICE_UPCASE_PREFIX)
307# error "Please define VSF_SPI_CFG_IMP_UPCASE_PREFIX in spi driver"
310#ifndef VSF_SPI_CFG_IMP_COUNT_MASK_PREFIX
311# define VSF_SPI_CFG_IMP_COUNT_MASK_PREFIX VSF_SPI_CFG_IMP_UPCASE_PREFIX
314#ifdef VSF_SPI_CFG_IMP_REMAP_FUNCTIONS
315# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_SPI_CFG_IMP_REMAP_FUNCTIONS
320#undef VSF_SPI_CFG_IMP_PREFIX
321#undef VSF_SPI_CFG_IMP_COUNT_MASK_PREFIX
322#undef VSF_SPI_CFG_IMP_UPCASE_PREFIX
323#undef VSF_SPI_CFG_IMP_DEVICE_PREFIX
324#undef VSF_SPI_CFG_IMP_DEVICE_UPCASE_PREFIX
325#undef VSF_SPI_CFG_IMP_LV0
326#undef VSF_SPI_CFG_IMP_REMAP_FUNCTIONS
327#undef VSF_SPI_CFG_IMP_HAS_OP
328#undef VSF_SPI_CFG_IMP_EXTERN_OP
329#undef VSF_SPI_CFG_IMP_RENAME_DEVICE_PREFIX
332#undef vsf_imp_spi_init
333#undef vsf_imp_spi_enable
334#undef vsf_imp_spi_disable
335#undef vsf_imp_spi_irq_enable
336#undef vsf_imp_spi_irq_disable
337#undef vsf_imp_spi_irq_clear
338#undef vsf_imp_spi_status
339#undef vsf_imp_spi_capability
340#undef vsf_imp_spi_cs_active
341#undef vsf_imp_spi_cs_inactive
342#undef vsf_imp_spi_fifo_transfer
343#undef vsf_imp_spi_request_transfer
344#undef vsf_imp_spi_cancel_transfer
345#undef vsf_imp_spi_get_transferred_count
346#undef vsf_imp_spi_ctrl
347#undef vsf_imp_spi_get_configuration
349#undef vsf_remap_spi_t
350#undef vsf_remap_spi_init
351#undef vsf_remap_spi_enable
352#undef vsf_remap_spi_disable
353#undef vsf_remap_spi_irq_enable
354#undef vsf_remap_spi_irq_disable
355#undef vsf_remap_spi_irq_clear
356#undef vsf_remap_spi_status
357#undef vsf_remap_spi_capability
358#undef vsf_remap_spi_cs_active
359#undef vsf_remap_spi_cs_inactive
360#undef vsf_remap_spi_fifo_transfer
361#undef vsf_remap_spi_request_transfer
362#undef vsf_remap_spi_cancel_transfer
363#undef vsf_remap_spi_get_transferred_count
364#undef vsf_remap_spi_ctrl
365#undef vsf_remap_spi_get_configuration
367#undef VSF_HAL_TEMPLATE_IMP_NAME
368#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
393#ifdef VSF_SPI_CFG_MODE_CHECK_UNIQUE
395#ifndef VSF_SPI_CHECK_UNIQUE_DIR_MODES
396# define VSF_SPI_CHECK_UNIQUE_DIR_MODES \
401#ifndef VSF_SPI_CHECK_UNIQUE_BIT_ORDER_MODES
402# define VSF_SPI_CHECK_UNIQUE_BIT_ORDER_MODES \
407#ifndef VSF_SPI_CHECK_UNIQUE_MODE_MODES
408# define VSF_SPI_CHECK_UNIQUE_MODE_MODES \
415#ifndef VSF_SPI_CHECK_UNIQUE_CS_MODES
416# define VSF_SPI_CHECK_UNIQUE_CS_MODES \
417 VSF_SPI_CS_SOFTWARE_MODE, \
418 VSF_SPI_CS_HARDWARE_MODE
421#ifndef VSF_SPI_CHECK_UNIQUE_DATASIZE_MODES
422# define VSF_SPI_CHECK_UNIQUE_DATASIZE_MODES \
423 VSF_SPI_DATASIZE_8, \
424 VSF_SPI_DATASIZE_16, \
452 VSF_SPI_CHECK_UNIQUE_CS_MODES
453#ifdef VSF_SPI_CS_HARDWARE_INPUT_MODE
454 , VSF_SPI_CS_HARDWARE_INPUT_MODE
463#ifdef VSF_SPI_CUSTOM_MODE_VALUES
477#ifdef VSF_SPI_CS_HARDWARE_INPUT_MODE
478 , VSF_SPI_CS_HARDWARE_INPUT_MODE
506#ifdef VSF_SPI_CLOCK_PRESCALER_2
507 , VSF_SPI_CLOCK_PRESCALER_2
509#ifdef VSF_SPI_CLOCK_PRESCALER_4
510 , VSF_SPI_CLOCK_PRESCALER_4
512#ifdef VSF_SPI_CLOCK_PRESCALER_8
513 , VSF_SPI_CLOCK_PRESCALER_8
515#ifdef VSF_SPI_CLOCK_PRESCALER_16
516 , VSF_SPI_CLOCK_PRESCALER_16
518#ifdef VSF_SPI_CLOCK_PRESCALER_32
519 , VSF_SPI_CLOCK_PRESCALER_32
521#ifdef VSF_SPI_CLOCK_PRESCALER_64
522 , VSF_SPI_CLOCK_PRESCALER_64
524#ifdef VSF_SPI_CLOCK_PRESCALER_128
525 , VSF_SPI_CLOCK_PRESCALER_128
527#ifdef VSF_SPI_CLOCK_PRESCALER_256
528 , VSF_SPI_CLOCK_PRESCALER_256
536#ifdef VSF_SPI_DATALINE_2_LINE_TX_ONLY
537 , VSF_SPI_DATALINE_2_LINE_TX_ONLY
542#ifdef VSF_SPI_DATALINE_2_LINE_HALF_DUPLEX
543 , VSF_SPI_DATALINE_2_LINE_HALF_DUPLEX
545#ifdef VSF_SPI_DATALINE_4_LINE_HALF_DUPLEX
546 , VSF_SPI_DATALINE_4_LINE_HALF_DUPLEX
548#ifdef VSF_SPI_DATALINE_8_LINE_HALF_DUPLEX
549 , VSF_SPI_DATALINE_8_LINE_HALF_DUPLEX
551#ifdef VSF_SPI_DATALINE_16_LINE_HALF_DUPLEX
552 , VSF_SPI_DATALINE_16_LINE_HALF_DUPLEX
556#ifdef VSF_SPI_CUSTOM_MODE_VALUES
557 , VSF_SPI_CUSTOM_MODE_VALUES
561#undef VSF_SPI_CHECK_UNIQUE_DIR_MODES
562#undef VSF_SPI_CHECK_UNIQUE_BIT_ORDER_MODES
563#undef VSF_SPI_CHECK_UNIQUE_MODE_MODES
564#undef VSF_SPI_CHECK_UNIQUE_CS_MODES
565#undef VSF_SPI_CHECK_UNIQUE_DATASIZE_MODES
570#ifdef VSF_SPI_CFG_IRQ_MASK_CHECK_UNIQUE
572#ifdef VSF_SPI_CUSTOM_IRQ_MASK_VALUES
598#ifdef VSF_SPI_IRQ_MASK_FRAME_ERR
599 , VSF_SPI_IRQ_MASK_FRAME_ERR
603#ifdef VSF_SPI_CUSTOM_IRQ_MASK_VALUES
604 , VSF_SPI_CUSTOM_IRQ_MASK_VALUES
611#ifdef VSF_SPI_CFG_CTRL_CHECK_UNIQUE
613#ifdef VSF_SPI_CUSTOM_CTRL_VALUES
622 VSF_SPI_CFG_CTRL_CHECK_UNIQUE,
626#ifdef VSF_SPI_CUSTOM_CTRL_VALUES
627 , VSF_SPI_CUSTOM_CTRL_VALUES
632#undef VSF_SPI_CFG_MODE_CHECK_UNIQUE
633#undef VSF_SPI_CFG_IRQ_MASK_CHECK_UNIQUE
634#undef VSF_SPI_CFG_CTRL_CHECK_UNIQUE
635#undef VSF_SPI_CUSTOM_MODE_VALUES
636#undef VSF_SPI_CUSTOM_IRQ_MASK_VALUES
637#undef VSF_SPI_CUSTOM_CTRL_VALUES
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
@ VSF_SPI_SLAVE
Definition spi.h:34
@ VSF_SPI_LSB_FIRST
Definition spi.h:86
@ VSF_SPI_MODE_1
Definition spi.h:41
@ VSF_SPI_DATASIZE_8
datasize is 8 bits
Definition spi.h:49
@ VSF_SPI_MASTER
Definition spi.h:35
@ VSF_SPI_MSB_FIRST
Definition spi.h:85
@ VSF_SPI_DATASIZE_32
Definition spi.h:73
@ VSF_SPI_CS_SOFTWARE_MODE
Definition spi.h:82
@ VSF_SPI_MODE_0
Definition spi.h:39
@ VSF_SPI_CS_HARDWARE_MODE
Definition spi.h:83
@ VSF_SPI_MODE_3
Definition spi.h:45
@ VSF_SPI_MODE_2
Definition spi.h:43
#define VSF_SPI_CPOL_HIGH
Definition spi.h:123
vsf_spi_irq_mask_t
Definition spi.h:159
@ VSF_SPI_IRQ_MASK_RX_OVERFLOW_ERR
Definition spi.h:169
@ VSF_SPI_IRQ_MASK_RX_CPL
Definition spi.h:167
@ VSF_SPI_IRQ_MASK_CRC_ERR
Definition spi.h:171
@ VSF_SPI_IRQ_MASK_RX
Definition spi.h:163
@ VSF_SPI_IRQ_MASK_TX
Definition spi.h:161
@ VSF_SPI_IRQ_MASK_TX_CPL
Definition spi.h:165
#define VSF_SPI_DATASIZE_16
Definition spi.h:101
#define VSF_SPI_TI_MODE
Definition spi.h:95
#define VSF_SPI_CPHA_HIGH
Definition spi.h:128
#define VSF_SPI_DATALINE_2_LINE_FULL_DUPLEX
Definition spi.h:110
@ VSF_SPI_CRC_ENABLED
Definition spi.h:116
@ VSF_SPI_CRC_DISABLED
Definition spi.h:115
#define VSF_SPI_DATALINE_1_LINE_HALF_DUPLEX
Definition spi.h:112
#define VSF_SPI_DATALINE_2_LINE_RX_ONLY
Definition spi.h:111
#define VSF_SPI_CPHA_LOW
Definition spi.h:126
#define VSF_SPI_CPOL_LOW
Definition spi.h:121
#define VSF_SPI_MOTOROLA_MODE
Definition spi.h:94
#define NULL
Definition lvgl.h:26
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
Predefined VSF SPI capability that can be reimplemented in specific HAL drivers. Even if the hardware...
Definition vsf_template_spi.h:739
uint8_t support_hardware_cs
Supported interrupt masks for SPI operations.
Definition vsf_template_spi.h:745
Configuration structure for SPI.
Definition vsf_template_spi.h:797
#define VSF_SPI_CFG_IRQ_MASK_CHECK_UNIQUE
Definition spi.c:300
#define VSF_SPI_CFG_MODE_CHECK_UNIQUE
Definition spi.c:299
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
#define __VSF_SPI_CFG_SUPPORT_STANDARD_OPTIONAL
Enable standard optional features support.
Definition vsf_template_spi.h:260
vsf_spi_ctrl_t
Predefined VSF SPI control commands that can be reimplemented in specific HAL drivers.
Definition vsf_template_spi.h:842
@ __VSF_SPI_CTRL_DUMMY
Dummy value for compilation, required when no actual control commands are defined.
Definition vsf_template_spi.h:860
#define VSF_HAL_CHECK_UNIQUE_CUSTOM(__CHECK_FUNC,...)
Definition vsf_template_static_assert_unique.h:2426