|
22 | 22 | * @author Alexandre Abadie <[email protected]> |
23 | 23 | * @author Katja Kirstein <[email protected]> |
24 | 24 | * @author Vincent Dupont <[email protected]> |
| 25 | + * @author Joshua DeWeese <[email protected]> |
25 | 26 | * |
26 | 27 | * @} |
27 | 28 | */ |
@@ -98,31 +99,30 @@ static inline int _pin_num(gpio_t pin) |
98 | 99 | static inline void port_init_clock(GPIO_TypeDef *port, gpio_t pin) |
99 | 100 | { |
100 | 101 | (void)port; /* <-- Only used for when port G requires special handling */ |
101 | | -#if defined(CPU_FAM_STM32F0) || defined (CPU_FAM_STM32F3) || defined(CPU_FAM_STM32L1) |
| 102 | + |
| 103 | +#if defined(RCC_AHBENR_GPIOAEN) |
102 | 104 | periph_clk_en(AHB, (RCC_AHBENR_GPIOAEN << _port_num(pin))); |
103 | | -#elif defined (CPU_FAM_STM32L0) || defined(CPU_FAM_STM32G0) || \ |
104 | | - defined(CPU_FAM_STM32C0) |
105 | | - periph_clk_en(IOP, (RCC_IOPENR_GPIOAEN << _port_num(pin))); |
106 | | -#elif defined(CPU_FAM_STM32L4) || defined(CPU_FAM_STM32WB) || \ |
107 | | - defined(CPU_FAM_STM32G4) || defined(CPU_FAM_STM32L5) || \ |
108 | | - defined(CPU_FAM_STM32U5) || defined (CPU_FAM_STM32WL) |
109 | | -#if defined(CPU_FAM_STM32U5) |
| 105 | +#elif defined(RCC_AHB1ENR_GPIOAEN) |
| 106 | + periph_clk_en(AHB1, (RCC_AHB1ENR_GPIOAEN << _port_num(pin))); |
| 107 | +#elif defined(RCC_AHB2ENR_GPIOAEN) |
| 108 | + periph_clk_en(AHB2, (RCC_AHB2ENR_GPIOAEN << _port_num(pin))); |
| 109 | +#elif defined(RCC_AHB2ENR1_GPIOAEN) |
110 | 110 | periph_clk_en(AHB2, (RCC_AHB2ENR1_GPIOAEN << _port_num(pin))); |
| 111 | +#elif defined(RCC_MC_AHB4ENSETR_GPIOAEN) |
| 112 | + periph_clk_en(AHB4, (RCC_MC_AHB4ENSETR_GPIOAEN << _port_num(pin))); |
| 113 | +#elif defined (RCC_IOPENR_GPIOAEN) |
| 114 | + periph_clk_en(IOP, (RCC_IOPENR_GPIOAEN << _port_num(pin))); |
111 | 115 | #else |
112 | | - periph_clk_en(AHB2, (RCC_AHB2ENR_GPIOAEN << _port_num(pin))); |
| 116 | + #error "GPIO periph clock undefined" |
113 | 117 | #endif |
| 118 | + |
114 | 119 | #ifdef PWR_CR2_IOSV |
115 | 120 | if (port == GPIOG) { |
116 | 121 | /* Port G requires external power supply */ |
117 | 122 | periph_clk_en(APB1, RCC_APB1ENR1_PWREN); |
118 | 123 | PWR->CR2 |= PWR_CR2_IOSV; |
119 | 124 | } |
120 | 125 | #endif /* PWR_CR2_IOSV */ |
121 | | -#elif defined(CPU_FAM_STM32MP1) |
122 | | - periph_clk_en(AHB4, (RCC_MC_AHB4ENSETR_GPIOAEN << _port_num(pin))); |
123 | | -#else |
124 | | - periph_clk_en(AHB1, (RCC_AHB1ENR_GPIOAEN << _port_num(pin))); |
125 | | -#endif |
126 | 126 | } |
127 | 127 |
|
128 | 128 | static inline void set_mode(GPIO_TypeDef *port, int pin_num, unsigned mode) |
@@ -172,22 +172,22 @@ void gpio_init_analog(gpio_t pin) |
172 | 172 | { |
173 | 173 | /* enable clock, needed as this function can be used without calling |
174 | 174 | * gpio_init first */ |
175 | | -#if defined(CPU_FAM_STM32F0) || defined (CPU_FAM_STM32F3) || defined(CPU_FAM_STM32L1) |
| 175 | +#if defined(RCC_AHBENR_GPIOAEN) |
176 | 176 | periph_clk_en(AHB, (RCC_AHBENR_GPIOAEN << _port_num(pin))); |
177 | | -#elif defined (CPU_FAM_STM32L0) || defined(CPU_FAM_STM32G0) || \ |
178 | | - defined(CPU_FAM_STM32C0) |
179 | | - periph_clk_en(IOP, (RCC_IOPENR_GPIOAEN << _port_num(pin))); |
180 | | -#elif defined(CPU_FAM_STM32L4) || defined(CPU_FAM_STM32WB) || \ |
181 | | - defined(CPU_FAM_STM32G4) || defined(CPU_FAM_STM32L5) || \ |
182 | | - defined (CPU_FAM_STM32WL) |
| 177 | +#elif defined(RCC_AHB1ENR_GPIOAEN) |
| 178 | + periph_clk_en(AHB1, (RCC_AHB1ENR_GPIOAEN << _port_num(pin))); |
| 179 | +#elif defined(RCC_AHB2ENR_GPIOAEN) |
183 | 180 | periph_clk_en(AHB2, (RCC_AHB2ENR_GPIOAEN << _port_num(pin))); |
184 | | -#elif defined(CPU_FAM_STM32U5) |
| 181 | +#elif defined(RCC_AHB2ENR1_GPIOAEN) |
185 | 182 | periph_clk_en(AHB2, (RCC_AHB2ENR1_GPIOAEN << _port_num(pin))); |
186 | | -#elif defined(CPU_FAM_STM32MP1) |
| 183 | +#elif defined(RCC_MC_AHB4ENSETR_GPIOAEN) |
187 | 184 | periph_clk_en(AHB4, (RCC_MC_AHB4ENSETR_GPIOAEN << _port_num(pin))); |
| 185 | +#elif defined (RCC_IOPENR_GPIOAEN) |
| 186 | + periph_clk_en(IOP, (RCC_IOPENR_GPIOAEN << _port_num(pin))); |
188 | 187 | #else |
189 | | - periph_clk_en(AHB1, (RCC_AHB1ENR_GPIOAEN << _port_num(pin))); |
| 188 | + #error "GPIO periph clock undefined" |
190 | 189 | #endif |
| 190 | + |
191 | 191 | /* set to analog mode, PUPD has to be 0b00 */ |
192 | 192 | _port(pin)->MODER |= (0x3 << (2 * _pin_num(pin))); |
193 | 193 | _port(pin)->PUPDR &= ~(0x3 << (2 * _pin_num(pin))); |
|
0 commit comments