18#ifndef __VSF_TEMPLATE_GPIO_H__
19#define __VSF_TEMPLATE_GPIO_H__
33#ifndef VSF_GPIO_CFG_MULTI_CLASS
34# define VSF_GPIO_CFG_MULTI_CLASS ENABLED
37#if defined(VSF_HW_GPIO_PORT_COUNT) && !defined(VSF_HW_GPIO_PORT_MASK)
38# define VSF_HW_GPIO_PORT_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_GPIO_PORT_COUNT)
41#if defined(VSF_HW_GPIO_PORT_MASK) && !defined(VSF_HW_GPIO_PORT_COUNT)
42# define VSF_HW_GPIO_PORT_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_GPIO_PORT_MASK)
45#if defined(VSF_HW_GPIO_PIN_COUNT) && !defined(VSF_HW_GPIO_PIN_MASK)
46# define VSF_HW_GPIO_PIN_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_GPIO_PIN_COUNT)
49#if defined(VSF_HW_GPIO_PIN_MASK) && !defined(VSF_HW_GPIO_PIN_COUNT)
50# define VSF_HW_GPIO_PIN_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_GPIO_PIN_MASK)
53#ifdef VSF_HW_GPIO_PORT_COUNT
54# define VSF_HW_GPIO_COUNT VSF_HW_GPIO_PORT_COUNT
57#ifdef VSF_HW_GPIO_PORT_MASK
58# define VSF_HW_GPIO_MASK VSF_HW_GPIO_PORT_MASK
61#if !defined(VSF_GPIO_CFG_PORTA) && (VSF_HW_GPIO_PORT_MASK & (1ul << 0))
62# define VSF_GPIO_CFG_PORTA ENABLED
65#if !defined(VSF_GPIO_CFG_PORTB) && (VSF_HW_GPIO_PORT_MASK & (1ul << 1))
66# define VSF_GPIO_CFG_PORTB ENABLED
69#if !defined(VSF_GPIO_CFG_PORTC) && (VSF_HW_GPIO_PORT_MASK & (1ul << 2))
70# define VSF_GPIO_CFG_PORTC ENABLED
73#if !defined(VSF_GPIO_CFG_PORTD) && (VSF_HW_GPIO_PORT_MASK & (1ul << 3))
74# define VSF_GPIO_CFG_PORTD ENABLED
77#if !defined(VSF_GPIO_CFG_PORTE) && (VSF_HW_GPIO_PORT_MASK & (1ul << 4))
78# define VSF_GPIO_CFG_PORTE ENABLED
81#if !defined(VSF_GPIO_CFG_PORTF) && (VSF_HW_GPIO_PORT_MASK & (1ul << 5))
82# define VSF_GPIO_CFG_PORTF ENABLED
85#if !defined(VSF_GPIO_CFG_PORTG) && (VSF_HW_GPIO_PORT_MASK & (1ul << 6))
86# define VSF_GPIO_CFG_PORTG ENABLED
89#if !defined(VSF_GPIO_CFG_PORTH) && (VSF_HW_GPIO_PORT_MASK & (1ul << 7))
90# define VSF_GPIO_CFG_PORTH ENABLED
93#if !defined(VSF_GPIO_CFG_PORTI) && (VSF_HW_GPIO_PORT_MASK & (1ul << 8))
94# define VSF_GPIO_CFG_PORTI ENABLED
97#if !defined(VSF_GPIO_CFG_PORTJ) && (VSF_HW_GPIO_PORT_MASK & (1ul << 9))
98# define VSF_GPIO_CFG_PORTJ ENABLED
101#if !defined(VSF_GPIO_CFG_PORTK) && (VSF_HW_GPIO_PORT_MASK & (1ul << 10))
102# define VSF_GPIO_CFG_PORTK ENABLED
105#if !defined(VSF_GPIO_CFG_PORTL) && (VSF_HW_GPIO_PORT_MASK & (1ul << 11))
106# define VSF_GPIO_CFG_PORTL ENABLED
109#if !defined(VSF_GPIO_CFG_PORTM) && (VSF_HW_GPIO_PORT_MASK & (1ul << 12))
110# define VSF_GPIO_CFG_PORTM ENABLED
113#if !defined(VSF_GPIO_CFG_PORTN) && (VSF_HW_GPIO_PORT_MASK & (1ul << 13))
114# define VSF_GPIO_CFG_PORTN ENABLED
117#if !defined(VSF_GPIO_CFG_PORTO) && (VSF_HW_GPIO_PORT_MASK & (1ul << 14))
118# define VSF_GPIO_CFG_PORTO ENABLED
121#if !defined(VSF_GPIO_CFG_PORTP) && (VSF_HW_GPIO_PORT_MASK & (1ul << 15))
122# define VSF_GPIO_CFG_PORTP ENABLED
126#ifndef VSF_GPIO_CFG_PIN_COUNT
127# if defined(VSF_HW_GPIO_PIN_COUNT) && (VSF_HW_GPIO_PIN_COUNT > 32)
128# define vsf_io_pin_mask_t uint64_t
129# define VSF_GPIO_CFG_PIN_COUNT 64
130# define VSF_GPIO_CFG_PIN_MASK 0xFFFFFFFFFFFFFFFF
131# elif defined(VSF_HW_GPIO_PIN_AMSK) && (VSF_HW_GPIO_PIN_MASK & 0xFFFFFFFF00000000)
132# define vsf_io_pin_mask_t uint64_t
133# define VSF_GPIO_CFG_PIN_COUNT 64
134# define VSF_GPIO_CFG_PIN_MASK 0xFFFFFFFFFFFFFFFF
136# define vsf_io_pin_mask_t uint32_t
137# define VSF_GPIO_CFG_PIN_COUNT 32
138# define VSF_GPIO_CFG_PIN_MASK 0xFFFFFFFF
165#ifndef VSF_GPIO_CFG_PREFIX
166# if VSF_GPIO_CFG_MULTI_CLASS == ENABLED
167# define VSF_GPIO_CFG_PREFIX vsf
168# elif defined(VSF_HW_GPIO_PIN_MASK) && (VSF_HW_GPIO_PIN_MASK != 0)
169# define VSF_GPIO_CFG_PREFIX vsf_hw
171# define VSF_GPIO_CFG_PREFIX vsf
175#ifndef VSF_GPIO_CFG_REIMPLEMENT_TYPE_MODE
176# define VSF_GPIO_CFG_REIMPLEMENT_TYPE_MODE DISABLED
179#ifndef VSF_GPIO_CFG_FUNCTION_RENAME
180# define VSF_GPIO_CFG_FUNCTION_RENAME ENABLED
187#if VSF_GPIO_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
188# define VSF_GPIO_CFG_REIMPLEMENT_TYPE_CFG DISABLED
194#if VSF_GPIO_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
195# define VSF_GPIO_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
199#ifndef VSF_GPIO_CFG_INHERT_HAL_CAPABILITY
200# define VSF_GPIO_CFG_INHERT_HAL_CAPABILITY ENABLED
203#ifndef vsf_gpio_pin_mask_t
204# if defined(VSF_HW_GPIO_PIN_MASK) && (VSF_HW_GPIO_PIN_MASK & 0xFFFFFFFF00000000)
205# define vsf_gpio_pin_mask_t uint64_t
207# define vsf_gpio_pin_mask_t uint32_t
213#define __VSF_GPIO_PORT_PIN_NUM(__PIN_NUM, __PORT_NUM) \
214 VSF_P ## __PORT_NUM ## __PIN_NUM = ((VSF_PORT ##__PORT_NUM) << 8) | __PIN_NUM,
216#define VSF_GPIO_APIS(__prefix_name) \
217 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_gpio_capability_t, gpio, capability, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr) \
218 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, gpio, port_config_pins, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_cfg_t * cfg_ptr) \
219 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, set_direction, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t direction_mask) \
220 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_gpio_pin_mask_t, gpio, get_direction, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
221 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, set_input, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
222 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, set_output, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
223 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, switch_direction, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
224 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_gpio_pin_mask_t, gpio, read, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr) \
225 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, write, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask, vsf_gpio_pin_mask_t value) \
226 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, set, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
227 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, clear, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
228 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, toggle, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
229 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, output_and_set, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
230 __VSF_HAL_TEMPLATE_API(__prefix_name, void, gpio, output_and_clear, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
231 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, gpio, exti_irq_config, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_exti_irq_cfg_t *irq_cfg_ptr) \
232 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, gpio, exti_irq_enable, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask) \
233 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, gpio, exti_irq_disable, VSF_MCONNECT(__prefix_name, _gpio_t) *gpio_ptr, vsf_gpio_pin_mask_t pin_mask)
237#if VSF_GPIO_CFG_REIMPLEMENT_TYPE_MODE == DISABLED
335 VSF_GPIO_AF = (5 << 0),
337 VSF_GPIO_INVERT_INPUT = (1 << 7),
338 #define VSF_GPIO_INVERT_INPUT VSF_GPIO_INVERT_INPUT
340 VSF_GPIO_HIGH_DRIVE_STRENGTH = (1 << 8),
341 #define VSF_GPIO_HIGH_DRIVE_STRENGTH VSF_GPIO_HIGH_DRIVE_STRENGTH
343 VSF_GPIO_SPEED_LOW = (0 << 9),
344 VSF_GPIO_SPEED_MEDIUM = (1 << 9),
345 VSF_GPIO_SPEED_HIGH = (2 << 9),
346 VSF_GPIO_SPEED_VERY_HIGH = (3 << 9),
347 VSF_GPIO_SPEED_MASK = (3 << 9),
348 #define VSF_GPIO_SPEED_LOW VSF_GPIO_SPEED_LOW
349 #define VSF_GPIO_SPEED_MEDIUM VSF_GPIO_SPEED_MEDIUM
350 #define VSF_GPIO_SPEED_HIGH VSF_GPIO_SPEED_HIGH
351 #define VSF_GPIO_SPEED_VERY_HIGH VSF_GPIO_SPEED_VERY_HIGH
352 #define VSF_GPIO_SPEED_MASK VSF_GPIO_SPEED_MASK
360#ifndef VSF_GPIO_MODE_MASK
383#ifdef VSF_GPIO_INVERT_INPUT
384 | VSF_GPIO_INVERT_INPUT
386#ifdef VSF_GPIO_HIGH_DRIVE_STRENGTH
387 | VSF_GPIO_HIGH_DRIVE_STRENGTH
389#ifdef VSF_GPIO_SPEED_MASK
392#ifdef VSF_GPIO_SPEED_MASK
397#if VSF_GPIO_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
441#if VSF_GPIO_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
443#if VSF_GPIO_CFG_INHERT_HAL_CAPABILITY == ENABLED
476#undef __VSF_HAL_TEMPLATE_API
477#define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
482#if VSF_GPIO_CFG_MULTI_CLASS == ENABLED
497#if VSF_HW_GPIO_PORT_COUNT > 0
499#if defined(VSF_GPIO_CFG_PORTA)
502#if defined(VSF_GPIO_CFG_PORTB)
505#if defined(VSF_GPIO_CFG_PORTC)
508#if defined(VSF_GPIO_CFG_PORTD)
511#if defined(VSF_GPIO_CFG_PORTE)
514#if defined(VSF_GPIO_CFG_PORTF)
517#if defined(VSF_GPIO_CFG_PORTG)
520#if defined(VSF_GPIO_CFG_PORTH)
523#if defined(VSF_GPIO_CFG_PORTI)
526#if defined(VSF_GPIO_CFG_PORTJ)
529#if defined(VSF_GPIO_CFG_PORTK)
532#if defined(VSF_GPIO_CFG_PORTL)
535#if defined(VSF_GPIO_CFG_PORTM)
538#if defined(VSF_GPIO_CFG_PORTN)
541#if defined(VSF_GPIO_CFG_PORTO)
544#if defined(VSF_GPIO_CFG_PORTP)
549typedef enum vsf_io_port_pin_no_t {
550#if defined(VSF_GPIO_CFG_PORTA)
553#if defined(VSF_GPIO_CFG_PORTB)
556#if defined(VSF_GPIO_CFG_PORTC)
559#if defined(VSF_GPIO_CFG_PORTD)
562#if defined(VSF_GPIO_CFG_PORTE)
565#if defined(VSF_GPIO_CFG_PORTF)
568#if defined(VSF_GPIO_CFG_PORTG)
571#if defined(VSF_GPIO_CFG_PORTH)
574#if defined(VSF_GPIO_CFG_PORTI)
577#if defined(VSF_GPIO_CFG_PORTJ)
580#if defined(VSF_GPIO_CFG_PORTK)
583#if defined(VSF_GPIO_CFG_PORTL)
586#if defined(VSF_GPIO_CFG_PORTM)
589#if defined(VSF_GPIO_CFG_PORTN)
592#if defined(VSF_GPIO_CFG_PORTO)
595#if defined(VSF_GPIO_CFG_PORTP)
598} vsf_io_port_pin_no_t;
915 return port_pin_index >> 8;
920 return port_pin_index & 0xFF;
932#if VSF_GPIO_CFG_FUNCTION_RENAME == ENABLED
933# define __vsf_gpio_t VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_t)
934# define vsf_gpio_capability(__GPIO) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_capability) ((__vsf_gpio_t *)(__GPIO))
935# define vsf_gpio_port_config_pins(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_port_config_pins) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
936# define vsf_gpio_set_direction(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_set_direction) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
937# define vsf_gpio_get_direction(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_get_direction) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
938# define vsf_gpio_set_input(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_set_input) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
939# define vsf_gpio_set_output(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_set_output) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
940# define vsf_gpio_switch_direction(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_switch_direction) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
941# define vsf_gpio_read(__GPIO) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_read) ((__vsf_gpio_t *)(__GPIO))
942# define vsf_gpio_write(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_write) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
943# define vsf_gpio_set(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_set) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
944# define vsf_gpio_clear(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_clear) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
945# define vsf_gpio_output_and_set(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_output_and_set) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
946# define vsf_gpio_output_and_clear(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_output_and_clear) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
947# define vsf_gpio_toggle(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_toggle) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
948# define vsf_gpio_exti_irq_config(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_exti_irq_config) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
949# define vsf_gpio_exti_irq_enable(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_exti_irq_enable) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
950# define vsf_gpio_exti_irq_disable(__GPIO, ...) VSF_MCONNECT(VSF_GPIO_CFG_PREFIX, _gpio_exti_irq_disable) ((__vsf_gpio_t *)(__GPIO), ##__VA_ARGS__)
954#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 0)
956# define VSF_PIN0_MASK (1 << VSF_PIN0)
959#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 1)
961# define VSF_PIN1_MASK (1 << VSF_PIN1)
964#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 2)
966# define VSF_PIN2_MASK (1 << VSF_PIN2)
969#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 3)
971# define VSF_PIN3_MASK (1 << VSF_PIN3)
974#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 4)
976# define VSF_PIN4_MASK (1 << VSF_PIN4)
979#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 5)
981# define VSF_PIN5_MASK (1 << VSF_PIN5)
984#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 6)
986# define VSF_PIN6_MASK (1 << VSF_PIN6)
989#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 7)
991# define VSF_PIN7_MASK (1 << VSF_PIN7)
994#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 8)
996# define VSF_PIN8_MASK (1 << VSF_PIN8)
999#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 9)
1001# define VSF_PIN9_MASK (1 << VSF_PIN9)
1004#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 10)
1005# define VSF_PIN10 10
1006# define VSF_PIN10_MASK (1 << VSF_PIN10)
1009#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 11)
1010# define VSF_PIN11 11
1011# define VSF_PIN11_MASK (1 << VSF_PIN11)
1014#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 12)
1015# define VSF_PIN12 12
1016# define VSF_PIN12_MASK (1 << VSF_PIN12)
1019#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 13)
1020# define VSF_PIN13 13
1021# define VSF_PIN13_MASK (1 << VSF_PIN13)
1024#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 14)
1025# define VSF_PIN14 14
1026# define VSF_PIN14_MASK (1 << VSF_PIN14)
1029#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 15)
1030# define VSF_PIN15 15
1031# define VSF_PIN15_MASK (1 << VSF_PIN15)
1034#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 16)
1035# define VSF_PIN16 16
1036# define VSF_PIN16_MASK (1 << VSF_PIN16)
1039#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 17)
1040# define VSF_PIN17 17
1041# define VSF_PIN17_MASK (1 << VSF_PIN17)
1044#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 18)
1045# define VSF_PIN18 18
1046# define VSF_PIN18_MASK (1 << VSF_PIN18)
1049#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 19)
1050# define VSF_PIN19 19
1051# define VSF_PIN19_MASK (1 << VSF_PIN19)
1054#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 20)
1055# define VSF_PIN20 20
1056# define VSF_PIN20_MASK (1 << VSF_PIN20)
1059#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 21)
1060# define VSF_PIN21 21
1061# define VSF_PIN21_MASK (1 << VSF_PIN21)
1064#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 22)
1065# define VSF_PIN22 22
1066# define VSF_PIN22_MASK (1 << VSF_PIN22)
1069#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 23)
1070# define VSF_PIN23 23
1071# define VSF_PIN23_MASK (1 << VSF_PIN23)
1074#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 24)
1075# define VSF_PIN24 24
1076# define VSF_PIN24_MASK (1 << VSF_PIN24)
1079#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 25)
1080# define VSF_PIN25 25
1081# define VSF_PIN25_MASK (1 << VSF_PIN25)
1084#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 26)
1085# define VSF_PIN26 26
1086# define VSF_PIN26_MASK (1 << VSF_PIN26)
1089#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 27)
1090# define VSF_PIN27 27
1091# define VSF_PIN27_MASK (1 << VSF_PIN27)
1094#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 28)
1095# define VSF_PIN28 28
1096# define VSF_PIN28_MASK (1 << VSF_PIN28)
1099#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 29)
1100# define VSF_PIN29 29
1101# define VSF_PIN29_MASK (1 << VSF_PIN29)
1104#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 30)
1105# define VSF_PIN30 30
1106# define VSF_PIN30_MASK (1 << VSF_PIN30)
1109#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 31)
1110# define VSF_PIN31 31
1111# define VSF_PIN31_MASK (1 << VSF_PIN31)
1114#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 32)
1115# define VSF_PIN32 32
1116# define VSF_PIN32_MASK (1 << VSF_PIN32)
1119#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 33)
1120# define VSF_PIN33 33
1121# define VSF_PIN33_MASK (1 << VSF_PIN33)
1124#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 34)
1125# define VSF_PIN34 34
1126# define VSF_PIN34_MASK (1 << VSF_PIN34)
1129#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 35)
1130# define VSF_PIN35 35
1131# define VSF_PIN35_MASK (1 << VSF_PIN35)
1134#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 36)
1135# define VSF_PIN36 36
1136# define VSF_PIN36_MASK (1 << VSF_PIN36)
1139#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 37)
1140# define VSF_PIN37 37
1141# define VSF_PIN37_MASK (1 << VSF_PIN37)
1144#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 38)
1145# define VSF_PIN38 38
1146# define VSF_PIN38_MASK (1 << VSF_PIN38)
1149#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 39)
1150# define VSF_PIN39 39
1151# define VSF_PIN39_MASK (1 << VSF_PIN39)
1154#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 40)
1155# define VSF_PIN40 40
1156# define VSF_PIN40_MASK (1 << VSF_PIN40)
1159#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 41)
1160# define VSF_PIN41 41
1161# define VSF_PIN41_MASK (1 << VSF_PIN41)
1164#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 42)
1165# define VSF_PIN42 42
1166# define VSF_PIN42_MASK (1 << VSF_PIN42)
1169#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 43)
1170# define VSF_PIN43 43
1171# define VSF_PIN43_MASK (1 << VSF_PIN43)
1174#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 44)
1175# define VSF_PIN44 44
1176# define VSF_PIN44_MASK (1 << VSF_PIN44)
1179#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 45)
1180# define VSF_PIN45 45
1181# define VSF_PIN45_MASK (1 << VSF_PIN45)
1184#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 46)
1185# define VSF_PIN46 46
1186# define VSF_PIN46_MASK (1 << VSF_PIN46)
1189#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 47)
1190# define VSF_PIN47 47
1191# define VSF_PIN47_MASK (1 << VSF_PIN47)
1194#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 48)
1195# define VSF_PIN48 48
1196# define VSF_PIN48_MASK (1 << VSF_PIN48)
1199#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 49)
1200# define VSF_PIN49 49
1201# define VSF_PIN49_MASK (1 << VSF_PIN49)
1204#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 50)
1205# define VSF_PIN50 50
1206# define VSF_PIN50_MASK (1 << VSF_PIN50)
1209#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 51)
1210# define VSF_PIN51 51
1211# define VSF_PIN51_MASK (1 << VSF_PIN51)
1214#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 52)
1215# define VSF_PIN52 52
1216# define VSF_PIN52_MASK (1 << VSF_PIN52)
1219#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 53)
1220# define VSF_PIN53 53
1221# define VSF_PIN53_MASK (1 << VSF_PIN53)
1224#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 54)
1225# define VSF_PIN54 54
1226# define VSF_PIN54_MASK (1 << VSF_PIN54)
1229#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 55)
1230# define VSF_PIN55 55
1231# define VSF_PIN55_MASK (1 << VSF_PIN55)
1234#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 56)
1235# define VSF_PIN56 56
1236# define VSF_PIN56_MASK (1 << VSF_PIN56)
1239#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 57)
1240# define VSF_PIN57 57
1241# define VSF_PIN57_MASK (1 << VSF_PIN57)
1244#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 58)
1245# define VSF_PIN58 58
1246# define VSF_PIN58_MASK (1 << VSF_PIN58)
1249#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 59)
1250# define VSF_PIN59 59
1251# define VSF_PIN59_MASK (1 << VSF_PIN59)
1254#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 60)
1255# define VSF_PIN60 60
1256# define VSF_PIN60_MASK (1 << VSF_PIN60)
1259#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 61)
1260# define VSF_PIN61 61
1261# define VSF_PIN61_MASK (1 << VSF_PIN61)
1264#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 62)
1265# define VSF_PIN62 62
1266# define VSF_PIN62_MASK (1 << VSF_PIN62)
1269#if VSF_GPIO_CFG_PIN_MASK & (0x01ul << 63)
1270# define VSF_PIN63 63
1271# define VSF_PIN63_MASK (1 << VSF_PIN63)
vsf_err_t
Definition __type.h:42
vsf_gpio_mode_t
Definition gpio.h:31
#define VSF_GPIO_SPEED_MASK
Definition gpio.h:86
vsf_arch_prio_t
Definition cortex_a_generic.h:88
vsf_io_port_no_t
Definition io.h:90
#define K(t, v)
Definition keyboard.h:40
unsigned short uint16_t
Definition lvgl.h:41
unsigned char uint8_t
Definition lvgl.h:40
Definition vsf_template_gpio.h:442
uint8_t support_output_and_clear
Definition vsf_template_gpio.h:455
uint8_t pin_count
Definition vsf_template_gpio.h:463
uint8_t support_interrupt
supports external interrupts
Definition vsf_template_gpio.h:458
vsf_gpio_pin_mask_t pin_mask
Definition vsf_template_gpio.h:471
inherit(vsf_peripheral_capability_t) uint8_t is_async uint8_t support_output_and_set
To avoid bumps when converting from input to output.
Definition vsf_template_gpio.h:444
gpio channel configuration
Definition vsf_template_gpio.h:414
uint16_t alternate_function
alternate function is only valid in GPIO_AF mode
Definition vsf_template_gpio.h:417
vsf_gpio_mode_t mode
Definition vsf_template_gpio.h:415
Definition vsf_template_gpio.h:407
void * target_ptr
Definition vsf_template_gpio.h:409
vsf_gpio_exti_isr_handler_t * handler_fn
Definition vsf_template_gpio.h:408
vsf_arch_prio_t prio
Definition vsf_template_gpio.h:410
Definition vsf_template_gpio.h:475
Definition vsf_template_gpio.h:420
uint16_t port_pin_index
Definition vsf_template_gpio.h:421
uint16_t alternate_function
alternate function is only valid in GPIO_AF mode
Definition vsf_template_gpio.h:427
vsf_gpio_mode_t mode
Definition vsf_template_gpio.h:425
Definition vsf_template_gpio.h:430
uint16_t alternate_function
alternate function is only valid in GPIO_AF mode
Definition vsf_template_gpio.h:437
vsf_gpio_mode_t mode
Definition vsf_template_gpio.h:435
uint16_t port_index
Definition vsf_template_gpio.h:431
vsf_gpio_pin_mask_t pin_mask
Definition vsf_template_gpio.h:432
Definition vsf_template_gpio.h:491
const vsf_gpio_op_t * op
Definition vsf_template_gpio.h:492
Definition vsf_template_hal_driver.h:203
vk_av_control_value_t value
Definition vsf_audio.h:171
#define VSF_MREPEAT(__COUNT, __MACRO, __PARAM)
Definition vsf_repeat_macro.h:51
#define vsf_gpio_set_output(__GPIO,...)
Definition vsf_template_gpio.h:939
void vsf_gpio_exti_isr_handler_t(void *target_ptr, vsf_gpio_t *gpio_ptr, vsf_gpio_pin_mask_t pin_mask)
External interrupt callback function for gpio.
Definition vsf_template_gpio.h:402
#define vsf_gpio_switch_direction(__GPIO,...)
Definition vsf_template_gpio.h:940
#define vsf_gpio_get_direction(__GPIO,...)
Definition vsf_template_gpio.h:937
#define vsf_gpio_toggle(__GPIO,...)
Definition vsf_template_gpio.h:947
#define vsf_gpio_set(__GPIO,...)
Definition vsf_template_gpio.h:943
#define vsf_gpio_port_config_pins(__GPIO,...)
Definition vsf_template_gpio.h:935
#define vsf_gpio_output_and_clear(__GPIO,...)
Definition vsf_template_gpio.h:946
#define vsf_gpio_clear(__GPIO,...)
Definition vsf_template_gpio.h:944
#define __VSF_GPIO_PORT_PIN_NUM(__PIN_NUM, __PORT_NUM)
Definition vsf_template_gpio.h:213
#define VSF_GPIO_CFG_PIN_COUNT
Definition vsf_template_gpio.h:137
#define vsf_gpio_pin_mask_t
Definition vsf_template_gpio.h:207
#define vsf_gpio_set_direction(__GPIO,...)
Definition vsf_template_gpio.h:936
#define vsf_gpio_output_and_set(__GPIO,...)
Definition vsf_template_gpio.h:945
#define vsf_gpio_write(__GPIO,...)
Definition vsf_template_gpio.h:942
#define vsf_gpio_set_input(__GPIO,...)
Definition vsf_template_gpio.h:938
#define vsf_gpio_exti_irq_enable(__GPIO,...)
Definition vsf_template_gpio.h:949
#define VSF_GPIO_APIS(__prefix_name)
Definition vsf_template_gpio.h:216
#define vsf_gpio_exti_irq_disable(__GPIO,...)
Definition vsf_template_gpio.h:950
#define vsf_gpio_exti_irq_config(__GPIO,...)
Definition vsf_template_gpio.h:948
#define vsf_gpio_read(__GPIO)
Definition vsf_template_gpio.h:941
vsf_gpio_mode_t
Predefined VSF GPIO modes that can be reimplemented in specific hal drivers.
Definition vsf_template_gpio.h:301
@ VSF_GPIO_NO_PULL_UP_DOWN
Definition vsf_template_gpio.h:322
@ VSF_GPIO_EXTI_MODE_HIGH_LEVEL
Definition vsf_template_gpio.h:328
@ VSF_GPIO_OUTPUT_PUSH_PULL
Definition vsf_template_gpio.h:311
@ VSF_GPIO_EXTI
Set GPIO as external interrupt IO.
Definition vsf_template_gpio.h:316
@ VSF_GPIO_EXTI_MODE_LOW_LEVEL
Definition vsf_template_gpio.h:327
@ VSF_GPIO_EXTI_MODE_NONE
Definition vsf_template_gpio.h:326
@ VSF_GPIO_EXTI_MODE_RISING
Definition vsf_template_gpio.h:329
@ VSF_GPIO_EXTI_MODE_RISING_FALLING
Definition vsf_template_gpio.h:331
@ VSF_GPIO_PULL_UP
Definition vsf_template_gpio.h:323
@ VSF_GPIO_AF
Set GPIO to Alternative Function.
Definition vsf_template_gpio.h:318
@ VSF_GPIO_INPUT
Definition vsf_template_gpio.h:305
@ VSF_GPIO_ANALOG
Definition vsf_template_gpio.h:308
@ VSF_GPIO_EXTI_MODE_FALLING
Definition vsf_template_gpio.h:330
@ VSF_GPIO_OUTPUT_OPEN_DRAIN
Definition vsf_template_gpio.h:314
@ VSF_GPIO_PULL_DOWN
Definition vsf_template_gpio.h:324
#define vsf_gpio_capability(__GPIO)
Definition vsf_template_gpio.h:934
@ VSF_GPIO_EXTI_MODE_MASK
Definition vsf_template_gpio.h:373
@ VSF_GPIO_MODE_MASK
Definition vsf_template_gpio.h:361
@ VSF_GPIO_PULL_UP_DOWN_MASK
Definition vsf_template_gpio.h:369
@ VSF_GPIO_MODE_ALL_BITS_MASK
Definition vsf_template_gpio.h:380
@ VSF_GPIO_FLOATING
Definition vsf_template_gpio.h:358