diff --git a/src/main/drivers/io_def_generated.h b/src/main/drivers/io_def_generated.h index 1848da4a1f..d4a1ad2fb0 100644 --- a/src/main/drivers/io_def_generated.h +++ b/src/main/drivers/io_def_generated.h @@ -98,6 +98,15 @@ #endif #define DEFIO_PORT_H_OFFSET (DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT) +#if defined(TARGET_IO_PORTI) +# define DEFIO_PORT_I_USED_MASK TARGET_IO_PORTI +# define DEFIO_PORT_I_USED_COUNT BITCOUNT(DEFIO_PORT_I_USED_MASK) +#else +# define DEFIO_PORT_I_USED_MASK 0 +# define DEFIO_PORT_I_USED_COUNT 0 +#endif +#define DEFIO_PORT_I_OFFSET (DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) + // DEFIO_GPIOID__ maps to port index @@ -109,6 +118,7 @@ #define DEFIO_GPIOID__F 5 #define DEFIO_GPIOID__G 6 #define DEFIO_GPIOID__H 7 +#define DEFIO_GPIOID__I 8 // DEFIO_TAG__P will expand to TAG if defined for target, error is triggered otherwise // DEFIO_TAG_E__P will expand to TAG if defined, to NONE otherwise (usefull for tables that are CPU-specific) @@ -1266,13 +1276,162 @@ # define DEFIO_TAG_E__PH15 DEFIO_TAG_E__NONE # define DEFIO_REC__PH15 defio_error_PH15_is_not_supported_on_TARGET #endif +#if DEFIO_PORT_I_USED_MASK & BIT(0) +# define DEFIO_TAG__PI0 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 0) +# define DEFIO_TAG_E__PI0 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 0) +# define DEFIO_REC__PI0 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(0) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI0 defio_error_PI0_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI0 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI0 defio_error_PI0_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(1) +# define DEFIO_TAG__PI1 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 1) +# define DEFIO_TAG_E__PI1 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 1) +# define DEFIO_REC__PI1 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(1) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI1 defio_error_PI1_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI1 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI1 defio_error_PI1_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(2) +# define DEFIO_TAG__PI2 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 2) +# define DEFIO_TAG_E__PI2 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 2) +# define DEFIO_REC__PI2 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(2) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI2 defio_error_PI2_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI2 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI2 defio_error_PI2_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(3) +# define DEFIO_TAG__PI3 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 3) +# define DEFIO_TAG_E__PI3 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 3) +# define DEFIO_REC__PI3 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(3) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI3 defio_error_PI3_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI3 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI3 defio_error_PI3_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(4) +# define DEFIO_TAG__PI4 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 4) +# define DEFIO_TAG_E__PI4 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 4) +# define DEFIO_REC__PI4 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(4) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI4 defio_error_PI4_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI4 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI4 defio_error_PI4_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(5) +# define DEFIO_TAG__PI5 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 5) +# define DEFIO_TAG_E__PI5 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 5) +# define DEFIO_REC__PI5 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(5) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI5 defio_error_PI5_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI5 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI5 defio_error_PI5_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(6) +# define DEFIO_TAG__PI6 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 6) +# define DEFIO_TAG_E__PI6 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 6) +# define DEFIO_REC__PI6 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(6) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI6 defio_error_PI6_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI6 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI6 defio_error_PI6_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(7) +# define DEFIO_TAG__PI7 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 7) +# define DEFIO_TAG_E__PI7 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 7) +# define DEFIO_REC__PI7 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(7) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI7 defio_error_PI7_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI7 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI7 defio_error_PI7_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(8) +# define DEFIO_TAG__PI8 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 8) +# define DEFIO_TAG_E__PI8 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 8) +# define DEFIO_REC__PI8 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(8) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI8 defio_error_PI8_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI8 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI8 defio_error_PI8_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(9) +# define DEFIO_TAG__PI9 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 9) +# define DEFIO_TAG_E__PI9 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 9) +# define DEFIO_REC__PI9 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(9) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI9 defio_error_PI9_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI9 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI9 defio_error_PI9_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(10) +# define DEFIO_TAG__PI10 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 10) +# define DEFIO_TAG_E__PI10 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 10) +# define DEFIO_REC__PI10 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(10) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI10 defio_error_PI10_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI10 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI10 defio_error_PI10_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(11) +# define DEFIO_TAG__PI11 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 11) +# define DEFIO_TAG_E__PI11 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 11) +# define DEFIO_REC__PI11 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(11) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI11 defio_error_PI11_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI11 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI11 defio_error_PI11_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(12) +# define DEFIO_TAG__PI12 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 12) +# define DEFIO_TAG_E__PI12 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 12) +# define DEFIO_REC__PI12 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(12) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI12 defio_error_PI12_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI12 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI12 defio_error_PI12_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(13) +# define DEFIO_TAG__PI13 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 13) +# define DEFIO_TAG_E__PI13 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 13) +# define DEFIO_REC__PI13 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(13) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI13 defio_error_PI13_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI13 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI13 defio_error_PI13_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(14) +# define DEFIO_TAG__PI14 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 14) +# define DEFIO_TAG_E__PI14 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 14) +# define DEFIO_REC__PI14 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(14) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI14 defio_error_PI14_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI14 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI14 defio_error_PI14_is_not_supported_on_TARGET +#endif +#if DEFIO_PORT_I_USED_MASK & BIT(15) +# define DEFIO_TAG__PI15 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 15) +# define DEFIO_TAG_E__PI15 DEFIO_TAG_MAKE(DEFIO_GPIOID__I, 15) +# define DEFIO_REC__PI15 DEFIO_REC_INDEXED(BITCOUNT(DEFIO_PORT_I_USED_MASK & (BIT(15) - 1)) + DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#else +# define DEFIO_TAG__PI15 defio_error_PI15_is_not_supported_on_TARGET +# define DEFIO_TAG_E__PI15 DEFIO_TAG_E__NONE +# define DEFIO_REC__PI15 defio_error_PI15_is_not_supported_on_TARGET +#endif // DEFIO_IO_USED_COUNT is number of io pins supported on target -#define DEFIO_IO_USED_COUNT (DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT) +#define DEFIO_IO_USED_COUNT (DEFIO_PORT_A_USED_COUNT+DEFIO_PORT_B_USED_COUNT+DEFIO_PORT_C_USED_COUNT+DEFIO_PORT_D_USED_COUNT+DEFIO_PORT_E_USED_COUNT+DEFIO_PORT_F_USED_COUNT+DEFIO_PORT_G_USED_COUNT+DEFIO_PORT_H_USED_COUNT+DEFIO_PORT_I_USED_COUNT) // DEFIO_PORT_USED_LIST - comma separated list of bitmask for all used ports. // DEFIO_PORT_OFFSET_LIST - comma separated list of port offsets (count of pins before this port) // unused ports on end of list are skipped +#if !defined DEFIO_PORT_USED_LIST && DEFIO_PORT_I_USED_COUNT > 0 +# define DEFIO_PORT_USED_COUNT 9 +# define DEFIO_PORT_USED_LIST DEFIO_PORT_A_USED_MASK,DEFIO_PORT_B_USED_MASK,DEFIO_PORT_C_USED_MASK,DEFIO_PORT_D_USED_MASK,DEFIO_PORT_E_USED_MASK,DEFIO_PORT_F_USED_MASK,DEFIO_PORT_G_USED_MASK,DEFIO_PORT_H_USED_MASK,DEFIO_PORT_I_USED_MASK +# define DEFIO_PORT_OFFSET_LIST DEFIO_PORT_A_OFFSET,DEFIO_PORT_B_OFFSET,DEFIO_PORT_C_OFFSET,DEFIO_PORT_D_OFFSET,DEFIO_PORT_E_OFFSET,DEFIO_PORT_F_OFFSET,DEFIO_PORT_G_OFFSET,DEFIO_PORT_H_OFFSET,DEFIO_PORT_I_OFFSET +#endif #if !defined DEFIO_PORT_USED_LIST && DEFIO_PORT_H_USED_COUNT > 0 # define DEFIO_PORT_USED_COUNT 8 # define DEFIO_PORT_USED_LIST DEFIO_PORT_A_USED_MASK,DEFIO_PORT_B_USED_MASK,DEFIO_PORT_C_USED_MASK,DEFIO_PORT_D_USED_MASK,DEFIO_PORT_E_USED_MASK,DEFIO_PORT_F_USED_MASK,DEFIO_PORT_G_USED_MASK,DEFIO_PORT_H_USED_MASK diff --git a/src/utils/def_generated.pl b/src/utils/def_generated.pl index a5c0b35a6f..22329d2973 100755 --- a/src/utils/def_generated.pl +++ b/src/utils/def_generated.pl @@ -6,10 +6,10 @@ use strict; # io_def_generated.h -my @ports = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'); +my @ports = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'); my @pins = 0 .. 15; my @timers = (1,2,3,4,6,7,8,15,16,17); -my $drivers_dir = "../main/drivers"; +my $drivers_dir = "src/main/drivers"; # change list separator to newline - we use @{} interpolation to merge multiline strings $" = "\n";