Skip to content

Commit f9d2a41

Browse files
FRASTMMaureenHelm
authored andcommitted
drivers: interrupt_controller: Add STM32G0X interrupt support
Add interrupt support for STM32G0X SoC series. Signed-off-by: Philippe Retornaz <[email protected]> Signed-off-by: Francois Ramu <[email protected]> # Conflicts: # drivers/interrupt_controller/exti_stm32.c
1 parent dd3ee06 commit f9d2a41

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

drivers/interrupt_controller/Kconfig.stm32

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,28 @@ config EXTI_STM32
1616
config EXTI_STM32_EXTI1_0_IRQ_PRI
1717
int "EXTI1:0 IRQ priority"
1818
depends on EXTI_STM32
19-
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X
19+
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32G0X
2020
default 0
2121
help
2222
IRQ priority of EXTI1:0 interrupt
2323

2424
config EXTI_STM32_EXTI3_2_IRQ_PRI
2525
int "EXTI3:2 IRQ priority"
2626
depends on EXTI_STM32
27-
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X
27+
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32G0X
2828
default 0
2929
help
3030
IRQ priority of EXTI3:2 interrupt
3131

3232
config EXTI_STM32_EXTI15_4_IRQ_PRI
3333
int "EXTI15:4 IRQ priority"
3434
depends on EXTI_STM32
35-
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X
35+
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32G0X
3636
default 0
3737
help
3838
IRQ priority of EXTI15:4 interrupt
3939

40-
if SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y
40+
if SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y && SOC_SERIES_STM32G0X!=y
4141

4242
config EXTI_STM32_EXTI0_IRQ_PRI
4343
int "EXTI0 IRQ priority"
@@ -170,12 +170,12 @@ config EXTI_STM32_EXTI15_10_IRQ_PRI
170170
IRQ priority of EXTI15:10 interrupt
171171
endif # SOC_SERIES_STM32MP1X!=y
172172

173-
endif # SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y
173+
endif # SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y && SOC_SERIES_STM32G0X!=y
174174

175175
config EXTI_STM32_PVD_IRQ_PRI
176176
int "RVD Through IRQ priority"
177177
depends on EXTI_STM32
178-
depends on SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32F2X
178+
depends on SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32F2X || SOC_SERIES_STM32G0X
179179
default 0
180180
help
181181
IRQ priority of RVD Through interrupt

drivers/interrupt_controller/exti_stm32.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
* Driver is currently implemented to support following EXTI lines
1313
* STM32F1/STM32F3: Lines 0 to 15. Lines > 15 not supported
14-
* STM32F0/STM32L0/STM32L4: Lines 0 to 15. Lines > 15 are not mapped on an IRQ
14+
* STM32F0/STM32L0/STM32L4/STM32G0: Lines 0 to 15. Lines > 15 are not mapped on an IRQ
1515
* STM32F2/STM32F4: Lines 0 to 15, 16, 17 18, 21 and 22. Others not supported
1616
* STM32F7: Lines 0 to 15, 16, 17 18, 21, 22 and 23. Others not supported
1717
*
@@ -22,7 +22,8 @@
2222
#include "exti_stm32.h"
2323

2424
#if defined(CONFIG_SOC_SERIES_STM32F0X) || \
25-
defined(CONFIG_SOC_SERIES_STM32L0X)
25+
defined(CONFIG_SOC_SERIES_STM32L0X) || \
26+
defined(CONFIG_SOC_SERIES_STM32G0X)
2627
const IRQn_Type exti_irq_table[] = {
2728
EXTI0_1_IRQn, EXTI0_1_IRQn, EXTI2_3_IRQn, EXTI2_3_IRQn,
2829
EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn, EXTI4_15_IRQn,
@@ -132,7 +133,7 @@ void stm32_exti_disable(int line)
132133
static inline int stm32_exti_is_pending(int line)
133134
{
134135
if (line < 32) {
135-
#if defined(CONFIG_SOC_SERIES_STM32MP1X)
136+
#if defined(CONFIG_SOC_SERIES_STM32MP1X) || defined(CONFIG_SOC_SERIES_STM32G0X)
136137
return (LL_EXTI_IsActiveRisingFlag_0_31(1 << line) ||
137138
LL_EXTI_IsActiveFallingFlag_0_31(1 << line));
138139
#else
@@ -152,7 +153,7 @@ static inline int stm32_exti_is_pending(int line)
152153
static inline void stm32_exti_clear_pending(int line)
153154
{
154155
if (line < 32) {
155-
#if defined(CONFIG_SOC_SERIES_STM32MP1X)
156+
#if defined(CONFIG_SOC_SERIES_STM32MP1X) || defined(CONFIG_SOC_SERIES_STM32G0X)
156157
LL_EXTI_ClearRisingFlag_0_31(1 << line);
157158
LL_EXTI_ClearFallingFlag_0_31(1 << line);
158159
#else
@@ -214,7 +215,9 @@ static void __stm32_exti_isr(int min, int max, void *arg)
214215
}
215216
}
216217

217-
#if defined(CONFIG_SOC_SERIES_STM32F0X) || defined(CONFIG_SOC_SERIES_STM32L0X)
218+
#if defined(CONFIG_SOC_SERIES_STM32F0X) || \
219+
defined(CONFIG_SOC_SERIES_STM32L0X) || \
220+
defined(CONFIG_SOC_SERIES_STM32G0X)
218221
static inline void __stm32_exti_isr_0_1(void *arg)
219222
{
220223
__stm32_exti_isr(0, 2, arg);
@@ -409,7 +412,8 @@ static void __stm32_exti_connect_irqs(struct device *dev)
409412
ARG_UNUSED(dev);
410413

411414
#if defined(CONFIG_SOC_SERIES_STM32F0X) || \
412-
defined(CONFIG_SOC_SERIES_STM32L0X)
415+
defined(CONFIG_SOC_SERIES_STM32L0X) || \
416+
defined(CONFIG_SOC_SERIES_STM32G0X)
413417
IRQ_CONNECT(EXTI0_1_IRQn,
414418
CONFIG_EXTI_STM32_EXTI1_0_IRQ_PRI,
415419
__stm32_exti_isr_0_1, DEVICE_GET(exti_stm32),

soc/arm/st_stm32/stm32g0/soc.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
#include <stm32g0xx_ll_rcc.h>
3737
#endif /* CONFIG_CLOCK_CONTROL_STM32_CUBE */
3838

39+
#ifdef CONFIG_EXTI_STM32
40+
#include <stm32g0xx_ll_exti.h>
41+
#endif
42+
3943
#ifdef CONFIG_GPIO_STM32
4044
#include <stm32g0xx_ll_gpio.h>
4145
#endif

0 commit comments

Comments
 (0)